From 33bf455bd2963d4b7dd931d279b47c3b9a0d3108 Mon Sep 17 00:00:00 2001 From: cpegeric Date: Thu, 24 Apr 2025 10:17:01 +0100 Subject: [PATCH 001/223] insert/delete/replace cdc sql --- pkg/sql/parsers/dialect/mysql/mysql_sql.go | 10779 ++++++++-------- pkg/sql/parsers/dialect/mysql/mysql_sql.y | 34 + .../parsers/dialect/mysql/mysql_sql_test.go | 12 + pkg/sql/parsers/tree/delete.go | 7 +- pkg/sql/parsers/tree/insert.go | 7 +- pkg/sql/parsers/tree/replace.go | 7 +- 6 files changed, 5541 insertions(+), 5305 deletions(-) diff --git a/pkg/sql/parsers/dialect/mysql/mysql_sql.go b/pkg/sql/parsers/dialect/mysql/mysql_sql.go index ee8133a7af1ce..5a062f8599651 100644 --- a/pkg/sql/parsers/dialect/mysql/mysql_sql.go +++ b/pkg/sql/parsers/dialect/mysql/mysql_sql.go @@ -1334,7 +1334,7 @@ const yyEofCode = 1 const yyErrCode = 2 const yyInitialStackSize = 16 -//line mysql_sql.y:12964 +//line mysql_sql.y:12998 //line yacctab:1 var yyExca = [...]int{ @@ -1342,13 +1342,13 @@ var yyExca = [...]int{ 1, -1, -2, 0, -1, 142, - 11, 811, - 22, 811, - -2, 804, + 11, 814, + 22, 814, + -2, 807, -1, 167, - 246, 1245, - 248, 1139, - -2, 1191, + 246, 1248, + 248, 1142, + -2, 1194, -1, 194, 44, 634, 248, 634, @@ -1357,1186 +1357,1085 @@ var yyExca = [...]int{ 479, 634, -2, 669, -1, 234, - 664, 2023, + 664, 2026, -2, 533, -1, 548, - 664, 2147, + 664, 2150, -2, 412, -1, 606, - 664, 2206, + 664, 2209, -2, 410, -1, 607, - 664, 2207, + 664, 2210, -2, 411, -1, 608, - 664, 2208, + 664, 2211, -2, 413, - -1, 748, + -1, 750, 327, 181, 451, 181, 452, 181, - -2, 1920, - -1, 815, - 86, 1705, - -2, 2083, - -1, 816, - 86, 1724, - -2, 2054, - -1, 820, - 86, 1725, - -2, 2082, - -1, 854, - 86, 1632, - -2, 2286, - -1, 855, - 86, 1633, - -2, 2285, + -2, 1923, + -1, 817, + 86, 1708, + -2, 2086, + -1, 818, + 86, 1727, + -2, 2057, + -1, 822, + 86, 1728, + -2, 2085, -1, 856, - 86, 1634, - -2, 2275, + 86, 1635, + -2, 2289, -1, 857, - 86, 2247, - -2, 2268, + 86, 1636, + -2, 2288, -1, 858, - 86, 2248, - -2, 2269, + 86, 1637, + -2, 2278, -1, 859, - 86, 2249, - -2, 2277, - -1, 860, 86, 2250, - -2, 2257, - -1, 861, + -2, 2271, + -1, 860, 86, 2251, - -2, 2266, - -1, 862, + -2, 2272, + -1, 861, 86, 2252, - -2, 2278, - -1, 863, + -2, 2280, + -1, 862, 86, 2253, - -2, 2279, - -1, 864, + -2, 2260, + -1, 863, 86, 2254, - -2, 2284, - -1, 865, + -2, 2269, + -1, 864, 86, 2255, - -2, 2289, - -1, 866, + -2, 2281, + -1, 865, 86, 2256, - -2, 2290, + -2, 2282, + -1, 866, + 86, 2257, + -2, 2287, -1, 867, - 86, 1701, - -2, 2121, + 86, 2258, + -2, 2292, -1, 868, - 86, 1702, - -2, 1904, + 86, 2259, + -2, 2293, -1, 869, - 86, 1703, - -2, 2130, - -1, 870, 86, 1704, - -2, 1913, + -2, 2124, + -1, 870, + 86, 1705, + -2, 1907, + -1, 871, + 86, 1706, + -2, 2133, -1, 872, 86, 1707, - -2, 1921, + -2, 1916, -1, 874, - 86, 1709, - -2, 2154, + 86, 1710, + -2, 1924, -1, 876, 86, 1712, - -2, 1942, + -2, 2157, -1, 878, - 86, 1714, - -2, 2166, - -1, 879, 86, 1715, - -2, 2165, + -2, 1945, -1, 880, - 86, 1716, - -2, 1989, - -1, 881, 86, 1717, - -2, 2078, - -1, 884, + -2, 2169, + -1, 881, + 86, 1718, + -2, 2168, + -1, 882, + 86, 1719, + -2, 1992, + -1, 883, 86, 1720, - -2, 2177, + -2, 2081, -1, 886, - 86, 1722, - -2, 2180, - -1, 887, 86, 1723, - -2, 2182, + -2, 2180, -1, 888, - 86, 1726, - -2, 2190, + 86, 1725, + -2, 2183, -1, 889, - 86, 1727, - -2, 2063, + 86, 1726, + -2, 2185, -1, 890, - 86, 1728, - -2, 2108, - -1, 891, 86, 1729, - -2, 2073, - -1, 892, + -2, 2193, + -1, 891, 86, 1730, - -2, 2098, - -1, 903, - 86, 1610, - -2, 2280, - -1, 904, - 86, 1611, - -2, 2281, + -2, 2066, + -1, 892, + 86, 1731, + -2, 2111, + -1, 893, + 86, 1732, + -2, 2076, + -1, 894, + 86, 1733, + -2, 2101, -1, 905, - 86, 1612, - -2, 2282, - -1, 1010, + 86, 1613, + -2, 2283, + -1, 906, + 86, 1614, + -2, 2284, + -1, 907, + 86, 1615, + -2, 2285, + -1, 1013, 474, 669, 475, 669, -2, 635, - -1, 1061, - 128, 1904, - 139, 1904, - 159, 1904, - -2, 1878, - -1, 1182, - 22, 838, - -2, 787, - -1, 1292, - 11, 811, - 22, 811, - -2, 1487, - -1, 1376, - 22, 838, - -2, 787, - -1, 1735, - 86, 1777, - -2, 2080, - -1, 1736, - 86, 1778, - -2, 2081, - -1, 1911, - 87, 1011, - -2, 1017, - -1, 2366, - 111, 1183, - 155, 1183, - 195, 1183, - 198, 1183, - 288, 1183, - -2, 1176, - -1, 2530, - 11, 811, - 22, 811, - -2, 952, - -1, 2564, - 87, 1864, - 160, 1864, - -2, 2065, - -1, 2565, - 87, 1864, - 160, 1864, - -2, 2064, - -1, 2566, - 87, 1840, - 160, 1840, - -2, 2051, - -1, 2567, - 87, 1841, - 160, 1841, - -2, 2056, - -1, 2568, - 87, 1842, - 160, 1842, - -2, 1977, - -1, 2569, + -1, 1064, + 128, 1907, + 139, 1907, + 159, 1907, + -2, 1881, + -1, 1187, + 22, 841, + -2, 790, + -1, 1297, + 11, 814, + 22, 814, + -2, 1490, + -1, 1381, + 22, 841, + -2, 790, + -1, 1743, + 86, 1780, + -2, 2083, + -1, 1744, + 86, 1781, + -2, 2084, + -1, 1919, + 87, 1014, + -2, 1020, + -1, 2377, + 111, 1186, + 155, 1186, + 195, 1186, + 198, 1186, + 288, 1186, + -2, 1179, + -1, 2542, + 11, 814, + 22, 814, + -2, 955, + -1, 2576, + 87, 1867, + 160, 1867, + -2, 2068, + -1, 2577, + 87, 1867, + 160, 1867, + -2, 2067, + -1, 2578, 87, 1843, 160, 1843, - -2, 1970, - -1, 2570, + -2, 2054, + -1, 2579, 87, 1844, 160, 1844, - -2, 1894, - -1, 2571, + -2, 2059, + -1, 2580, 87, 1845, 160, 1845, - -2, 2053, - -1, 2572, + -2, 1980, + -1, 2581, 87, 1846, 160, 1846, - -2, 1975, - -1, 2573, + -2, 1973, + -1, 2582, 87, 1847, 160, 1847, - -2, 1969, - -1, 2574, + -2, 1897, + -1, 2583, 87, 1848, 160, 1848, - -2, 1957, - -1, 2575, - 87, 1864, - 160, 1864, - -2, 1958, - -1, 2576, - 87, 1864, - 160, 1864, - -2, 1959, - -1, 2578, - 87, 1853, - 160, 1853, - -2, 2098, - -1, 2579, - 87, 1830, - 160, 1830, - -2, 2083, - -1, 2580, - 87, 1862, - 160, 1862, - -2, 2054, - -1, 2581, - 87, 1862, - 160, 1862, - -2, 2082, - -1, 2582, - 87, 1862, - 160, 1862, - -2, 1922, - -1, 2583, - 87, 1860, - 160, 1860, - -2, 2073, + -2, 2056, -1, 2584, - 87, 1857, - 160, 1857, - -2, 1947, + 87, 1849, + 160, 1849, + -2, 1978, -1, 2585, - 86, 1811, - 87, 1811, - 160, 1811, - 409, 1811, - 410, 1811, - 411, 1811, - -2, 1893, + 87, 1850, + 160, 1850, + -2, 1972, -1, 2586, - 86, 1812, - 87, 1812, - 160, 1812, - 409, 1812, - 410, 1812, - 411, 1812, - -2, 1895, + 87, 1851, + 160, 1851, + -2, 1960, -1, 2587, - 86, 1813, - 87, 1813, - 160, 1813, - 409, 1813, - 410, 1813, - 411, 1813, - -2, 2126, + 87, 1867, + 160, 1867, + -2, 1961, -1, 2588, + 87, 1867, + 160, 1867, + -2, 1962, + -1, 2590, + 87, 1856, + 160, 1856, + -2, 2101, + -1, 2591, + 87, 1833, + 160, 1833, + -2, 2086, + -1, 2592, + 87, 1865, + 160, 1865, + -2, 2057, + -1, 2593, + 87, 1865, + 160, 1865, + -2, 2085, + -1, 2594, + 87, 1865, + 160, 1865, + -2, 1925, + -1, 2595, + 87, 1863, + 160, 1863, + -2, 2076, + -1, 2596, + 87, 1860, + 160, 1860, + -2, 1950, + -1, 2597, + 86, 1814, + 87, 1814, + 160, 1814, + 409, 1814, + 410, 1814, + 411, 1814, + -2, 1896, + -1, 2598, 86, 1815, 87, 1815, 160, 1815, 409, 1815, 410, 1815, 411, 1815, - -2, 2055, - -1, 2589, - 86, 1817, - 87, 1817, - 160, 1817, - 409, 1817, - 410, 1817, - 411, 1817, - -2, 2033, - -1, 2590, - 86, 1819, - 87, 1819, - 160, 1819, - 409, 1819, - 410, 1819, - 411, 1819, - -2, 1976, - -1, 2591, - 86, 1821, - 87, 1821, - 160, 1821, - 409, 1821, - 410, 1821, - 411, 1821, - -2, 1953, - -1, 2592, + -2, 1898, + -1, 2599, + 86, 1816, + 87, 1816, + 160, 1816, + 409, 1816, + 410, 1816, + 411, 1816, + -2, 2129, + -1, 2600, + 86, 1818, + 87, 1818, + 160, 1818, + 409, 1818, + 410, 1818, + 411, 1818, + -2, 2058, + -1, 2601, + 86, 1820, + 87, 1820, + 160, 1820, + 409, 1820, + 410, 1820, + 411, 1820, + -2, 2036, + -1, 2602, 86, 1822, 87, 1822, 160, 1822, 409, 1822, 410, 1822, 411, 1822, - -2, 1954, - -1, 2593, + -2, 1979, + -1, 2603, 86, 1824, 87, 1824, 160, 1824, 409, 1824, 410, 1824, 411, 1824, - -2, 1892, - -1, 2594, - 87, 1867, - 160, 1867, - 409, 1867, - 410, 1867, - 411, 1867, - -2, 1927, - -1, 2595, - 87, 1867, - 160, 1867, - 409, 1867, - 410, 1867, - 411, 1867, - -2, 1943, - -1, 2596, + -2, 1956, + -1, 2604, + 86, 1825, + 87, 1825, + 160, 1825, + 409, 1825, + 410, 1825, + 411, 1825, + -2, 1957, + -1, 2605, + 86, 1827, + 87, 1827, + 160, 1827, + 409, 1827, + 410, 1827, + 411, 1827, + -2, 1895, + -1, 2606, 87, 1870, 160, 1870, 409, 1870, 410, 1870, 411, 1870, - -2, 1923, - -1, 2597, + -2, 1930, + -1, 2607, 87, 1870, 160, 1870, 409, 1870, 410, 1870, 411, 1870, - -2, 1992, - -1, 2598, - 87, 1867, - 160, 1867, - 409, 1867, - 410, 1867, - 411, 1867, - -2, 2015, - -1, 2819, - 111, 1183, - 155, 1183, - 195, 1183, - 198, 1183, - 288, 1183, - -2, 1177, - -1, 2837, - 84, 731, - 160, 731, - -2, 1361, - -1, 3267, - 198, 1183, - 312, 1450, - -2, 1422, - -1, 3456, - 111, 1183, - 155, 1183, - 195, 1183, - 198, 1183, - -2, 1301, - -1, 3458, - 111, 1183, - 155, 1183, - 195, 1183, - 198, 1183, - -2, 1301, - -1, 3470, - 84, 731, - 160, 731, - -2, 1361, - -1, 3491, - 198, 1183, - 312, 1450, - -2, 1423, - -1, 3646, - 111, 1183, - 155, 1183, - 195, 1183, - 198, 1183, - -2, 1302, - -1, 3674, - 87, 1263, - 160, 1263, - -2, 1183, - -1, 3820, - 87, 1263, - 160, 1263, - -2, 1183, - -1, 3989, - 87, 1267, - 160, 1267, - -2, 1183, - -1, 4044, - 87, 1268, - 160, 1268, - -2, 1183, + -2, 1946, + -1, 2608, + 87, 1873, + 160, 1873, + 409, 1873, + 410, 1873, + 411, 1873, + -2, 1926, + -1, 2609, + 87, 1873, + 160, 1873, + 409, 1873, + 410, 1873, + 411, 1873, + -2, 1995, + -1, 2610, + 87, 1870, + 160, 1870, + 409, 1870, + 410, 1870, + 411, 1870, + -2, 2018, + -1, 2832, + 111, 1186, + 155, 1186, + 195, 1186, + 198, 1186, + 288, 1186, + -2, 1180, + -1, 2850, + 84, 732, + 160, 732, + -2, 1364, + -1, 3282, + 198, 1186, + 312, 1453, + -2, 1425, + -1, 3471, + 111, 1186, + 155, 1186, + 195, 1186, + 198, 1186, + -2, 1304, + -1, 3473, + 111, 1186, + 155, 1186, + 195, 1186, + 198, 1186, + -2, 1304, + -1, 3485, + 84, 732, + 160, 732, + -2, 1364, + -1, 3507, + 198, 1186, + 312, 1453, + -2, 1426, + -1, 3662, + 111, 1186, + 155, 1186, + 195, 1186, + 198, 1186, + -2, 1305, + -1, 3691, + 87, 1266, + 160, 1266, + -2, 1186, + -1, 3838, + 87, 1266, + 160, 1266, + -2, 1186, + -1, 4009, + 87, 1270, + 160, 1270, + -2, 1186, + -1, 4064, + 87, 1271, + 160, 1271, + -2, 1186, } const yyPrivate = 57344 -const yyLast = 55449 +const yyLast = 56672 var yyAct = [...]int{ - 782, 758, 4098, 784, 4066, 2868, 223, 4090, 1637, 3993, - 1999, 3999, 1715, 3476, 3576, 4000, 3887, 3287, 3992, 3820, - 3253, 767, 3910, 3945, 3867, 3364, 3702, 3505, 2862, 1711, - 760, 1549, 3767, 3798, 3858, 3819, 1328, 3365, 3888, 3634, - 1775, 812, 2865, 3736, 2781, 37, 648, 3580, 1183, 1481, - 3438, 1060, 3789, 3868, 3870, 3571, 3443, 1762, 1944, 1487, - 3262, 3492, 2416, 666, 1177, 672, 672, 3655, 3643, 3224, - 1718, 672, 690, 699, 2840, 3210, 699, 3186, 2981, 3616, - 3362, 756, 3648, 3459, 208, 2980, 3213, 3430, 1780, 2094, - 2891, 2957, 3282, 3271, 2097, 68, 2979, 2562, 3264, 3461, - 2976, 2133, 3407, 2059, 1777, 2524, 2688, 3049, 2560, 711, - 3009, 2807, 2207, 1959, 2968, 3327, 2165, 696, 2419, 3191, - 2653, 3270, 3193, 3187, 3233, 3189, 2377, 707, 2110, 3188, - 3184, 2820, 1542, 2345, 2321, 1173, 3157, 141, 2320, 750, - 36, 3097, 1622, 2631, 1638, 2191, 2203, 1626, 3023, 2173, - 2174, 1873, 2613, 940, 1627, 2138, 2166, 2202, 2525, 755, - 2090, 1630, 2796, 2063, 2060, 1446, 2791, 2893, 2508, 2503, - 981, 2376, 2873, 2558, 219, 8, 2417, 2237, 1989, 218, - 7, 6, 2366, 1920, 1121, 1709, 2204, 759, 1589, 1776, - 2832, 1659, 665, 1558, 1527, 2357, 2412, 1521, 749, 648, - 1958, 1714, 1769, 1749, 2725, 768, 2360, 1700, 27, 1199, - 2172, 1490, 2169, 1641, 2154, 23, 1596, 1916, 1708, 1053, - 704, 1470, 2532, 223, 1054, 223, 1526, 1112, 1113, 1919, - 681, 2504, 980, 1523, 672, 1580, 1781, 1466, 907, 714, - 757, 209, 24, 25, 17, 16, 1019, 713, 10, 1092, - 1615, 1482, 698, 15, 957, 1398, 1005, 978, 201, 710, - 963, 971, 33, 972, 205, 909, 910, 3877, 1329, 3786, - 647, 2211, 1374, 1260, 1261, 1262, 1259, 2761, 2761, 2761, - 695, 1109, 2534, 3373, 751, 3473, 668, 1260, 1261, 1262, - 1259, 1260, 1261, 1262, 1259, 3240, 684, 3066, 1069, 3065, - 1413, 1178, 952, 2221, 3607, 3446, 1179, 1108, 2676, 1110, - 2616, 3357, 1886, 2619, 1105, 2617, 966, 691, 962, 2614, - 1599, 1603, 207, 2724, 1104, 694, 667, 677, 702, 2319, - 1393, 1456, 3845, 14, 692, 1449, 1450, 1451, 1525, 1105, - 1066, 1367, 929, 1068, 1039, 927, 206, 64, 197, 168, - 1105, 3167, 673, 2325, 1652, 1178, 2329, 1887, 1396, 3152, - 3150, 3147, 3149, 4078, 1504, 198, 1880, 1389, 3569, 3045, - 3043, 1601, 189, 2143, 943, 3853, 199, 1260, 1261, 1262, - 1259, 751, 8, 3743, 3737, 3572, 3363, 7, 2188, 1103, - 1323, 2753, 2751, 3872, 2168, 140, 1260, 1261, 1262, 1259, - 908, 3126, 2160, 2457, 4104, 693, 3866, 4075, 3805, 919, - 126, 3751, 1258, 3586, 4028, 3617, 1222, 2662, 3621, 202, - 2208, 206, 3460, 2670, 2368, 2367, 3971, 1636, 1404, 3864, - 206, 64, 197, 168, 3773, 2755, 3749, 2706, 3921, 1566, - 1403, 1402, 928, 206, 2826, 926, 1401, 1421, 1438, 968, - 929, 961, 3806, 206, 927, 1070, 3124, 206, 1399, 206, - 965, 964, 709, 2974, 1087, 206, 206, 1064, 1065, 2361, - 1952, 3775, 206, 64, 197, 168, 1645, 946, 1657, 2219, - 2552, 953, 206, 64, 197, 168, 1491, 1257, 1650, 1405, - 1889, 2780, 1034, 1032, 2824, 1033, 148, 149, 2553, 150, - 151, 960, 3069, 202, 152, 3016, 1642, 153, 1654, 1682, - 1649, 1528, 2776, 1530, 3057, 140, 202, 2107, 920, 2073, - 970, 924, 3017, 3018, 2632, 959, 202, 2074, 2075, 958, - 1644, 1500, 1656, 1028, 1501, 945, 1088, 1668, 202, 202, - 3257, 951, 3151, 3148, 2827, 202, 898, 3255, 897, 899, - 900, 1478, 901, 902, 1973, 202, 1717, 2449, 1898, 1899, - 206, 64, 197, 168, 1488, 1489, 2778, 1255, 949, 1063, - 167, 195, 204, 196, 124, 1701, 3875, 1062, 1705, 206, - 64, 197, 168, 1040, 4003, 4004, 1420, 2773, 1950, 3968, - 3596, 2793, 3874, 194, 188, 187, 206, 64, 197, 168, - 70, 2794, 1704, 3873, 1250, 1237, 969, 2308, 1238, 2777, - 1036, 1082, 1077, 1072, 1076, 1080, 1602, 1600, 1230, 3875, - 3959, 1232, 1503, 2539, 3964, 1194, 2538, 3874, 3958, 2540, - 2774, 4027, 950, 202, 206, 3947, 1240, 3873, 3957, 1085, - 4070, 4071, 3366, 1075, 1191, 2756, 3947, 3950, 2223, 1233, - 2792, 3884, 202, 1815, 167, 195, 204, 196, 3856, 3050, - 1486, 190, 191, 192, 1485, 1488, 1489, 3740, 1721, 202, - 672, 672, 3973, 3974, 1038, 3366, 3051, 194, 3052, 2657, - 1188, 672, 1187, 140, 2091, 3380, 3969, 3970, 2799, 3977, - 3976, 3975, 3978, 1706, 1083, 3859, 3860, 3861, 3862, 200, - 2498, 699, 699, 1086, 672, 2085, 2912, 202, 2081, 967, - 1197, 3206, 1202, 1205, 1696, 3431, 2215, 1703, 3626, 3436, - 136, 2969, 2492, 1235, 193, 3087, 137, 2356, 2151, 1951, - 1073, 696, 696, 696, 969, 3595, 1226, 2783, 3966, 1422, - 2220, 3777, 3778, 3597, 1115, 3204, 4002, 3517, 956, 1514, - 2779, 1037, 1609, 1608, 1084, 1476, 3085, 1252, 2667, 1392, - 193, 745, 1228, 2215, 747, 2754, 2455, 1300, 1225, 746, - 3876, 2775, 3785, 3570, 1231, 1234, 3044, 2105, 2106, 2963, - 3383, 3091, 2760, 138, 1069, 3200, 1186, 1236, 1179, 2494, - 1502, 3782, 1720, 1719, 1074, 3623, 63, 3411, 1179, 2501, - 1227, 3201, 3202, 3759, 1179, 3760, 1247, 3730, 3285, 1180, - 3286, 2209, 2209, 2555, 1187, 2209, 3211, 3203, 1217, 1253, - 1254, 3754, 3067, 1248, 1249, 922, 1066, 2326, 664, 1068, - 3587, 1888, 2495, 2496, 1702, 3532, 3064, 3283, 3284, 4035, - 2242, 3903, 3222, 3898, 1332, 65, 2210, 1105, 944, 1105, - 942, 1105, 3234, 752, 1105, 3529, 1105, 1069, 1179, 3762, - 1105, 3804, 1202, 1205, 1239, 3259, 2833, 2959, 923, 1242, - 3810, 1081, 1243, 2222, 2487, 3802, 701, 1229, 700, 2972, - 146, 203, 2363, 147, 3522, 3972, 1452, 3158, 169, 2615, - 1035, 3761, 3889, 61, 695, 695, 695, 3905, 3477, 1066, - 1245, 3198, 1068, 3731, 3911, 1206, 1294, 1078, 1604, 697, - 1079, 3776, 3254, 3750, 2867, 1196, 1204, 1203, 1333, 697, - 3484, 908, 2863, 2864, 1395, 2867, 1397, 2340, 1488, 1489, - 3422, 691, 691, 691, 3212, 1488, 1489, 1465, 1409, 694, - 694, 694, 1412, 1181, 1065, 1214, 1418, 666, 692, 692, - 692, 1182, 3622, 1210, 1211, 1372, 1175, 2671, 1377, 139, - 45, 1651, 2752, 169, 1691, 203, 62, 1692, 1216, 3771, - 5, 65, 169, 2422, 1400, 1301, 3289, 3613, 1890, 3419, - 981, 65, 1190, 1192, 1195, 169, 1477, 1241, 143, 144, - 3883, 3174, 145, 1193, 2490, 169, 3533, 697, 3421, 169, - 3693, 169, 4110, 1296, 1297, 1298, 1299, 169, 169, 925, - 1089, 2798, 1071, 971, 169, 972, 697, 3212, 3682, 693, - 693, 693, 2555, 2467, 169, 2466, 1246, 2226, 2228, 2229, - 2092, 3583, 3811, 697, 3207, 672, 1029, 3803, 1516, 2941, - 4093, 1208, 672, 2970, 2488, 2489, 648, 648, 3965, 3088, - 2805, 1244, 1538, 1537, 1484, 1215, 648, 648, 1463, 65, - 1553, 1553, 3688, 672, 1462, 3779, 1204, 1203, 2802, 2803, - 2435, 3759, 3912, 3760, 1106, 1107, 2415, 2438, 65, 1111, - 3220, 797, 142, 2801, 699, 1581, 666, 142, 3790, 1551, - 1551, 1592, 1555, 1344, 1345, 65, 1461, 3260, 3627, 1480, - 1479, 2913, 169, 2914, 2915, 3263, 223, 1174, 3824, 2084, - 3146, 3199, 2082, 1560, 2421, 648, 2458, 3991, 1697, 2423, - 1031, 169, 3755, 1030, 3462, 2415, 3756, 3762, 3567, 1727, - 1730, 1731, 934, 3369, 2437, 2432, 1414, 1291, 169, 1419, - 1728, 3703, 3704, 3705, 3709, 3707, 3708, 3710, 3706, 709, - 678, 1515, 3944, 142, 3279, 3283, 3284, 3011, 3013, 3761, - 2811, 2815, 2816, 2817, 2812, 2814, 2813, 1634, 1524, 3028, - 3029, 3288, 1639, 2424, 3162, 1378, 169, 2663, 2544, 1648, - 2436, 4094, 1376, 938, 1222, 2453, 2212, 2080, 936, 935, - 1547, 1548, 2057, 1411, 1430, 2766, 3318, 3090, 1436, 2425, - 1435, 1892, 3695, 1434, 1433, 1423, 1041, 703, 1680, 1424, - 3424, 2910, 3280, 3221, 975, 976, 977, 2341, 3408, 1643, - 1472, 1473, 1553, 1443, 1553, 1187, 1655, 2224, 2225, 2647, - 1658, 3099, 3098, 2335, 2334, 2770, 973, 1445, 1448, 696, - 2333, 3823, 696, 696, 1415, 1416, 2238, 2932, 2933, 1408, - 1425, 1426, 1427, 1428, 1429, 1690, 1431, 934, 1029, 1505, - 1506, 1901, 1437, 1902, 1492, 937, 941, 1495, 1610, 1069, - 1532, 1534, 970, 3684, 1221, 2227, 1069, 3683, 1582, 3605, - 1545, 1546, 1406, 1407, 1067, 3164, 1624, 1625, 1536, 142, - 1675, 1676, 1553, 2332, 2942, 2944, 2945, 2946, 2943, 3990, - 1900, 3689, 3690, 930, 142, 3656, 142, 2479, 933, 1187, - 1779, 1647, 4106, 936, 935, 4091, 4092, 1629, 931, 1458, - 1633, 1763, 1810, 1811, 1828, 1814, 1632, 1567, 677, 1716, - 1561, 3012, 1573, 1829, 2426, 1457, 1579, 2276, 1184, 1605, - 2275, 1593, 1031, 4112, 2348, 1030, 1836, 1594, 1838, 2431, - 1839, 1840, 1841, 2429, 2522, 1737, 1738, 1739, 1740, 1741, - 1742, 1743, 1744, 1745, 1746, 1747, 1748, 2349, 2350, 3370, - 1713, 1760, 1761, 1613, 2931, 1616, 1617, 1729, 3954, 1457, - 2838, 1258, 2359, 1679, 4100, 2217, 3324, 1618, 1619, 2132, - 3755, 1187, 1678, 4088, 3869, 2555, 4046, 1891, 4014, 3320, - 1694, 1894, 695, 1896, 1813, 695, 695, 1666, 2422, 2425, - 1669, 1903, 1905, 1258, 1906, 4011, 1908, 1909, 1689, 3281, - 1837, 1581, 1871, 1710, 2767, 1732, 1917, 1553, 1922, 1923, - 1893, 1925, 1516, 672, 1042, 1661, 3239, 1222, 672, 691, - 2634, 1553, 691, 691, 2395, 981, 1699, 694, 1945, 3427, - 694, 694, 1688, 1684, 1687, 1686, 692, 4101, 1683, 692, - 692, 1553, 1712, 1818, 1819, 1820, 4047, 1516, 1707, 4047, - 1874, 4015, 690, 1029, 1827, 4005, 1834, 2523, 1184, 1835, - 2422, 2425, 2523, 1467, 1471, 1471, 1471, 1258, 4012, 3987, - 1667, 1751, 1972, 1670, 1671, 1882, 1848, 1849, 3382, 3938, - 2358, 1979, 1979, 2313, 1516, 1698, 1516, 1516, 1467, 1467, - 672, 672, 2839, 2046, 1917, 2050, 1870, 2452, 1553, 2054, - 2055, 3324, 3435, 2839, 2070, 2662, 648, 693, 1758, 1759, - 693, 693, 2130, 3937, 3293, 1260, 1261, 1262, 1259, 1924, - 648, 3931, 1553, 1685, 2426, 1926, 3291, 3156, 2252, 2421, - 2415, 2420, 3154, 2418, 2423, 1976, 2523, 1031, 1219, 3031, - 1030, 2785, 3988, 3906, 2757, 2410, 2652, 3894, 1877, 672, - 1917, 1553, 1258, 2115, 2639, 672, 672, 672, 707, 707, - 3843, 2394, 1220, 1842, 2208, 2125, 2126, 2127, 2128, 1222, - 3842, 2072, 2134, 3837, 2001, 1260, 1261, 1262, 1259, 223, - 3836, 3835, 223, 223, 2408, 223, 1258, 1263, 2424, 2318, - 2108, 2048, 1872, 2312, 2252, 1293, 2426, 1982, 1100, 1101, - 1102, 2421, 2415, 2420, 1303, 2418, 2423, 1373, 1921, 1878, - 2311, 912, 913, 914, 915, 1220, 2217, 2100, 2101, 2251, - 3895, 3122, 1937, 3834, 3814, 1828, 1828, 2176, 2086, 2283, - 1312, 2199, 1099, 3844, 2103, 1096, 1912, 1828, 1828, 2056, - 1444, 1766, 1953, 2381, 2193, 2077, 2252, 2079, 3813, 1260, - 1261, 1262, 1259, 2252, 2252, 3788, 1941, 1942, 2098, 2099, - 2424, 2114, 1960, 2142, 1962, 1963, 2145, 2146, 2093, 2148, - 1801, 1539, 4119, 1643, 1947, 1948, 1945, 1965, 1969, 1955, - 1553, 2206, 1961, 2117, 2118, 2119, 1983, 1984, 2187, 1970, - 4102, 3473, 1564, 2178, 3720, 2250, 2252, 2217, 696, 2053, - 3538, 3035, 1913, 1914, 1915, 2841, 2665, 1260, 1261, 1262, - 1259, 2047, 1978, 1980, 1928, 1929, 1930, 1931, 2664, 2656, - 1069, 2217, 2402, 1069, 3536, 2271, 2058, 2052, 2252, 2256, - 2071, 3486, 1069, 2198, 2200, 3452, 2137, 3400, 2076, 2087, - 2078, 3396, 3301, 2123, 785, 795, 1663, 142, 142, 142, - 1067, 2183, 1710, 2248, 786, 1309, 787, 791, 794, 790, - 788, 789, 1066, 917, 1946, 1068, 3006, 2112, 1207, 2113, - 1171, 2743, 2731, 2555, 1066, 2171, 1166, 1068, 2120, 2121, - 2723, 1291, 2102, 1981, 1275, 3244, 1964, 2171, 912, 913, - 914, 915, 2139, 2678, 932, 1093, 1094, 1095, 1098, 2660, - 1097, 4113, 1971, 3082, 3487, 1974, 1975, 2648, 3453, 792, - 3401, 2641, 1817, 1816, 3397, 3302, 2156, 2636, 2235, 2236, - 2628, 1541, 1468, 1292, 2626, 1543, 2624, 2622, 1069, 2380, - 2314, 1817, 1816, 2189, 2290, 2289, 1544, 4074, 2450, 2523, - 2274, 2177, 793, 1797, 2381, 1258, 1945, 2265, 2186, 2184, - 1794, 3878, 1455, 1258, 1796, 1793, 1795, 1799, 1800, 3787, - 1464, 695, 1798, 2197, 2195, 2264, 1258, 1474, 2323, 2324, - 1066, 2327, 2381, 1068, 2330, 1493, 1494, 2231, 1496, 1497, - 2637, 1498, 2263, 2253, 2642, 2336, 2201, 2216, 1672, 3235, - 2637, 750, 3747, 2629, 672, 672, 672, 2627, 691, 2623, - 2623, 2214, 2381, 2313, 2306, 2254, 694, 1258, 1258, 672, - 672, 672, 672, 1258, 3899, 692, 3686, 2239, 3685, 2230, - 1258, 3657, 2378, 3465, 1591, 1540, 1854, 1499, 1467, 3463, - 1453, 2382, 2383, 2384, 1454, 2387, 1516, 2232, 1258, 1751, - 917, 3671, 1471, 1469, 3630, 1847, 939, 2140, 3445, 2196, - 3325, 2244, 3316, 3308, 1471, 1258, 2252, 3303, 3900, 3215, - 2217, 1673, 1516, 2966, 2965, 3658, 2809, 3466, 2284, 2285, - 3236, 2287, 1379, 3464, 2762, 2233, 2234, 2675, 2294, 2444, - 2640, 1843, 1844, 1845, 1846, 2546, 693, 1850, 1851, 1852, - 1853, 1855, 1856, 1857, 1858, 1859, 1860, 1861, 1862, 1863, - 1864, 1865, 2181, 2180, 1757, 2179, 1804, 1805, 1806, 1807, - 1808, 1809, 1802, 1803, 3237, 1260, 1261, 1262, 1259, 2399, - 1754, 1756, 1753, 2401, 1755, 2403, 3358, 1440, 2696, 1770, - 1453, 1439, 1189, 2451, 1454, 2614, 3355, 672, 1979, 1278, - 1279, 1280, 1281, 1282, 1275, 2685, 2527, 2527, 2070, 2527, - 2315, 2307, 2309, 2310, 2608, 3036, 1907, 1165, 1161, 1162, - 1163, 1164, 1770, 2701, 2245, 2700, 2699, 2697, 3956, 648, - 648, 1260, 1261, 1262, 1259, 2404, 1259, 1187, 1260, 1261, - 1262, 1259, 2618, 1553, 672, 1262, 1259, 3356, 1597, 2342, - 2140, 3698, 1722, 1723, 1724, 1725, 1726, 672, 2414, 3697, - 3053, 2902, 2413, 1187, 2599, 666, 2900, 1332, 2879, 2877, - 3677, 1592, 2550, 2070, 4084, 2715, 2604, 4083, 2606, 3631, - 3632, 223, 1260, 1261, 1262, 1259, 2745, 1562, 2746, 1311, - 1597, 678, 2407, 4082, 1767, 2698, 2388, 4080, 1771, 1772, - 1773, 1774, 1310, 1069, 3624, 4109, 4079, 2541, 1812, 2542, - 4018, 2531, 2529, 3986, 2533, 3985, 1822, 2391, 3115, 3433, - 3901, 2644, 2397, 2953, 2951, 2398, 2782, 142, 2547, 2548, - 2427, 2428, 3839, 2433, 1260, 1261, 1262, 1259, 2400, 2658, - 3827, 1333, 2206, 2687, 2535, 1066, 3101, 3439, 1068, 1553, - 3817, 1553, 3807, 1553, 1260, 1261, 1262, 1259, 1187, 1260, - 1261, 1262, 1259, 2610, 3625, 2609, 2677, 2563, 1598, 1875, - 4108, 3996, 1260, 1261, 1262, 1259, 2603, 3738, 3660, 3434, - 2668, 3114, 3659, 2952, 2950, 2557, 2808, 3478, 2497, 2949, - 2938, 1832, 1553, 1187, 2502, 142, 3444, 2709, 1260, 1261, - 1262, 1259, 142, 2654, 2655, 3601, 1833, 2536, 1260, 1261, - 1262, 1259, 2716, 3467, 2267, 142, 3432, 1553, 142, 142, - 3192, 1551, 3304, 2704, 1260, 1261, 1262, 1259, 2389, 2390, - 3205, 142, 1260, 1261, 1262, 1259, 3078, 2551, 2392, 2393, - 2554, 2702, 2703, 3048, 3047, 2936, 1551, 2259, 2717, 2948, - 2937, 1949, 2068, 1532, 1534, 2935, 2934, 2600, 2926, 2602, - 2920, 2919, 2672, 2918, 2917, 2758, 2764, 2765, 2630, 2543, - 2768, 2317, 2159, 2720, 2721, 2158, 2157, 1968, 2153, 1260, - 1261, 1262, 1259, 2152, 2266, 2689, 2109, 2689, 1187, 1956, - 1957, 1897, 1187, 1895, 1664, 1391, 2693, 3780, 3781, 1553, - 2718, 2674, 1516, 3589, 4105, 4103, 1966, 1967, 2050, 4085, - 2669, 1260, 1261, 1262, 1259, 2707, 2837, 671, 671, 2650, - 3577, 4072, 2843, 679, 4034, 2844, 1977, 2659, 2661, 3588, - 1260, 1261, 1262, 1259, 2666, 3526, 1875, 4033, 4030, 3962, - 2683, 1875, 1875, 2854, 1260, 1261, 1262, 1259, 2749, 2249, - 1710, 2679, 2680, 1187, 1169, 2825, 1260, 1261, 1262, 1259, - 3961, 2876, 1260, 1261, 1262, 1259, 3768, 3942, 1187, 1187, - 1187, 1979, 3886, 3635, 1187, 2695, 2886, 2887, 2888, 2889, - 1187, 2896, 2705, 2897, 2898, 3880, 2899, 745, 2901, 2821, - 747, 2141, 2786, 3388, 2144, 746, 2563, 2147, 1535, 2896, - 2149, 2601, 3863, 1471, 2822, 1069, 3854, 3831, 3826, 2855, - 3118, 2527, 2834, 1168, 3825, 2806, 3784, 3770, 3769, 2682, - 1260, 1261, 1262, 1259, 3739, 2954, 3679, 1260, 1261, 1262, - 1259, 2001, 3639, 3628, 3610, 648, 2845, 1260, 1261, 1262, - 1259, 3117, 2050, 3608, 2857, 3606, 1187, 2070, 2070, 2070, - 2070, 2070, 2070, 3603, 3600, 3599, 2192, 2871, 2788, 3575, - 2790, 3573, 3546, 1187, 2070, 2787, 3543, 2527, 1260, 1261, - 1262, 1259, 2871, 2882, 2883, 2960, 2870, 2874, 2885, 3540, - 2958, 2874, 2804, 3014, 2892, 1553, 679, 2836, 3429, 3416, - 3409, 2881, 2828, 3393, 8, 3391, 672, 672, 3386, 7, - 1921, 2842, 3336, 3314, 2456, 3313, 3311, 2459, 2460, 2461, - 2462, 2463, 2464, 2465, 3116, 3310, 2468, 2469, 2470, 2471, - 2472, 2473, 2474, 2475, 2476, 2477, 2478, 2859, 2480, 2481, - 2482, 2483, 2484, 2872, 2485, 2878, 2856, 3305, 3299, 3298, - 2884, 1260, 1261, 1262, 1259, 2069, 2742, 3216, 3002, 3179, - 2982, 223, 2853, 2726, 2727, 3178, 223, 3177, 3168, 2732, - 2241, 3166, 3163, 3161, 2246, 3015, 2916, 2982, 2322, 2928, - 3092, 3089, 2255, 1260, 1261, 1262, 1259, 3068, 1828, 3046, - 1828, 3021, 2947, 3063, 2939, 1274, 1273, 1283, 1284, 1276, - 1277, 1278, 1279, 1280, 1281, 1282, 1275, 3077, 2961, 2929, - 2967, 3032, 2927, 1553, 2278, 2923, 3084, 2247, 2922, 2262, - 2921, 2983, 2984, 2985, 2986, 2987, 2988, 2269, 2771, 2763, - 142, 2759, 3058, 142, 142, 3005, 142, 3003, 2999, 2651, - 3004, 853, 852, 2869, 3070, 3037, 2337, 2331, 2328, 2286, - 3041, 2162, 3019, 2155, 2291, 2292, 2293, 3022, 1885, 2296, - 2297, 2298, 2299, 2300, 2301, 2302, 2303, 2304, 2305, 2964, - 2875, 1884, 1665, 2847, 1624, 1625, 1067, 1340, 2850, 142, - 1874, 708, 1069, 2741, 1336, 3062, 1335, 1172, 1067, 921, - 4111, 4060, 2740, 3918, 1069, 1260, 1261, 1262, 1259, 3914, - 1629, 3764, 3763, 1633, 142, 3060, 2739, 3752, 3748, 1632, - 1260, 1261, 1262, 1259, 3602, 3039, 3071, 3038, 3165, 1260, - 1261, 1262, 1259, 3081, 2738, 3169, 3170, 3171, 3173, 3584, - 3175, 3176, 3086, 1260, 1261, 1262, 1259, 3056, 3059, 3061, - 1187, 3054, 2737, 3556, 3458, 3073, 3195, 3457, 3074, 3072, - 3456, 1260, 1261, 1262, 1259, 4059, 3209, 3426, 2736, 3080, - 3405, 672, 3403, 3402, 3399, 3093, 1617, 3398, 3392, 1260, - 1261, 1262, 1259, 2735, 3225, 1187, 1618, 1619, 672, 3113, - 1187, 1187, 3390, 3100, 1292, 1260, 1261, 1262, 1259, 2070, - 2378, 3094, 3243, 3107, 3109, 3110, 3155, 3106, 3371, 3108, - 1260, 1261, 1262, 1259, 3361, 3360, 2396, 1260, 1261, 1262, - 1259, 3347, 2444, 1276, 1277, 1278, 1279, 1280, 1281, 1282, - 1275, 3346, 3228, 3219, 3269, 3245, 3272, 3232, 3272, 3272, - 3182, 3153, 3120, 1187, 3181, 1266, 1267, 1268, 1269, 1270, - 1271, 1272, 1264, 3111, 2871, 3103, 3160, 3159, 3102, 3096, - 3030, 3294, 2821, 206, 3252, 197, 168, 3290, 2784, 1553, - 1553, 3197, 2625, 2621, 2795, 3247, 2734, 2620, 2295, 3180, - 1069, 2288, 1069, 3256, 3258, 2282, 2281, 1069, 2280, 2871, - 2279, 1875, 2277, 1875, 2871, 2871, 2273, 2272, 1551, 1551, - 3295, 3296, 3241, 1260, 1261, 1262, 1259, 3104, 3105, 2270, - 2261, 3218, 1875, 1875, 1069, 3227, 672, 2258, 2257, 2161, - 3230, 3231, 1066, 3195, 1868, 1068, 3242, 3268, 2733, 3267, - 1867, 3238, 1866, 1831, 2730, 1516, 202, 4017, 2050, 2050, - 3277, 3251, 671, 1176, 1591, 1830, 2414, 2871, 1821, 1565, - 2413, 2729, 1563, 1185, 3936, 1260, 1261, 1262, 1259, 3273, - 3274, 1260, 1261, 1262, 1259, 1330, 3278, 3913, 3849, 2908, - 2909, 2728, 3846, 3292, 206, 3833, 1213, 3828, 1260, 1261, - 1262, 1259, 3733, 3732, 2924, 2925, 3714, 3696, 3692, 3670, - 3654, 3557, 1187, 2643, 3554, 2646, 2709, 3524, 1260, 1261, - 1262, 1259, 3523, 3520, 3359, 3519, 3127, 3128, 3485, 3482, - 2962, 3480, 3129, 3130, 3131, 3132, 3447, 3133, 3134, 3135, - 3136, 3137, 3138, 3139, 3140, 3141, 3142, 3143, 1283, 1284, - 1276, 1277, 1278, 1279, 1280, 1281, 1282, 1275, 3321, 3322, - 2722, 3306, 3312, 3315, 3300, 3307, 3112, 202, 3319, 1612, - 1623, 672, 1614, 1628, 1631, 4052, 3818, 3309, 2712, 2686, - 1620, 3332, 2692, 3333, 1447, 2993, 2955, 1260, 1261, 1262, - 1259, 2880, 2830, 2710, 2711, 2708, 2829, 2823, 2789, 3340, - 2744, 2713, 2714, 2635, 2545, 1260, 1261, 1262, 1259, 2486, - 3343, 3344, 3345, 2379, 2351, 2316, 2563, 2719, 1752, 202, - 3349, 2122, 1260, 1261, 1262, 1259, 1911, 1881, 1695, 2530, - 1274, 1273, 1283, 1284, 1276, 1277, 1278, 1279, 1280, 1281, - 1282, 1275, 1646, 1621, 2134, 3413, 1722, 1875, 3415, 1390, - 1375, 1371, 3417, 2684, 3372, 1370, 1369, 3423, 3246, 1368, - 3275, 3375, 1367, 3248, 3249, 1366, 3374, 1365, 1364, 3378, - 1363, 1362, 1361, 3394, 3379, 3930, 3668, 1765, 1360, 2689, - 1260, 1261, 1262, 1259, 1359, 1358, 1357, 1356, 3384, 1355, - 1354, 1353, 672, 2050, 2069, 1352, 1351, 3418, 1350, 3420, - 1349, 1348, 142, 3451, 1260, 1261, 1262, 1259, 1347, 3425, - 1346, 1343, 1342, 1341, 1339, 1338, 3428, 1337, 1334, 2527, - 2070, 3470, 1327, 1326, 1324, 3406, 3666, 1323, 2848, 2849, - 1274, 1273, 1283, 1284, 1276, 1277, 1278, 1279, 1280, 1281, - 1282, 1275, 3410, 1322, 3488, 3412, 1321, 1187, 1320, 1319, - 1318, 1317, 1316, 1315, 1314, 2846, 3269, 1313, 1308, 1069, - 1187, 1307, 1306, 1305, 2851, 2852, 1069, 1304, 1224, 1170, - 3328, 3329, 1187, 3928, 3535, 3926, 3924, 3521, 1553, 2386, - 1274, 1273, 1283, 1284, 1276, 1277, 1278, 1279, 1280, 1281, - 1282, 1275, 3323, 3442, 2365, 1212, 4050, 4001, 3472, 672, - 3331, 2050, 2810, 2556, 2164, 1187, 1223, 1551, 3001, 3537, - 3518, 2991, 3338, 2996, 3339, 3337, 2994, 3479, 2997, 3481, - 3440, 2995, 2990, 3469, 3468, 3334, 2998, 1511, 2517, 2518, - 3511, 3475, 3000, 2989, 1522, 3559, 125, 223, 67, 3955, - 3865, 66, 3675, 3560, 2649, 2638, 1441, 2505, 3547, 3525, - 1187, 3489, 3550, 3530, 3076, 1559, 3214, 3527, 1939, 1940, - 2454, 3561, 3534, 2904, 3528, 1934, 1935, 1936, 3531, 1875, - 2905, 2906, 2907, 3541, 3539, 3542, 2892, 3350, 3265, 3544, - 3266, 2039, 3545, 3551, 2512, 2516, 2517, 2518, 2513, 2521, - 2514, 2519, 3604, 3558, 2515, 1606, 2520, 3549, 3376, 3377, - 3552, 2633, 2673, 3612, 1660, 674, 1640, 675, 1187, 2982, - 676, 2654, 2655, 3582, 2338, 2124, 1218, 3190, 3183, 2858, - 2831, 3568, 2406, 2374, 1943, 1910, 4063, 3548, 1187, 1553, - 1553, 142, 1817, 1816, 3225, 3578, 3579, 1386, 1387, 1384, - 1385, 142, 1382, 1383, 3609, 3830, 3611, 3647, 3040, 3647, - 3042, 1380, 1381, 3297, 2982, 2499, 2493, 2051, 1551, 1763, - 3637, 1187, 3664, 1187, 1508, 3641, 3642, 1507, 3636, 1875, - 1251, 2182, 3342, 3667, 1875, 3669, 3024, 2339, 3563, 2194, - 1553, 1460, 3644, 1459, 1432, 3619, 2192, 3638, 3620, 1483, - 3618, 4024, 4022, 3979, 3952, 3951, 3629, 3949, 672, 3890, - 1187, 1187, 3615, 3640, 1187, 1187, 3850, 3652, 3651, 1763, - 3728, 3727, 2871, 3665, 3574, 2178, 3395, 3368, 3367, 3352, - 3598, 3095, 3353, 3663, 3716, 3472, 2439, 2409, 3673, 3711, - 1662, 3034, 1069, 3676, 3518, 1945, 1457, 3680, 3725, 3414, - 3700, 3701, 4054, 4053, 3712, 3713, 3079, 3672, 2769, 3119, - 3734, 3735, 2367, 3471, 3511, 2260, 1394, 3678, 1209, 4053, - 4054, 3694, 3474, 1553, 3348, 1716, 1184, 1716, 2069, 2069, - 2069, 2069, 2069, 2069, 210, 3, 1475, 75, 2, 1286, - 3722, 1290, 3721, 4076, 4077, 2069, 3765, 1, 2750, 1879, - 1388, 3717, 1551, 3723, 3746, 916, 3758, 1287, 1289, 1285, - 911, 1288, 1274, 1273, 1283, 1284, 1276, 1277, 1278, 1279, - 1280, 1281, 1282, 1275, 1529, 3741, 2537, 912, 913, 914, - 915, 3745, 1184, 2104, 1557, 1883, 918, 3007, 3753, 3757, - 981, 3008, 3341, 3010, 2772, 3799, 2213, 3793, 3772, 1274, - 1273, 1283, 1284, 1276, 1277, 1278, 1279, 1280, 1281, 1282, - 1275, 1187, 2512, 2516, 2517, 2518, 2513, 2521, 2514, 2519, - 3783, 2971, 2515, 3816, 2520, 3822, 2491, 2355, 3208, 1442, - 974, 3791, 142, 1823, 1677, 1201, 1674, 142, 1200, 3795, - 3794, 1198, 1768, 3582, 799, 3796, 2167, 2956, 3812, 2930, - 3808, 3724, 4062, 4097, 3590, 1187, 3591, 4016, 142, 4065, - 1553, 1693, 783, 3943, 3855, 4020, 3857, 3744, 2218, 1256, - 142, 3055, 3121, 1001, 3276, 840, 3829, 810, 1325, 1653, - 3250, 1069, 3125, 3123, 809, 1927, 3437, 2800, 3729, 1551, - 1932, 3840, 3027, 3801, 1002, 3838, 2150, 3852, 3742, 1607, - 1611, 2405, 3809, 3909, 1509, 1510, 3674, 1512, 1513, 3261, - 1517, 1518, 1519, 2866, 3882, 1716, 3871, 3448, 3449, 3450, - 1635, 3904, 3483, 3454, 3455, 3851, 1274, 1273, 1283, 1284, - 1276, 1277, 1278, 1279, 1280, 1281, 1282, 1275, 3594, 3592, - 3661, 3662, 3593, 3891, 1568, 1569, 1570, 1571, 1572, 715, - 1574, 1575, 1576, 1577, 1578, 2083, 3879, 646, 1584, 1585, - 1586, 1587, 1985, 1986, 1051, 3715, 3885, 2163, 716, 2385, - 3967, 3908, 3832, 954, 1187, 3893, 2364, 955, 947, 2819, - 2818, 1733, 1553, 1265, 1750, 3933, 3144, 3145, 1302, 754, - 3940, 3923, 3925, 3927, 3929, 2243, 3907, 2797, 3902, 3506, - 3020, 74, 73, 72, 71, 3941, 3916, 231, 801, 230, - 3766, 1551, 3633, 3932, 3922, 3939, 4067, 3847, 3848, 780, - 779, 2111, 778, 777, 776, 775, 2510, 2111, 2111, 2111, - 2511, 2509, 3948, 1553, 3946, 2507, 3799, 2506, 2065, 2064, - 3033, 3351, 2129, 2131, 3223, 2895, 1067, 2890, 142, 1990, - 3960, 1988, 3989, 142, 1520, 2434, 2441, 1987, 3997, 3980, - 2069, 3998, 1551, 3385, 3981, 3585, 3919, 3983, 3984, 3982, - 3920, 3691, 2940, 3581, 1933, 2430, 2007, 2911, 2004, 2003, - 142, 2903, 3687, 3681, 2035, 4013, 3797, 3646, 3490, 3491, - 3497, 4006, 2373, 4007, 1120, 4008, 1116, 4009, 2681, 4010, - 1118, 1119, 1117, 2694, 4023, 3317, 4025, 4026, 2411, 3387, - 4021, 4019, 3185, 2347, 2346, 2344, 3389, 2343, 3871, 1417, - 1187, 4029, 1274, 1273, 1283, 1284, 1276, 1277, 1278, 1279, - 1280, 1281, 1282, 1275, 3881, 3963, 3614, 2561, 2559, 1167, - 3822, 4042, 3330, 3326, 2175, 3335, 2992, 2190, 3404, 4044, - 4045, 4043, 4051, 3075, 4048, 4049, 4061, 2066, 4069, 2062, - 2061, 4068, 1091, 4055, 4056, 4057, 4058, 1090, 1588, 2973, - 2500, 3774, 1938, 948, 2362, 109, 4081, 41, 122, 4073, - 989, 108, 1187, 185, 59, 2240, 3495, 184, 58, 120, - 182, 57, 103, 102, 4086, 3908, 4087, 4089, 119, 180, - 56, 215, 4095, 214, 217, 4099, 216, 213, 4096, 1274, - 1273, 1283, 1284, 1276, 1277, 1278, 1279, 1280, 1281, 1282, - 1275, 2611, 2612, 212, 4040, 1595, 211, 3507, 3953, 3650, - 3718, 3935, 906, 4107, 3719, 44, 43, 186, 42, 110, - 3498, 60, 4069, 4115, 40, 4068, 4114, 39, 38, 34, - 13, 3493, 985, 986, 4099, 4116, 3515, 3516, 12, 35, - 4120, 22, 3494, 1029, 1273, 1283, 1284, 1276, 1277, 1278, - 1279, 1280, 1281, 1282, 1275, 21, 1681, 20, 206, 64, - 197, 168, 26, 32, 31, 135, 1716, 134, 30, 133, - 132, 131, 130, 129, 128, 127, 29, 198, 19, 3499, - 51, 50, 49, 1875, 189, 48, 47, 46, 199, 9, - 123, 118, 116, 28, 117, 114, 115, 113, 112, 1875, - 111, 106, 3553, 104, 86, 3555, 85, 140, 84, 99, - 98, 97, 96, 95, 94, 92, 93, 1000, 83, 82, - 81, 80, 126, 79, 101, 107, 3562, 1031, 105, 90, - 1030, 202, 100, 91, 89, 88, 87, 78, 77, 76, - 166, 165, 164, 163, 162, 160, 2352, 2353, 2354, 161, - 159, 158, 157, 156, 155, 154, 52, 53, 54, 55, - 176, 2369, 2370, 2371, 2372, 175, 177, 179, 181, 1015, - 178, 183, 173, 171, 174, 172, 170, 3514, 990, 2420, - 69, 11, 121, 18, 4, 142, 0, 0, 0, 0, - 0, 0, 142, 0, 0, 0, 0, 0, 3841, 0, - 0, 0, 0, 0, 3503, 992, 0, 0, 148, 149, - 0, 150, 151, 0, 0, 0, 152, 0, 0, 153, - 0, 0, 0, 0, 0, 2116, 3500, 3504, 3502, 3501, - 0, 0, 0, 2036, 0, 0, 0, 0, 0, 0, - 206, 2069, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 3645, 0, 0, 3509, 3510, 0, 2039, - 1014, 1012, 3892, 0, 0, 0, 0, 3896, 3897, 0, - 0, 0, 167, 195, 204, 196, 124, 0, 0, 1522, - 0, 0, 0, 0, 0, 0, 0, 1011, 0, 0, - 0, 0, 0, 0, 0, 194, 188, 187, 3917, 984, - 0, 0, 70, 202, 0, 0, 0, 0, 0, 3517, - 991, 1024, 0, 2013, 0, 0, 0, 0, 0, 0, - 0, 3496, 0, 0, 0, 0, 1559, 3508, 0, 0, - 0, 0, 0, 0, 1020, 0, 0, 0, 0, 2111, + 784, 760, 4118, 786, 4086, 4110, 223, 2882, 1643, 2008, + 4013, 1723, 3492, 3592, 4019, 3302, 4012, 4020, 3929, 3838, + 3268, 769, 3885, 3964, 762, 3719, 3379, 3815, 3521, 1487, + 3784, 3876, 1333, 2876, 1555, 3380, 3905, 3837, 3650, 1719, + 3906, 3753, 814, 1783, 2879, 1063, 648, 1188, 3806, 3587, + 3596, 2794, 3886, 3888, 3453, 1953, 3458, 1770, 2428, 3671, + 3508, 3277, 1726, 666, 1462, 673, 673, 1181, 2853, 1493, + 3659, 673, 692, 701, 3238, 3224, 701, 3200, 208, 3632, + 2536, 2574, 3474, 3664, 3377, 2106, 2993, 2994, 37, 2995, + 3227, 3445, 1788, 2971, 3279, 2905, 3476, 2119, 758, 2142, + 3297, 3422, 2218, 3286, 2990, 2701, 3063, 2572, 2174, 3342, + 2982, 3207, 2666, 2068, 1968, 3205, 3023, 3285, 2820, 1176, + 3203, 2388, 141, 3201, 2332, 3202, 3247, 709, 3198, 3171, + 2356, 2431, 757, 1628, 3111, 1621, 2833, 2214, 2331, 752, + 2202, 2461, 1785, 2103, 36, 1632, 2643, 2182, 3037, 1881, + 2183, 2175, 2625, 942, 713, 2147, 68, 1633, 2099, 2213, + 698, 2537, 1548, 1636, 2520, 2809, 2907, 2072, 2804, 2515, + 984, 2429, 2887, 2845, 1998, 2377, 1928, 2387, 2570, 219, + 8, 1784, 1124, 2248, 1717, 6, 1418, 2215, 2069, 218, + 7, 761, 1057, 2172, 1595, 1564, 1667, 665, 1533, 648, + 1527, 2424, 751, 2368, 1777, 2738, 1452, 759, 1529, 2371, + 1757, 1708, 770, 1496, 23, 1660, 1204, 2181, 1647, 2163, + 2178, 1602, 1716, 223, 1967, 223, 27, 1115, 1116, 1924, + 1056, 2544, 1927, 706, 673, 1586, 715, 1532, 647, 683, + 1022, 959, 1472, 2516, 1447, 1497, 16, 700, 1789, 983, + 1488, 909, 1476, 686, 24, 25, 209, 716, 975, 1722, + 981, 17, 1644, 205, 1403, 1095, 965, 10, 1008, 1334, + 2222, 201, 14, 1379, 712, 911, 668, 912, 15, 1265, + 1266, 1267, 1264, 1265, 1266, 1267, 1264, 206, 64, 197, + 168, 1112, 33, 1265, 1266, 1267, 1264, 3895, 697, 3803, + 2774, 1111, 2774, 1113, 2774, 2546, 198, 3488, 973, 3388, + 974, 3254, 3080, 189, 3079, 2232, 1182, 199, 693, 3623, + 3461, 3372, 1183, 704, 2689, 1069, 2631, 2629, 2628, 2626, + 1894, 1605, 1609, 1107, 1108, 207, 140, 667, 2330, 1398, + 679, 1531, 674, 3863, 695, 3164, 1458, 1071, 1372, 954, + 696, 126, 1042, 1455, 1456, 1457, 2336, 1108, 931, 1072, + 202, 1108, 929, 968, 694, 964, 3181, 978, 979, 980, + 1659, 2340, 1401, 3161, 1895, 3166, 3163, 4098, 1182, 1510, + 1888, 2737, 1394, 1607, 3585, 3059, 3057, 8, 2152, 3871, + 3760, 3754, 3588, 1106, 3378, 2199, 1328, 7, 2766, 2764, + 3890, 2177, 753, 910, 2169, 1265, 1266, 1267, 1264, 1265, + 1266, 1267, 1264, 3140, 2469, 4124, 3884, 4095, 3768, 3822, + 921, 945, 206, 1263, 3602, 1227, 1409, 4048, 2675, 3637, + 1090, 3633, 2219, 3475, 3990, 2379, 2683, 148, 149, 1642, + 150, 151, 2768, 3882, 3790, 152, 206, 206, 153, 2719, + 2378, 3940, 1572, 1408, 3766, 1407, 1045, 1406, 930, 931, + 206, 929, 928, 3823, 206, 64, 197, 168, 1073, 2839, + 711, 140, 206, 64, 197, 168, 1404, 1067, 1426, 1068, + 3138, 206, 2230, 206, 1443, 2988, 2372, 1410, 206, 64, + 197, 168, 1961, 2793, 2564, 202, 970, 206, 963, 753, + 1037, 1035, 1091, 1036, 1657, 926, 1262, 967, 966, 3083, + 2565, 167, 195, 204, 196, 124, 1664, 1897, 3030, 2837, + 202, 3031, 3032, 2116, 948, 206, 1656, 3165, 955, 922, + 3071, 2789, 140, 202, 194, 188, 187, 202, 1534, 3792, + 1536, 70, 2082, 1690, 1651, 202, 1661, 2644, 962, 206, + 64, 197, 168, 1676, 202, 3162, 202, 206, 64, 197, + 168, 202, 2083, 2084, 1906, 1907, 1031, 972, 2791, 2840, + 1663, 1982, 961, 3612, 1648, 1725, 960, 1085, 1080, 1075, + 1079, 1083, 947, 206, 64, 197, 168, 1506, 953, 1484, + 1507, 1043, 1235, 2551, 1260, 1237, 2550, 3987, 1650, 2552, + 1494, 1495, 190, 191, 192, 1088, 2786, 3272, 4047, 1078, + 1959, 2790, 1066, 2319, 1196, 951, 1709, 1425, 1039, 1713, + 1492, 3893, 202, 1238, 1491, 1494, 1495, 1065, 1608, 1606, + 202, 3893, 3978, 1823, 2806, 900, 2077, 899, 901, 902, + 200, 903, 904, 1712, 2807, 3270, 4023, 4024, 1199, 2787, + 1207, 1210, 2769, 971, 3892, 3977, 202, 3891, 3976, 1255, + 1086, 136, 3892, 3891, 3381, 193, 3983, 137, 3966, 1089, + 673, 673, 673, 4090, 4091, 3381, 673, 3966, 1509, 952, + 3992, 3993, 1041, 673, 1192, 3874, 3064, 3969, 167, 195, + 204, 196, 3757, 2805, 3988, 3989, 1076, 3996, 3995, 3994, + 3997, 672, 672, 701, 701, 2670, 673, 681, 1207, 1210, + 1231, 194, 2234, 3877, 3878, 3879, 3880, 3065, 3611, 3066, + 1087, 3902, 1193, 2100, 138, 1729, 3613, 2090, 1118, 2926, + 3395, 1704, 2094, 3446, 1714, 2510, 1233, 63, 2226, 2812, + 3451, 3101, 1247, 2231, 2504, 1248, 2983, 3220, 1236, 1239, + 1242, 1960, 2792, 1243, 3794, 3795, 969, 1520, 1711, 1040, + 1077, 2160, 2367, 3642, 1615, 1614, 971, 2796, 1397, 1305, + 1427, 3533, 2767, 1250, 1232, 3985, 698, 698, 698, 976, + 3099, 1245, 1257, 2114, 2115, 1202, 65, 3218, 747, 2680, + 2788, 749, 193, 1482, 1184, 958, 748, 2467, 2226, 3586, + 3894, 1230, 3802, 3398, 3058, 3105, 2977, 2773, 4022, 924, + 1183, 1258, 1259, 1069, 1183, 2506, 1192, 3799, 3747, 1183, + 2220, 146, 203, 2220, 147, 3639, 1191, 2220, 3081, 169, + 2337, 2567, 3078, 3426, 61, 1071, 2513, 1084, 1252, 3548, + 1337, 3603, 2253, 3215, 3216, 2221, 1508, 1072, 1896, 1728, + 1727, 1234, 925, 664, 1209, 1208, 3300, 1108, 3301, 3217, + 1246, 3274, 1108, 1108, 1108, 1222, 4055, 1108, 1240, 1108, + 681, 3545, 3821, 1081, 3236, 1710, 1082, 3248, 1253, 1254, + 3828, 1183, 3225, 2507, 2508, 2233, 1069, 3922, 3214, 2237, + 2239, 2240, 3819, 3991, 2499, 946, 3916, 944, 1038, 1251, + 139, 45, 3298, 3299, 703, 2846, 1211, 62, 1071, 699, + 3748, 5, 1209, 1208, 697, 697, 697, 2627, 2973, 702, + 1072, 1610, 2986, 2374, 1249, 699, 1400, 910, 1402, 143, + 144, 3767, 1241, 145, 693, 693, 693, 3538, 3172, 3907, + 1414, 1195, 1197, 1200, 1417, 3924, 1178, 1179, 1423, 666, + 1215, 1216, 1185, 3493, 1187, 1186, 1377, 1068, 1338, 1382, + 695, 695, 695, 3638, 169, 1219, 696, 696, 696, 2765, + 2684, 65, 1301, 1302, 1303, 1304, 1092, 1658, 1074, 3793, + 694, 694, 694, 984, 1306, 1221, 699, 65, 169, 169, + 1201, 3930, 1405, 927, 699, 1494, 1495, 3269, 1699, 203, + 3226, 1700, 169, 2881, 3212, 1898, 169, 3500, 3437, 1244, + 710, 2447, 2351, 973, 169, 974, 1198, 2427, 2450, 1471, + 699, 3304, 3788, 169, 1483, 169, 1299, 3629, 3434, 3776, + 169, 3777, 2434, 1494, 1495, 3226, 3188, 1490, 673, 169, + 2502, 1522, 3829, 2877, 2878, 673, 2881, 3771, 65, 648, + 648, 3549, 3901, 3710, 3820, 1464, 65, 2479, 4130, 648, + 648, 2567, 2811, 1559, 1559, 3102, 673, 169, 2984, 2101, + 3221, 4113, 3776, 2478, 3777, 2449, 3436, 3599, 3796, 1213, + 2500, 2501, 65, 2818, 1544, 3779, 1543, 701, 1587, 666, + 3984, 169, 1220, 3275, 1598, 1469, 1349, 1350, 1561, 169, + 1486, 1485, 1557, 1557, 3931, 1468, 1467, 3842, 3807, 223, + 4011, 3477, 2955, 3278, 1177, 1566, 3160, 3778, 648, 2815, + 2816, 2448, 2470, 2427, 2927, 169, 2928, 2929, 3779, 1296, + 3583, 2091, 1420, 1421, 2814, 1705, 2093, 2238, 1430, 1431, + 1432, 1433, 1434, 3643, 1436, 3699, 1424, 1419, 711, 3963, + 1442, 1735, 1738, 1739, 3384, 1521, 1530, 3294, 3705, 1227, + 3778, 3176, 1736, 2824, 2828, 2829, 2830, 2825, 2827, 2826, + 1640, 3298, 3299, 2433, 2676, 1645, 1383, 3439, 2435, 2556, + 936, 2465, 2223, 1655, 2089, 1381, 3720, 3721, 3722, 3726, + 3724, 3725, 3727, 3723, 2066, 1416, 1435, 3333, 2779, 3104, + 3025, 3027, 2437, 1441, 1440, 1428, 2444, 1439, 3042, 3043, + 1438, 1900, 4114, 1688, 3213, 3712, 3303, 1429, 1044, 705, + 978, 979, 980, 1553, 1554, 2235, 2236, 1559, 3295, 1559, + 1192, 940, 2436, 1032, 1666, 1449, 938, 937, 2249, 2924, + 3841, 1538, 1540, 1451, 3423, 1473, 1477, 1477, 1477, 1226, + 1454, 1551, 1552, 2660, 1478, 1479, 3113, 3112, 1448, 2346, + 2345, 1619, 2783, 1622, 1623, 1649, 2344, 1511, 1512, 1616, + 1473, 1473, 972, 1662, 1413, 1624, 1625, 3234, 1909, 1498, + 1630, 1631, 1501, 1411, 1412, 1910, 1588, 698, 943, 1032, + 698, 698, 4010, 2491, 3621, 3178, 2343, 1559, 1653, 1654, + 1908, 932, 2352, 1698, 3672, 1665, 672, 672, 1180, 1542, + 1611, 933, 672, 939, 1192, 1787, 4126, 1034, 4132, 1190, + 1033, 3973, 1579, 1635, 1263, 3253, 1639, 1818, 1819, 1836, + 1822, 1638, 1567, 1072, 1585, 1461, 1771, 2438, 1837, 1573, + 3339, 1072, 1218, 1470, 679, 4120, 4111, 4112, 3772, 2851, + 1480, 1844, 3773, 1846, 2370, 1847, 1848, 1849, 1499, 1500, + 1599, 1502, 1503, 1463, 1504, 1600, 1721, 2956, 2958, 2959, + 2960, 2957, 1724, 1034, 3026, 2141, 1033, 1745, 1746, 1747, + 1748, 1749, 1750, 1751, 1752, 1753, 1754, 1755, 1756, 2228, + 3385, 3772, 1707, 1768, 1769, 3887, 1192, 3706, 3707, 1737, + 3701, 2852, 1899, 1740, 3700, 1463, 1902, 1879, 1904, 1702, + 3235, 1674, 2567, 1821, 1677, 1032, 1911, 1913, 4121, 1914, + 2443, 1916, 1917, 4108, 2441, 697, 1587, 2780, 697, 697, + 3335, 1925, 1559, 1930, 1931, 3296, 1933, 1522, 673, 1669, + 1901, 1697, 1845, 673, 2534, 693, 1559, 1227, 693, 693, + 1706, 984, 1675, 2646, 1954, 1678, 1679, 1683, 1684, 2464, + 4066, 1694, 1715, 2946, 2947, 2359, 1882, 1559, 4034, 1696, + 1692, 695, 2369, 1522, 695, 695, 1695, 696, 692, 1835, + 696, 696, 1691, 936, 3442, 1720, 1718, 1693, 2360, 2361, + 4031, 694, 2852, 3397, 694, 694, 4067, 4025, 1981, 1034, + 1766, 1767, 1033, 1759, 2324, 2535, 1189, 1988, 1988, 4139, + 1522, 2675, 1522, 1522, 1189, 3308, 673, 673, 2139, 2055, + 1925, 2059, 4007, 1955, 1559, 2063, 2064, 1225, 2287, 1224, + 2079, 2286, 648, 4067, 935, 1227, 2262, 3957, 1890, 938, + 937, 4035, 3306, 3956, 3950, 1973, 648, 3339, 1559, 3170, + 1687, 1934, 3168, 2535, 3045, 914, 915, 916, 917, 1686, + 2798, 1980, 3925, 4032, 1983, 1984, 1265, 1266, 1267, 1264, + 2263, 1985, 2535, 3912, 3861, 673, 1925, 1559, 1885, 2124, + 2770, 673, 673, 673, 709, 709, 1826, 1827, 1828, 1932, + 2945, 2134, 2135, 2136, 2137, 4008, 2117, 3860, 2143, 1842, + 1850, 2010, 1843, 3855, 1263, 223, 1225, 2057, 223, 223, + 1263, 223, 2261, 1921, 1922, 1923, 1263, 2263, 2665, 1856, + 1857, 2434, 2437, 2651, 1991, 1936, 1937, 1938, 1939, 2219, + 1880, 2081, 2420, 1886, 2329, 2228, 1570, 2407, 3854, 1878, + 2323, 2322, 1265, 1266, 1267, 1264, 3913, 3862, 2434, 2437, + 2294, 1836, 1836, 2185, 2210, 1263, 1949, 914, 915, 916, + 917, 1920, 3853, 1378, 1836, 1836, 2112, 1956, 1957, 3450, + 2393, 3852, 2204, 2065, 1517, 3832, 2263, 1450, 2126, 2127, + 2128, 1528, 3831, 2151, 1774, 2102, 2154, 2155, 3136, 2157, + 1969, 1929, 1971, 1972, 1950, 1990, 2198, 2109, 2110, 2095, + 1951, 2086, 1565, 2088, 1954, 1945, 1978, 919, 1559, 2217, + 1964, 2263, 3805, 1473, 2107, 2108, 1545, 1970, 4122, 1265, + 1266, 1267, 1264, 2188, 2080, 3554, 1962, 1477, 1265, 1266, + 1267, 1264, 2123, 3502, 1974, 2263, 1992, 1993, 3488, 1477, + 3467, 3049, 1649, 1649, 2263, 2854, 1979, 3737, 2228, 2056, + 1987, 1989, 3415, 3411, 1662, 2228, 2061, 2438, 3316, 2211, + 2678, 2067, 2433, 2427, 2432, 2259, 2430, 2435, 2677, 698, + 2193, 2669, 3020, 1069, 2406, 2085, 2096, 2087, 2422, 2414, + 2756, 2744, 2736, 2062, 2438, 2263, 1069, 2691, 754, 2433, + 2427, 2432, 2673, 2430, 2435, 1071, 2661, 2653, 2567, 2122, + 2282, 2180, 2648, 2640, 2638, 2121, 3503, 1072, 1071, 919, + 1072, 1072, 2636, 3468, 2180, 1965, 1966, 2129, 2130, 2267, + 1072, 2436, 1072, 2148, 3552, 3416, 3412, 787, 797, 2209, + 2634, 3317, 1975, 1976, 2146, 2392, 1718, 788, 2325, 789, + 793, 796, 792, 790, 791, 2535, 2132, 2165, 2436, 1671, + 1314, 1212, 1986, 2393, 1263, 1263, 1174, 2301, 1169, 1296, + 1263, 2111, 2300, 2246, 2247, 2393, 2200, 3258, 2285, 2649, + 2654, 2276, 2186, 2187, 1954, 2649, 2641, 2639, 1280, 2275, + 934, 2197, 2196, 1069, 2194, 2635, 3096, 4133, 3249, 3917, + 2274, 2206, 794, 2264, 2227, 1680, 2334, 2335, 2208, 2338, + 4094, 3673, 2341, 2635, 3480, 1071, 1474, 697, 2393, 2626, + 2462, 2324, 3478, 2347, 1825, 1824, 3896, 1072, 2212, 752, + 1825, 1824, 673, 673, 673, 795, 1505, 693, 3804, 2317, + 1263, 2265, 2225, 3918, 2207, 1263, 3370, 673, 673, 673, + 673, 1263, 3764, 3703, 1263, 3674, 1549, 3702, 3481, 3688, + 2389, 2250, 1263, 695, 2241, 3646, 3479, 1550, 3460, 696, + 2394, 2395, 2396, 1263, 2399, 1522, 2263, 2228, 1681, 3250, + 2244, 2245, 2243, 694, 1759, 1283, 1284, 1285, 1286, 1287, + 1280, 2255, 3340, 3331, 3323, 3318, 1851, 1852, 1853, 1854, + 3229, 1522, 1858, 1859, 1860, 1861, 1863, 1864, 1865, 1866, + 1867, 1868, 1869, 1870, 1871, 1872, 1873, 1459, 2456, 1109, + 1110, 1460, 1547, 3251, 1114, 1281, 1282, 1283, 1284, 1285, + 1286, 1287, 1280, 2242, 2980, 2979, 2822, 1475, 1862, 1459, + 2401, 2402, 941, 1460, 1855, 2775, 2688, 2652, 2558, 2191, + 2404, 2405, 1765, 2190, 2189, 1445, 1515, 1516, 1444, 1518, + 1519, 2411, 1523, 1524, 1525, 2413, 2463, 2415, 1762, 1764, + 1761, 1194, 1763, 2698, 2620, 2149, 673, 1988, 1778, 1603, + 2256, 2149, 1778, 3050, 1935, 2539, 2539, 2079, 2539, 1940, + 2318, 2320, 2321, 2326, 1267, 1264, 1574, 1575, 1576, 1577, + 1578, 1915, 1580, 1581, 1582, 1583, 1584, 3975, 648, 648, + 1590, 1591, 1592, 1593, 1264, 2416, 1192, 1103, 1104, 1105, + 3715, 3714, 1559, 673, 2295, 2296, 1546, 2298, 3067, 2916, + 2914, 2353, 2426, 2893, 2305, 2891, 673, 2425, 3647, 3648, + 1337, 3694, 1192, 2611, 666, 1265, 1266, 1267, 1264, 4104, + 1598, 1102, 2079, 4129, 1099, 2616, 3373, 2618, 4103, 3640, + 223, 2562, 1994, 1995, 1316, 3448, 2541, 2468, 2545, 2390, + 2471, 2472, 2473, 2474, 2475, 2476, 2477, 1315, 4102, 2480, + 2481, 2482, 2483, 2484, 2485, 2486, 2487, 2488, 2489, 2490, + 1840, 2492, 2493, 2494, 2495, 2496, 2821, 2497, 2403, 2400, + 2543, 2657, 2758, 2409, 2759, 1841, 2410, 4100, 4099, 1069, + 2967, 4038, 2419, 2613, 2439, 2440, 4006, 2445, 4128, 3641, + 2671, 2120, 4004, 2217, 3919, 3449, 2965, 2120, 2120, 2120, + 1559, 1071, 1559, 2569, 1559, 2795, 3857, 3845, 2621, 1192, + 2553, 1477, 2554, 1072, 2963, 2952, 3835, 2690, 2412, 3824, + 2709, 3755, 3676, 2547, 1265, 1266, 1267, 1264, 1338, 3675, + 3494, 2559, 2560, 3371, 3482, 2615, 1265, 1266, 1267, 1264, + 2966, 2681, 3447, 1559, 1192, 2509, 2514, 2630, 2722, 1168, + 1164, 1165, 1166, 1167, 2575, 2714, 2964, 2713, 2712, 2710, + 2548, 3319, 3219, 2729, 1265, 1266, 1267, 1264, 1559, 3092, + 1538, 1540, 3062, 2700, 2962, 2951, 3061, 2717, 3454, 3129, + 2950, 2949, 1557, 3459, 1096, 1097, 1098, 1101, 2563, 1100, + 1265, 1266, 1267, 1264, 2566, 1265, 1266, 1267, 1264, 2622, + 2948, 2940, 2730, 2934, 1604, 2408, 2933, 1557, 2932, 2667, + 2668, 2612, 2931, 3115, 2614, 2771, 2642, 2777, 2778, 2278, + 2702, 2781, 2702, 2733, 2734, 2555, 2328, 2711, 1278, 1288, + 1289, 1281, 1282, 1283, 1284, 1285, 1286, 1287, 1280, 1192, + 2168, 2167, 3128, 1192, 2166, 2162, 2706, 2161, 2118, 1905, + 1559, 2685, 2687, 1522, 1265, 1266, 1267, 1264, 2720, 2059, + 1903, 2655, 1603, 2682, 2696, 1672, 1396, 2850, 2731, 1265, + 1266, 1267, 1264, 747, 2857, 2663, 749, 2858, 3206, 4125, + 2674, 748, 2672, 4123, 2679, 1265, 1266, 1267, 1264, 2277, + 2762, 1265, 1266, 1267, 1264, 2868, 1271, 1272, 1273, 1274, + 1275, 1276, 1277, 1269, 4105, 1192, 3797, 3798, 2692, 2693, + 3593, 4092, 2260, 2890, 4054, 4053, 1265, 1266, 1267, 1264, + 1192, 1192, 1192, 1988, 2708, 2718, 1192, 4016, 2900, 2901, + 2902, 2903, 1192, 2910, 4050, 2911, 2912, 2695, 2913, 3981, + 2915, 2834, 3617, 3980, 3785, 2835, 3961, 2847, 2861, 2838, + 3904, 2910, 3651, 2864, 1265, 1266, 1267, 1264, 3898, 1718, + 3881, 1172, 3872, 2539, 2869, 3849, 3844, 2819, 1541, 1265, + 1266, 1267, 1264, 2715, 2716, 3843, 3801, 2968, 3787, 2728, + 2871, 2799, 3786, 3756, 2010, 2575, 3696, 648, 3655, 2808, + 1265, 1266, 1267, 1264, 2059, 3644, 3626, 3624, 1192, 2079, + 2079, 2079, 2079, 2079, 2079, 1288, 1289, 1281, 1282, 1283, + 1284, 1285, 1286, 1287, 1280, 1192, 2079, 1072, 3622, 2539, + 1171, 2800, 3619, 3616, 1268, 3615, 2817, 3591, 2884, 3589, + 3562, 3559, 1298, 2859, 2974, 3028, 2841, 1559, 2363, 2364, + 2365, 1308, 2888, 2895, 2849, 3556, 2888, 2885, 673, 673, + 2801, 8, 2803, 2380, 2381, 2382, 2383, 2856, 2972, 3444, + 3431, 7, 2885, 2896, 2897, 3424, 3605, 1317, 2899, 3408, + 2125, 2870, 3406, 3401, 2906, 2873, 1265, 1266, 1267, 1264, + 2886, 3351, 3329, 3604, 3328, 2922, 2923, 2892, 4131, 3326, + 3325, 3542, 2898, 1265, 1266, 1267, 1264, 3320, 2889, 3314, + 2938, 2939, 3016, 223, 3313, 3230, 2867, 3193, 223, 1929, + 1265, 1266, 1267, 1264, 3403, 3192, 3191, 2930, 1265, 1266, + 1267, 1264, 2270, 3182, 2942, 3180, 2976, 3177, 3175, 2333, + 1836, 2258, 1836, 3106, 3103, 3077, 3082, 3046, 3060, 3035, + 2996, 1265, 1266, 1267, 1264, 3132, 1265, 1266, 1267, 1264, + 3091, 2961, 2975, 2953, 2943, 2981, 1559, 2996, 2941, 3098, + 2937, 2936, 2739, 2740, 2935, 2784, 2776, 2772, 2745, 855, + 854, 3029, 1265, 1266, 1267, 1264, 3013, 2664, 2348, 2978, + 3019, 3051, 1528, 3017, 2342, 2339, 3055, 2997, 2998, 2999, + 3000, 3001, 3002, 1623, 2171, 2164, 3033, 3036, 1893, 1892, + 1673, 1345, 1341, 1624, 1625, 3131, 1340, 1630, 1631, 1265, + 1266, 1267, 1264, 1882, 1175, 923, 4080, 3072, 3076, 1265, + 1266, 1267, 1264, 3018, 3937, 3933, 3781, 2860, 3780, 1565, + 3084, 3769, 1265, 1266, 1267, 1264, 2865, 2866, 3765, 3074, + 3618, 3600, 2120, 3572, 3473, 1635, 3472, 206, 1639, 197, + 168, 3085, 3471, 1638, 3441, 3420, 3418, 3053, 3417, 3052, + 3414, 3179, 3413, 3407, 3405, 3100, 3386, 3130, 3183, 3184, + 3185, 3187, 3376, 3189, 3190, 3375, 3362, 3070, 3068, 3075, + 3073, 3361, 3260, 1192, 3196, 1072, 3088, 3167, 3134, 3209, + 2883, 3087, 3086, 3094, 1265, 1266, 1267, 1264, 1072, 3223, + 3125, 3117, 3116, 3110, 673, 3044, 2797, 3108, 3107, 2637, + 2633, 3095, 2632, 2306, 3127, 2299, 2293, 3239, 1192, 3114, + 202, 673, 2292, 1192, 1192, 3118, 3119, 3121, 2291, 2290, + 3123, 3124, 2079, 2389, 2288, 3257, 673, 2755, 3120, 2284, + 3122, 2283, 2281, 3169, 1279, 1278, 1288, 1289, 1281, 1282, + 1283, 1284, 1285, 1286, 1287, 1280, 2456, 2754, 2272, 2269, + 3233, 3195, 1597, 2289, 1265, 1266, 1267, 1264, 3284, 2268, + 3287, 2170, 3287, 3287, 1876, 1875, 1874, 1192, 1839, 3174, + 1838, 1829, 1571, 3173, 1265, 1266, 1267, 1264, 2753, 1569, + 4079, 3353, 2752, 4037, 3955, 3309, 2834, 1335, 3932, 3305, + 3211, 3949, 2751, 1559, 1559, 3261, 2750, 3867, 3242, 3194, + 3263, 3264, 3262, 3246, 206, 1265, 1266, 1267, 1264, 1265, + 1266, 1267, 1264, 3864, 3851, 2885, 3846, 3271, 3273, 1265, + 1266, 1267, 1264, 1265, 1266, 1267, 1264, 3310, 3311, 3750, + 1069, 3267, 1557, 1557, 3749, 3255, 3241, 3282, 3252, 3232, + 673, 3244, 3245, 3731, 3256, 2749, 3713, 3209, 3709, 3687, + 2885, 3670, 1071, 3947, 2748, 2885, 2885, 3945, 2747, 1522, + 3292, 3283, 2059, 2059, 1072, 2426, 1072, 3266, 2746, 3573, + 2425, 1072, 1265, 1266, 1267, 1264, 2743, 202, 3570, 3288, + 3289, 1265, 1266, 1267, 1264, 1265, 1266, 1267, 1264, 3307, + 3293, 3540, 3539, 2848, 3536, 1265, 1266, 1267, 1264, 1072, + 3535, 3501, 3498, 1265, 1266, 1267, 1264, 3496, 3462, 2885, + 3015, 2742, 3126, 1618, 1629, 1620, 1192, 4072, 2741, 1634, + 2722, 1637, 1730, 1731, 1732, 1733, 1734, 2735, 3374, 3338, + 1626, 1453, 3007, 2969, 2894, 2843, 2842, 3315, 1265, 1266, + 1267, 1264, 2836, 799, 142, 1265, 1266, 1267, 1264, 142, + 3290, 3354, 2802, 2757, 1265, 1266, 1267, 1264, 3322, 2647, + 2557, 3321, 3327, 2498, 1775, 2391, 3336, 3337, 1779, 1780, + 1781, 1782, 2362, 3334, 3330, 673, 2327, 1760, 1820, 3347, + 202, 3348, 2131, 1919, 1889, 1703, 1830, 3141, 3142, 2725, + 1652, 1627, 1395, 3143, 3144, 3145, 3146, 1380, 3147, 3148, + 3149, 3150, 3151, 3152, 3153, 3154, 3155, 3156, 3157, 3355, + 1376, 3324, 680, 2721, 1375, 142, 1265, 1266, 1267, 1264, + 1374, 1373, 1372, 3364, 1371, 1370, 1369, 3358, 3359, 3360, + 1368, 1367, 1366, 1365, 1364, 1363, 1362, 1361, 1360, 1883, + 1265, 1266, 1267, 1264, 1359, 1358, 1357, 1356, 2143, 3428, + 3387, 2697, 3430, 1355, 1354, 1353, 3432, 1352, 2575, 1773, + 1351, 3438, 3389, 1348, 3390, 1347, 1346, 2702, 3394, 1344, + 1343, 1342, 1339, 1332, 3039, 3040, 3409, 1331, 1265, 1266, + 1267, 1264, 1329, 1328, 3265, 1327, 1265, 1266, 1267, 1264, + 1326, 3399, 1325, 1324, 1323, 1322, 673, 2059, 1321, 2524, + 2528, 2529, 2530, 2525, 2533, 2526, 2531, 3466, 3433, 2527, + 3435, 2532, 1320, 1319, 1318, 1313, 3943, 1312, 3393, 1311, + 1310, 1309, 1958, 2539, 2079, 3485, 1229, 1173, 3343, 3344, + 3537, 2398, 2376, 3421, 1217, 4070, 4021, 3346, 2823, 2173, + 2568, 1228, 3005, 3352, 3349, 3425, 1070, 3427, 1977, 3504, + 3010, 142, 1192, 3004, 3008, 3011, 3440, 3014, 3003, 3009, + 125, 3284, 3974, 3443, 3692, 1192, 142, 3012, 142, 2529, + 2530, 67, 3575, 3883, 66, 2662, 2650, 1192, 1446, 3551, + 3576, 1947, 1948, 1559, 1942, 1943, 1944, 3228, 2466, 3280, + 3486, 3281, 3090, 3455, 3391, 3392, 3487, 3547, 3365, 2048, + 3490, 3457, 1612, 3483, 673, 2645, 2059, 1883, 2667, 2668, + 1192, 3534, 1883, 1883, 2686, 1668, 3204, 3553, 2918, 1646, + 2349, 2133, 1557, 1223, 1072, 2919, 2920, 2921, 3197, 676, + 3574, 1072, 2872, 3491, 2844, 2418, 3527, 3484, 2385, 3495, + 677, 3497, 223, 678, 1952, 3463, 3464, 3465, 1918, 3489, + 4083, 3469, 3470, 1825, 1824, 1192, 3566, 3563, 3543, 3848, + 3577, 3312, 2150, 2511, 3541, 2153, 3546, 2505, 2156, 1391, + 1392, 2158, 3550, 1389, 1390, 1387, 1388, 1385, 1386, 2060, + 1514, 3555, 3557, 1513, 3558, 1256, 2192, 3357, 3038, 2350, + 2205, 3561, 3565, 1466, 3505, 1465, 3568, 3620, 1437, 3567, + 1489, 3564, 4044, 4042, 3998, 3971, 3970, 3544, 3628, 3968, + 3908, 3868, 3598, 1192, 3745, 3744, 3682, 3590, 3410, 2906, + 3584, 3383, 3382, 3368, 2451, 2421, 1670, 3367, 3048, 2203, + 3231, 1463, 3429, 1192, 1559, 1559, 4074, 4073, 3560, 3239, + 3093, 2855, 3594, 2782, 2378, 3595, 2271, 3243, 1399, 1214, + 4073, 3663, 2996, 3663, 4074, 3711, 3625, 3363, 3627, 1189, + 2539, 1481, 3259, 75, 3657, 3658, 2, 1192, 3653, 1192, + 3681, 210, 3, 1557, 1771, 4096, 3652, 4097, 3684, 1, + 3686, 2763, 914, 915, 916, 917, 1559, 1189, 1887, 1393, + 3635, 3631, 3654, 3636, 3634, 918, 913, 2996, 1535, 2549, + 2113, 3645, 1563, 1891, 673, 3667, 1192, 1192, 920, 3021, + 1192, 1192, 3022, 3656, 3668, 3356, 3024, 2785, 3677, 3678, + 2224, 3680, 2985, 2188, 3487, 1771, 2503, 2366, 3733, 3222, + 3660, 977, 1831, 2252, 3728, 3690, 3534, 2257, 3693, 1685, + 3679, 1954, 1206, 3697, 3742, 2266, 1682, 1205, 1203, 3717, + 3718, 1776, 801, 3729, 3730, 2885, 3751, 3752, 2176, 2970, + 2944, 3527, 3741, 4082, 4117, 4036, 3739, 4085, 1701, 1559, + 3689, 785, 3962, 3873, 4040, 3875, 2120, 3761, 2229, 1261, + 3695, 3069, 2273, 1004, 842, 812, 1330, 3139, 3738, 3137, + 2280, 811, 3782, 3452, 2813, 3746, 3740, 3041, 1072, 3818, + 1005, 3579, 3775, 3763, 2159, 3870, 3759, 1613, 1557, 1724, + 1617, 1724, 2297, 2417, 3734, 3758, 3827, 2302, 2303, 2304, + 3928, 3691, 2307, 2308, 2309, 2310, 2311, 2312, 2313, 2314, + 2315, 2316, 3276, 3770, 3774, 2517, 984, 3762, 2880, 1641, + 3923, 3816, 3810, 3614, 3499, 3610, 3608, 3609, 717, 2092, + 646, 3789, 1054, 3732, 718, 2397, 3986, 3850, 1192, 956, + 3735, 2375, 957, 949, 3736, 2832, 2831, 1741, 1270, 3834, + 3800, 3840, 2524, 2528, 2529, 2530, 2525, 2533, 2526, 2531, + 3811, 1758, 2527, 3598, 2532, 3158, 3159, 3813, 3812, 1307, + 756, 2254, 2810, 3522, 3034, 3825, 74, 3830, 73, 72, + 71, 231, 1192, 803, 230, 3783, 3649, 1559, 3958, 4087, + 782, 3396, 781, 780, 3826, 779, 778, 777, 2522, 2523, + 3808, 2521, 2519, 2518, 3847, 2074, 2073, 3047, 3366, 2138, + 2140, 142, 142, 142, 1070, 3237, 2909, 2904, 1999, 1997, + 1526, 3858, 2446, 2453, 1996, 3856, 1557, 4018, 3400, 1291, + 3601, 1295, 3938, 3939, 3708, 2954, 3597, 3606, 1941, 3607, + 2442, 3900, 2016, 3889, 2925, 2013, 2012, 1292, 1294, 1290, + 3869, 1293, 1279, 1278, 1288, 1289, 1281, 1282, 1283, 1284, + 1285, 1286, 1287, 1280, 2917, 3704, 3698, 2044, 1072, 3909, + 3814, 3662, 1809, 3506, 3507, 3513, 2384, 1123, 1119, 1121, + 1724, 1122, 1120, 2707, 3332, 2423, 3199, 1297, 2358, 2357, + 3897, 2355, 3903, 2354, 1422, 3899, 3982, 3630, 3927, 2573, + 2571, 1170, 1192, 3345, 3911, 3920, 3341, 2184, 3350, 3006, + 1559, 2201, 2120, 3952, 3089, 2075, 2071, 2070, 3959, 1094, + 1093, 1594, 2987, 2512, 3921, 1883, 3926, 1883, 3791, 3859, + 3935, 1946, 3960, 950, 2373, 109, 41, 122, 108, 3942, + 3944, 3946, 3948, 185, 3951, 3941, 1883, 1883, 59, 1557, + 184, 58, 120, 182, 57, 103, 102, 3967, 119, 180, + 3965, 1559, 56, 215, 3816, 214, 217, 216, 213, 2623, + 2624, 212, 1601, 211, 3972, 3666, 3979, 3954, 1597, 908, + 44, 4009, 43, 186, 42, 110, 60, 4017, 40, 4002, + 4003, 4001, 3999, 39, 38, 4000, 34, 13, 12, 35, + 1557, 4005, 22, 3910, 21, 1689, 20, 26, 3914, 3915, + 32, 31, 135, 134, 4033, 30, 133, 132, 131, 4026, + 2120, 4027, 130, 4028, 129, 4029, 128, 127, 2656, 4030, + 2659, 29, 4043, 19, 4045, 4046, 1384, 51, 50, 4041, + 3936, 4039, 49, 48, 47, 1805, 46, 3889, 4049, 1192, + 9, 123, 1802, 118, 116, 28, 1804, 1801, 1803, 1807, + 1808, 117, 3865, 3866, 1806, 114, 115, 113, 112, 3840, + 4062, 111, 106, 104, 86, 1809, 85, 4063, 4065, 4064, + 84, 99, 4068, 98, 97, 4071, 4081, 4069, 4089, 96, + 3511, 4088, 95, 94, 92, 2699, 93, 1003, 2705, 83, + 82, 81, 80, 79, 101, 107, 4101, 105, 4093, 2723, + 2724, 90, 1192, 4075, 4076, 4077, 4078, 2726, 2727, 100, + 91, 89, 88, 4106, 3927, 4107, 87, 78, 4109, 77, + 4115, 3523, 76, 2732, 166, 4119, 165, 164, 4116, 163, + 162, 160, 161, 159, 3514, 158, 157, 156, 155, 154, + 52, 53, 54, 55, 176, 3509, 175, 177, 179, 181, + 3531, 3532, 1730, 1883, 178, 4127, 3510, 183, 173, 171, + 174, 172, 4089, 4135, 170, 4088, 4134, 69, 11, 4051, + 4052, 121, 18, 4, 4119, 4136, 4056, 4057, 4058, 4059, + 4140, 4060, 1568, 0, 0, 0, 680, 0, 0, 0, + 0, 0, 0, 3515, 206, 64, 197, 168, 1812, 1813, + 1814, 1815, 1816, 1817, 1810, 1811, 0, 0, 0, 0, + 3716, 0, 0, 198, 3836, 0, 992, 0, 0, 0, + 189, 0, 142, 0, 199, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 2862, 2863, 0, 1805, 0, + 0, 0, 0, 140, 1724, 1802, 3685, 0, 0, 1804, + 1801, 1803, 1807, 1808, 0, 0, 0, 1806, 126, 0, + 0, 0, 0, 0, 0, 0, 0, 202, 1279, 1278, + 1288, 1289, 1281, 1282, 1283, 1284, 1285, 1286, 1287, 1280, + 0, 0, 0, 0, 0, 0, 0, 0, 988, 989, + 142, 3530, 0, 2432, 0, 0, 0, 0, 142, 1032, + 1279, 1278, 1288, 1289, 1281, 1282, 1283, 1284, 1285, 1286, + 1287, 1280, 142, 0, 0, 142, 142, 0, 3519, 0, 0, 0, 0, 0, 0, 0, 0, 0, 142, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 190, 191, 192, 0, 0, 0, 0, - 1021, 1025, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 2029, 0, 0, 0, 0, 0, 0, 0, 0, - 1008, 0, 1006, 1010, 1028, 0, 0, 0, 1007, 1004, - 1003, 200, 1009, 994, 995, 993, 996, 997, 998, 999, - 0, 1026, 0, 1027, 0, 0, 0, 0, 0, 0, - 0, 0, 136, 0, 1022, 1023, 193, 0, 137, 0, - 0, 0, 0, 0, 0, 0, 4031, 4032, 0, 0, - 0, 0, 2036, 4036, 4037, 4038, 4039, 1997, 142, 0, - 0, 0, 0, 0, 0, 0, 0, 3513, 0, 0, - 0, 1018, 0, 0, 0, 2017, 0, 1017, 0, 0, - 0, 0, 0, 0, 0, 0, 2023, 0, 2039, 2006, - 0, 0, 1013, 0, 0, 138, 0, 0, 2040, 2041, - 0, 0, 0, 0, 0, 0, 2011, 2045, 63, 0, - 2012, 2014, 2016, 0, 2018, 2019, 2020, 2024, 2025, 2026, - 2028, 2031, 2032, 2033, 2005, 0, 0, 0, 0, 0, - 0, 2021, 2030, 2022, 0, 0, 1312, 0, 0, 0, - 0, 0, 2013, 3512, 0, 0, 0, 0, 0, 0, - 0, 0, 727, 726, 733, 723, 0, 65, 0, 0, - 0, 0, 0, 0, 0, 730, 731, 2037, 732, 736, - 1016, 0, 717, 0, 0, 0, 987, 988, 982, 0, - 0, 0, 741, 983, 0, 0, 0, 0, 0, 0, - 0, 2036, 146, 203, 0, 147, 1997, 0, 0, 0, - 169, 0, 3915, 0, 0, 61, 0, 0, 2835, 0, - 2029, 0, 0, 0, 0, 0, 0, 2034, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 2039, 2006, 0, - 0, 0, 0, 0, 2010, 0, 0, 2040, 2041, 0, - 0, 2009, 0, 0, 0, 0, 0, 142, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 2005, 0, 2027, 0, 0, 0, 0, - 0, 139, 45, 0, 2015, 0, 0, 0, 62, 0, - 0, 2013, 0, 0, 1996, 1998, 1995, 3994, 0, 1992, - 0, 0, 0, 0, 2017, 0, 0, 0, 0, 0, - 143, 144, 0, 0, 145, 2023, 0, 0, 0, 0, - 0, 0, 0, 2008, 0, 1991, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 2011, 2045, 0, 0, 2012, - 2014, 2016, 0, 2018, 2019, 2020, 2024, 2025, 2026, 2028, - 2031, 2032, 2033, 0, 0, 0, 0, 0, 0, 2029, - 2021, 2030, 2022, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 2000, 0, 0, 3994, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 718, 720, 719, 0, - 0, 0, 3649, 0, 0, 0, 2037, 725, 3025, 3026, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 729, - 0, 0, 0, 0, 0, 0, 744, 0, 0, 0, - 0, 0, 0, 722, 0, 0, 0, 0, 1993, 1994, - 0, 3994, 0, 1996, 2861, 1995, 0, 0, 2860, 0, - 0, 0, 0, 2017, 0, 0, 2034, 0, 0, 0, - 0, 0, 0, 0, 2023, 0, 0, 1260, 1261, 1262, - 1259, 0, 0, 2010, 0, 0, 0, 0, 0, 0, - 2009, 0, 0, 0, 2011, 2045, 0, 0, 2012, 2014, - 2016, 0, 2018, 2019, 2020, 2024, 2025, 2026, 2028, 2031, - 2032, 2033, 0, 0, 2027, 0, 0, 4118, 0, 2021, - 2030, 2022, 0, 2015, 0, 0, 0, 0, 0, 0, - 0, 2000, 1139, 0, 0, 0, 2043, 2042, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 2037, 0, 1801, 0, 0, - 724, 728, 734, 0, 735, 737, 0, 0, 738, 739, - 740, 0, 0, 742, 743, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1993, 1994, 2002, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 2034, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 2010, 0, 0, 0, 0, 0, 0, 2009, - 1139, 2038, 0, 0, 2044, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 2027, 0, 0, 1124, 0, 0, 0, - 0, 0, 2015, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 3217, 0, 2043, 2042, 1147, 1151, 1153, - 1155, 1157, 1158, 1160, 0, 1165, 1161, 1162, 1163, 1164, - 3229, 1142, 1143, 1144, 1145, 1122, 1123, 1148, 0, 1125, - 0, 1127, 1128, 1129, 1130, 1126, 1131, 1132, 1133, 1134, - 1135, 1138, 1140, 1136, 1137, 1146, 0, 0, 0, 0, - 0, 0, 0, 1150, 1152, 1154, 1156, 1159, 2002, 721, - 1797, 0, 0, 0, 0, 0, 0, 1794, 0, 0, - 0, 1796, 1793, 1795, 1799, 1800, 0, 0, 0, 1798, - 0, 0, 0, 0, 1124, 0, 0, 0, 1114, 0, - 0, 0, 0, 1141, 0, 0, 0, 0, 0, 0, - 2038, 0, 0, 2044, 0, 1147, 1151, 1153, 1155, 1157, - 1158, 1160, 0, 1165, 1161, 1162, 1163, 1164, 0, 1142, - 1143, 1144, 1145, 1122, 1123, 1148, 0, 1125, 0, 1127, - 1128, 1129, 1130, 1126, 1131, 1132, 1133, 1134, 1135, 1138, - 1140, 1136, 1137, 1146, 0, 0, 0, 0, 2111, 0, - 0, 1150, 1152, 1154, 1156, 1159, 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, 1141, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1782, 1783, 1784, 1785, 1786, 1787, 1788, 1789, - 1790, 1791, 1792, 1804, 1805, 1806, 1807, 1808, 1809, 1802, - 1803, 0, 0, 0, 0, 0, 0, 0, 0, 2690, - 2691, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 817, 0, 0, - 0, 0, 0, 0, 0, 0, 401, 0, 0, 532, - 565, 554, 638, 520, 0, 0, 0, 0, 0, 0, - 769, 0, 0, 3381, 336, 0, 0, 369, 569, 551, - 561, 552, 537, 538, 539, 546, 348, 540, 541, 542, - 512, 543, 513, 544, 545, 808, 568, 519, 434, 385, - 586, 585, 0, 0, 877, 885, 0, 0, 0, 0, - 0, 0, 0, 0, 873, 0, 0, 0, 0, 761, - 0, 0, 798, 853, 852, 785, 795, 0, 0, 309, - 229, 514, 634, 516, 515, 786, 0, 787, 791, 794, - 790, 788, 789, 0, 868, 0, 0, 0, 0, 0, - 0, 753, 765, 0, 770, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1149, 0, 0, 0, 0, 762, 763, - 0, 0, 0, 0, 818, 0, 764, 0, 0, 813, - 792, 796, 0, 0, 2111, 0, 299, 441, 460, 310, - 429, 473, 315, 437, 452, 305, 400, 426, 0, 0, - 301, 458, 436, 382, 359, 360, 300, 0, 420, 334, - 350, 331, 398, 793, 816, 820, 330, 891, 814, 468, - 303, 0, 467, 397, 454, 459, 383, 376, 0, 302, - 456, 381, 375, 363, 340, 892, 364, 365, 354, 409, - 373, 410, 355, 387, 386, 388, 0, 0, 0, 0, - 0, 496, 497, 0, 0, 645, 0, 0, 0, 0, - 0, 1149, 0, 0, 0, 0, 0, 627, 811, 0, - 631, 0, 470, 0, 0, 875, 0, 0, 0, 440, - 0, 0, 366, 0, 0, 0, 815, 0, 423, 403, - 888, 2111, 0, 421, 371, 455, 411, 461, 442, 469, - 417, 412, 294, 443, 333, 384, 306, 308, 328, 335, - 337, 341, 342, 393, 394, 406, 428, 445, 446, 447, - 332, 316, 422, 317, 352, 318, 295, 324, 322, 325, - 430, 326, 297, 407, 451, 0, 347, 418, 379, 298, - 378, 408, 450, 449, 307, 477, 483, 484, 573, 0, - 489, 660, 661, 662, 498, 0, 413, 503, 504, 505, - 507, 508, 509, 510, 574, 591, 558, 528, 491, 582, - 525, 529, 530, 357, 594, 1825, 1824, 1826, 482, 367, - 368, 0, 339, 338, 380, 416, 345, 291, 292, 655, - 872, 399, 596, 629, 630, 521, 0, 887, 867, 869, - 870, 874, 878, 879, 880, 881, 882, 884, 886, 890, - 654, 0, 575, 590, 658, 589, 651, 405, 0, 427, - 587, 534, 0, 579, 553, 0, 580, 549, 584, 0, - 523, 0, 435, 463, 475, 492, 495, 524, 609, 610, - 611, 296, 494, 613, 614, 615, 616, 617, 618, 619, - 612, 889, 556, 533, 559, 474, 536, 535, 0, 0, - 570, 819, 571, 572, 389, 390, 391, 392, 876, 597, - 314, 493, 415, 0, 557, 0, 0, 0, 0, 0, - 0, 0, 0, 562, 563, 560, 663, 0, 620, 621, - 3699, 0, 487, 488, 344, 351, 506, 353, 313, 404, - 346, 472, 361, 0, 499, 564, 500, 623, 626, 624, - 625, 396, 356, 358, 431, 362, 372, 419, 471, 402, - 424, 311, 462, 433, 377, 550, 577, 898, 871, 897, - 899, 900, 896, 901, 902, 883, 774, 0, 826, 894, - 893, 895, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 605, 604, 603, 602, 601, 600, 599, - 598, 0, 0, 547, 448, 323, 285, 319, 320, 327, - 652, 649, 453, 653, 781, 293, 527, 370, 0, 414, - 343, 592, 593, 0, 644, 860, 833, 834, 835, 771, - 836, 830, 831, 772, 832, 861, 824, 857, 858, 800, - 827, 837, 856, 838, 859, 862, 863, 903, 904, 844, - 828, 257, 905, 841, 864, 855, 854, 839, 825, 865, - 866, 807, 802, 842, 843, 829, 848, 849, 850, 773, - 821, 822, 823, 845, 846, 803, 804, 805, 806, 0, - 0, 0, 478, 479, 480, 502, 0, 464, 526, 650, - 0, 0, 0, 0, 0, 0, 0, 576, 588, 622, - 0, 632, 633, 635, 637, 851, 639, 438, 439, 0, - 847, 642, 643, 640, 374, 425, 444, 432, 817, 656, - 517, 518, 657, 628, 0, 766, 0, 401, 0, 0, - 532, 565, 554, 638, 520, 0, 0, 0, 0, 0, - 0, 769, 0, 0, 0, 336, 1876, 0, 369, 569, - 551, 561, 552, 537, 538, 539, 546, 348, 540, 541, - 542, 512, 543, 513, 544, 545, 808, 568, 519, 434, - 385, 586, 585, 0, 0, 877, 885, 0, 0, 0, - 0, 0, 0, 0, 0, 873, 0, 2095, 0, 0, - 761, 0, 0, 798, 853, 852, 785, 795, 0, 0, - 309, 229, 514, 634, 516, 515, 786, 0, 787, 791, - 794, 790, 788, 789, 0, 868, 0, 0, 0, 0, - 0, 0, 753, 765, 0, 770, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 762, - 763, 0, 0, 0, 0, 818, 0, 764, 0, 0, - 2096, 792, 796, 0, 0, 0, 0, 299, 441, 460, - 310, 429, 473, 315, 437, 452, 305, 400, 426, 0, - 0, 301, 458, 436, 382, 359, 360, 300, 0, 420, - 334, 350, 331, 398, 793, 816, 820, 330, 891, 814, - 468, 303, 0, 467, 397, 454, 459, 383, 376, 0, - 302, 456, 381, 375, 363, 340, 892, 364, 365, 354, - 409, 373, 410, 355, 387, 386, 388, 0, 0, 0, - 0, 0, 496, 497, 0, 0, 645, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 627, 811, - 0, 631, 0, 470, 0, 0, 875, 0, 0, 0, - 440, 0, 0, 366, 0, 0, 0, 815, 0, 423, - 403, 888, 0, 0, 421, 371, 455, 411, 461, 442, - 469, 417, 412, 294, 443, 333, 384, 306, 308, 328, - 335, 337, 341, 342, 393, 394, 406, 428, 445, 446, - 447, 332, 316, 422, 317, 352, 318, 295, 324, 322, - 325, 430, 326, 297, 407, 451, 0, 347, 418, 379, - 298, 378, 408, 450, 449, 307, 477, 483, 484, 573, - 0, 489, 660, 661, 662, 498, 0, 413, 503, 504, - 505, 507, 508, 509, 510, 574, 591, 558, 528, 491, - 582, 525, 529, 530, 357, 594, 0, 0, 0, 482, - 367, 368, 0, 339, 338, 380, 416, 345, 291, 292, - 655, 872, 399, 596, 629, 630, 521, 0, 887, 867, - 869, 870, 874, 878, 879, 880, 881, 882, 884, 886, - 890, 654, 0, 575, 590, 658, 589, 651, 405, 0, - 427, 587, 534, 0, 579, 553, 0, 580, 549, 584, - 0, 523, 0, 435, 463, 475, 492, 495, 524, 609, - 610, 611, 296, 494, 613, 614, 615, 616, 617, 618, - 619, 612, 889, 556, 533, 559, 474, 536, 535, 0, - 0, 570, 819, 571, 572, 389, 390, 391, 392, 876, - 597, 314, 493, 415, 0, 557, 0, 0, 0, 0, - 0, 0, 0, 0, 562, 563, 560, 663, 0, 620, - 621, 0, 0, 487, 488, 344, 351, 506, 353, 313, - 404, 346, 472, 361, 0, 499, 564, 500, 623, 626, - 624, 625, 396, 356, 358, 431, 362, 372, 419, 471, - 402, 424, 311, 462, 433, 377, 550, 577, 898, 871, - 897, 899, 900, 896, 901, 902, 883, 774, 0, 826, - 894, 893, 895, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 605, 604, 603, 602, 601, 600, - 599, 598, 0, 0, 547, 448, 323, 285, 319, 320, - 327, 652, 649, 453, 653, 781, 293, 527, 370, 0, - 414, 343, 592, 593, 0, 644, 860, 833, 834, 835, - 771, 836, 830, 831, 772, 832, 861, 824, 857, 858, - 800, 827, 837, 856, 838, 859, 862, 863, 903, 904, - 844, 828, 257, 905, 841, 864, 855, 854, 839, 825, - 865, 866, 807, 802, 842, 843, 829, 848, 849, 850, - 773, 821, 822, 823, 845, 846, 803, 804, 805, 806, - 0, 0, 0, 478, 479, 480, 502, 0, 464, 526, - 650, 0, 0, 0, 0, 0, 0, 0, 576, 588, - 622, 0, 632, 633, 635, 637, 851, 639, 438, 439, - 0, 847, 642, 643, 640, 374, 425, 444, 432, 0, - 656, 517, 518, 657, 628, 0, 766, 206, 817, 0, - 0, 0, 0, 0, 0, 0, 0, 401, 0, 0, - 532, 565, 554, 638, 520, 0, 0, 0, 0, 0, - 0, 769, 0, 0, 0, 336, 0, 0, 369, 569, - 551, 561, 552, 537, 538, 539, 546, 348, 540, 541, - 542, 512, 543, 513, 544, 545, 1295, 568, 519, 434, - 385, 586, 585, 0, 0, 877, 885, 0, 0, 0, - 0, 0, 0, 0, 0, 873, 0, 0, 0, 0, - 761, 0, 0, 798, 853, 852, 785, 795, 0, 0, - 309, 229, 514, 634, 516, 515, 786, 0, 787, 791, - 794, 790, 788, 789, 0, 868, 0, 0, 0, 0, - 0, 0, 753, 765, 0, 770, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 762, - 763, 0, 0, 0, 0, 818, 0, 764, 0, 0, - 813, 792, 796, 0, 0, 0, 0, 299, 441, 460, - 310, 429, 473, 315, 437, 452, 305, 400, 426, 0, - 0, 301, 458, 436, 382, 359, 360, 300, 0, 420, - 334, 350, 331, 398, 793, 816, 820, 330, 891, 814, - 468, 303, 0, 467, 397, 454, 459, 383, 376, 0, - 302, 456, 381, 375, 363, 340, 892, 364, 365, 354, - 409, 373, 410, 355, 387, 386, 388, 0, 0, 0, - 0, 0, 496, 497, 0, 0, 645, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 627, 811, - 0, 631, 0, 470, 0, 0, 875, 0, 0, 0, - 440, 0, 0, 366, 0, 0, 0, 815, 0, 423, - 403, 888, 0, 0, 421, 371, 455, 411, 461, 442, - 469, 417, 412, 294, 443, 333, 384, 306, 308, 328, - 335, 337, 341, 342, 393, 394, 406, 428, 445, 446, - 447, 332, 316, 422, 317, 352, 318, 295, 324, 322, - 325, 430, 326, 297, 407, 451, 0, 347, 418, 379, - 298, 378, 408, 450, 449, 307, 477, 483, 484, 573, - 0, 489, 660, 661, 662, 498, 0, 413, 503, 504, - 505, 507, 508, 509, 510, 574, 591, 558, 528, 491, - 582, 525, 529, 530, 357, 594, 0, 0, 0, 482, - 367, 368, 0, 339, 338, 380, 416, 345, 291, 292, - 655, 872, 399, 596, 629, 630, 521, 0, 887, 867, - 869, 870, 874, 878, 879, 880, 881, 882, 884, 886, - 890, 654, 0, 575, 590, 658, 589, 651, 405, 0, - 427, 587, 534, 0, 579, 553, 0, 580, 549, 584, - 0, 523, 0, 435, 463, 475, 492, 495, 524, 609, - 610, 611, 296, 494, 613, 614, 615, 616, 617, 618, - 619, 612, 889, 556, 533, 559, 474, 536, 535, 0, - 0, 570, 819, 571, 572, 389, 390, 391, 392, 876, - 597, 314, 493, 415, 0, 557, 0, 0, 0, 0, - 0, 0, 0, 0, 562, 563, 560, 663, 0, 620, - 621, 0, 0, 487, 488, 344, 351, 506, 353, 313, - 404, 346, 472, 361, 0, 499, 564, 500, 623, 626, - 624, 625, 396, 356, 358, 431, 362, 372, 419, 471, - 402, 424, 311, 462, 433, 377, 550, 577, 898, 871, - 897, 899, 900, 896, 901, 902, 883, 774, 0, 826, - 894, 893, 895, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 605, 604, 603, 602, 601, 600, - 599, 598, 0, 0, 547, 448, 323, 285, 319, 320, - 327, 652, 649, 453, 653, 781, 293, 527, 370, 169, - 414, 343, 592, 593, 0, 644, 860, 833, 834, 835, - 771, 836, 830, 831, 772, 832, 861, 824, 857, 858, - 800, 827, 837, 856, 838, 859, 862, 863, 903, 904, - 844, 828, 257, 905, 841, 864, 855, 854, 839, 825, - 865, 866, 807, 802, 842, 843, 829, 848, 849, 850, - 773, 821, 822, 823, 845, 846, 803, 804, 805, 806, - 0, 0, 0, 478, 479, 480, 502, 0, 464, 526, - 650, 0, 0, 0, 0, 0, 0, 0, 576, 588, - 622, 0, 632, 633, 635, 637, 851, 639, 438, 439, - 0, 847, 642, 643, 640, 374, 425, 444, 432, 817, - 656, 517, 518, 657, 628, 0, 766, 0, 401, 0, + 0, 0, 2694, 0, 0, 0, 0, 0, 0, 0, + 3516, 3520, 3518, 3517, 148, 149, 0, 150, 151, 0, + 0, 0, 152, 0, 0, 153, 1279, 1278, 1288, 1289, + 1281, 1282, 1283, 1284, 1285, 1286, 1287, 1280, 0, 0, + 0, 0, 0, 0, 0, 0, 1883, 0, 0, 0, + 3525, 3526, 0, 1034, 0, 0, 1033, 0, 0, 0, + 1790, 1791, 1792, 1793, 1794, 1795, 1796, 1797, 1798, 1799, + 1800, 1812, 1813, 1814, 1815, 1816, 1817, 1810, 1811, 3683, + 0, 0, 0, 0, 0, 0, 0, 0, 167, 195, + 204, 196, 124, 0, 0, 1018, 0, 0, 3135, 0, + 0, 0, 0, 3533, 993, 0, 0, 0, 0, 0, + 0, 194, 188, 187, 0, 3512, 0, 0, 70, 0, + 0, 3524, 0, 0, 0, 3054, 0, 3056, 0, 0, + 0, 995, 0, 1279, 1278, 1288, 1289, 1281, 1282, 1283, + 1284, 1285, 1286, 1287, 1280, 0, 1883, 0, 0, 0, + 0, 1883, 1279, 1278, 1288, 1289, 1281, 1282, 1283, 1284, + 1285, 1286, 1287, 1280, 2203, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 2251, 0, 0, 190, + 191, 192, 1279, 1278, 1288, 1289, 1281, 1282, 1283, 1284, + 1285, 1286, 1287, 1280, 0, 0, 1017, 1015, 0, 3109, + 1279, 1278, 1288, 1289, 1281, 1282, 1283, 1284, 1285, 1286, + 1287, 1280, 0, 0, 0, 0, 0, 200, 0, 0, + 0, 0, 0, 1014, 0, 0, 0, 3133, 0, 0, + 0, 0, 0, 0, 0, 987, 0, 0, 136, 0, + 0, 0, 193, 0, 137, 0, 994, 1027, 0, 0, + 0, 3529, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1023, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 2045, 0, 0, 0, 0, + 2006, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 138, 0, 0, 0, 0, 1024, 1028, 0, 0, + 0, 0, 0, 2078, 63, 0, 0, 0, 0, 0, + 0, 2048, 2015, 0, 0, 0, 1011, 3528, 1009, 1013, + 1031, 2049, 2050, 0, 1010, 1007, 1006, 0, 1012, 997, + 998, 996, 999, 1000, 1001, 1002, 0, 1029, 0, 1030, + 0, 0, 0, 0, 0, 0, 0, 2014, 0, 0, + 1025, 1026, 0, 65, 0, 0, 729, 728, 735, 725, + 0, 0, 0, 0, 0, 2022, 0, 0, 0, 732, + 733, 0, 734, 738, 0, 0, 719, 0, 142, 0, + 0, 142, 142, 3291, 142, 0, 743, 1021, 146, 203, + 0, 147, 0, 1020, 0, 0, 169, 0, 0, 0, + 0, 61, 0, 0, 0, 0, 0, 0, 1016, 0, + 0, 2045, 0, 0, 0, 0, 2006, 0, 0, 0, + 0, 0, 0, 0, 1070, 0, 0, 142, 142, 0, + 0, 0, 747, 2038, 0, 749, 0, 1070, 0, 142, + 748, 0, 0, 0, 0, 0, 0, 2048, 2015, 0, + 0, 0, 0, 0, 142, 0, 0, 2049, 2050, 0, + 0, 0, 0, 0, 0, 0, 0, 139, 45, 0, + 0, 0, 0, 0, 62, 0, 0, 0, 0, 0, + 0, 0, 0, 2014, 0, 0, 1019, 0, 0, 0, + 0, 0, 990, 991, 985, 0, 143, 144, 0, 986, + 145, 2022, 0, 0, 0, 0, 0, 2005, 2007, 2004, + 0, 0, 2001, 0, 0, 0, 0, 2026, 0, 0, + 1265, 1266, 1267, 1264, 0, 0, 0, 0, 2032, 0, + 0, 0, 0, 0, 1297, 0, 2017, 0, 2000, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 2020, 2054, + 0, 0, 2021, 2023, 2025, 0, 2027, 2028, 2029, 2033, + 2034, 2035, 2037, 2040, 2041, 2042, 0, 0, 0, 2038, + 0, 0, 0, 2030, 2039, 2031, 0, 0, 0, 0, + 720, 722, 721, 0, 0, 2009, 0, 0, 0, 0, + 0, 727, 0, 0, 0, 0, 0, 0, 0, 0, + 1809, 0, 0, 731, 0, 0, 0, 0, 0, 2046, + 746, 0, 0, 0, 0, 0, 0, 724, 3402, 0, + 0, 714, 0, 0, 0, 3404, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2002, 2003, 2005, 2875, 2004, 0, 0, 2874, 0, + 0, 0, 0, 2026, 0, 0, 0, 3419, 0, 2043, + 0, 0, 0, 0, 2032, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 2019, 0, 0, 0, + 0, 0, 0, 2018, 2020, 2054, 0, 0, 2021, 2023, + 2025, 0, 2027, 2028, 2029, 2033, 2034, 2035, 2037, 2040, + 2041, 2042, 0, 0, 0, 0, 0, 2036, 0, 2030, + 2039, 2031, 0, 0, 0, 0, 2024, 0, 0, 0, + 0, 2009, 0, 0, 0, 0, 0, 0, 0, 2052, + 2051, 0, 0, 0, 726, 730, 736, 0, 737, 739, + 0, 0, 740, 741, 742, 2046, 0, 744, 745, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1805, 0, 0, 0, 2002, 2003, 0, + 1802, 0, 2011, 0, 1804, 1801, 1803, 1807, 1808, 0, + 0, 0, 1806, 0, 0, 2043, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2019, 1883, 0, 0, 0, 0, 0, 2018, + 1142, 0, 0, 0, 2047, 0, 0, 2053, 0, 1883, + 0, 0, 3569, 0, 0, 3571, 0, 0, 0, 0, + 0, 0, 0, 2036, 0, 0, 0, 0, 0, 0, + 2542, 0, 2024, 0, 0, 0, 3578, 0, 0, 0, + 0, 0, 0, 0, 0, 2052, 2051, 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, 1142, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 723, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 2078, 0, 0, 2011, 0, + 0, 0, 0, 142, 0, 1790, 1791, 1792, 1793, 1794, + 1795, 1796, 1797, 1798, 1799, 1800, 1812, 1813, 1814, 1815, + 1816, 1817, 1810, 1811, 1127, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1142, 0, 0, 0, + 2047, 0, 0, 2053, 0, 1150, 1154, 1156, 1158, 1160, + 1161, 1163, 0, 1168, 1164, 1165, 1166, 1167, 0, 1145, + 1146, 1147, 1148, 1125, 1126, 1151, 0, 1128, 0, 1130, + 1131, 1132, 1133, 1129, 1134, 1135, 1136, 1137, 1138, 1141, + 1143, 1139, 1140, 1149, 0, 0, 0, 0, 0, 0, + 0, 1153, 1155, 1157, 1159, 1162, 0, 1127, 0, 0, + 0, 1117, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1150, 1154, + 1156, 1158, 1160, 1161, 1163, 0, 1168, 1164, 1165, 1166, + 1167, 1144, 1145, 1146, 1147, 1148, 1125, 1126, 1151, 0, + 1128, 0, 1130, 1131, 1132, 1133, 1129, 1134, 1135, 1136, + 1137, 1138, 1141, 1143, 1139, 1140, 1149, 0, 0, 0, + 1127, 0, 0, 0, 1153, 1155, 1157, 1159, 1162, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1150, 1154, 1156, 1158, 1160, 1161, 1163, 0, 1168, + 1164, 1165, 1166, 1167, 0, 1145, 1146, 1147, 1148, 1125, + 1126, 1151, 0, 1128, 1144, 1130, 1131, 1132, 1133, 1129, + 1134, 1135, 1136, 1137, 1138, 1141, 1143, 1139, 1140, 1149, + 0, 0, 0, 729, 728, 735, 725, 1153, 1155, 1157, + 1159, 1162, 0, 0, 142, 0, 732, 733, 0, 734, + 738, 0, 0, 719, 2045, 142, 0, 0, 0, 0, + 0, 206, 0, 743, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1144, 0, 0, + 0, 0, 0, 0, 3661, 0, 0, 2703, 2704, 0, + 2048, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 747, + 0, 0, 749, 0, 0, 0, 0, 748, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 202, 0, 0, 0, 0, 729, + 728, 735, 725, 0, 2022, 0, 0, 0, 0, 0, + 0, 0, 732, 733, 0, 734, 738, 0, 1317, 719, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 743, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2078, 2078, 2078, 2078, 2078, 2078, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 2078, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2038, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 3934, 0, 0, 0, 0, + 0, 1152, 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, 720, 722, 721, + 0, 0, 0, 0, 0, 0, 0, 0, 727, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 731, 0, 0, 0, 0, 0, 142, 746, 0, 0, + 0, 142, 0, 0, 724, 0, 2026, 0, 0, 0, + 0, 0, 0, 0, 1152, 0, 0, 2032, 0, 2045, + 0, 4014, 142, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 142, 0, 2020, 2054, 0, + 0, 2021, 2023, 2025, 0, 2027, 2028, 2029, 2033, 2034, + 2035, 2037, 2040, 2041, 2042, 2048, 0, 2045, 0, 0, + 0, 0, 2030, 2039, 2031, 0, 0, 0, 0, 0, + 0, 0, 0, 720, 722, 721, 0, 1152, 0, 0, + 0, 0, 0, 0, 727, 0, 0, 0, 0, 0, + 0, 0, 0, 2048, 0, 0, 731, 0, 2046, 3839, + 4014, 0, 0, 746, 0, 0, 0, 0, 0, 2022, + 724, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 726, 730, 736, 0, 737, 739, 0, 0, 740, + 741, 742, 0, 0, 744, 745, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 2022, 2043, 0, + 0, 0, 0, 0, 0, 0, 4014, 0, 0, 0, + 0, 0, 0, 0, 0, 2019, 0, 0, 0, 0, + 0, 0, 2018, 0, 0, 0, 0, 2038, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 2036, 0, 0, 0, + 0, 0, 0, 0, 0, 2024, 0, 0, 0, 0, + 0, 1070, 0, 142, 0, 2038, 0, 0, 142, 0, + 0, 0, 4138, 0, 0, 2078, 0, 726, 730, 736, + 0, 737, 739, 0, 0, 740, 741, 742, 0, 0, + 744, 745, 0, 0, 0, 0, 142, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2026, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2032, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 723, 0, 2020, 2054, 0, 0, 2021, 2023, 2025, 2026, + 2027, 2028, 2029, 2033, 2034, 2035, 2037, 2040, 2041, 2042, + 2032, 0, 0, 3665, 0, 0, 0, 2030, 2039, 2031, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2020, 2054, 0, 0, 2021, 2023, 2025, 0, 2027, 2028, + 2029, 2033, 2034, 2035, 2037, 2040, 2041, 2042, 0, 0, + 0, 0, 0, 2046, 0, 2030, 2039, 2031, 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, 2046, 0, 0, 0, 0, 723, 0, 0, 0, + 0, 0, 0, 2043, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2019, 0, 0, 0, 0, 0, 0, 2018, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2043, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2036, 0, 0, 0, 0, 0, 0, 2019, 0, + 2024, 0, 0, 0, 0, 2018, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 2036, + 0, 0, 0, 0, 0, 0, 0, 0, 2024, 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, 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, 3669, 0, + 0, 142, 0, 0, 0, 0, 0, 0, 142, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 819, + 0, 0, 0, 0, 0, 0, 3669, 0, 401, 0, 0, 532, 565, 554, 638, 520, 0, 0, 0, 0, - 0, 0, 769, 0, 0, 0, 336, 4117, 0, 369, + 0, 0, 771, 0, 0, 0, 336, 2078, 0, 369, 569, 551, 561, 552, 537, 538, 539, 546, 348, 540, - 541, 542, 512, 543, 513, 544, 545, 808, 568, 519, - 434, 385, 586, 585, 0, 0, 877, 885, 0, 0, - 0, 0, 0, 0, 0, 0, 873, 0, 0, 0, - 0, 761, 0, 0, 798, 853, 852, 785, 795, 0, - 0, 309, 229, 514, 634, 516, 515, 786, 0, 787, - 791, 794, 790, 788, 789, 0, 868, 0, 0, 0, - 0, 0, 0, 753, 765, 0, 770, 0, 0, 0, + 541, 542, 512, 543, 513, 544, 545, 810, 568, 519, + 434, 385, 586, 585, 0, 0, 879, 887, 0, 0, + 0, 0, 0, 0, 0, 0, 875, 0, 0, 0, + 0, 763, 0, 0, 800, 855, 854, 787, 797, 0, + 0, 309, 229, 514, 634, 516, 515, 788, 0, 789, + 793, 796, 792, 790, 791, 0, 870, 0, 0, 0, + 0, 0, 0, 755, 767, 0, 772, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 762, 763, 0, 0, 0, 0, 818, 0, 764, 0, - 0, 813, 792, 796, 0, 0, 0, 0, 299, 441, + 764, 765, 0, 0, 0, 0, 820, 0, 766, 0, + 0, 815, 794, 798, 0, 142, 0, 0, 299, 441, 460, 310, 429, 473, 315, 437, 452, 305, 400, 426, 0, 0, 301, 458, 436, 382, 359, 360, 300, 0, - 420, 334, 350, 331, 398, 793, 816, 820, 330, 891, - 814, 468, 303, 0, 467, 397, 454, 459, 383, 376, - 0, 302, 456, 381, 375, 363, 340, 892, 364, 365, + 420, 334, 350, 331, 398, 795, 818, 822, 330, 893, + 816, 468, 303, 0, 467, 397, 454, 459, 383, 376, + 0, 302, 456, 381, 375, 363, 340, 894, 364, 365, 354, 409, 373, 410, 355, 387, 386, 388, 0, 0, 0, 0, 0, 496, 497, 0, 0, 645, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 627, - 811, 0, 631, 0, 470, 0, 0, 875, 0, 0, - 0, 440, 0, 0, 366, 0, 0, 0, 815, 0, - 423, 403, 888, 0, 0, 421, 371, 455, 411, 461, + 813, 0, 631, 0, 470, 0, 0, 877, 0, 0, + 0, 440, 0, 0, 366, 142, 0, 0, 817, 0, + 423, 403, 890, 0, 0, 421, 371, 455, 411, 461, 442, 469, 417, 412, 294, 443, 333, 384, 306, 308, 328, 335, 337, 341, 342, 393, 394, 406, 428, 445, 446, 447, 332, 316, 422, 317, 352, 318, 295, 324, @@ -2544,63 +2443,128 @@ var yyAct = [...]int{ 379, 298, 378, 408, 450, 449, 307, 477, 483, 484, 573, 0, 489, 660, 661, 662, 498, 0, 413, 503, 504, 505, 507, 508, 509, 510, 574, 591, 558, 528, - 491, 582, 525, 529, 530, 357, 594, 0, 0, 0, + 491, 582, 525, 529, 530, 357, 594, 1833, 1832, 1834, 482, 367, 368, 0, 339, 338, 380, 416, 345, 291, - 292, 655, 872, 399, 596, 629, 630, 521, 0, 887, - 867, 869, 870, 874, 878, 879, 880, 881, 882, 884, - 886, 890, 654, 0, 575, 590, 658, 589, 651, 405, + 292, 655, 874, 399, 596, 629, 630, 521, 0, 889, + 869, 871, 872, 876, 880, 881, 882, 883, 884, 886, + 888, 892, 654, 0, 575, 590, 658, 589, 651, 405, 0, 427, 587, 534, 0, 579, 553, 0, 580, 549, 584, 0, 523, 0, 435, 463, 475, 492, 495, 524, 609, 610, 611, 296, 494, 613, 614, 615, 616, 617, - 618, 619, 612, 889, 556, 533, 559, 474, 536, 535, - 0, 0, 570, 819, 571, 572, 389, 390, 391, 392, - 876, 597, 314, 493, 415, 0, 557, 0, 0, 0, + 618, 619, 612, 891, 556, 533, 559, 474, 536, 535, + 0, 0, 570, 821, 571, 572, 389, 390, 391, 392, + 878, 597, 314, 493, 415, 142, 557, 0, 0, 0, 0, 0, 0, 0, 0, 562, 563, 560, 663, 0, 620, 621, 0, 0, 487, 488, 344, 351, 506, 353, 313, 404, 346, 472, 361, 0, 499, 564, 500, 623, 626, 624, 625, 396, 356, 358, 431, 362, 372, 419, - 471, 402, 424, 311, 462, 433, 377, 550, 577, 898, - 871, 897, 899, 900, 896, 901, 902, 883, 774, 0, - 826, 894, 893, 895, 0, 0, 0, 0, 0, 0, + 471, 402, 424, 311, 462, 433, 377, 550, 577, 900, + 873, 899, 901, 902, 898, 903, 904, 885, 776, 0, + 828, 896, 895, 897, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 605, 604, 603, 602, 601, 600, 599, 598, 0, 0, 547, 448, 323, 285, 319, - 320, 327, 652, 649, 453, 653, 781, 293, 527, 370, - 0, 414, 343, 592, 593, 0, 644, 860, 833, 834, - 835, 771, 836, 830, 831, 772, 832, 861, 824, 857, - 858, 800, 827, 837, 856, 838, 859, 862, 863, 903, - 904, 844, 828, 257, 905, 841, 864, 855, 854, 839, - 825, 865, 866, 807, 802, 842, 843, 829, 848, 849, - 850, 773, 821, 822, 823, 845, 846, 803, 804, 805, - 806, 0, 0, 0, 478, 479, 480, 502, 0, 464, + 320, 327, 652, 649, 453, 653, 783, 293, 527, 370, + 0, 414, 343, 592, 593, 0, 644, 862, 835, 836, + 837, 773, 838, 832, 833, 774, 834, 863, 826, 859, + 860, 802, 829, 839, 858, 840, 861, 864, 865, 905, + 906, 846, 830, 257, 907, 843, 866, 857, 856, 841, + 827, 867, 868, 809, 804, 844, 845, 831, 850, 851, + 852, 775, 823, 824, 825, 847, 848, 805, 806, 807, + 808, 0, 0, 0, 478, 479, 480, 502, 0, 464, 526, 650, 0, 0, 0, 0, 0, 0, 0, 576, - 588, 622, 0, 632, 633, 635, 637, 851, 639, 438, - 439, 0, 847, 642, 643, 640, 374, 425, 444, 432, - 817, 656, 517, 518, 657, 628, 0, 766, 0, 401, + 588, 622, 0, 632, 633, 635, 637, 853, 639, 438, + 439, 0, 849, 642, 643, 640, 374, 425, 444, 432, + 819, 656, 517, 518, 657, 628, 0, 768, 0, 401, + 0, 0, 532, 565, 554, 638, 520, 0, 0, 0, + 0, 0, 0, 771, 0, 0, 0, 336, 1884, 0, + 369, 569, 551, 561, 552, 537, 538, 539, 546, 348, + 540, 541, 542, 512, 543, 513, 544, 545, 810, 568, + 519, 434, 385, 586, 585, 0, 0, 879, 887, 0, + 0, 0, 0, 0, 0, 0, 0, 875, 0, 2104, + 0, 0, 763, 0, 0, 800, 855, 854, 787, 797, + 0, 0, 309, 229, 514, 634, 516, 515, 788, 0, + 789, 793, 796, 792, 790, 791, 0, 870, 0, 0, + 0, 0, 0, 0, 755, 767, 0, 772, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 764, 765, 0, 0, 0, 0, 820, 0, 766, + 0, 0, 2105, 794, 798, 0, 0, 0, 0, 299, + 441, 460, 310, 429, 473, 315, 437, 452, 305, 400, + 426, 0, 0, 301, 458, 436, 382, 359, 360, 300, + 0, 420, 334, 350, 331, 398, 795, 818, 822, 330, + 893, 816, 468, 303, 0, 467, 397, 454, 459, 383, + 376, 0, 302, 456, 381, 375, 363, 340, 894, 364, + 365, 354, 409, 373, 410, 355, 387, 386, 388, 0, + 0, 0, 0, 0, 496, 497, 0, 0, 645, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 627, 813, 0, 631, 0, 470, 0, 0, 877, 0, + 0, 0, 440, 0, 0, 366, 0, 0, 0, 817, + 0, 423, 403, 890, 0, 0, 421, 371, 455, 411, + 461, 442, 469, 417, 412, 294, 443, 333, 384, 306, + 308, 328, 335, 337, 341, 342, 393, 394, 406, 428, + 445, 446, 447, 332, 316, 422, 317, 352, 318, 295, + 324, 322, 325, 430, 326, 297, 407, 451, 0, 347, + 418, 379, 298, 378, 408, 450, 449, 307, 477, 483, + 484, 573, 0, 489, 660, 661, 662, 498, 0, 413, + 503, 504, 505, 507, 508, 509, 510, 574, 591, 558, + 528, 491, 582, 525, 529, 530, 357, 594, 0, 0, + 0, 482, 367, 368, 0, 339, 338, 380, 416, 345, + 291, 292, 655, 874, 399, 596, 629, 630, 521, 0, + 889, 869, 871, 872, 876, 880, 881, 882, 883, 884, + 886, 888, 892, 654, 0, 575, 590, 658, 589, 651, + 405, 0, 427, 587, 534, 0, 579, 553, 0, 580, + 549, 584, 0, 523, 0, 435, 463, 475, 492, 495, + 524, 609, 610, 611, 296, 494, 613, 614, 615, 616, + 617, 618, 619, 612, 891, 556, 533, 559, 474, 536, + 535, 0, 0, 570, 821, 571, 572, 389, 390, 391, + 392, 878, 597, 314, 493, 415, 0, 557, 0, 0, + 0, 0, 0, 0, 0, 0, 562, 563, 560, 663, + 0, 620, 621, 0, 0, 487, 488, 344, 351, 506, + 353, 313, 404, 346, 472, 361, 0, 499, 564, 500, + 623, 626, 624, 625, 396, 356, 358, 431, 362, 372, + 419, 471, 402, 424, 311, 462, 433, 377, 550, 577, + 900, 873, 899, 901, 902, 898, 903, 904, 885, 776, + 0, 828, 896, 895, 897, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 605, 604, 603, 602, + 601, 600, 599, 598, 0, 0, 547, 448, 323, 285, + 319, 320, 327, 652, 649, 453, 653, 783, 293, 527, + 370, 0, 414, 343, 592, 593, 0, 644, 862, 835, + 836, 837, 773, 838, 832, 833, 774, 834, 863, 826, + 859, 860, 802, 829, 839, 858, 840, 861, 864, 865, + 905, 906, 846, 830, 257, 907, 843, 866, 857, 856, + 841, 827, 867, 868, 809, 804, 844, 845, 831, 850, + 851, 852, 775, 823, 824, 825, 847, 848, 805, 806, + 807, 808, 0, 0, 0, 478, 479, 480, 502, 0, + 464, 526, 650, 0, 0, 0, 0, 0, 0, 0, + 576, 588, 622, 0, 632, 633, 635, 637, 853, 639, + 438, 439, 0, 849, 642, 643, 640, 374, 425, 444, + 432, 0, 656, 517, 518, 657, 628, 0, 768, 206, + 819, 0, 0, 0, 0, 0, 0, 0, 0, 401, 0, 0, 532, 565, 554, 638, 520, 0, 0, 0, - 0, 0, 0, 769, 0, 0, 0, 336, 0, 0, + 0, 0, 0, 771, 0, 0, 0, 336, 0, 0, 369, 569, 551, 561, 552, 537, 538, 539, 546, 348, - 540, 541, 542, 512, 543, 513, 544, 545, 808, 568, - 519, 434, 385, 586, 585, 0, 0, 877, 885, 0, - 0, 0, 0, 0, 0, 0, 0, 873, 0, 0, - 0, 0, 761, 0, 0, 798, 853, 852, 785, 795, - 0, 0, 309, 229, 514, 634, 516, 515, 786, 0, - 787, 791, 794, 790, 788, 789, 0, 868, 0, 0, - 0, 0, 0, 0, 753, 765, 0, 770, 0, 0, + 540, 541, 542, 512, 543, 513, 544, 545, 1300, 568, + 519, 434, 385, 586, 585, 0, 0, 879, 887, 0, + 0, 0, 0, 0, 0, 0, 0, 875, 0, 0, + 0, 0, 763, 0, 0, 800, 855, 854, 787, 797, + 0, 0, 309, 229, 514, 634, 516, 515, 788, 0, + 789, 793, 796, 792, 790, 791, 0, 870, 0, 0, + 0, 0, 0, 0, 755, 767, 0, 772, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 762, 763, 0, 0, 0, 0, 818, 0, 764, - 0, 0, 813, 792, 796, 0, 0, 0, 0, 299, + 0, 764, 765, 0, 0, 0, 0, 820, 0, 766, + 0, 0, 815, 794, 798, 0, 0, 0, 0, 299, 441, 460, 310, 429, 473, 315, 437, 452, 305, 400, 426, 0, 0, 301, 458, 436, 382, 359, 360, 300, - 0, 420, 334, 350, 331, 398, 793, 816, 820, 330, - 891, 814, 468, 303, 0, 467, 397, 454, 459, 383, - 376, 0, 302, 456, 381, 375, 363, 340, 892, 364, + 0, 420, 334, 350, 331, 398, 795, 818, 822, 330, + 893, 816, 468, 303, 0, 467, 397, 454, 459, 383, + 376, 0, 302, 456, 381, 375, 363, 340, 894, 364, 365, 354, 409, 373, 410, 355, 387, 386, 388, 0, 0, 0, 0, 0, 496, 497, 0, 0, 645, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 627, 811, 0, 631, 0, 470, 0, 0, 875, 0, - 0, 0, 440, 0, 0, 366, 0, 0, 0, 815, - 0, 423, 403, 888, 3995, 0, 421, 371, 455, 411, + 627, 813, 0, 631, 0, 470, 0, 0, 877, 0, + 0, 0, 440, 0, 0, 366, 0, 0, 0, 817, + 0, 423, 403, 890, 0, 0, 421, 371, 455, 411, 461, 442, 469, 417, 412, 294, 443, 333, 384, 306, 308, 328, 335, 337, 341, 342, 393, 394, 406, 428, 445, 446, 447, 332, 316, 422, 317, 352, 318, 295, @@ -2610,61 +2574,61 @@ var yyAct = [...]int{ 503, 504, 505, 507, 508, 509, 510, 574, 591, 558, 528, 491, 582, 525, 529, 530, 357, 594, 0, 0, 0, 482, 367, 368, 0, 339, 338, 380, 416, 345, - 291, 292, 655, 872, 399, 596, 629, 630, 521, 0, - 887, 867, 869, 870, 874, 878, 879, 880, 881, 882, - 884, 886, 890, 654, 0, 575, 590, 658, 589, 651, + 291, 292, 655, 874, 399, 596, 629, 630, 521, 0, + 889, 869, 871, 872, 876, 880, 881, 882, 883, 884, + 886, 888, 892, 654, 0, 575, 590, 658, 589, 651, 405, 0, 427, 587, 534, 0, 579, 553, 0, 580, 549, 584, 0, 523, 0, 435, 463, 475, 492, 495, 524, 609, 610, 611, 296, 494, 613, 614, 615, 616, - 617, 618, 619, 612, 889, 556, 533, 559, 474, 536, - 535, 0, 0, 570, 819, 571, 572, 389, 390, 391, - 392, 876, 597, 314, 493, 415, 0, 557, 0, 0, + 617, 618, 619, 612, 891, 556, 533, 559, 474, 536, + 535, 0, 0, 570, 821, 571, 572, 389, 390, 391, + 392, 878, 597, 314, 493, 415, 0, 557, 0, 0, 0, 0, 0, 0, 0, 0, 562, 563, 560, 663, 0, 620, 621, 0, 0, 487, 488, 344, 351, 506, 353, 313, 404, 346, 472, 361, 0, 499, 564, 500, 623, 626, 624, 625, 396, 356, 358, 431, 362, 372, 419, 471, 402, 424, 311, 462, 433, 377, 550, 577, - 898, 871, 897, 899, 900, 896, 901, 902, 883, 774, - 0, 826, 894, 893, 895, 0, 0, 0, 0, 0, + 900, 873, 899, 901, 902, 898, 903, 904, 885, 776, + 0, 828, 896, 895, 897, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 605, 604, 603, 602, 601, 600, 599, 598, 0, 0, 547, 448, 323, 285, - 319, 320, 327, 652, 649, 453, 653, 781, 293, 527, - 370, 0, 414, 343, 592, 593, 0, 644, 860, 833, - 834, 835, 771, 836, 830, 831, 772, 832, 861, 824, - 857, 858, 800, 827, 837, 856, 838, 859, 862, 863, - 903, 904, 844, 828, 257, 905, 841, 864, 855, 854, - 839, 825, 865, 866, 807, 802, 842, 843, 829, 848, - 849, 850, 773, 821, 822, 823, 845, 846, 803, 804, - 805, 806, 0, 0, 0, 478, 479, 480, 502, 0, + 319, 320, 327, 652, 649, 453, 653, 783, 293, 527, + 370, 169, 414, 343, 592, 593, 0, 644, 862, 835, + 836, 837, 773, 838, 832, 833, 774, 834, 863, 826, + 859, 860, 802, 829, 839, 858, 840, 861, 864, 865, + 905, 906, 846, 830, 257, 907, 843, 866, 857, 856, + 841, 827, 867, 868, 809, 804, 844, 845, 831, 850, + 851, 852, 775, 823, 824, 825, 847, 848, 805, 806, + 807, 808, 0, 0, 0, 478, 479, 480, 502, 0, 464, 526, 650, 0, 0, 0, 0, 0, 0, 0, - 576, 588, 622, 0, 632, 633, 635, 637, 851, 639, - 438, 439, 0, 847, 642, 643, 640, 374, 425, 444, - 432, 817, 656, 517, 518, 657, 628, 0, 766, 0, + 576, 588, 622, 0, 632, 633, 635, 637, 853, 639, + 438, 439, 0, 849, 642, 643, 640, 374, 425, 444, + 432, 819, 656, 517, 518, 657, 628, 0, 768, 0, 401, 0, 0, 532, 565, 554, 638, 520, 0, 0, - 0, 0, 0, 0, 769, 0, 0, 0, 336, 1876, + 0, 0, 0, 0, 771, 0, 0, 0, 336, 4137, 0, 369, 569, 551, 561, 552, 537, 538, 539, 546, - 348, 540, 541, 542, 512, 543, 513, 544, 545, 808, - 568, 519, 434, 385, 586, 585, 0, 0, 877, 885, - 0, 0, 0, 0, 0, 0, 0, 0, 873, 0, - 0, 0, 0, 761, 0, 0, 798, 853, 852, 785, - 795, 0, 0, 309, 229, 514, 634, 516, 515, 786, - 0, 787, 791, 794, 790, 788, 789, 0, 868, 0, - 0, 0, 0, 0, 0, 753, 765, 0, 770, 0, + 348, 540, 541, 542, 512, 543, 513, 544, 545, 810, + 568, 519, 434, 385, 586, 585, 0, 0, 879, 887, + 0, 0, 0, 0, 0, 0, 0, 0, 875, 0, + 0, 0, 0, 763, 0, 0, 800, 855, 854, 787, + 797, 0, 0, 309, 229, 514, 634, 516, 515, 788, + 0, 789, 793, 796, 792, 790, 791, 0, 870, 0, + 0, 0, 0, 0, 0, 755, 767, 0, 772, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 762, 763, 0, 0, 0, 0, 818, 0, - 764, 0, 0, 813, 792, 796, 0, 0, 0, 0, + 0, 0, 764, 765, 0, 0, 0, 0, 820, 0, + 766, 0, 0, 815, 794, 798, 0, 0, 0, 0, 299, 441, 460, 310, 429, 473, 315, 437, 452, 305, 400, 426, 0, 0, 301, 458, 436, 382, 359, 360, - 300, 0, 420, 334, 350, 331, 398, 793, 816, 820, - 330, 891, 814, 468, 303, 0, 467, 397, 454, 459, - 383, 376, 0, 302, 456, 381, 375, 363, 340, 892, + 300, 0, 420, 334, 350, 331, 398, 795, 818, 822, + 330, 893, 816, 468, 303, 0, 467, 397, 454, 459, + 383, 376, 0, 302, 456, 381, 375, 363, 340, 894, 364, 365, 354, 409, 373, 410, 355, 387, 386, 388, 0, 0, 0, 0, 0, 496, 497, 0, 0, 645, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 627, 811, 0, 631, 0, 470, 0, 0, 875, + 0, 627, 813, 0, 631, 0, 470, 0, 0, 877, 0, 0, 0, 440, 0, 0, 366, 0, 0, 0, - 815, 0, 423, 403, 888, 0, 0, 421, 371, 455, + 817, 0, 423, 403, 890, 0, 0, 421, 371, 455, 411, 461, 442, 469, 417, 412, 294, 443, 333, 384, 306, 308, 328, 335, 337, 341, 342, 393, 394, 406, 428, 445, 446, 447, 332, 316, 422, 317, 352, 318, @@ -2674,61 +2638,61 @@ var yyAct = [...]int{ 413, 503, 504, 505, 507, 508, 509, 510, 574, 591, 558, 528, 491, 582, 525, 529, 530, 357, 594, 0, 0, 0, 482, 367, 368, 0, 339, 338, 380, 416, - 345, 291, 292, 655, 872, 399, 596, 629, 630, 521, - 0, 887, 867, 869, 870, 874, 878, 879, 880, 881, - 882, 884, 886, 890, 654, 0, 575, 590, 658, 589, + 345, 291, 292, 655, 874, 399, 596, 629, 630, 521, + 0, 889, 869, 871, 872, 876, 880, 881, 882, 883, + 884, 886, 888, 892, 654, 0, 575, 590, 658, 589, 651, 405, 0, 427, 587, 534, 0, 579, 553, 0, 580, 549, 584, 0, 523, 0, 435, 463, 475, 492, 495, 524, 609, 610, 611, 296, 494, 613, 614, 615, - 616, 617, 618, 619, 612, 889, 556, 533, 559, 474, - 536, 535, 0, 0, 570, 819, 571, 572, 389, 390, - 391, 392, 876, 597, 314, 493, 415, 0, 557, 0, + 616, 617, 618, 619, 612, 891, 556, 533, 559, 474, + 536, 535, 0, 0, 570, 821, 571, 572, 389, 390, + 391, 392, 878, 597, 314, 493, 415, 0, 557, 0, 0, 0, 0, 0, 0, 0, 0, 562, 563, 560, 663, 0, 620, 621, 0, 0, 487, 488, 344, 351, 506, 353, 313, 404, 346, 472, 361, 0, 499, 564, 500, 623, 626, 624, 625, 396, 356, 358, 431, 362, 372, 419, 471, 402, 424, 311, 462, 433, 377, 550, - 577, 898, 871, 897, 899, 900, 896, 901, 902, 883, - 774, 0, 826, 894, 893, 895, 0, 0, 0, 0, + 577, 900, 873, 899, 901, 902, 898, 903, 904, 885, + 776, 0, 828, 896, 895, 897, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 605, 604, 603, 602, 601, 600, 599, 598, 0, 0, 547, 448, 323, - 285, 319, 320, 327, 652, 649, 453, 653, 781, 293, - 527, 370, 0, 414, 343, 592, 593, 0, 644, 860, - 833, 834, 835, 771, 836, 830, 831, 772, 832, 861, - 824, 857, 858, 800, 827, 837, 856, 838, 859, 862, - 863, 903, 904, 844, 828, 257, 905, 841, 864, 855, - 854, 839, 825, 865, 866, 807, 802, 842, 843, 829, - 848, 849, 850, 773, 821, 822, 823, 845, 846, 803, - 804, 805, 806, 0, 0, 0, 478, 479, 480, 502, + 285, 319, 320, 327, 652, 649, 453, 653, 783, 293, + 527, 370, 0, 414, 343, 592, 593, 0, 644, 862, + 835, 836, 837, 773, 838, 832, 833, 774, 834, 863, + 826, 859, 860, 802, 829, 839, 858, 840, 861, 864, + 865, 905, 906, 846, 830, 257, 907, 843, 866, 857, + 856, 841, 827, 867, 868, 809, 804, 844, 845, 831, + 850, 851, 852, 775, 823, 824, 825, 847, 848, 805, + 806, 807, 808, 0, 0, 0, 478, 479, 480, 502, 0, 464, 526, 650, 0, 0, 0, 0, 0, 0, - 0, 576, 588, 622, 0, 632, 633, 635, 637, 851, - 639, 438, 439, 0, 847, 642, 643, 640, 374, 425, - 444, 432, 817, 656, 517, 518, 657, 628, 0, 766, + 0, 576, 588, 622, 0, 632, 633, 635, 637, 853, + 639, 438, 439, 0, 849, 642, 643, 640, 374, 425, + 444, 432, 819, 656, 517, 518, 657, 628, 0, 768, 0, 401, 0, 0, 532, 565, 554, 638, 520, 0, - 0, 0, 0, 0, 0, 769, 0, 0, 0, 336, + 0, 0, 0, 0, 0, 771, 0, 0, 0, 336, 0, 0, 369, 569, 551, 561, 552, 537, 538, 539, 546, 348, 540, 541, 542, 512, 543, 513, 544, 545, - 808, 568, 519, 434, 385, 586, 585, 0, 0, 877, - 885, 0, 0, 0, 0, 0, 0, 0, 0, 873, - 0, 0, 0, 0, 761, 0, 0, 798, 853, 852, - 785, 795, 0, 0, 309, 229, 514, 634, 516, 515, - 786, 0, 787, 791, 794, 790, 788, 789, 0, 868, - 0, 0, 0, 0, 0, 0, 753, 765, 0, 770, + 810, 568, 519, 434, 385, 586, 585, 0, 0, 879, + 887, 0, 0, 0, 0, 0, 0, 0, 0, 875, + 0, 0, 0, 0, 763, 0, 0, 800, 855, 854, + 787, 797, 0, 0, 309, 229, 514, 634, 516, 515, + 788, 0, 789, 793, 796, 792, 790, 791, 0, 870, + 0, 0, 0, 0, 0, 0, 755, 767, 0, 772, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 762, 763, 1590, 0, 0, 0, 818, - 0, 764, 0, 0, 813, 792, 796, 0, 0, 0, + 0, 0, 0, 764, 765, 0, 0, 0, 0, 820, + 0, 766, 0, 0, 815, 794, 798, 0, 0, 0, 0, 299, 441, 460, 310, 429, 473, 315, 437, 452, 305, 400, 426, 0, 0, 301, 458, 436, 382, 359, - 360, 300, 0, 420, 334, 350, 331, 398, 793, 816, - 820, 330, 891, 814, 468, 303, 0, 467, 397, 454, + 360, 300, 0, 420, 334, 350, 331, 398, 795, 818, + 822, 330, 893, 816, 468, 303, 0, 467, 397, 454, 459, 383, 376, 0, 302, 456, 381, 375, 363, 340, - 892, 364, 365, 354, 409, 373, 410, 355, 387, 386, + 894, 364, 365, 354, 409, 373, 410, 355, 387, 386, 388, 0, 0, 0, 0, 0, 496, 497, 0, 0, 645, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 627, 811, 0, 631, 0, 470, 0, 0, - 875, 0, 0, 0, 440, 0, 0, 366, 0, 0, - 0, 815, 0, 423, 403, 888, 0, 0, 421, 371, + 0, 0, 627, 813, 0, 631, 0, 470, 0, 0, + 877, 0, 0, 0, 440, 0, 0, 366, 0, 0, + 0, 817, 0, 423, 403, 890, 4015, 0, 421, 371, 455, 411, 461, 442, 469, 417, 412, 294, 443, 333, 384, 306, 308, 328, 335, 337, 341, 342, 393, 394, 406, 428, 445, 446, 447, 332, 316, 422, 317, 352, @@ -2738,190 +2702,190 @@ var yyAct = [...]int{ 0, 413, 503, 504, 505, 507, 508, 509, 510, 574, 591, 558, 528, 491, 582, 525, 529, 530, 357, 594, 0, 0, 0, 482, 367, 368, 0, 339, 338, 380, - 416, 345, 291, 292, 655, 872, 399, 596, 629, 630, - 521, 0, 887, 867, 869, 870, 874, 878, 879, 880, - 881, 882, 884, 886, 890, 654, 0, 575, 590, 658, + 416, 345, 291, 292, 655, 874, 399, 596, 629, 630, + 521, 0, 889, 869, 871, 872, 876, 880, 881, 882, + 883, 884, 886, 888, 892, 654, 0, 575, 590, 658, 589, 651, 405, 0, 427, 587, 534, 0, 579, 553, 0, 580, 549, 584, 0, 523, 0, 435, 463, 475, 492, 495, 524, 609, 610, 611, 296, 494, 613, 614, - 615, 616, 617, 618, 619, 612, 889, 556, 533, 559, - 474, 536, 535, 0, 0, 570, 819, 571, 572, 389, - 390, 391, 392, 876, 597, 314, 493, 415, 0, 557, + 615, 616, 617, 618, 619, 612, 891, 556, 533, 559, + 474, 536, 535, 0, 0, 570, 821, 571, 572, 389, + 390, 391, 392, 878, 597, 314, 493, 415, 0, 557, 0, 0, 0, 0, 0, 0, 0, 0, 562, 563, 560, 663, 0, 620, 621, 0, 0, 487, 488, 344, 351, 506, 353, 313, 404, 346, 472, 361, 0, 499, 564, 500, 623, 626, 624, 625, 396, 356, 358, 431, 362, 372, 419, 471, 402, 424, 311, 462, 433, 377, - 550, 577, 898, 871, 897, 899, 900, 896, 901, 902, - 883, 774, 0, 826, 894, 893, 895, 0, 0, 0, + 550, 577, 900, 873, 899, 901, 902, 898, 903, 904, + 885, 776, 0, 828, 896, 895, 897, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 605, 604, 603, 602, 601, 600, 599, 598, 0, 0, 547, 448, - 323, 285, 319, 320, 327, 652, 649, 453, 653, 781, + 323, 285, 319, 320, 327, 652, 649, 453, 653, 783, 293, 527, 370, 0, 414, 343, 592, 593, 0, 644, - 860, 833, 834, 835, 771, 836, 830, 831, 772, 832, - 861, 824, 857, 858, 800, 827, 837, 856, 838, 859, - 862, 863, 903, 904, 844, 828, 257, 905, 841, 864, - 855, 854, 839, 825, 865, 866, 807, 802, 842, 843, - 829, 848, 849, 850, 773, 821, 822, 823, 845, 846, - 803, 804, 805, 806, 0, 0, 0, 478, 479, 480, + 862, 835, 836, 837, 773, 838, 832, 833, 774, 834, + 863, 826, 859, 860, 802, 829, 839, 858, 840, 861, + 864, 865, 905, 906, 846, 830, 257, 907, 843, 866, + 857, 856, 841, 827, 867, 868, 809, 804, 844, 845, + 831, 850, 851, 852, 775, 823, 824, 825, 847, 848, + 805, 806, 807, 808, 0, 0, 0, 478, 479, 480, 502, 0, 464, 526, 650, 0, 0, 0, 0, 0, 0, 0, 576, 588, 622, 0, 632, 633, 635, 637, - 851, 639, 438, 439, 0, 847, 642, 643, 640, 374, - 425, 444, 432, 0, 656, 517, 518, 657, 628, 817, - 766, 0, 2268, 0, 0, 0, 0, 0, 401, 0, - 0, 532, 565, 554, 638, 520, 0, 0, 0, 0, - 0, 0, 769, 0, 0, 0, 336, 0, 0, 369, - 569, 551, 561, 552, 537, 538, 539, 546, 348, 540, - 541, 542, 512, 543, 513, 544, 545, 808, 568, 519, - 434, 385, 586, 585, 0, 0, 877, 885, 0, 0, - 0, 0, 0, 0, 0, 0, 873, 0, 0, 0, - 0, 761, 0, 0, 798, 853, 852, 785, 795, 0, - 0, 309, 229, 514, 634, 516, 515, 786, 0, 787, - 791, 794, 790, 788, 789, 0, 868, 0, 0, 0, - 0, 0, 0, 753, 765, 0, 770, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 762, 763, 0, 0, 0, 0, 818, 0, 764, 0, - 0, 813, 792, 796, 0, 0, 0, 0, 299, 441, - 460, 310, 429, 473, 315, 437, 452, 305, 400, 426, - 0, 0, 301, 458, 436, 382, 359, 360, 300, 0, - 420, 334, 350, 331, 398, 793, 816, 820, 330, 891, - 814, 468, 303, 0, 467, 397, 454, 459, 383, 376, - 0, 302, 456, 381, 375, 363, 340, 892, 364, 365, - 354, 409, 373, 410, 355, 387, 386, 388, 0, 0, - 0, 0, 0, 496, 497, 0, 0, 645, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 627, - 811, 0, 631, 0, 470, 0, 0, 875, 0, 0, - 0, 440, 0, 0, 366, 0, 0, 0, 815, 0, - 423, 403, 888, 0, 0, 421, 371, 455, 411, 461, - 442, 469, 417, 412, 294, 443, 333, 384, 306, 308, - 328, 335, 337, 341, 342, 393, 394, 406, 428, 445, - 446, 447, 332, 316, 422, 317, 352, 318, 295, 324, - 322, 325, 430, 326, 297, 407, 451, 0, 347, 418, - 379, 298, 378, 408, 450, 449, 307, 477, 483, 484, - 573, 0, 489, 660, 661, 662, 498, 0, 413, 503, - 504, 505, 507, 508, 509, 510, 574, 591, 558, 528, - 491, 582, 525, 529, 530, 357, 594, 0, 0, 0, - 482, 367, 368, 0, 339, 338, 380, 416, 345, 291, - 292, 655, 872, 399, 596, 629, 630, 521, 0, 887, - 867, 869, 870, 874, 878, 879, 880, 881, 882, 884, - 886, 890, 654, 0, 575, 590, 658, 589, 651, 405, - 0, 427, 587, 534, 0, 579, 553, 0, 580, 549, - 584, 0, 523, 0, 435, 463, 475, 492, 495, 524, - 609, 610, 611, 296, 494, 613, 614, 615, 616, 617, - 618, 619, 612, 889, 556, 533, 559, 474, 536, 535, - 0, 0, 570, 819, 571, 572, 389, 390, 391, 392, - 876, 597, 314, 493, 415, 0, 557, 0, 0, 0, - 0, 0, 0, 0, 0, 562, 563, 560, 663, 0, - 620, 621, 0, 0, 487, 488, 344, 351, 506, 353, - 313, 404, 346, 472, 361, 0, 499, 564, 500, 623, - 626, 624, 625, 396, 356, 358, 431, 362, 372, 419, - 471, 402, 424, 311, 462, 433, 377, 550, 577, 898, - 871, 897, 899, 900, 896, 901, 902, 883, 774, 0, - 826, 894, 893, 895, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 605, 604, 603, 602, 601, - 600, 599, 598, 0, 0, 547, 448, 323, 285, 319, - 320, 327, 652, 649, 453, 653, 781, 293, 527, 370, - 0, 414, 343, 592, 593, 0, 644, 860, 833, 834, - 835, 771, 836, 830, 831, 772, 832, 861, 824, 857, - 858, 800, 827, 837, 856, 838, 859, 862, 863, 903, - 904, 844, 828, 257, 905, 841, 864, 855, 854, 839, - 825, 865, 866, 807, 802, 842, 843, 829, 848, 849, - 850, 773, 821, 822, 823, 845, 846, 803, 804, 805, - 806, 0, 0, 0, 478, 479, 480, 502, 0, 464, - 526, 650, 0, 0, 0, 0, 0, 0, 0, 576, - 588, 622, 0, 632, 633, 635, 637, 851, 639, 438, - 439, 0, 847, 642, 643, 640, 374, 425, 444, 432, - 817, 656, 517, 518, 657, 628, 0, 766, 0, 401, - 0, 0, 532, 565, 554, 638, 520, 0, 0, 0, - 0, 0, 0, 769, 0, 0, 0, 336, 0, 0, - 369, 569, 551, 561, 552, 537, 538, 539, 546, 348, - 540, 541, 542, 512, 543, 513, 544, 545, 808, 568, - 519, 434, 385, 586, 585, 0, 0, 877, 885, 0, - 0, 0, 0, 0, 0, 0, 0, 873, 0, 0, - 0, 0, 761, 0, 0, 798, 853, 852, 785, 795, - 0, 0, 309, 229, 514, 634, 516, 515, 786, 0, - 787, 791, 794, 790, 788, 789, 0, 868, 0, 0, - 0, 0, 0, 0, 753, 765, 0, 770, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 762, 763, 1869, 0, 0, 0, 818, 0, 764, - 0, 0, 813, 792, 796, 0, 0, 0, 0, 299, - 441, 460, 310, 429, 473, 315, 437, 452, 305, 400, - 426, 0, 0, 301, 458, 436, 382, 359, 360, 300, - 0, 420, 334, 350, 331, 398, 793, 816, 820, 330, - 891, 814, 468, 303, 0, 467, 397, 454, 459, 383, - 376, 0, 302, 456, 381, 375, 363, 340, 892, 364, - 365, 354, 409, 373, 410, 355, 387, 386, 388, 0, - 0, 0, 0, 0, 496, 497, 0, 0, 645, 0, + 853, 639, 438, 439, 0, 849, 642, 643, 640, 374, + 425, 444, 432, 819, 656, 517, 518, 657, 628, 0, + 768, 0, 401, 0, 0, 532, 565, 554, 638, 520, + 0, 0, 0, 0, 0, 0, 771, 0, 0, 0, + 336, 1884, 0, 369, 569, 551, 561, 552, 537, 538, + 539, 546, 348, 540, 541, 542, 512, 543, 513, 544, + 545, 810, 568, 519, 434, 385, 586, 585, 0, 0, + 879, 887, 0, 0, 0, 0, 0, 0, 0, 0, + 875, 0, 0, 0, 0, 763, 0, 0, 800, 855, + 854, 787, 797, 0, 0, 309, 229, 514, 634, 516, + 515, 788, 0, 789, 793, 796, 792, 790, 791, 0, + 870, 0, 0, 0, 0, 0, 0, 755, 767, 0, + 772, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 764, 765, 0, 0, 0, 0, + 820, 0, 766, 0, 0, 815, 794, 798, 0, 0, + 0, 0, 299, 441, 460, 310, 429, 473, 315, 437, + 452, 305, 400, 426, 0, 0, 301, 458, 436, 382, + 359, 360, 300, 0, 420, 334, 350, 331, 398, 795, + 818, 822, 330, 893, 816, 468, 303, 0, 467, 397, + 454, 459, 383, 376, 0, 302, 456, 381, 375, 363, + 340, 894, 364, 365, 354, 409, 373, 410, 355, 387, + 386, 388, 0, 0, 0, 0, 0, 496, 497, 0, + 0, 645, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 627, 813, 0, 631, 0, 470, 0, + 0, 877, 0, 0, 0, 440, 0, 0, 366, 0, + 0, 0, 817, 0, 423, 403, 890, 0, 0, 421, + 371, 455, 411, 461, 442, 469, 417, 412, 294, 443, + 333, 384, 306, 308, 328, 335, 337, 341, 342, 393, + 394, 406, 428, 445, 446, 447, 332, 316, 422, 317, + 352, 318, 295, 324, 322, 325, 430, 326, 297, 407, + 451, 0, 347, 418, 379, 298, 378, 408, 450, 449, + 307, 477, 483, 484, 573, 0, 489, 660, 661, 662, + 498, 0, 413, 503, 504, 505, 507, 508, 509, 510, + 574, 591, 558, 528, 491, 582, 525, 529, 530, 357, + 594, 0, 0, 0, 482, 367, 368, 0, 339, 338, + 380, 416, 345, 291, 292, 655, 874, 399, 596, 629, + 630, 521, 0, 889, 869, 871, 872, 876, 880, 881, + 882, 883, 884, 886, 888, 892, 654, 0, 575, 590, + 658, 589, 651, 405, 0, 427, 587, 534, 0, 579, + 553, 0, 580, 549, 584, 0, 523, 0, 435, 463, + 475, 492, 495, 524, 609, 610, 611, 296, 494, 613, + 614, 615, 616, 617, 618, 619, 612, 891, 556, 533, + 559, 474, 536, 535, 0, 0, 570, 821, 571, 572, + 389, 390, 391, 392, 878, 597, 314, 493, 415, 0, + 557, 0, 0, 0, 0, 0, 0, 0, 0, 562, + 563, 560, 663, 0, 620, 621, 0, 0, 487, 488, + 344, 351, 506, 353, 313, 404, 346, 472, 361, 0, + 499, 564, 500, 623, 626, 624, 625, 396, 356, 358, + 431, 362, 372, 419, 471, 402, 424, 311, 462, 433, + 377, 550, 577, 900, 873, 899, 901, 902, 898, 903, + 904, 885, 776, 0, 828, 896, 895, 897, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 605, + 604, 603, 602, 601, 600, 599, 598, 0, 0, 547, + 448, 323, 285, 319, 320, 327, 652, 649, 453, 653, + 783, 293, 527, 370, 0, 414, 343, 592, 593, 0, + 644, 862, 835, 836, 837, 773, 838, 832, 833, 774, + 834, 863, 826, 859, 860, 802, 829, 839, 858, 840, + 861, 864, 865, 905, 906, 846, 830, 257, 907, 843, + 866, 857, 856, 841, 827, 867, 868, 809, 804, 844, + 845, 831, 850, 851, 852, 775, 823, 824, 825, 847, + 848, 805, 806, 807, 808, 0, 0, 0, 478, 479, + 480, 502, 0, 464, 526, 650, 0, 0, 0, 0, + 0, 0, 0, 576, 588, 622, 0, 632, 633, 635, + 637, 853, 639, 438, 439, 0, 849, 642, 643, 640, + 374, 425, 444, 432, 819, 656, 517, 518, 657, 628, + 0, 768, 0, 401, 0, 0, 532, 565, 554, 638, + 520, 0, 0, 0, 0, 0, 0, 771, 0, 0, + 0, 336, 0, 0, 369, 569, 551, 561, 552, 537, + 538, 539, 546, 348, 540, 541, 542, 512, 543, 513, + 544, 545, 810, 568, 519, 434, 385, 586, 585, 0, + 0, 879, 887, 0, 0, 0, 0, 0, 0, 0, + 0, 875, 0, 0, 0, 0, 763, 0, 0, 800, + 855, 854, 787, 797, 0, 0, 309, 229, 514, 634, + 516, 515, 788, 0, 789, 793, 796, 792, 790, 791, + 0, 870, 0, 0, 0, 0, 0, 0, 755, 767, + 0, 772, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 764, 765, 1596, 0, 0, + 0, 820, 0, 766, 0, 0, 815, 794, 798, 0, + 0, 0, 0, 299, 441, 460, 310, 429, 473, 315, + 437, 452, 305, 400, 426, 0, 0, 301, 458, 436, + 382, 359, 360, 300, 0, 420, 334, 350, 331, 398, + 795, 818, 822, 330, 893, 816, 468, 303, 0, 467, + 397, 454, 459, 383, 376, 0, 302, 456, 381, 375, + 363, 340, 894, 364, 365, 354, 409, 373, 410, 355, + 387, 386, 388, 0, 0, 0, 0, 0, 496, 497, + 0, 0, 645, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 627, 813, 0, 631, 0, 470, + 0, 0, 877, 0, 0, 0, 440, 0, 0, 366, + 0, 0, 0, 817, 0, 423, 403, 890, 0, 0, + 421, 371, 455, 411, 461, 442, 469, 417, 412, 294, + 443, 333, 384, 306, 308, 328, 335, 337, 341, 342, + 393, 394, 406, 428, 445, 446, 447, 332, 316, 422, + 317, 352, 318, 295, 324, 322, 325, 430, 326, 297, + 407, 451, 0, 347, 418, 379, 298, 378, 408, 450, + 449, 307, 477, 483, 484, 573, 0, 489, 660, 661, + 662, 498, 0, 413, 503, 504, 505, 507, 508, 509, + 510, 574, 591, 558, 528, 491, 582, 525, 529, 530, + 357, 594, 0, 0, 0, 482, 367, 368, 0, 339, + 338, 380, 416, 345, 291, 292, 655, 874, 399, 596, + 629, 630, 521, 0, 889, 869, 871, 872, 876, 880, + 881, 882, 883, 884, 886, 888, 892, 654, 0, 575, + 590, 658, 589, 651, 405, 0, 427, 587, 534, 0, + 579, 553, 0, 580, 549, 584, 0, 523, 0, 435, + 463, 475, 492, 495, 524, 609, 610, 611, 296, 494, + 613, 614, 615, 616, 617, 618, 619, 612, 891, 556, + 533, 559, 474, 536, 535, 0, 0, 570, 821, 571, + 572, 389, 390, 391, 392, 878, 597, 314, 493, 415, + 0, 557, 0, 0, 0, 0, 0, 0, 0, 0, + 562, 563, 560, 663, 0, 620, 621, 0, 0, 487, + 488, 344, 351, 506, 353, 313, 404, 346, 472, 361, + 0, 499, 564, 500, 623, 626, 624, 625, 396, 356, + 358, 431, 362, 372, 419, 471, 402, 424, 311, 462, + 433, 377, 550, 577, 900, 873, 899, 901, 902, 898, + 903, 904, 885, 776, 0, 828, 896, 895, 897, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 627, 811, 0, 631, 0, 470, 0, 0, 875, 0, - 0, 0, 440, 0, 0, 366, 0, 0, 0, 815, - 0, 423, 403, 888, 0, 0, 421, 371, 455, 411, - 461, 442, 469, 417, 412, 294, 443, 333, 384, 306, - 308, 328, 335, 337, 341, 342, 393, 394, 406, 428, - 445, 446, 447, 332, 316, 422, 317, 352, 318, 295, - 324, 322, 325, 430, 326, 297, 407, 451, 0, 347, - 418, 379, 298, 378, 408, 450, 449, 307, 477, 483, - 484, 573, 0, 489, 660, 661, 662, 498, 0, 413, - 503, 504, 505, 507, 508, 509, 510, 574, 591, 558, - 528, 491, 582, 525, 529, 530, 357, 594, 0, 0, - 0, 482, 367, 368, 0, 339, 338, 380, 416, 345, - 291, 292, 655, 872, 399, 596, 629, 630, 521, 0, - 887, 867, 869, 870, 874, 878, 879, 880, 881, 882, - 884, 886, 890, 654, 0, 575, 590, 658, 589, 651, - 405, 0, 427, 587, 534, 0, 579, 553, 0, 580, - 549, 584, 0, 523, 0, 435, 463, 475, 492, 495, - 524, 609, 610, 611, 296, 494, 613, 614, 615, 616, - 617, 618, 619, 612, 889, 556, 533, 559, 474, 536, - 535, 0, 0, 570, 819, 571, 572, 389, 390, 391, - 392, 876, 597, 314, 493, 415, 0, 557, 0, 0, - 0, 0, 0, 0, 0, 0, 562, 563, 560, 663, - 0, 620, 621, 0, 0, 487, 488, 344, 351, 506, - 353, 313, 404, 346, 472, 361, 0, 499, 564, 500, - 623, 626, 624, 625, 396, 356, 358, 431, 362, 372, - 419, 471, 402, 424, 311, 462, 433, 377, 550, 577, - 898, 871, 897, 899, 900, 896, 901, 902, 883, 774, - 0, 826, 894, 893, 895, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 605, 604, 603, 602, - 601, 600, 599, 598, 0, 0, 547, 448, 323, 285, - 319, 320, 327, 652, 649, 453, 653, 781, 293, 527, - 370, 0, 414, 343, 592, 593, 0, 644, 860, 833, - 834, 835, 771, 836, 830, 831, 772, 832, 861, 824, - 857, 858, 800, 827, 837, 856, 838, 859, 862, 863, - 903, 904, 844, 828, 257, 905, 841, 864, 855, 854, - 839, 825, 865, 866, 807, 802, 842, 843, 829, 848, - 849, 850, 773, 821, 822, 823, 845, 846, 803, 804, - 805, 806, 0, 0, 0, 478, 479, 480, 502, 0, - 464, 526, 650, 0, 0, 0, 0, 0, 0, 0, - 576, 588, 622, 0, 632, 633, 635, 637, 851, 639, - 438, 439, 0, 847, 642, 643, 640, 374, 425, 444, - 432, 817, 656, 517, 518, 657, 628, 0, 766, 0, + 605, 604, 603, 602, 601, 600, 599, 598, 0, 0, + 547, 448, 323, 285, 319, 320, 327, 652, 649, 453, + 653, 783, 293, 527, 370, 0, 414, 343, 592, 593, + 0, 644, 862, 835, 836, 837, 773, 838, 832, 833, + 774, 834, 863, 826, 859, 860, 802, 829, 839, 858, + 840, 861, 864, 865, 905, 906, 846, 830, 257, 907, + 843, 866, 857, 856, 841, 827, 867, 868, 809, 804, + 844, 845, 831, 850, 851, 852, 775, 823, 824, 825, + 847, 848, 805, 806, 807, 808, 0, 0, 0, 478, + 479, 480, 502, 0, 464, 526, 650, 0, 0, 0, + 0, 0, 0, 0, 576, 588, 622, 0, 632, 633, + 635, 637, 853, 639, 438, 439, 0, 849, 642, 643, + 640, 374, 425, 444, 432, 0, 656, 517, 518, 657, + 628, 819, 768, 0, 2279, 0, 0, 0, 0, 0, 401, 0, 0, 532, 565, 554, 638, 520, 0, 0, - 0, 0, 0, 0, 769, 0, 0, 0, 336, 0, + 0, 0, 0, 0, 771, 0, 0, 0, 336, 0, 0, 369, 569, 551, 561, 552, 537, 538, 539, 546, - 348, 540, 541, 542, 512, 543, 513, 544, 545, 808, - 568, 519, 434, 385, 586, 585, 0, 0, 877, 885, - 0, 0, 0, 0, 0, 0, 0, 0, 873, 0, - 0, 0, 0, 761, 0, 0, 798, 853, 852, 785, - 795, 0, 0, 309, 229, 514, 634, 516, 515, 786, - 0, 787, 791, 794, 790, 788, 789, 0, 868, 0, - 0, 0, 0, 0, 0, 753, 765, 0, 770, 0, + 348, 540, 541, 542, 512, 543, 513, 544, 545, 810, + 568, 519, 434, 385, 586, 585, 0, 0, 879, 887, + 0, 0, 0, 0, 0, 0, 0, 0, 875, 0, + 0, 0, 0, 763, 0, 0, 800, 855, 854, 787, + 797, 0, 0, 309, 229, 514, 634, 516, 515, 788, + 0, 789, 793, 796, 792, 790, 791, 0, 870, 0, + 0, 0, 0, 0, 0, 755, 767, 0, 772, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 762, 763, 0, 0, 0, 0, 818, 0, - 764, 0, 0, 813, 792, 796, 0, 0, 0, 0, + 0, 0, 764, 765, 0, 0, 0, 0, 820, 0, + 766, 0, 0, 815, 794, 798, 0, 0, 0, 0, 299, 441, 460, 310, 429, 473, 315, 437, 452, 305, 400, 426, 0, 0, 301, 458, 436, 382, 359, 360, - 300, 0, 420, 334, 350, 331, 398, 793, 816, 820, - 330, 891, 814, 468, 303, 0, 467, 397, 454, 459, - 383, 376, 0, 302, 456, 381, 375, 363, 340, 892, + 300, 0, 420, 334, 350, 331, 398, 795, 818, 822, + 330, 893, 816, 468, 303, 0, 467, 397, 454, 459, + 383, 376, 0, 302, 456, 381, 375, 363, 340, 894, 364, 365, 354, 409, 373, 410, 355, 387, 386, 388, 0, 0, 0, 0, 0, 496, 497, 0, 0, 645, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 627, 811, 0, 631, 0, 470, 0, 0, 875, + 0, 627, 813, 0, 631, 0, 470, 0, 0, 877, 0, 0, 0, 440, 0, 0, 366, 0, 0, 0, - 815, 0, 423, 403, 888, 0, 0, 421, 371, 455, + 817, 0, 423, 403, 890, 0, 0, 421, 371, 455, 411, 461, 442, 469, 417, 412, 294, 443, 333, 384, 306, 308, 328, 335, 337, 341, 342, 393, 394, 406, 428, 445, 446, 447, 332, 316, 422, 317, 352, 318, @@ -2931,61 +2895,61 @@ var yyAct = [...]int{ 413, 503, 504, 505, 507, 508, 509, 510, 574, 591, 558, 528, 491, 582, 525, 529, 530, 357, 594, 0, 0, 0, 482, 367, 368, 0, 339, 338, 380, 416, - 345, 291, 292, 655, 872, 399, 596, 629, 630, 521, - 0, 887, 867, 869, 870, 874, 878, 879, 880, 881, - 882, 884, 886, 890, 654, 0, 575, 590, 658, 589, + 345, 291, 292, 655, 874, 399, 596, 629, 630, 521, + 0, 889, 869, 871, 872, 876, 880, 881, 882, 883, + 884, 886, 888, 892, 654, 0, 575, 590, 658, 589, 651, 405, 0, 427, 587, 534, 0, 579, 553, 0, 580, 549, 584, 0, 523, 0, 435, 463, 475, 492, 495, 524, 609, 610, 611, 296, 494, 613, 614, 615, - 616, 617, 618, 619, 612, 889, 556, 533, 559, 474, - 536, 535, 0, 0, 570, 819, 571, 572, 389, 390, - 391, 392, 876, 597, 314, 493, 415, 0, 557, 0, + 616, 617, 618, 619, 612, 891, 556, 533, 559, 474, + 536, 535, 0, 0, 570, 821, 571, 572, 389, 390, + 391, 392, 878, 597, 314, 493, 415, 0, 557, 0, 0, 0, 0, 0, 0, 0, 0, 562, 563, 560, 663, 0, 620, 621, 0, 0, 487, 488, 344, 351, 506, 353, 313, 404, 346, 472, 361, 0, 499, 564, 500, 623, 626, 624, 625, 396, 356, 358, 431, 362, 372, 419, 471, 402, 424, 311, 462, 433, 377, 550, - 577, 898, 871, 897, 899, 900, 896, 901, 902, 883, - 774, 0, 826, 894, 893, 895, 0, 0, 0, 0, + 577, 900, 873, 899, 901, 902, 898, 903, 904, 885, + 776, 0, 828, 896, 895, 897, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 605, 604, 603, 602, 601, 600, 599, 598, 0, 0, 547, 448, 323, - 285, 319, 320, 327, 652, 649, 453, 653, 781, 293, - 527, 370, 0, 414, 343, 592, 593, 0, 644, 860, - 833, 834, 835, 771, 836, 830, 831, 772, 832, 861, - 824, 857, 858, 800, 827, 837, 856, 838, 859, 862, - 863, 903, 904, 844, 828, 257, 905, 841, 864, 855, - 854, 839, 825, 865, 866, 807, 802, 842, 843, 829, - 848, 849, 850, 773, 821, 822, 823, 845, 846, 803, - 804, 805, 806, 0, 0, 0, 478, 479, 480, 502, + 285, 319, 320, 327, 652, 649, 453, 653, 783, 293, + 527, 370, 0, 414, 343, 592, 593, 0, 644, 862, + 835, 836, 837, 773, 838, 832, 833, 774, 834, 863, + 826, 859, 860, 802, 829, 839, 858, 840, 861, 864, + 865, 905, 906, 846, 830, 257, 907, 843, 866, 857, + 856, 841, 827, 867, 868, 809, 804, 844, 845, 831, + 850, 851, 852, 775, 823, 824, 825, 847, 848, 805, + 806, 807, 808, 0, 0, 0, 478, 479, 480, 502, 0, 464, 526, 650, 0, 0, 0, 0, 0, 0, - 0, 576, 588, 622, 0, 632, 633, 635, 637, 851, - 639, 438, 439, 0, 847, 642, 643, 640, 374, 425, - 444, 432, 817, 656, 517, 518, 657, 628, 0, 766, + 0, 576, 588, 622, 0, 632, 633, 635, 637, 853, + 639, 438, 439, 0, 849, 642, 643, 640, 374, 425, + 444, 432, 819, 656, 517, 518, 657, 628, 0, 768, 0, 401, 0, 0, 532, 565, 554, 638, 520, 0, - 0, 0, 0, 0, 0, 769, 0, 0, 0, 336, + 0, 0, 0, 0, 0, 771, 0, 0, 0, 336, 0, 0, 369, 569, 551, 561, 552, 537, 538, 539, 546, 348, 540, 541, 542, 512, 543, 513, 544, 545, - 808, 568, 519, 434, 385, 586, 585, 0, 0, 877, - 885, 0, 0, 0, 0, 0, 0, 0, 0, 873, - 0, 0, 0, 0, 761, 0, 0, 798, 853, 852, - 785, 795, 0, 0, 309, 229, 514, 634, 516, 515, - 786, 0, 787, 791, 794, 790, 788, 789, 0, 868, - 0, 0, 0, 0, 0, 0, 753, 765, 0, 770, + 810, 568, 519, 434, 385, 586, 585, 0, 0, 879, + 887, 0, 0, 0, 0, 0, 0, 0, 0, 875, + 0, 0, 0, 0, 763, 0, 0, 800, 855, 854, + 787, 797, 0, 0, 309, 229, 514, 634, 516, 515, + 788, 0, 789, 793, 796, 792, 790, 791, 0, 870, + 0, 0, 0, 0, 0, 0, 755, 767, 0, 772, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 762, 763, 0, 0, 0, 0, 818, - 0, 764, 0, 0, 813, 792, 796, 0, 0, 0, + 0, 0, 0, 764, 765, 1877, 0, 0, 0, 820, + 0, 766, 0, 0, 815, 794, 798, 0, 0, 0, 0, 299, 441, 460, 310, 429, 473, 315, 437, 452, 305, 400, 426, 0, 0, 301, 458, 436, 382, 359, - 360, 300, 0, 420, 334, 350, 331, 398, 793, 816, - 820, 330, 891, 814, 468, 303, 0, 467, 397, 454, + 360, 300, 0, 420, 334, 350, 331, 398, 795, 818, + 822, 330, 893, 816, 468, 303, 0, 467, 397, 454, 459, 383, 376, 0, 302, 456, 381, 375, 363, 340, - 892, 364, 365, 354, 409, 373, 410, 355, 387, 386, + 894, 364, 365, 354, 409, 373, 410, 355, 387, 386, 388, 0, 0, 0, 0, 0, 496, 497, 0, 0, 645, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 627, 811, 0, 631, 0, 470, 0, 0, - 875, 0, 0, 0, 440, 0, 0, 366, 0, 0, - 0, 815, 0, 423, 403, 888, 0, 0, 421, 371, + 0, 0, 627, 813, 0, 631, 0, 470, 0, 0, + 877, 0, 0, 0, 440, 0, 0, 366, 0, 0, + 0, 817, 0, 423, 403, 890, 0, 0, 421, 371, 455, 411, 461, 442, 469, 417, 412, 294, 443, 333, 384, 306, 308, 328, 335, 337, 341, 342, 393, 394, 406, 428, 445, 446, 447, 332, 316, 422, 317, 352, @@ -2995,61 +2959,61 @@ var yyAct = [...]int{ 0, 413, 503, 504, 505, 507, 508, 509, 510, 574, 591, 558, 528, 491, 582, 525, 529, 530, 357, 594, 0, 0, 0, 482, 367, 368, 0, 339, 338, 380, - 416, 345, 291, 292, 655, 872, 399, 596, 629, 630, - 521, 0, 887, 867, 869, 870, 874, 878, 879, 880, - 881, 882, 884, 886, 890, 654, 0, 575, 590, 658, + 416, 345, 291, 292, 655, 874, 399, 596, 629, 630, + 521, 0, 889, 869, 871, 872, 876, 880, 881, 882, + 883, 884, 886, 888, 892, 654, 0, 575, 590, 658, 589, 651, 405, 0, 427, 587, 534, 0, 579, 553, 0, 580, 549, 584, 0, 523, 0, 435, 463, 475, 492, 495, 524, 609, 610, 611, 296, 494, 613, 614, - 615, 616, 617, 618, 619, 612, 889, 556, 533, 559, - 474, 536, 535, 0, 0, 570, 819, 571, 572, 389, - 390, 391, 392, 876, 597, 314, 493, 415, 0, 557, + 615, 616, 617, 618, 619, 612, 891, 556, 533, 559, + 474, 536, 535, 0, 0, 570, 821, 571, 572, 389, + 390, 391, 392, 878, 597, 314, 493, 415, 0, 557, 0, 0, 0, 0, 0, 0, 0, 0, 562, 563, 560, 663, 0, 620, 621, 0, 0, 487, 488, 344, 351, 506, 353, 313, 404, 346, 472, 361, 0, 499, 564, 500, 623, 626, 624, 625, 396, 356, 358, 431, 362, 372, 419, 471, 402, 424, 311, 462, 433, 377, - 550, 577, 898, 871, 897, 899, 900, 896, 901, 902, - 883, 774, 0, 826, 894, 893, 895, 0, 0, 0, + 550, 577, 900, 873, 899, 901, 902, 898, 903, 904, + 885, 776, 0, 828, 896, 895, 897, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 605, 604, 603, 602, 601, 600, 599, 598, 0, 0, 547, 448, - 323, 285, 319, 320, 327, 652, 649, 453, 653, 781, + 323, 285, 319, 320, 327, 652, 649, 453, 653, 783, 293, 527, 370, 0, 414, 343, 592, 593, 0, 644, - 860, 833, 834, 835, 771, 836, 830, 831, 772, 832, - 861, 824, 857, 858, 800, 827, 837, 856, 838, 859, - 862, 863, 903, 904, 844, 828, 257, 905, 841, 864, - 855, 854, 839, 825, 865, 866, 807, 802, 842, 843, - 829, 848, 849, 850, 773, 821, 822, 823, 845, 846, - 803, 804, 805, 806, 0, 0, 0, 478, 479, 480, + 862, 835, 836, 837, 773, 838, 832, 833, 774, 834, + 863, 826, 859, 860, 802, 829, 839, 858, 840, 861, + 864, 865, 905, 906, 846, 830, 257, 907, 843, 866, + 857, 856, 841, 827, 867, 868, 809, 804, 844, 845, + 831, 850, 851, 852, 775, 823, 824, 825, 847, 848, + 805, 806, 807, 808, 0, 0, 0, 478, 479, 480, 502, 0, 464, 526, 650, 0, 0, 0, 0, 0, 0, 0, 576, 588, 622, 0, 632, 633, 635, 637, - 851, 639, 438, 439, 0, 3564, 642, 3565, 3566, 374, - 425, 444, 432, 817, 656, 517, 518, 657, 628, 0, - 766, 0, 401, 0, 0, 532, 565, 554, 638, 520, - 0, 0, 0, 0, 0, 0, 769, 0, 0, 0, + 853, 639, 438, 439, 0, 849, 642, 643, 640, 374, + 425, 444, 432, 819, 656, 517, 518, 657, 628, 0, + 768, 0, 401, 0, 0, 532, 565, 554, 638, 520, + 0, 0, 0, 0, 0, 0, 771, 0, 0, 0, 336, 0, 0, 369, 569, 551, 561, 552, 537, 538, 539, 546, 348, 540, 541, 542, 512, 543, 513, 544, - 545, 808, 568, 519, 434, 385, 586, 585, 0, 0, - 877, 885, 0, 0, 0, 0, 0, 0, 0, 0, - 873, 0, 0, 0, 0, 761, 0, 0, 798, 853, - 852, 785, 795, 0, 0, 309, 229, 514, 634, 516, - 515, 2747, 0, 2748, 791, 794, 790, 788, 789, 0, - 868, 0, 0, 0, 0, 0, 0, 753, 765, 0, - 770, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 762, 763, 0, 0, 0, 0, - 818, 0, 764, 0, 0, 813, 792, 796, 0, 0, + 545, 810, 568, 519, 434, 385, 586, 585, 0, 0, + 879, 887, 0, 0, 0, 0, 0, 0, 0, 0, + 875, 0, 0, 0, 0, 763, 0, 0, 800, 855, + 854, 787, 797, 0, 0, 309, 229, 514, 634, 516, + 515, 788, 0, 789, 793, 796, 792, 790, 791, 0, + 870, 0, 0, 0, 0, 0, 0, 755, 767, 0, + 772, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 764, 765, 0, 0, 0, 0, + 820, 0, 766, 0, 0, 815, 794, 798, 0, 0, 0, 0, 299, 441, 460, 310, 429, 473, 315, 437, 452, 305, 400, 426, 0, 0, 301, 458, 436, 382, - 359, 360, 300, 0, 420, 334, 350, 331, 398, 793, - 816, 820, 330, 891, 814, 468, 303, 0, 467, 397, + 359, 360, 300, 0, 420, 334, 350, 331, 398, 795, + 818, 822, 330, 893, 816, 468, 303, 0, 467, 397, 454, 459, 383, 376, 0, 302, 456, 381, 375, 363, - 340, 892, 364, 365, 354, 409, 373, 410, 355, 387, + 340, 894, 364, 365, 354, 409, 373, 410, 355, 387, 386, 388, 0, 0, 0, 0, 0, 496, 497, 0, 0, 645, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 627, 811, 0, 631, 0, 470, 0, - 0, 875, 0, 0, 0, 440, 0, 0, 366, 0, - 0, 0, 815, 0, 423, 403, 888, 0, 0, 421, + 0, 0, 0, 627, 813, 0, 631, 0, 470, 0, + 0, 877, 0, 0, 0, 440, 0, 0, 366, 0, + 0, 0, 817, 0, 423, 403, 890, 0, 0, 421, 371, 455, 411, 461, 442, 469, 417, 412, 294, 443, 333, 384, 306, 308, 328, 335, 337, 341, 342, 393, 394, 406, 428, 445, 446, 447, 332, 316, 422, 317, @@ -3059,125 +3023,125 @@ var yyAct = [...]int{ 498, 0, 413, 503, 504, 505, 507, 508, 509, 510, 574, 591, 558, 528, 491, 582, 525, 529, 530, 357, 594, 0, 0, 0, 482, 367, 368, 0, 339, 338, - 380, 416, 345, 291, 292, 655, 872, 399, 596, 629, - 630, 521, 0, 887, 867, 869, 870, 874, 878, 879, - 880, 881, 882, 884, 886, 890, 654, 0, 575, 590, + 380, 416, 345, 291, 292, 655, 874, 399, 596, 629, + 630, 521, 0, 889, 869, 871, 872, 876, 880, 881, + 882, 883, 884, 886, 888, 892, 654, 0, 575, 590, 658, 589, 651, 405, 0, 427, 587, 534, 0, 579, 553, 0, 580, 549, 584, 0, 523, 0, 435, 463, 475, 492, 495, 524, 609, 610, 611, 296, 494, 613, - 614, 615, 616, 617, 618, 619, 612, 889, 556, 533, - 559, 474, 536, 535, 0, 0, 570, 819, 571, 572, - 389, 390, 391, 392, 876, 597, 314, 493, 415, 0, + 614, 615, 616, 617, 618, 619, 612, 891, 556, 533, + 559, 474, 536, 535, 0, 0, 570, 821, 571, 572, + 389, 390, 391, 392, 878, 597, 314, 493, 415, 0, 557, 0, 0, 0, 0, 0, 0, 0, 0, 562, 563, 560, 663, 0, 620, 621, 0, 0, 487, 488, 344, 351, 506, 353, 313, 404, 346, 472, 361, 0, 499, 564, 500, 623, 626, 624, 625, 396, 356, 358, 431, 362, 372, 419, 471, 402, 424, 311, 462, 433, - 377, 550, 577, 898, 871, 897, 899, 900, 896, 901, - 902, 883, 774, 0, 826, 894, 893, 895, 0, 0, + 377, 550, 577, 900, 873, 899, 901, 902, 898, 903, + 904, 885, 776, 0, 828, 896, 895, 897, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 605, 604, 603, 602, 601, 600, 599, 598, 0, 0, 547, 448, 323, 285, 319, 320, 327, 652, 649, 453, 653, - 781, 293, 527, 370, 0, 414, 343, 592, 593, 0, - 644, 860, 833, 834, 835, 771, 836, 830, 831, 772, - 832, 861, 824, 857, 858, 800, 827, 837, 856, 838, - 859, 862, 863, 903, 904, 844, 828, 257, 905, 841, - 864, 855, 854, 839, 825, 865, 866, 807, 802, 842, - 843, 829, 848, 849, 850, 773, 821, 822, 823, 845, - 846, 803, 804, 805, 806, 0, 0, 0, 478, 479, + 783, 293, 527, 370, 0, 414, 343, 592, 593, 0, + 644, 862, 835, 836, 837, 773, 838, 832, 833, 774, + 834, 863, 826, 859, 860, 802, 829, 839, 858, 840, + 861, 864, 865, 905, 906, 846, 830, 257, 907, 843, + 866, 857, 856, 841, 827, 867, 868, 809, 804, 844, + 845, 831, 850, 851, 852, 775, 823, 824, 825, 847, + 848, 805, 806, 807, 808, 0, 0, 0, 478, 479, 480, 502, 0, 464, 526, 650, 0, 0, 0, 0, 0, 0, 0, 576, 588, 622, 0, 632, 633, 635, - 637, 851, 639, 438, 439, 0, 847, 642, 643, 640, - 374, 425, 444, 432, 817, 656, 517, 518, 657, 628, - 0, 766, 0, 401, 0, 0, 532, 565, 554, 638, - 520, 0, 0, 1734, 0, 0, 0, 769, 0, 0, + 637, 853, 639, 438, 439, 0, 849, 642, 643, 640, + 374, 425, 444, 432, 819, 656, 517, 518, 657, 628, + 0, 768, 0, 401, 0, 0, 532, 565, 554, 638, + 520, 0, 0, 0, 0, 0, 0, 771, 0, 0, 0, 336, 0, 0, 369, 569, 551, 561, 552, 537, 538, 539, 546, 348, 540, 541, 542, 512, 543, 513, - 544, 545, 808, 568, 519, 434, 385, 586, 585, 0, - 0, 877, 885, 0, 0, 0, 0, 0, 0, 0, - 0, 873, 0, 0, 0, 0, 761, 0, 0, 798, - 853, 852, 785, 795, 0, 0, 309, 229, 514, 634, - 516, 515, 786, 0, 787, 791, 794, 790, 788, 789, - 0, 868, 0, 0, 0, 0, 0, 0, 0, 765, - 0, 770, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 762, 763, 0, 0, 0, - 0, 818, 0, 764, 0, 0, 813, 792, 796, 0, + 544, 545, 810, 568, 519, 434, 385, 586, 585, 0, + 0, 879, 887, 0, 0, 0, 0, 0, 0, 0, + 0, 875, 0, 0, 0, 0, 763, 0, 0, 800, + 855, 854, 787, 797, 0, 0, 309, 229, 514, 634, + 516, 515, 788, 0, 789, 793, 796, 792, 790, 791, + 0, 870, 0, 0, 0, 0, 0, 0, 755, 767, + 0, 772, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 764, 765, 0, 0, 0, + 0, 820, 0, 766, 0, 0, 815, 794, 798, 0, 0, 0, 0, 299, 441, 460, 310, 429, 473, 315, 437, 452, 305, 400, 426, 0, 0, 301, 458, 436, 382, 359, 360, 300, 0, 420, 334, 350, 331, 398, - 793, 816, 820, 330, 891, 814, 468, 303, 0, 467, + 795, 818, 822, 330, 893, 816, 468, 303, 0, 467, 397, 454, 459, 383, 376, 0, 302, 456, 381, 375, - 363, 340, 892, 364, 365, 354, 409, 373, 410, 355, + 363, 340, 894, 364, 365, 354, 409, 373, 410, 355, 387, 386, 388, 0, 0, 0, 0, 0, 496, 497, 0, 0, 645, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 627, 811, 0, 631, 0, 470, - 0, 0, 875, 0, 0, 0, 440, 0, 0, 366, - 0, 0, 0, 815, 0, 423, 403, 888, 0, 0, + 0, 0, 0, 0, 627, 813, 0, 631, 0, 470, + 0, 0, 877, 0, 0, 0, 440, 0, 0, 366, + 0, 0, 0, 817, 0, 423, 403, 890, 0, 0, 421, 371, 455, 411, 461, 442, 469, 417, 412, 294, 443, 333, 384, 306, 308, 328, 335, 337, 341, 342, 393, 394, 406, 428, 445, 446, 447, 332, 316, 422, 317, 352, 318, 295, 324, 322, 325, 430, 326, 297, 407, 451, 0, 347, 418, 379, 298, 378, 408, 450, - 449, 307, 477, 1735, 1736, 573, 0, 489, 660, 661, + 449, 307, 477, 483, 484, 573, 0, 489, 660, 661, 662, 498, 0, 413, 503, 504, 505, 507, 508, 509, 510, 574, 591, 558, 528, 491, 582, 525, 529, 530, 357, 594, 0, 0, 0, 482, 367, 368, 0, 339, - 338, 380, 416, 345, 291, 292, 655, 872, 399, 596, - 629, 630, 521, 0, 887, 867, 869, 870, 874, 878, - 879, 880, 881, 882, 884, 886, 890, 654, 0, 575, + 338, 380, 416, 345, 291, 292, 655, 874, 399, 596, + 629, 630, 521, 0, 889, 869, 871, 872, 876, 880, + 881, 882, 883, 884, 886, 888, 892, 654, 0, 575, 590, 658, 589, 651, 405, 0, 427, 587, 534, 0, 579, 553, 0, 580, 549, 584, 0, 523, 0, 435, 463, 475, 492, 495, 524, 609, 610, 611, 296, 494, - 613, 614, 615, 616, 617, 618, 619, 612, 889, 556, - 533, 559, 474, 536, 535, 0, 0, 570, 819, 571, - 572, 389, 390, 391, 392, 876, 597, 314, 493, 415, + 613, 614, 615, 616, 617, 618, 619, 612, 891, 556, + 533, 559, 474, 536, 535, 0, 0, 570, 821, 571, + 572, 389, 390, 391, 392, 878, 597, 314, 493, 415, 0, 557, 0, 0, 0, 0, 0, 0, 0, 0, 562, 563, 560, 663, 0, 620, 621, 0, 0, 487, 488, 344, 351, 506, 353, 313, 404, 346, 472, 361, 0, 499, 564, 500, 623, 626, 624, 625, 396, 356, 358, 431, 362, 372, 419, 471, 402, 424, 311, 462, - 433, 377, 550, 577, 898, 871, 897, 899, 900, 896, - 901, 902, 883, 774, 0, 826, 894, 893, 895, 0, + 433, 377, 550, 577, 900, 873, 899, 901, 902, 898, + 903, 904, 885, 776, 0, 828, 896, 895, 897, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 605, 604, 603, 602, 601, 600, 599, 598, 0, 0, 547, 448, 323, 285, 319, 320, 327, 652, 649, 453, - 653, 781, 293, 527, 370, 0, 414, 343, 592, 593, - 0, 644, 860, 833, 834, 835, 771, 836, 830, 831, - 772, 832, 861, 824, 857, 858, 800, 827, 837, 856, - 838, 859, 862, 863, 903, 904, 844, 828, 257, 905, - 841, 864, 855, 854, 839, 825, 865, 866, 807, 802, - 842, 843, 829, 848, 849, 850, 773, 821, 822, 823, - 845, 846, 803, 804, 805, 806, 0, 0, 0, 478, + 653, 783, 293, 527, 370, 0, 414, 343, 592, 593, + 0, 644, 862, 835, 836, 837, 773, 838, 832, 833, + 774, 834, 863, 826, 859, 860, 802, 829, 839, 858, + 840, 861, 864, 865, 905, 906, 846, 830, 257, 907, + 843, 866, 857, 856, 841, 827, 867, 868, 809, 804, + 844, 845, 831, 850, 851, 852, 775, 823, 824, 825, + 847, 848, 805, 806, 807, 808, 0, 0, 0, 478, 479, 480, 502, 0, 464, 526, 650, 0, 0, 0, 0, 0, 0, 0, 576, 588, 622, 0, 632, 633, - 635, 637, 851, 639, 438, 439, 0, 847, 642, 643, - 640, 374, 425, 444, 432, 817, 656, 517, 518, 657, - 628, 0, 766, 0, 401, 0, 0, 532, 565, 554, - 638, 520, 0, 0, 0, 0, 0, 0, 769, 0, + 635, 637, 853, 639, 438, 439, 0, 3580, 642, 3581, + 3582, 374, 425, 444, 432, 819, 656, 517, 518, 657, + 628, 0, 768, 0, 401, 0, 0, 532, 565, 554, + 638, 520, 0, 0, 0, 0, 0, 0, 771, 0, 0, 0, 336, 0, 0, 369, 569, 551, 561, 552, 537, 538, 539, 546, 348, 540, 541, 542, 512, 543, - 513, 544, 545, 808, 568, 519, 434, 385, 586, 585, - 0, 0, 877, 885, 0, 0, 0, 0, 0, 0, - 0, 0, 873, 0, 0, 0, 0, 761, 0, 0, - 798, 853, 852, 785, 795, 0, 0, 309, 229, 514, - 634, 516, 515, 786, 0, 787, 791, 794, 790, 788, - 789, 0, 868, 0, 0, 0, 0, 0, 0, 0, - 765, 0, 770, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 762, 763, 0, 0, - 0, 0, 818, 0, 764, 0, 0, 813, 792, 796, + 513, 544, 545, 810, 568, 519, 434, 385, 586, 585, + 0, 0, 879, 887, 0, 0, 0, 0, 0, 0, + 0, 0, 875, 0, 0, 0, 0, 763, 0, 0, + 800, 855, 854, 787, 797, 0, 0, 309, 229, 514, + 634, 516, 515, 2760, 0, 2761, 793, 796, 792, 790, + 791, 0, 870, 0, 0, 0, 0, 0, 0, 755, + 767, 0, 772, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 764, 765, 0, 0, + 0, 0, 820, 0, 766, 0, 0, 815, 794, 798, 0, 0, 0, 0, 299, 441, 460, 310, 429, 473, 315, 437, 452, 305, 400, 426, 0, 0, 301, 458, 436, 382, 359, 360, 300, 0, 420, 334, 350, 331, - 398, 793, 816, 820, 330, 891, 814, 468, 303, 0, + 398, 795, 818, 822, 330, 893, 816, 468, 303, 0, 467, 397, 454, 459, 383, 376, 0, 302, 456, 381, - 375, 363, 340, 892, 364, 365, 354, 409, 373, 410, + 375, 363, 340, 894, 364, 365, 354, 409, 373, 410, 355, 387, 386, 388, 0, 0, 0, 0, 0, 496, 497, 0, 0, 645, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 627, 811, 0, 631, 0, - 470, 0, 0, 875, 0, 0, 0, 440, 0, 0, - 366, 0, 0, 0, 815, 0, 423, 403, 888, 0, + 0, 0, 0, 0, 0, 627, 813, 0, 631, 0, + 470, 0, 0, 877, 0, 0, 0, 440, 0, 0, + 366, 0, 0, 0, 817, 0, 423, 403, 890, 0, 0, 421, 371, 455, 411, 461, 442, 469, 417, 412, 294, 443, 333, 384, 306, 308, 328, 335, 337, 341, 342, 393, 394, 406, 428, 445, 446, 447, 332, 316, @@ -3187,112 +3151,305 @@ var yyAct = [...]int{ 661, 662, 498, 0, 413, 503, 504, 505, 507, 508, 509, 510, 574, 591, 558, 528, 491, 582, 525, 529, 530, 357, 594, 0, 0, 0, 482, 367, 368, 0, - 339, 338, 380, 416, 345, 291, 292, 655, 872, 399, - 596, 629, 630, 521, 0, 887, 867, 869, 870, 874, - 878, 879, 880, 881, 882, 884, 886, 890, 654, 0, + 339, 338, 380, 416, 345, 291, 292, 655, 874, 399, + 596, 629, 630, 521, 0, 889, 869, 871, 872, 876, + 880, 881, 882, 883, 884, 886, 888, 892, 654, 0, 575, 590, 658, 589, 651, 405, 0, 427, 587, 534, 0, 579, 553, 0, 580, 549, 584, 0, 523, 0, 435, 463, 475, 492, 495, 524, 609, 610, 611, 296, - 494, 613, 614, 615, 616, 617, 618, 619, 612, 889, - 556, 533, 559, 474, 536, 535, 0, 0, 570, 819, - 571, 572, 389, 390, 391, 392, 876, 597, 314, 493, + 494, 613, 614, 615, 616, 617, 618, 619, 612, 891, + 556, 533, 559, 474, 536, 535, 0, 0, 570, 821, + 571, 572, 389, 390, 391, 392, 878, 597, 314, 493, 415, 0, 557, 0, 0, 0, 0, 0, 0, 0, 0, 562, 563, 560, 663, 0, 620, 621, 0, 0, 487, 488, 344, 351, 506, 353, 313, 404, 346, 472, 361, 0, 499, 564, 500, 623, 626, 624, 625, 396, 356, 358, 431, 362, 372, 419, 471, 402, 424, 311, - 462, 433, 377, 550, 577, 898, 871, 897, 899, 900, - 896, 901, 902, 883, 774, 0, 826, 894, 893, 895, + 462, 433, 377, 550, 577, 900, 873, 899, 901, 902, + 898, 903, 904, 885, 776, 0, 828, 896, 895, 897, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 605, 604, 603, 602, 601, 600, 599, 598, 0, 0, 547, 448, 323, 285, 319, 320, 327, 652, 649, - 453, 653, 781, 293, 527, 370, 0, 414, 343, 592, - 593, 0, 644, 860, 833, 834, 835, 771, 836, 830, - 831, 772, 832, 861, 824, 857, 858, 800, 827, 837, - 856, 838, 859, 862, 863, 903, 904, 844, 828, 257, - 905, 841, 864, 855, 854, 839, 825, 865, 866, 807, - 802, 842, 843, 829, 848, 849, 850, 773, 821, 822, - 823, 845, 846, 803, 804, 805, 806, 0, 0, 0, + 453, 653, 783, 293, 527, 370, 0, 414, 343, 592, + 593, 0, 644, 862, 835, 836, 837, 773, 838, 832, + 833, 774, 834, 863, 826, 859, 860, 802, 829, 839, + 858, 840, 861, 864, 865, 905, 906, 846, 830, 257, + 907, 843, 866, 857, 856, 841, 827, 867, 868, 809, + 804, 844, 845, 831, 850, 851, 852, 775, 823, 824, + 825, 847, 848, 805, 806, 807, 808, 0, 0, 0, 478, 479, 480, 502, 0, 464, 526, 650, 0, 0, 0, 0, 0, 0, 0, 576, 588, 622, 0, 632, - 633, 635, 637, 851, 639, 438, 439, 0, 847, 642, - 643, 640, 374, 425, 444, 432, 817, 656, 517, 518, - 657, 628, 0, 766, 0, 401, 0, 0, 532, 565, - 554, 638, 520, 0, 0, 0, 0, 0, 0, 769, + 633, 635, 637, 853, 639, 438, 439, 0, 849, 642, + 643, 640, 374, 425, 444, 432, 819, 656, 517, 518, + 657, 628, 0, 768, 0, 401, 0, 0, 532, 565, + 554, 638, 520, 0, 0, 1742, 0, 0, 0, 771, 0, 0, 0, 336, 0, 0, 369, 569, 551, 561, 552, 537, 538, 539, 546, 348, 540, 541, 542, 512, - 543, 513, 544, 545, 808, 568, 519, 434, 385, 586, - 585, 0, 0, 877, 885, 0, 0, 0, 0, 0, - 0, 0, 0, 873, 0, 0, 0, 0, 0, 0, - 0, 798, 853, 852, 785, 795, 0, 0, 309, 229, - 514, 634, 516, 515, 786, 0, 787, 791, 794, 790, - 788, 789, 0, 868, 0, 0, 0, 0, 0, 0, - 753, 765, 0, 770, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 762, 763, 0, - 0, 0, 0, 818, 0, 764, 0, 0, 813, 792, - 796, 0, 0, 0, 0, 299, 441, 460, 310, 429, + 543, 513, 544, 545, 810, 568, 519, 434, 385, 586, + 585, 0, 0, 879, 887, 0, 0, 0, 0, 0, + 0, 0, 0, 875, 0, 0, 0, 0, 763, 0, + 0, 800, 855, 854, 787, 797, 0, 0, 309, 229, + 514, 634, 516, 515, 788, 0, 789, 793, 796, 792, + 790, 791, 0, 870, 0, 0, 0, 0, 0, 0, + 0, 767, 0, 772, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 764, 765, 0, + 0, 0, 0, 820, 0, 766, 0, 0, 815, 794, + 798, 0, 0, 0, 0, 299, 441, 460, 310, 429, 473, 315, 437, 452, 305, 400, 426, 0, 0, 301, 458, 436, 382, 359, 360, 300, 0, 420, 334, 350, - 331, 398, 793, 816, 820, 330, 891, 814, 468, 303, + 331, 398, 795, 818, 822, 330, 893, 816, 468, 303, 0, 467, 397, 454, 459, 383, 376, 0, 302, 456, - 381, 375, 363, 340, 892, 364, 365, 354, 409, 373, + 381, 375, 363, 340, 894, 364, 365, 354, 409, 373, 410, 355, 387, 386, 388, 0, 0, 0, 0, 0, 496, 497, 0, 0, 645, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 627, 811, 0, 631, - 0, 470, 0, 0, 875, 0, 0, 0, 440, 0, - 0, 366, 0, 0, 0, 815, 0, 423, 403, 888, + 0, 0, 0, 0, 0, 0, 627, 813, 0, 631, + 0, 470, 0, 0, 877, 0, 0, 0, 440, 0, + 0, 366, 0, 0, 0, 817, 0, 423, 403, 890, 0, 0, 421, 371, 455, 411, 461, 442, 469, 417, 412, 294, 443, 333, 384, 306, 308, 328, 335, 337, 341, 342, 393, 394, 406, 428, 445, 446, 447, 332, 316, 422, 317, 352, 318, 295, 324, 322, 325, 430, 326, 297, 407, 451, 0, 347, 418, 379, 298, 378, - 408, 450, 449, 307, 477, 483, 484, 573, 0, 489, + 408, 450, 449, 307, 477, 1743, 1744, 573, 0, 489, 660, 661, 662, 498, 0, 413, 503, 504, 505, 507, 508, 509, 510, 574, 591, 558, 528, 491, 582, 525, 529, 530, 357, 594, 0, 0, 0, 482, 367, 368, - 0, 339, 338, 380, 416, 345, 291, 292, 655, 872, - 399, 596, 629, 630, 521, 0, 887, 867, 869, 870, - 874, 878, 879, 880, 881, 882, 884, 886, 890, 654, + 0, 339, 338, 380, 416, 345, 291, 292, 655, 874, + 399, 596, 629, 630, 521, 0, 889, 869, 871, 872, + 876, 880, 881, 882, 883, 884, 886, 888, 892, 654, 0, 575, 590, 658, 589, 651, 405, 0, 427, 587, 534, 0, 579, 553, 0, 580, 549, 584, 0, 523, 0, 435, 463, 475, 492, 495, 524, 609, 610, 611, 296, 494, 613, 614, 615, 616, 617, 618, 619, 612, - 889, 556, 533, 559, 474, 536, 535, 0, 0, 570, - 819, 571, 572, 389, 390, 391, 392, 876, 597, 314, + 891, 556, 533, 559, 474, 536, 535, 0, 0, 570, + 821, 571, 572, 389, 390, 391, 392, 878, 597, 314, 493, 415, 0, 557, 0, 0, 0, 0, 0, 0, 0, 0, 562, 563, 560, 663, 0, 620, 621, 0, 0, 487, 488, 344, 351, 506, 353, 313, 404, 346, 472, 361, 0, 499, 564, 500, 623, 626, 624, 625, 396, 356, 358, 431, 362, 372, 419, 471, 402, 424, - 311, 462, 433, 377, 550, 577, 898, 871, 897, 899, - 900, 896, 901, 902, 883, 774, 0, 826, 894, 893, - 895, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 311, 462, 433, 377, 550, 577, 900, 873, 899, 901, + 902, 898, 903, 904, 885, 776, 0, 828, 896, 895, + 897, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 605, 604, 603, 602, 601, 600, 599, 598, 0, 0, 547, 448, 323, 285, 319, 320, 327, 652, - 649, 453, 653, 781, 293, 527, 370, 0, 414, 343, - 592, 593, 0, 644, 860, 833, 834, 835, 771, 836, - 830, 831, 772, 832, 861, 824, 857, 858, 800, 827, - 837, 856, 838, 859, 862, 863, 903, 904, 844, 828, - 257, 905, 841, 864, 855, 854, 839, 825, 865, 866, - 807, 802, 842, 843, 829, 848, 849, 850, 773, 821, - 822, 823, 845, 846, 803, 804, 805, 806, 0, 0, + 649, 453, 653, 783, 293, 527, 370, 0, 414, 343, + 592, 593, 0, 644, 862, 835, 836, 837, 773, 838, + 832, 833, 774, 834, 863, 826, 859, 860, 802, 829, + 839, 858, 840, 861, 864, 865, 905, 906, 846, 830, + 257, 907, 843, 866, 857, 856, 841, 827, 867, 868, + 809, 804, 844, 845, 831, 850, 851, 852, 775, 823, + 824, 825, 847, 848, 805, 806, 807, 808, 0, 0, 0, 478, 479, 480, 502, 0, 464, 526, 650, 0, 0, 0, 0, 0, 0, 0, 576, 588, 622, 0, - 632, 633, 635, 637, 851, 639, 438, 439, 0, 847, - 642, 643, 640, 374, 425, 444, 432, 0, 656, 517, - 518, 657, 628, 0, 766, 206, 64, 197, 168, 0, + 632, 633, 635, 637, 853, 639, 438, 439, 0, 849, + 642, 643, 640, 374, 425, 444, 432, 819, 656, 517, + 518, 657, 628, 0, 768, 0, 401, 0, 0, 532, + 565, 554, 638, 520, 0, 0, 0, 0, 0, 0, + 771, 0, 0, 0, 336, 0, 0, 369, 569, 551, + 561, 552, 537, 538, 539, 546, 348, 540, 541, 542, + 512, 543, 513, 544, 545, 810, 568, 519, 434, 385, + 586, 585, 0, 0, 879, 887, 0, 0, 0, 0, + 0, 0, 0, 0, 875, 0, 0, 0, 0, 763, + 0, 0, 800, 855, 854, 787, 797, 0, 0, 309, + 229, 514, 634, 516, 515, 788, 0, 789, 793, 796, + 792, 790, 791, 0, 870, 0, 0, 0, 0, 0, + 0, 0, 767, 0, 772, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 764, 765, + 0, 0, 0, 0, 820, 0, 766, 0, 0, 815, + 794, 798, 0, 0, 0, 0, 299, 441, 460, 310, + 429, 473, 315, 437, 452, 305, 400, 426, 0, 0, + 301, 458, 436, 382, 359, 360, 300, 0, 420, 334, + 350, 331, 398, 795, 818, 822, 330, 893, 816, 468, + 303, 0, 467, 397, 454, 459, 383, 376, 0, 302, + 456, 381, 375, 363, 340, 894, 364, 365, 354, 409, + 373, 410, 355, 387, 386, 388, 0, 0, 0, 0, + 0, 496, 497, 0, 0, 645, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 627, 813, 0, + 631, 0, 470, 0, 0, 877, 0, 0, 0, 440, + 0, 0, 366, 0, 0, 0, 817, 0, 423, 403, + 890, 0, 0, 421, 371, 455, 411, 461, 442, 469, + 417, 412, 294, 443, 333, 384, 306, 308, 328, 335, + 337, 341, 342, 393, 394, 406, 428, 445, 446, 447, + 332, 316, 422, 317, 352, 318, 295, 324, 322, 325, + 430, 326, 297, 407, 451, 0, 347, 418, 379, 298, + 378, 408, 450, 449, 307, 477, 483, 484, 573, 0, + 489, 660, 661, 662, 498, 0, 413, 503, 504, 505, + 507, 508, 509, 510, 574, 591, 558, 528, 491, 582, + 525, 529, 530, 357, 594, 0, 0, 0, 482, 367, + 368, 0, 339, 338, 380, 416, 345, 291, 292, 655, + 874, 399, 596, 629, 630, 521, 0, 889, 869, 871, + 872, 876, 880, 881, 882, 883, 884, 886, 888, 892, + 654, 0, 575, 590, 658, 589, 651, 405, 0, 427, + 587, 534, 0, 579, 553, 0, 580, 549, 584, 0, + 523, 0, 435, 463, 475, 492, 495, 524, 609, 610, + 611, 296, 494, 613, 614, 615, 616, 617, 618, 619, + 612, 891, 556, 533, 559, 474, 536, 535, 0, 0, + 570, 821, 571, 572, 389, 390, 391, 392, 878, 597, + 314, 493, 415, 0, 557, 0, 0, 0, 0, 0, + 0, 0, 0, 562, 563, 560, 663, 0, 620, 621, + 0, 0, 487, 488, 344, 351, 506, 353, 313, 404, + 346, 472, 361, 0, 499, 564, 500, 623, 626, 624, + 625, 396, 356, 358, 431, 362, 372, 419, 471, 402, + 424, 311, 462, 433, 377, 550, 577, 900, 873, 899, + 901, 902, 898, 903, 904, 885, 776, 0, 828, 896, + 895, 897, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 605, 604, 603, 602, 601, 600, 599, + 598, 0, 0, 547, 448, 323, 285, 319, 320, 327, + 652, 649, 453, 653, 783, 293, 527, 370, 0, 414, + 343, 592, 593, 0, 644, 862, 835, 836, 837, 773, + 838, 832, 833, 774, 834, 863, 826, 859, 860, 802, + 829, 839, 858, 840, 861, 864, 865, 905, 906, 846, + 830, 257, 907, 843, 866, 857, 856, 841, 827, 867, + 868, 809, 804, 844, 845, 831, 850, 851, 852, 775, + 823, 824, 825, 847, 848, 805, 806, 807, 808, 0, + 0, 0, 478, 479, 480, 502, 0, 464, 526, 650, + 0, 0, 0, 0, 0, 0, 0, 576, 588, 622, + 0, 632, 633, 635, 637, 853, 639, 438, 439, 0, + 849, 642, 643, 640, 374, 425, 444, 432, 819, 656, + 517, 518, 657, 628, 0, 768, 0, 401, 0, 0, + 532, 565, 554, 638, 520, 0, 0, 0, 0, 0, + 0, 771, 0, 0, 0, 336, 0, 0, 369, 569, + 551, 561, 552, 537, 538, 539, 546, 348, 540, 541, + 542, 512, 543, 513, 544, 545, 810, 568, 519, 434, + 385, 586, 585, 0, 0, 879, 887, 0, 0, 0, + 0, 0, 0, 0, 0, 875, 0, 0, 0, 0, + 0, 0, 0, 800, 855, 854, 787, 797, 0, 0, + 309, 229, 514, 634, 516, 515, 788, 0, 789, 793, + 796, 792, 790, 791, 0, 870, 0, 0, 0, 0, + 0, 0, 755, 767, 0, 772, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 764, + 765, 0, 0, 0, 0, 820, 0, 766, 0, 0, + 815, 794, 798, 0, 0, 0, 0, 299, 441, 460, + 310, 429, 473, 315, 437, 452, 305, 400, 426, 0, + 0, 301, 458, 436, 382, 359, 360, 300, 0, 420, + 334, 350, 331, 398, 795, 818, 822, 330, 893, 816, + 468, 303, 0, 467, 397, 454, 459, 383, 376, 0, + 302, 456, 381, 375, 363, 340, 894, 364, 365, 354, + 409, 373, 410, 355, 387, 386, 388, 0, 0, 0, + 0, 0, 496, 497, 0, 0, 645, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 627, 813, + 0, 631, 0, 470, 0, 0, 877, 0, 0, 0, + 440, 0, 0, 366, 0, 0, 0, 817, 0, 423, + 403, 890, 0, 0, 421, 371, 455, 411, 461, 442, + 469, 417, 412, 294, 443, 333, 384, 306, 308, 328, + 335, 337, 341, 342, 393, 394, 406, 428, 445, 446, + 447, 332, 316, 422, 317, 352, 318, 295, 324, 322, + 325, 430, 326, 297, 407, 451, 0, 347, 418, 379, + 298, 378, 408, 450, 449, 307, 477, 483, 484, 573, + 0, 489, 660, 661, 662, 498, 0, 413, 503, 504, + 505, 507, 508, 509, 510, 574, 591, 558, 528, 491, + 582, 525, 529, 530, 357, 594, 0, 0, 0, 482, + 367, 368, 0, 339, 338, 380, 416, 345, 291, 292, + 655, 874, 399, 596, 629, 630, 521, 0, 889, 869, + 871, 872, 876, 880, 881, 882, 883, 884, 886, 888, + 892, 654, 0, 575, 590, 658, 589, 651, 405, 0, + 427, 587, 534, 0, 579, 553, 0, 580, 549, 584, + 0, 523, 0, 435, 463, 475, 492, 495, 524, 609, + 610, 611, 296, 494, 613, 614, 615, 616, 617, 618, + 619, 612, 891, 556, 533, 559, 474, 536, 535, 0, + 0, 570, 821, 571, 572, 389, 390, 391, 392, 878, + 597, 314, 493, 415, 0, 557, 0, 0, 0, 0, + 0, 0, 0, 0, 562, 563, 560, 663, 0, 620, + 621, 0, 0, 487, 488, 344, 351, 506, 353, 313, + 404, 346, 472, 361, 0, 499, 564, 500, 623, 626, + 624, 625, 396, 356, 358, 431, 362, 372, 419, 471, + 402, 424, 311, 462, 433, 377, 550, 577, 900, 873, + 899, 901, 902, 898, 903, 904, 885, 776, 0, 828, + 896, 895, 897, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 605, 604, 603, 602, 601, 600, + 599, 598, 0, 0, 547, 448, 323, 285, 319, 320, + 327, 652, 649, 453, 653, 783, 293, 527, 370, 0, + 414, 343, 592, 593, 0, 644, 862, 835, 836, 837, + 773, 838, 832, 833, 774, 834, 863, 826, 859, 860, + 802, 829, 839, 858, 840, 861, 864, 865, 905, 906, + 846, 830, 257, 907, 843, 866, 857, 856, 841, 827, + 867, 868, 809, 804, 844, 845, 831, 850, 851, 852, + 775, 823, 824, 825, 847, 848, 805, 806, 807, 808, + 0, 0, 0, 478, 479, 480, 502, 0, 464, 526, + 650, 0, 0, 0, 0, 0, 0, 0, 576, 588, + 622, 0, 632, 633, 635, 637, 853, 639, 438, 439, + 0, 849, 642, 643, 640, 374, 425, 444, 432, 0, + 656, 517, 518, 657, 628, 0, 768, 206, 64, 197, + 168, 0, 0, 0, 0, 0, 0, 401, 0, 0, + 532, 565, 554, 638, 520, 0, 198, 0, 0, 0, + 0, 0, 0, 189, 0, 336, 0, 199, 369, 569, + 551, 561, 552, 537, 538, 539, 546, 348, 540, 541, + 542, 512, 543, 513, 544, 545, 140, 568, 519, 434, + 385, 586, 585, 0, 0, 0, 0, 0, 0, 0, + 0, 126, 0, 0, 0, 0, 0, 0, 0, 0, + 202, 0, 0, 228, 0, 0, 0, 0, 0, 0, + 309, 229, 514, 634, 516, 515, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 312, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 220, 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, 299, 441, 460, + 310, 429, 473, 315, 437, 452, 305, 400, 426, 0, + 0, 301, 458, 436, 382, 359, 360, 300, 0, 420, + 334, 350, 331, 398, 0, 457, 485, 330, 476, 0, + 468, 303, 0, 467, 397, 454, 459, 383, 376, 0, + 302, 456, 381, 375, 363, 340, 501, 364, 365, 354, + 409, 373, 410, 355, 387, 386, 388, 0, 0, 0, + 0, 0, 496, 497, 0, 0, 645, 0, 0, 0, + 0, 167, 195, 204, 196, 124, 0, 0, 627, 0, + 0, 631, 0, 470, 0, 0, 221, 0, 0, 0, + 440, 0, 0, 366, 194, 188, 187, 486, 0, 423, + 403, 233, 0, 0, 421, 371, 455, 411, 461, 442, + 469, 417, 412, 294, 443, 333, 384, 306, 308, 328, + 335, 337, 341, 342, 393, 394, 406, 428, 445, 446, + 447, 332, 316, 422, 317, 352, 318, 295, 324, 322, + 325, 430, 326, 297, 407, 451, 0, 347, 418, 379, + 298, 378, 408, 450, 449, 307, 477, 483, 484, 573, + 0, 489, 606, 607, 608, 498, 0, 413, 503, 504, + 505, 507, 508, 509, 510, 574, 591, 558, 528, 491, + 582, 525, 529, 530, 357, 594, 0, 0, 0, 482, + 367, 368, 0, 339, 338, 380, 416, 345, 291, 292, + 465, 329, 399, 596, 629, 630, 521, 0, 583, 522, + 531, 321, 555, 567, 566, 395, 481, 224, 578, 581, + 511, 234, 0, 575, 590, 548, 589, 235, 405, 0, + 427, 587, 534, 0, 579, 553, 0, 580, 549, 584, + 0, 523, 0, 435, 463, 475, 492, 495, 524, 609, + 610, 611, 296, 494, 613, 614, 615, 616, 617, 618, + 619, 612, 466, 556, 533, 559, 474, 536, 535, 0, + 0, 570, 490, 571, 572, 389, 390, 391, 392, 349, + 597, 314, 493, 415, 138, 557, 0, 0, 0, 0, + 0, 0, 0, 0, 562, 563, 560, 232, 0, 620, + 621, 0, 0, 487, 488, 344, 351, 506, 353, 313, + 404, 346, 472, 361, 0, 499, 564, 500, 623, 626, + 624, 625, 396, 356, 358, 431, 362, 372, 419, 471, + 402, 424, 311, 462, 433, 377, 550, 577, 0, 0, + 0, 0, 0, 0, 0, 0, 65, 0, 0, 280, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 605, 604, 603, 602, 601, 600, + 599, 598, 0, 0, 547, 448, 323, 285, 319, 320, + 327, 239, 304, 453, 240, 0, 293, 527, 370, 169, + 414, 343, 592, 593, 61, 644, 241, 242, 243, 244, + 245, 246, 247, 248, 286, 249, 250, 251, 252, 253, + 254, 255, 258, 259, 260, 261, 262, 263, 264, 265, + 595, 256, 257, 266, 267, 268, 269, 270, 271, 272, + 273, 274, 275, 276, 277, 278, 279, 0, 0, 0, + 287, 288, 289, 290, 0, 0, 281, 282, 283, 284, + 0, 0, 0, 478, 479, 480, 502, 0, 464, 526, + 236, 45, 222, 225, 227, 226, 0, 62, 576, 588, + 622, 5, 632, 633, 635, 637, 636, 639, 438, 439, + 0, 641, 642, 643, 640, 374, 425, 444, 432, 143, + 237, 517, 518, 238, 628, 206, 0, 0, 0, 0, 0, 0, 0, 0, 0, 401, 0, 0, 532, 565, - 554, 638, 520, 0, 198, 0, 0, 0, 0, 0, - 0, 189, 0, 336, 0, 199, 369, 569, 551, 561, + 554, 638, 520, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 336, 0, 0, 369, 569, 551, 561, 552, 537, 538, 539, 546, 348, 540, 541, 542, 512, 543, 513, 544, 545, 140, 568, 519, 434, 385, 586, - 585, 0, 0, 0, 0, 0, 0, 0, 0, 126, + 585, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 202, 0, 0, 228, 0, 0, 0, 0, 0, 0, 309, 229, 514, 634, 516, 515, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 312, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 220, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 312, 2434, 2437, 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, 0, 0, @@ -3303,80 +3460,79 @@ var yyAct = [...]int{ 0, 467, 397, 454, 459, 383, 376, 0, 302, 456, 381, 375, 363, 340, 501, 364, 365, 354, 409, 373, 410, 355, 387, 386, 388, 0, 0, 0, 0, 0, - 496, 497, 0, 0, 645, 0, 0, 0, 0, 167, - 195, 204, 196, 124, 0, 0, 627, 0, 0, 631, - 0, 470, 0, 0, 221, 0, 0, 0, 440, 0, - 0, 366, 194, 188, 187, 486, 0, 423, 403, 233, + 496, 497, 0, 0, 645, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 627, 0, 0, 631, + 2438, 470, 0, 0, 0, 2433, 0, 2432, 440, 2430, + 2435, 366, 0, 0, 0, 486, 0, 423, 403, 659, 0, 0, 421, 371, 455, 411, 461, 442, 469, 417, 412, 294, 443, 333, 384, 306, 308, 328, 335, 337, 341, 342, 393, 394, 406, 428, 445, 446, 447, 332, 316, 422, 317, 352, 318, 295, 324, 322, 325, 430, - 326, 297, 407, 451, 0, 347, 418, 379, 298, 378, + 326, 297, 407, 451, 2436, 347, 418, 379, 298, 378, 408, 450, 449, 307, 477, 483, 484, 573, 0, 489, - 606, 607, 608, 498, 0, 413, 503, 504, 505, 507, + 660, 661, 662, 498, 0, 413, 503, 504, 505, 507, 508, 509, 510, 574, 591, 558, 528, 491, 582, 525, 529, 530, 357, 594, 0, 0, 0, 482, 367, 368, - 0, 339, 338, 380, 416, 345, 291, 292, 465, 329, + 0, 339, 338, 380, 416, 345, 291, 292, 655, 329, 399, 596, 629, 630, 521, 0, 583, 522, 531, 321, - 555, 567, 566, 395, 481, 224, 578, 581, 511, 234, - 0, 575, 590, 548, 589, 235, 405, 0, 427, 587, + 555, 567, 566, 395, 481, 0, 578, 581, 511, 654, + 0, 575, 590, 658, 589, 651, 405, 0, 427, 587, 534, 0, 579, 553, 0, 580, 549, 584, 0, 523, 0, 435, 463, 475, 492, 495, 524, 609, 610, 611, 296, 494, 613, 614, 615, 616, 617, 618, 619, 612, 466, 556, 533, 559, 474, 536, 535, 0, 0, 570, 490, 571, 572, 389, 390, 391, 392, 349, 597, 314, - 493, 415, 138, 557, 0, 0, 0, 0, 0, 0, - 0, 0, 562, 563, 560, 232, 0, 620, 621, 0, + 493, 415, 0, 557, 0, 0, 0, 0, 0, 0, + 0, 0, 562, 563, 560, 663, 0, 620, 621, 0, 0, 487, 488, 344, 351, 506, 353, 313, 404, 346, 472, 361, 0, 499, 564, 500, 623, 626, 624, 625, 396, 356, 358, 431, 362, 372, 419, 471, 402, 424, 311, 462, 433, 377, 550, 577, 0, 0, 0, 0, - 0, 0, 0, 0, 65, 0, 0, 280, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 280, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 605, 604, 603, 602, 601, 600, 599, 598, - 0, 0, 547, 448, 323, 285, 319, 320, 327, 239, - 304, 453, 240, 0, 293, 527, 370, 169, 414, 343, - 592, 593, 61, 644, 241, 242, 243, 244, 245, 246, + 0, 0, 547, 448, 323, 285, 319, 320, 327, 652, + 649, 453, 653, 0, 293, 527, 370, 169, 414, 343, + 592, 593, 0, 644, 241, 242, 243, 244, 245, 246, 247, 248, 286, 249, 250, 251, 252, 253, 254, 255, 258, 259, 260, 261, 262, 263, 264, 265, 595, 256, 257, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 0, 0, 0, 287, 288, 289, 290, 0, 0, 281, 282, 283, 284, 0, 0, - 0, 478, 479, 480, 502, 0, 464, 526, 236, 45, - 222, 225, 227, 226, 0, 62, 576, 588, 622, 5, + 0, 478, 479, 480, 502, 0, 464, 526, 650, 0, + 0, 0, 0, 0, 0, 0, 576, 588, 622, 0, 632, 633, 635, 637, 636, 639, 438, 439, 0, 641, - 642, 643, 640, 374, 425, 444, 432, 143, 237, 517, - 518, 238, 628, 206, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 401, 0, 0, 532, 565, 554, 638, + 642, 643, 640, 374, 425, 444, 432, 0, 656, 517, + 518, 657, 628, 401, 0, 0, 532, 565, 554, 638, 520, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 336, 0, 0, 369, 569, 551, 561, 552, 537, 538, 539, 546, 348, 540, 541, 542, 512, 543, 513, - 544, 545, 140, 568, 519, 434, 385, 586, 585, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 202, 0, 0, 228, - 0, 0, 0, 0, 0, 0, 309, 229, 514, 634, - 516, 515, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 312, 2422, 2425, 0, 0, 0, 0, 0, 0, + 544, 545, 0, 568, 519, 434, 385, 586, 585, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1336, 0, 0, 228, + 0, 0, 787, 797, 0, 0, 309, 229, 514, 634, + 516, 515, 788, 0, 789, 793, 796, 792, 790, 791, + 0, 312, 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, 0, 0, 0, 794, 0, 0, 0, 0, 0, 299, 441, 460, 310, 429, 473, 315, 437, 452, 305, 400, 426, 0, 0, 301, 458, 436, 382, 359, 360, 300, 0, 420, 334, 350, 331, 398, - 0, 457, 485, 330, 476, 0, 468, 303, 0, 467, + 795, 457, 485, 330, 476, 0, 468, 303, 0, 467, 397, 454, 459, 383, 376, 0, 302, 456, 381, 375, 363, 340, 501, 364, 365, 354, 409, 373, 410, 355, 387, 386, 388, 0, 0, 0, 0, 0, 496, 497, 0, 0, 645, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 627, 0, 0, 631, 2426, 470, - 0, 0, 0, 2421, 0, 2420, 440, 2418, 2423, 366, + 0, 0, 0, 0, 627, 0, 0, 631, 0, 470, + 0, 0, 0, 0, 0, 0, 440, 0, 0, 366, 0, 0, 0, 486, 0, 423, 403, 659, 0, 0, 421, 371, 455, 411, 461, 442, 469, 417, 412, 294, 443, 333, 384, 306, 308, 328, 335, 337, 341, 342, 393, 394, 406, 428, 445, 446, 447, 332, 316, 422, 317, 352, 318, 295, 324, 322, 325, 430, 326, 297, - 407, 451, 2424, 347, 418, 379, 298, 378, 408, 450, + 407, 451, 0, 347, 418, 379, 298, 378, 408, 450, 449, 307, 477, 483, 484, 573, 0, 489, 660, 661, 662, 498, 0, 413, 503, 504, 505, 507, 508, 509, 510, 574, 591, 558, 528, 491, 582, 525, 529, 530, @@ -3400,7 +3556,7 @@ var yyAct = [...]int{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 605, 604, 603, 602, 601, 600, 599, 598, 0, 0, 547, 448, 323, 285, 319, 320, 327, 652, 649, 453, - 653, 0, 293, 527, 370, 169, 414, 343, 592, 593, + 653, 0, 293, 527, 370, 0, 414, 343, 592, 593, 0, 644, 241, 242, 243, 244, 245, 246, 247, 248, 286, 249, 250, 251, 252, 253, 254, 255, 258, 259, 260, 261, 262, 263, 264, 265, 595, 256, 257, 266, @@ -3411,29 +3567,30 @@ var yyAct = [...]int{ 0, 0, 0, 0, 576, 588, 622, 0, 632, 633, 635, 637, 636, 639, 438, 439, 0, 641, 642, 643, 640, 374, 425, 444, 432, 0, 656, 517, 518, 657, - 628, 401, 0, 0, 532, 565, 554, 638, 520, 0, + 628, 206, 64, 197, 168, 0, 0, 0, 0, 0, + 0, 401, 684, 0, 532, 565, 554, 638, 520, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 336, 0, 0, 369, 569, 551, 561, 552, 537, 538, 539, 546, 348, 540, 541, 542, 512, 543, 513, 544, 545, 0, 568, 519, 434, 385, 586, 585, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 691, 0, 0, 0, + 0, 0, 0, 0, 690, 0, 0, 228, 0, 0, + 0, 0, 0, 0, 309, 229, 514, 634, 516, 515, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 312, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1331, 0, 0, 228, 0, 0, - 785, 795, 0, 0, 309, 229, 514, 634, 516, 515, - 786, 0, 787, 791, 794, 790, 788, 789, 0, 312, 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, 0, 0, 0, 792, 0, 0, 0, 0, 0, 299, 441, 460, 310, 429, 473, 315, 437, 452, 305, 400, 426, 0, 0, 301, 458, 436, 382, 359, - 360, 300, 0, 420, 334, 350, 331, 398, 793, 457, + 360, 300, 0, 420, 334, 350, 331, 398, 0, 457, 485, 330, 476, 0, 468, 303, 0, 467, 397, 454, 459, 383, 376, 0, 302, 456, 381, 375, 363, 340, 501, 364, 365, 354, 409, 373, 410, 355, 387, 386, 388, 0, 0, 0, 0, 0, 496, 497, 0, 0, - 645, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 627, 0, 0, 631, 0, 470, 0, 0, + 645, 0, 0, 0, 0, 0, 0, 0, 0, 688, + 689, 0, 627, 0, 0, 631, 0, 470, 0, 0, 0, 0, 0, 0, 440, 0, 0, 366, 0, 0, 0, 486, 0, 423, 403, 659, 0, 0, 421, 371, 455, 411, 461, 442, 469, 417, 412, 294, 443, 333, @@ -3453,18 +3610,18 @@ var yyAct = [...]int{ 492, 495, 524, 609, 610, 611, 296, 494, 613, 614, 615, 616, 617, 618, 619, 612, 466, 556, 533, 559, 474, 536, 535, 0, 0, 570, 490, 571, 572, 389, - 390, 391, 392, 349, 597, 314, 493, 415, 0, 557, + 390, 391, 392, 685, 687, 314, 493, 415, 699, 557, 0, 0, 0, 0, 0, 0, 0, 0, 562, 563, 560, 663, 0, 620, 621, 0, 0, 487, 488, 344, 351, 506, 353, 313, 404, 346, 472, 361, 0, 499, 564, 500, 623, 626, 624, 625, 396, 356, 358, 431, 362, 372, 419, 471, 402, 424, 311, 462, 433, 377, 550, 577, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 280, 0, 0, 0, 0, 0, 0, + 65, 0, 0, 280, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 605, 604, 603, 602, 601, 600, 599, 598, 0, 0, 547, 448, 323, 285, 319, 320, 327, 652, 649, 453, 653, 0, - 293, 527, 370, 0, 414, 343, 592, 593, 0, 644, + 293, 527, 370, 169, 414, 343, 592, 593, 0, 644, 241, 242, 243, 244, 245, 246, 247, 248, 286, 249, 250, 251, 252, 253, 254, 255, 258, 259, 260, 261, 262, 263, 264, 265, 595, 256, 257, 266, 267, 268, @@ -3474,32 +3631,31 @@ var yyAct = [...]int{ 502, 0, 464, 526, 650, 0, 0, 0, 0, 0, 0, 0, 576, 588, 622, 0, 632, 633, 635, 637, 636, 639, 438, 439, 0, 641, 642, 643, 640, 374, - 425, 444, 432, 0, 656, 517, 518, 657, 628, 206, - 64, 197, 168, 0, 0, 0, 0, 0, 0, 401, - 682, 0, 532, 565, 554, 638, 520, 0, 0, 0, + 425, 444, 432, 0, 656, 517, 518, 657, 628, 401, + 0, 0, 532, 565, 554, 638, 520, 0, 1142, 0, 0, 0, 0, 0, 0, 0, 0, 336, 0, 0, 369, 569, 551, 561, 552, 537, 538, 539, 546, 348, 540, 541, 542, 512, 543, 513, 544, 545, 0, 568, 519, 434, 385, 586, 585, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 689, 0, 0, 0, 0, 0, - 0, 0, 688, 0, 0, 228, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 228, 0, 0, 0, 0, 0, 0, 309, 229, 514, 634, 516, 515, 0, 0, 0, 0, 0, 0, 0, 0, 0, 312, 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, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 299, + 0, 0, 1127, 0, 0, 0, 0, 0, 0, 299, 441, 460, 310, 429, 473, 315, 437, 452, 305, 400, - 426, 0, 0, 301, 458, 436, 382, 359, 360, 300, - 0, 420, 334, 350, 331, 398, 0, 457, 485, 330, - 476, 0, 468, 303, 0, 467, 397, 454, 459, 383, - 376, 0, 302, 456, 381, 375, 363, 340, 501, 364, - 365, 354, 409, 373, 410, 355, 387, 386, 388, 0, - 0, 0, 0, 0, 496, 497, 0, 0, 645, 0, - 0, 0, 0, 0, 0, 0, 0, 686, 687, 0, + 426, 0, 0, 2597, 2600, 2601, 2602, 2603, 2604, 2605, + 0, 2610, 2606, 2607, 2608, 2609, 0, 2592, 2593, 2594, + 2595, 1125, 2576, 2598, 0, 2577, 397, 2578, 2579, 2580, + 2581, 1129, 2582, 2583, 2584, 2585, 2586, 2589, 2590, 2587, + 2588, 2596, 409, 373, 410, 355, 387, 386, 388, 1153, + 1155, 1157, 1159, 1162, 496, 497, 0, 0, 645, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 627, 0, 0, 631, 0, 470, 0, 0, 0, 0, - 0, 0, 440, 0, 0, 366, 0, 0, 0, 486, + 0, 0, 440, 0, 0, 366, 0, 0, 0, 2591, 0, 423, 403, 659, 0, 0, 421, 371, 455, 411, 461, 442, 469, 417, 412, 294, 443, 333, 384, 306, 308, 328, 335, 337, 341, 342, 393, 394, 406, 428, @@ -3518,18 +3674,18 @@ var yyAct = [...]int{ 524, 609, 610, 611, 296, 494, 613, 614, 615, 616, 617, 618, 619, 612, 466, 556, 533, 559, 474, 536, 535, 0, 0, 570, 490, 571, 572, 389, 390, 391, - 392, 683, 685, 314, 493, 415, 697, 557, 0, 0, + 392, 349, 597, 314, 493, 415, 0, 557, 0, 0, 0, 0, 0, 0, 0, 0, 562, 563, 560, 663, 0, 620, 621, 0, 0, 487, 488, 344, 351, 506, 353, 313, 404, 346, 472, 361, 0, 499, 564, 500, 623, 626, 624, 625, 396, 356, 358, 431, 362, 372, 419, 471, 402, 424, 311, 462, 433, 377, 550, 577, - 0, 0, 0, 0, 0, 0, 0, 0, 65, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 280, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 605, 604, 603, 602, 601, 600, 599, 598, 0, 0, 547, 448, 323, 285, - 319, 320, 327, 652, 649, 453, 653, 0, 293, 527, - 370, 169, 414, 343, 592, 593, 0, 644, 241, 242, + 319, 320, 327, 652, 649, 453, 653, 0, 293, 2599, + 370, 0, 414, 343, 592, 593, 0, 644, 241, 242, 243, 244, 245, 246, 247, 248, 286, 249, 250, 251, 252, 253, 254, 255, 258, 259, 260, 261, 262, 263, 264, 265, 595, 256, 257, 266, 267, 268, 269, 270, @@ -3540,7 +3696,7 @@ var yyAct = [...]int{ 576, 588, 622, 0, 632, 633, 635, 637, 636, 639, 438, 439, 0, 641, 642, 643, 640, 374, 425, 444, 432, 0, 656, 517, 518, 657, 628, 401, 0, 0, - 532, 565, 554, 638, 520, 0, 1139, 0, 0, 0, + 532, 565, 554, 638, 520, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 336, 0, 0, 369, 569, 551, 561, 552, 537, 538, 539, 546, 348, 540, 541, 542, 512, 543, 513, 544, 545, 0, 568, 519, 434, @@ -3548,27 +3704,27 @@ var yyAct = [...]int{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 228, 0, 0, 0, 0, 0, 0, 309, 229, 514, 634, 516, 515, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 312, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 312, 2434, 2437, 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, - 1124, 0, 0, 0, 0, 0, 0, 299, 441, 460, + 0, 0, 0, 0, 0, 0, 0, 299, 441, 460, 310, 429, 473, 315, 437, 452, 305, 400, 426, 0, - 0, 2585, 2588, 2589, 2590, 2591, 2592, 2593, 0, 2598, - 2594, 2595, 2596, 2597, 0, 2580, 2581, 2582, 2583, 1122, - 2564, 2586, 0, 2565, 397, 2566, 2567, 2568, 2569, 1126, - 2570, 2571, 2572, 2573, 2574, 2577, 2578, 2575, 2576, 2584, - 409, 373, 410, 355, 387, 386, 388, 1150, 1152, 1154, - 1156, 1159, 496, 497, 0, 0, 645, 0, 0, 0, + 0, 301, 458, 436, 382, 359, 360, 300, 0, 420, + 334, 350, 331, 398, 0, 457, 485, 330, 476, 0, + 468, 303, 0, 467, 397, 454, 459, 383, 376, 0, + 302, 456, 381, 375, 363, 340, 501, 364, 365, 354, + 409, 373, 410, 355, 387, 386, 388, 0, 0, 0, + 0, 0, 496, 497, 0, 0, 645, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 627, 0, - 0, 631, 0, 470, 0, 0, 0, 0, 0, 0, - 440, 0, 0, 366, 0, 0, 0, 2579, 0, 423, + 0, 631, 2438, 470, 0, 0, 0, 2433, 0, 2432, + 440, 2430, 2435, 366, 0, 0, 0, 486, 0, 423, 403, 659, 0, 0, 421, 371, 455, 411, 461, 442, 469, 417, 412, 294, 443, 333, 384, 306, 308, 328, 335, 337, 341, 342, 393, 394, 406, 428, 445, 446, 447, 332, 316, 422, 317, 352, 318, 295, 324, 322, - 325, 430, 326, 297, 407, 451, 0, 347, 418, 379, + 325, 430, 326, 297, 407, 451, 2436, 347, 418, 379, 298, 378, 408, 450, 449, 307, 477, 483, 484, 573, 0, 489, 660, 661, 662, 498, 0, 413, 503, 504, 505, 507, 508, 509, 510, 574, 591, 558, 528, 491, @@ -3592,7 +3748,7 @@ var yyAct = [...]int{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 605, 604, 603, 602, 601, 600, 599, 598, 0, 0, 547, 448, 323, 285, 319, 320, - 327, 652, 649, 453, 653, 0, 293, 2587, 370, 0, + 327, 652, 649, 453, 653, 0, 293, 527, 370, 0, 414, 343, 592, 593, 0, 644, 241, 242, 243, 244, 245, 246, 247, 248, 286, 249, 250, 251, 252, 253, 254, 255, 258, 259, 260, 261, 262, 263, 264, 265, @@ -3612,7 +3768,7 @@ var yyAct = [...]int{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 228, 0, 0, 0, 0, 0, 0, 309, 229, 514, 634, 516, 515, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 312, 2422, 2425, 0, 0, 0, 0, + 0, 0, 0, 312, 0, 2455, 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, @@ -3626,13 +3782,13 @@ var yyAct = [...]int{ 410, 355, 387, 386, 388, 0, 0, 0, 0, 0, 496, 497, 0, 0, 645, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 627, 0, 0, 631, - 2426, 470, 0, 0, 0, 2421, 0, 2420, 440, 2418, - 2423, 366, 0, 0, 0, 486, 0, 423, 403, 659, - 0, 0, 421, 371, 455, 411, 461, 442, 469, 417, + 2454, 470, 0, 0, 0, 2460, 2457, 2459, 440, 0, + 2458, 366, 0, 0, 0, 486, 0, 423, 403, 659, + 0, 2452, 421, 371, 455, 411, 461, 442, 469, 417, 412, 294, 443, 333, 384, 306, 308, 328, 335, 337, 341, 342, 393, 394, 406, 428, 445, 446, 447, 332, 316, 422, 317, 352, 318, 295, 324, 322, 325, 430, - 326, 297, 407, 451, 2424, 347, 418, 379, 298, 378, + 326, 297, 407, 451, 0, 347, 418, 379, 298, 378, 408, 450, 449, 307, 477, 483, 484, 573, 0, 489, 660, 661, 662, 498, 0, 413, 503, 504, 505, 507, 508, 509, 510, 574, 591, 558, 528, 491, 582, 525, @@ -3676,7 +3832,7 @@ var yyAct = [...]int{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 228, 0, 0, 0, 0, 0, 0, 309, 229, 514, 634, 516, 515, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 312, 0, 2443, 0, 0, 0, 0, 0, 0, + 0, 312, 0, 2455, 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, @@ -3689,9 +3845,9 @@ var yyAct = [...]int{ 363, 340, 501, 364, 365, 354, 409, 373, 410, 355, 387, 386, 388, 0, 0, 0, 0, 0, 496, 497, 0, 0, 645, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 627, 0, 0, 631, 2442, 470, - 0, 0, 0, 2448, 2445, 2447, 440, 0, 2446, 366, - 0, 0, 0, 486, 0, 423, 403, 659, 0, 2440, + 0, 0, 0, 0, 627, 0, 0, 631, 2454, 470, + 0, 0, 0, 2460, 2457, 2459, 440, 0, 2458, 366, + 0, 0, 0, 486, 0, 423, 403, 659, 0, 0, 421, 371, 455, 411, 461, 442, 469, 417, 412, 294, 443, 333, 384, 306, 308, 328, 335, 337, 341, 342, 393, 394, 406, 428, 445, 446, 447, 332, 316, 422, @@ -3732,143 +3888,15 @@ var yyAct = [...]int{ 635, 637, 636, 639, 438, 439, 0, 641, 642, 643, 640, 374, 425, 444, 432, 0, 656, 517, 518, 657, 628, 401, 0, 0, 532, 565, 554, 638, 520, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 336, + 0, 0, 0, 0, 2144, 0, 0, 0, 0, 336, 0, 0, 369, 569, 551, 561, 552, 537, 538, 539, 546, 348, 540, 541, 542, 512, 543, 513, 544, 545, 0, 568, 519, 434, 385, 586, 585, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 228, 0, 0, - 0, 0, 0, 0, 309, 229, 514, 634, 516, 515, + 2145, 0, 0, 0, 309, 229, 514, 634, 516, 515, 0, 0, 0, 0, 0, 0, 0, 0, 0, 312, - 0, 2443, 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, 0, 0, 0, 0, 0, 0, - 0, 299, 441, 460, 310, 429, 473, 315, 437, 452, - 305, 400, 426, 0, 0, 301, 458, 436, 382, 359, - 360, 300, 0, 420, 334, 350, 331, 398, 0, 457, - 485, 330, 476, 0, 468, 303, 0, 467, 397, 454, - 459, 383, 376, 0, 302, 456, 381, 375, 363, 340, - 501, 364, 365, 354, 409, 373, 410, 355, 387, 386, - 388, 0, 0, 0, 0, 0, 496, 497, 0, 0, - 645, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 627, 0, 0, 631, 2442, 470, 0, 0, - 0, 2448, 2445, 2447, 440, 0, 2446, 366, 0, 0, - 0, 486, 0, 423, 403, 659, 0, 0, 421, 371, - 455, 411, 461, 442, 469, 417, 412, 294, 443, 333, - 384, 306, 308, 328, 335, 337, 341, 342, 393, 394, - 406, 428, 445, 446, 447, 332, 316, 422, 317, 352, - 318, 295, 324, 322, 325, 430, 326, 297, 407, 451, - 0, 347, 418, 379, 298, 378, 408, 450, 449, 307, - 477, 483, 484, 573, 0, 489, 660, 661, 662, 498, - 0, 413, 503, 504, 505, 507, 508, 509, 510, 574, - 591, 558, 528, 491, 582, 525, 529, 530, 357, 594, - 0, 0, 0, 482, 367, 368, 0, 339, 338, 380, - 416, 345, 291, 292, 655, 329, 399, 596, 629, 630, - 521, 0, 583, 522, 531, 321, 555, 567, 566, 395, - 481, 0, 578, 581, 511, 654, 0, 575, 590, 658, - 589, 651, 405, 0, 427, 587, 534, 0, 579, 553, - 0, 580, 549, 584, 0, 523, 0, 435, 463, 475, - 492, 495, 524, 609, 610, 611, 296, 494, 613, 614, - 615, 616, 617, 618, 619, 612, 466, 556, 533, 559, - 474, 536, 535, 0, 0, 570, 490, 571, 572, 389, - 390, 391, 392, 349, 597, 314, 493, 415, 0, 557, - 0, 0, 0, 0, 0, 0, 0, 0, 562, 563, - 560, 663, 0, 620, 621, 0, 0, 487, 488, 344, - 351, 506, 353, 313, 404, 346, 472, 361, 0, 499, - 564, 500, 623, 626, 624, 625, 396, 356, 358, 431, - 362, 372, 419, 471, 402, 424, 311, 462, 433, 377, - 550, 577, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 280, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 605, 604, - 603, 602, 601, 600, 599, 598, 0, 0, 547, 448, - 323, 285, 319, 320, 327, 652, 649, 453, 653, 0, - 293, 527, 370, 0, 414, 343, 592, 593, 0, 644, - 241, 242, 243, 244, 245, 246, 247, 248, 286, 249, - 250, 251, 252, 253, 254, 255, 258, 259, 260, 261, - 262, 263, 264, 265, 595, 256, 257, 266, 267, 268, - 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, - 279, 0, 0, 0, 287, 288, 289, 290, 0, 0, - 281, 282, 283, 284, 0, 0, 0, 478, 479, 480, - 502, 0, 464, 526, 650, 0, 0, 0, 0, 0, - 0, 0, 576, 588, 622, 0, 632, 633, 635, 637, - 636, 639, 438, 439, 0, 641, 642, 643, 640, 374, - 425, 444, 432, 0, 656, 517, 518, 657, 628, 401, - 0, 0, 532, 565, 554, 638, 520, 0, 0, 0, - 0, 0, 2135, 0, 0, 0, 0, 336, 0, 0, - 369, 569, 551, 561, 552, 537, 538, 539, 546, 348, - 540, 541, 542, 512, 543, 513, 544, 545, 0, 568, - 519, 434, 385, 586, 585, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 228, 0, 0, 2136, 0, - 0, 0, 309, 229, 514, 634, 516, 515, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 312, 0, 0, - 1260, 1261, 1262, 1259, 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, 0, 0, 0, 299, - 441, 460, 310, 429, 473, 315, 437, 452, 305, 400, - 426, 0, 0, 301, 458, 436, 382, 359, 360, 300, - 0, 420, 334, 350, 331, 398, 0, 457, 485, 330, - 476, 0, 468, 303, 0, 467, 397, 454, 459, 383, - 376, 0, 302, 456, 381, 375, 363, 340, 501, 364, - 365, 354, 409, 373, 410, 355, 387, 386, 388, 0, - 0, 0, 0, 0, 496, 497, 0, 0, 645, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 627, 0, 0, 631, 0, 470, 0, 0, 0, 0, - 0, 0, 440, 0, 0, 366, 0, 0, 0, 486, - 0, 423, 403, 659, 0, 0, 421, 371, 455, 411, - 461, 442, 469, 417, 412, 294, 443, 333, 384, 306, - 308, 328, 335, 337, 341, 342, 393, 394, 406, 428, - 445, 446, 447, 332, 316, 422, 317, 352, 318, 295, - 324, 322, 325, 430, 326, 297, 407, 451, 0, 347, - 418, 379, 298, 378, 408, 450, 449, 307, 477, 483, - 484, 573, 0, 489, 660, 661, 662, 498, 0, 413, - 503, 504, 505, 507, 508, 509, 510, 574, 591, 558, - 528, 491, 582, 525, 529, 530, 357, 594, 0, 0, - 0, 482, 367, 368, 0, 339, 338, 380, 416, 345, - 291, 292, 655, 329, 399, 596, 629, 630, 521, 0, - 583, 522, 531, 321, 555, 567, 566, 395, 481, 0, - 578, 581, 511, 654, 0, 575, 590, 658, 589, 651, - 405, 0, 427, 587, 534, 0, 579, 553, 0, 580, - 549, 584, 0, 523, 0, 435, 463, 475, 492, 495, - 524, 609, 610, 611, 296, 494, 613, 614, 615, 616, - 617, 618, 619, 612, 466, 556, 533, 559, 474, 536, - 535, 0, 0, 570, 490, 571, 572, 389, 390, 391, - 392, 349, 597, 314, 493, 415, 0, 557, 0, 0, - 0, 0, 0, 0, 0, 0, 562, 563, 560, 663, - 0, 620, 621, 0, 0, 487, 488, 344, 351, 506, - 353, 313, 404, 346, 472, 361, 0, 499, 564, 500, - 623, 626, 624, 625, 396, 356, 358, 431, 362, 372, - 419, 471, 402, 424, 311, 462, 433, 377, 550, 577, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 280, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 605, 604, 603, 602, - 601, 600, 599, 598, 0, 0, 547, 448, 323, 285, - 319, 320, 327, 652, 649, 453, 653, 0, 293, 527, - 370, 0, 414, 343, 592, 593, 0, 644, 241, 242, - 243, 244, 245, 246, 247, 248, 286, 249, 250, 251, - 252, 253, 254, 255, 258, 259, 260, 261, 262, 263, - 264, 265, 595, 256, 257, 266, 267, 268, 269, 270, - 271, 272, 273, 274, 275, 276, 277, 278, 279, 0, - 0, 0, 287, 288, 289, 290, 0, 0, 281, 282, - 283, 284, 0, 0, 0, 478, 479, 480, 502, 0, - 464, 526, 650, 0, 0, 0, 0, 0, 0, 0, - 576, 588, 622, 0, 632, 633, 635, 637, 636, 639, - 438, 439, 0, 641, 642, 643, 640, 374, 425, 444, - 432, 206, 656, 517, 518, 657, 628, 0, 0, 0, - 0, 401, 0, 0, 532, 565, 554, 638, 520, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 336, - 0, 0, 369, 569, 551, 561, 552, 537, 538, 539, - 546, 348, 540, 541, 542, 512, 543, 513, 544, 545, - 140, 568, 519, 434, 385, 586, 585, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 202, 2185, 0, 228, 0, 0, - 0, 0, 0, 0, 309, 229, 514, 634, 516, 515, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 312, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1265, 1266, 1267, 1264, 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, @@ -3912,7 +3940,7 @@ var yyAct = [...]int{ 0, 0, 0, 0, 0, 0, 0, 0, 605, 604, 603, 602, 601, 600, 599, 598, 0, 0, 547, 448, 323, 285, 319, 320, 327, 652, 649, 453, 653, 0, - 293, 527, 370, 169, 414, 343, 592, 593, 0, 644, + 293, 527, 370, 0, 414, 343, 592, 593, 0, 644, 241, 242, 243, 244, 245, 246, 247, 248, 286, 249, 250, 251, 252, 253, 254, 255, 258, 259, 260, 261, 262, 263, 264, 265, 595, 256, 257, 266, 267, 268, @@ -3929,7 +3957,7 @@ var yyAct = [...]int{ 538, 539, 546, 348, 540, 541, 542, 512, 543, 513, 544, 545, 140, 568, 519, 434, 385, 586, 585, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 202, 2170, 0, 228, + 0, 0, 0, 0, 0, 0, 202, 2195, 0, 228, 0, 0, 0, 0, 0, 0, 309, 229, 514, 634, 516, 515, 0, 0, 0, 0, 0, 0, 0, 0, 0, 312, 0, 0, 0, 0, 0, 0, 0, 0, @@ -3986,81 +4014,209 @@ var yyAct = [...]int{ 479, 480, 502, 0, 464, 526, 650, 0, 0, 0, 0, 0, 0, 0, 576, 588, 622, 0, 632, 633, 635, 637, 636, 639, 438, 439, 0, 641, 642, 643, - 640, 374, 425, 444, 432, 0, 656, 517, 518, 657, - 628, 401, 0, 0, 532, 565, 554, 638, 520, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 336, - 1050, 0, 369, 569, 551, 561, 552, 537, 538, 539, - 546, 348, 540, 541, 542, 512, 543, 513, 544, 545, - 0, 568, 519, 434, 385, 586, 585, 0, 0, 0, + 640, 374, 425, 444, 432, 206, 656, 517, 518, 657, + 628, 0, 0, 0, 0, 401, 0, 0, 532, 565, + 554, 638, 520, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 336, 0, 0, 369, 569, 551, 561, + 552, 537, 538, 539, 546, 348, 540, 541, 542, 512, + 543, 513, 544, 545, 140, 568, 519, 434, 385, 586, + 585, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 202, 2179, + 0, 228, 0, 0, 0, 0, 0, 0, 309, 229, + 514, 634, 516, 515, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 312, 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, 0, 228, 1057, 1058, - 0, 0, 0, 0, 309, 229, 514, 634, 516, 515, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1061, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 299, 441, 460, 310, 429, + 473, 315, 437, 452, 305, 400, 426, 0, 0, 301, + 458, 436, 382, 359, 360, 300, 0, 420, 334, 350, + 331, 398, 0, 457, 485, 330, 476, 0, 468, 303, + 0, 467, 397, 454, 459, 383, 376, 0, 302, 456, + 381, 375, 363, 340, 501, 364, 365, 354, 409, 373, + 410, 355, 387, 386, 388, 0, 0, 0, 0, 0, + 496, 497, 0, 0, 645, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 627, 0, 0, 631, + 0, 470, 0, 0, 0, 0, 0, 0, 440, 0, + 0, 366, 0, 0, 0, 486, 0, 423, 403, 659, + 0, 0, 421, 371, 455, 411, 461, 442, 469, 417, + 412, 294, 443, 333, 384, 306, 308, 328, 335, 337, + 341, 342, 393, 394, 406, 428, 445, 446, 447, 332, + 316, 422, 317, 352, 318, 295, 324, 322, 325, 430, + 326, 297, 407, 451, 0, 347, 418, 379, 298, 378, + 408, 450, 449, 307, 477, 483, 484, 573, 0, 489, + 660, 661, 662, 498, 0, 413, 503, 504, 505, 507, + 508, 509, 510, 574, 591, 558, 528, 491, 582, 525, + 529, 530, 357, 594, 0, 0, 0, 482, 367, 368, + 0, 339, 338, 380, 416, 345, 291, 292, 655, 329, + 399, 596, 629, 630, 521, 0, 583, 522, 531, 321, + 555, 567, 566, 395, 481, 0, 578, 581, 511, 654, + 0, 575, 590, 658, 589, 651, 405, 0, 427, 587, + 534, 0, 579, 553, 0, 580, 549, 584, 0, 523, + 0, 435, 463, 475, 492, 495, 524, 609, 610, 611, + 296, 494, 613, 614, 615, 616, 617, 618, 619, 612, + 466, 556, 533, 559, 474, 536, 535, 0, 0, 570, + 490, 571, 572, 389, 390, 391, 392, 349, 597, 314, + 493, 415, 0, 557, 0, 0, 0, 0, 0, 0, + 0, 0, 562, 563, 560, 663, 0, 620, 621, 0, + 0, 487, 488, 344, 351, 506, 353, 313, 404, 346, + 472, 361, 0, 499, 564, 500, 623, 626, 624, 625, + 396, 356, 358, 431, 362, 372, 419, 471, 402, 424, + 311, 462, 433, 377, 550, 577, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 280, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 605, 604, 603, 602, 601, 600, 599, 598, + 0, 0, 547, 448, 323, 285, 319, 320, 327, 652, + 649, 453, 653, 0, 293, 527, 370, 169, 414, 343, + 592, 593, 0, 644, 241, 242, 243, 244, 245, 246, + 247, 248, 286, 249, 250, 251, 252, 253, 254, 255, + 258, 259, 260, 261, 262, 263, 264, 265, 595, 256, + 257, 266, 267, 268, 269, 270, 271, 272, 273, 274, + 275, 276, 277, 278, 279, 0, 0, 0, 287, 288, + 289, 290, 0, 0, 281, 282, 283, 284, 0, 0, + 0, 478, 479, 480, 502, 0, 464, 526, 650, 0, + 0, 0, 0, 0, 0, 0, 576, 588, 622, 0, + 632, 633, 635, 637, 636, 639, 438, 439, 0, 641, + 642, 643, 640, 374, 425, 444, 432, 0, 656, 517, + 518, 657, 628, 401, 0, 0, 532, 565, 554, 638, + 520, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 336, 1053, 0, 369, 569, 551, 561, 552, 537, + 538, 539, 546, 348, 540, 541, 542, 512, 543, 513, + 544, 545, 0, 568, 519, 434, 385, 586, 585, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 228, + 1060, 1061, 0, 0, 0, 0, 309, 229, 514, 634, + 516, 515, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1064, 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, 299, 441, 1044, 310, 429, 473, 315, 437, 452, - 305, 400, 426, 0, 0, 301, 458, 436, 382, 359, - 360, 300, 0, 420, 334, 350, 331, 398, 0, 457, - 485, 330, 476, 1031, 468, 303, 1030, 467, 397, 454, - 459, 383, 376, 0, 302, 456, 381, 375, 363, 340, - 501, 364, 365, 354, 409, 373, 410, 355, 387, 386, - 388, 0, 0, 0, 0, 0, 496, 497, 0, 0, - 645, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 627, 0, 0, 631, 0, 470, 0, 0, - 0, 0, 0, 0, 440, 0, 0, 366, 0, 0, - 0, 486, 0, 423, 403, 659, 0, 0, 421, 371, - 455, 411, 461, 442, 469, 1048, 412, 294, 443, 333, - 384, 306, 308, 328, 335, 337, 341, 342, 393, 394, - 406, 428, 445, 446, 447, 332, 316, 422, 317, 352, - 318, 295, 324, 322, 325, 430, 326, 297, 407, 451, - 0, 347, 418, 379, 298, 378, 408, 450, 449, 307, - 477, 483, 484, 573, 0, 489, 660, 661, 662, 498, - 0, 413, 503, 504, 505, 507, 508, 509, 510, 574, - 591, 558, 528, 491, 582, 525, 529, 530, 357, 594, - 0, 0, 0, 482, 367, 368, 0, 339, 338, 380, - 416, 345, 291, 292, 655, 329, 399, 596, 629, 630, - 521, 0, 583, 522, 531, 321, 555, 567, 566, 395, - 481, 0, 578, 581, 511, 654, 0, 575, 590, 658, - 589, 651, 405, 0, 427, 587, 534, 0, 579, 553, - 0, 580, 549, 584, 0, 523, 0, 435, 463, 475, - 492, 495, 524, 609, 610, 611, 296, 494, 613, 614, - 615, 616, 617, 618, 1049, 612, 466, 556, 533, 559, - 474, 536, 535, 0, 0, 570, 1052, 571, 572, 389, - 390, 391, 392, 349, 597, 1047, 493, 415, 0, 557, - 0, 0, 0, 0, 0, 0, 0, 0, 562, 563, - 560, 663, 0, 620, 621, 0, 0, 487, 488, 344, - 351, 506, 353, 313, 404, 346, 472, 361, 0, 499, - 564, 500, 623, 626, 624, 625, 1059, 1045, 1055, 1046, - 362, 372, 419, 471, 402, 424, 311, 462, 433, 1056, - 550, 577, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 280, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 605, 604, - 603, 602, 601, 600, 599, 598, 0, 0, 547, 448, - 323, 285, 319, 320, 327, 652, 649, 453, 653, 0, - 293, 527, 370, 0, 414, 343, 592, 593, 0, 644, - 241, 242, 243, 244, 245, 246, 247, 248, 286, 249, - 250, 251, 252, 253, 254, 255, 258, 259, 260, 261, - 262, 263, 264, 265, 595, 256, 257, 266, 267, 268, - 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, - 279, 0, 0, 0, 287, 288, 289, 290, 0, 0, - 281, 282, 283, 284, 0, 0, 0, 478, 479, 480, - 502, 0, 464, 526, 650, 0, 0, 0, 0, 0, - 0, 0, 576, 588, 622, 0, 632, 633, 635, 637, - 636, 639, 438, 439, 0, 641, 642, 643, 640, 1043, - 425, 444, 432, 206, 656, 517, 518, 657, 628, 0, - 0, 0, 0, 401, 0, 0, 532, 565, 554, 638, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 299, 441, 1047, 310, 429, 473, 315, + 437, 452, 305, 400, 426, 0, 0, 301, 458, 436, + 382, 359, 360, 300, 0, 420, 334, 350, 331, 398, + 0, 457, 485, 330, 476, 1034, 468, 303, 1033, 467, + 397, 454, 459, 383, 376, 0, 302, 456, 381, 375, + 363, 340, 501, 364, 365, 354, 409, 373, 410, 355, + 387, 386, 388, 0, 0, 0, 0, 0, 496, 497, + 0, 0, 645, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 627, 0, 0, 631, 0, 470, + 0, 0, 0, 0, 0, 0, 440, 0, 0, 366, + 0, 0, 0, 486, 0, 423, 403, 659, 0, 0, + 421, 371, 455, 411, 461, 442, 469, 1051, 412, 294, + 443, 333, 384, 306, 308, 328, 335, 337, 341, 342, + 393, 394, 406, 428, 445, 446, 447, 332, 316, 422, + 317, 352, 318, 295, 324, 322, 325, 430, 326, 297, + 407, 451, 0, 347, 418, 379, 298, 378, 408, 450, + 449, 307, 477, 483, 484, 573, 0, 489, 660, 661, + 662, 498, 0, 413, 503, 504, 505, 507, 508, 509, + 510, 574, 591, 558, 528, 491, 582, 525, 529, 530, + 357, 594, 0, 0, 0, 482, 367, 368, 0, 339, + 338, 380, 416, 345, 291, 292, 655, 329, 399, 596, + 629, 630, 521, 0, 583, 522, 531, 321, 555, 567, + 566, 395, 481, 0, 578, 581, 511, 654, 0, 575, + 590, 658, 589, 651, 405, 0, 427, 587, 534, 0, + 579, 553, 0, 580, 549, 584, 0, 523, 0, 435, + 463, 475, 492, 495, 524, 609, 610, 611, 296, 494, + 613, 614, 615, 616, 617, 618, 1052, 612, 466, 556, + 533, 559, 474, 536, 535, 0, 0, 570, 1055, 571, + 572, 389, 390, 391, 392, 349, 597, 1050, 493, 415, + 0, 557, 0, 0, 0, 0, 0, 0, 0, 0, + 562, 563, 560, 663, 0, 620, 621, 0, 0, 487, + 488, 344, 351, 506, 353, 313, 404, 346, 472, 361, + 0, 499, 564, 500, 623, 626, 624, 625, 1062, 1048, + 1058, 1049, 362, 372, 419, 471, 402, 424, 311, 462, + 433, 1059, 550, 577, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 280, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 605, 604, 603, 602, 601, 600, 599, 598, 0, 0, + 547, 448, 323, 285, 319, 320, 327, 652, 649, 453, + 653, 0, 293, 527, 370, 0, 414, 343, 592, 593, + 0, 644, 241, 242, 243, 244, 245, 246, 247, 248, + 286, 249, 250, 251, 252, 253, 254, 255, 258, 259, + 260, 261, 262, 263, 264, 265, 595, 256, 257, 266, + 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, + 277, 278, 279, 0, 0, 0, 287, 288, 289, 290, + 0, 0, 281, 282, 283, 284, 0, 0, 0, 478, + 479, 480, 502, 0, 464, 526, 650, 0, 0, 0, + 0, 0, 0, 0, 576, 588, 622, 0, 632, 633, + 635, 637, 636, 639, 438, 439, 0, 641, 642, 643, + 640, 1046, 425, 444, 432, 206, 656, 517, 518, 657, + 628, 0, 0, 0, 0, 401, 0, 0, 532, 565, + 554, 638, 520, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 336, 0, 0, 369, 569, 551, 561, + 552, 537, 538, 539, 546, 348, 540, 541, 542, 512, + 543, 513, 544, 545, 140, 568, 519, 434, 385, 586, + 585, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 2076, 0, + 0, 228, 0, 0, 0, 0, 0, 0, 309, 229, + 514, 634, 516, 515, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 312, 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, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 299, 441, 460, 310, 429, + 473, 315, 437, 452, 305, 400, 426, 0, 0, 301, + 458, 436, 382, 359, 360, 300, 0, 420, 334, 350, + 331, 398, 0, 457, 485, 330, 476, 0, 468, 303, + 0, 467, 397, 454, 459, 383, 376, 0, 302, 456, + 381, 375, 363, 340, 501, 364, 365, 354, 409, 373, + 410, 355, 387, 386, 388, 0, 0, 0, 0, 0, + 496, 497, 0, 0, 645, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 627, 0, 0, 631, + 0, 470, 0, 0, 0, 0, 0, 0, 440, 0, + 0, 366, 0, 0, 0, 486, 0, 423, 403, 659, + 0, 0, 421, 371, 455, 411, 461, 442, 469, 417, + 412, 294, 443, 333, 384, 306, 308, 328, 335, 337, + 341, 342, 393, 394, 406, 428, 445, 446, 447, 332, + 316, 422, 317, 352, 318, 295, 324, 322, 325, 430, + 326, 297, 407, 451, 0, 347, 418, 379, 298, 378, + 408, 450, 449, 307, 477, 483, 484, 573, 0, 489, + 660, 661, 662, 498, 0, 413, 503, 504, 505, 507, + 508, 509, 510, 574, 591, 558, 528, 491, 582, 525, + 529, 530, 357, 594, 0, 0, 0, 482, 367, 368, + 0, 339, 338, 380, 416, 345, 291, 292, 655, 329, + 399, 596, 629, 630, 521, 0, 583, 522, 531, 321, + 555, 567, 566, 395, 481, 0, 578, 581, 511, 654, + 0, 575, 590, 658, 589, 651, 405, 0, 427, 587, + 534, 0, 579, 553, 0, 580, 549, 584, 0, 523, + 0, 435, 463, 475, 492, 495, 524, 609, 610, 611, + 296, 494, 613, 614, 615, 616, 617, 618, 619, 612, + 466, 556, 533, 559, 474, 536, 535, 0, 0, 570, + 490, 571, 572, 389, 390, 391, 392, 349, 597, 314, + 493, 415, 0, 557, 0, 0, 0, 0, 0, 0, + 0, 0, 562, 563, 560, 663, 0, 620, 621, 0, + 0, 487, 488, 344, 351, 506, 353, 313, 404, 346, + 472, 361, 0, 499, 564, 500, 623, 626, 624, 625, + 396, 356, 358, 431, 362, 372, 419, 471, 402, 424, + 311, 462, 433, 377, 550, 577, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 280, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 605, 604, 603, 602, 601, 600, 599, 598, + 0, 0, 547, 448, 323, 285, 319, 320, 327, 652, + 649, 453, 653, 0, 293, 527, 370, 169, 414, 343, + 592, 593, 0, 644, 241, 242, 243, 244, 245, 246, + 247, 248, 286, 249, 250, 251, 252, 253, 254, 255, + 258, 259, 260, 261, 262, 263, 264, 265, 595, 256, + 257, 266, 267, 268, 269, 270, 271, 272, 273, 274, + 275, 276, 277, 278, 279, 0, 0, 0, 287, 288, + 289, 290, 0, 0, 281, 282, 283, 284, 0, 0, + 0, 478, 479, 480, 502, 0, 464, 526, 650, 0, + 0, 0, 0, 0, 0, 0, 576, 588, 622, 0, + 632, 633, 635, 637, 636, 639, 438, 439, 0, 641, + 642, 643, 640, 374, 425, 444, 432, 0, 656, 517, + 518, 657, 628, 401, 0, 0, 532, 565, 554, 638, 520, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 336, 0, 0, 369, 569, 551, 561, 552, 537, 538, 539, 546, 348, 540, 541, 542, 512, 543, 513, - 544, 545, 140, 568, 519, 434, 385, 586, 585, 0, + 544, 545, 0, 568, 519, 434, 385, 586, 585, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 2067, 0, 0, 228, - 0, 0, 0, 0, 0, 0, 309, 229, 514, 634, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 228, + 1060, 1061, 0, 0, 0, 0, 309, 229, 514, 634, 516, 515, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 312, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1064, 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, @@ -4068,7 +4224,7 @@ var yyAct = [...]int{ 0, 0, 0, 299, 441, 460, 310, 429, 473, 315, 437, 452, 305, 400, 426, 0, 0, 301, 458, 436, 382, 359, 360, 300, 0, 420, 334, 350, 331, 398, - 0, 457, 485, 330, 476, 0, 468, 303, 0, 467, + 0, 457, 485, 330, 476, 1034, 468, 303, 1033, 467, 397, 454, 459, 383, 376, 0, 302, 456, 381, 375, 363, 340, 501, 364, 365, 354, 409, 373, 410, 355, 387, 386, 388, 0, 0, 0, 0, 0, 496, 497, @@ -4097,14 +4253,14 @@ var yyAct = [...]int{ 0, 557, 0, 0, 0, 0, 0, 0, 0, 0, 562, 563, 560, 663, 0, 620, 621, 0, 0, 487, 488, 344, 351, 506, 353, 313, 404, 346, 472, 361, - 0, 499, 564, 500, 623, 626, 624, 625, 396, 356, - 358, 431, 362, 372, 419, 471, 402, 424, 311, 462, - 433, 377, 550, 577, 0, 0, 0, 0, 0, 0, + 0, 499, 564, 500, 623, 626, 624, 625, 1062, 2097, + 1058, 2098, 362, 372, 419, 471, 402, 424, 311, 462, + 433, 1059, 550, 577, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 280, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 605, 604, 603, 602, 601, 600, 599, 598, 0, 0, 547, 448, 323, 285, 319, 320, 327, 652, 649, 453, - 653, 0, 293, 527, 370, 169, 414, 343, 592, 593, + 653, 0, 293, 527, 370, 0, 414, 343, 592, 593, 0, 644, 241, 242, 243, 244, 245, 246, 247, 248, 286, 249, 250, 251, 252, 253, 254, 255, 258, 259, 260, 261, 262, 263, 264, 265, 595, 256, 257, 266, @@ -4116,14 +4272,14 @@ var yyAct = [...]int{ 635, 637, 636, 639, 438, 439, 0, 641, 642, 643, 640, 374, 425, 444, 432, 0, 656, 517, 518, 657, 628, 401, 0, 0, 532, 565, 554, 638, 520, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 336, + 0, 2989, 0, 0, 0, 0, 0, 0, 0, 336, 0, 0, 369, 569, 551, 561, 552, 537, 538, 539, 546, 348, 540, 541, 542, 512, 543, 513, 544, 545, 0, 568, 519, 434, 385, 586, 585, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 228, 1057, 1058, + 0, 0, 0, 0, 0, 0, 0, 228, 0, 0, 0, 0, 0, 0, 309, 229, 514, 634, 516, 515, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1061, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 312, 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, @@ -4132,12 +4288,12 @@ var yyAct = [...]int{ 0, 299, 441, 460, 310, 429, 473, 315, 437, 452, 305, 400, 426, 0, 0, 301, 458, 436, 382, 359, 360, 300, 0, 420, 334, 350, 331, 398, 0, 457, - 485, 330, 476, 1031, 468, 303, 1030, 467, 397, 454, + 485, 330, 476, 0, 468, 303, 0, 467, 397, 454, 459, 383, 376, 0, 302, 456, 381, 375, 363, 340, 501, 364, 365, 354, 409, 373, 410, 355, 387, 386, 388, 0, 0, 0, 0, 0, 496, 497, 0, 0, - 645, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 627, 0, 0, 631, 0, 470, 0, 0, + 645, 0, 0, 0, 0, 0, 0, 2992, 0, 0, + 0, 2991, 627, 0, 0, 631, 0, 470, 0, 0, 0, 0, 0, 0, 440, 0, 0, 366, 0, 0, 0, 486, 0, 423, 403, 659, 0, 0, 421, 371, 455, 411, 461, 442, 469, 417, 412, 294, 443, 333, @@ -4161,8 +4317,8 @@ var yyAct = [...]int{ 0, 0, 0, 0, 0, 0, 0, 0, 562, 563, 560, 663, 0, 620, 621, 0, 0, 487, 488, 344, 351, 506, 353, 313, 404, 346, 472, 361, 0, 499, - 564, 500, 623, 626, 624, 625, 1059, 2088, 1055, 2089, - 362, 372, 419, 471, 402, 424, 311, 462, 433, 1056, + 564, 500, 623, 626, 624, 625, 396, 356, 358, 431, + 362, 372, 419, 471, 402, 424, 311, 462, 433, 377, 550, 577, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 280, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 605, 604, @@ -4179,20 +4335,20 @@ var yyAct = [...]int{ 0, 0, 576, 588, 622, 0, 632, 633, 635, 637, 636, 639, 438, 439, 0, 641, 642, 643, 640, 374, 425, 444, 432, 0, 656, 517, 518, 657, 628, 401, - 0, 0, 532, 565, 554, 638, 520, 0, 0, 2975, - 0, 0, 0, 0, 0, 0, 0, 336, 0, 0, + 0, 0, 532, 565, 554, 638, 520, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 336, 1562, 0, 369, 569, 551, 561, 552, 537, 538, 539, 546, 348, 540, 541, 542, 512, 543, 513, 544, 545, 0, 568, 519, 434, 385, 586, 585, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 228, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 228, 0, 0, 1560, 0, 0, 0, 309, 229, 514, 634, 516, 515, 0, 0, 0, 0, 0, 0, 0, 0, 0, 312, 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, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 299, + 0, 0, 1558, 0, 0, 0, 0, 0, 0, 299, 441, 460, 310, 429, 473, 315, 437, 452, 305, 400, 426, 0, 0, 301, 458, 436, 382, 359, 360, 300, 0, 420, 334, 350, 331, 398, 0, 457, 485, 330, @@ -4200,7 +4356,7 @@ var yyAct = [...]int{ 376, 0, 302, 456, 381, 375, 363, 340, 501, 364, 365, 354, 409, 373, 410, 355, 387, 386, 388, 0, 0, 0, 0, 0, 496, 497, 0, 0, 645, 0, - 0, 0, 0, 0, 0, 2978, 0, 0, 0, 2977, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 627, 0, 0, 631, 0, 470, 0, 0, 0, 0, 0, 0, 440, 0, 0, 366, 0, 0, 0, 486, 0, 423, 403, 659, 0, 0, 421, 371, 455, 411, @@ -4249,14 +4405,14 @@ var yyAct = [...]int{ 542, 512, 543, 513, 544, 545, 0, 568, 519, 434, 385, 586, 585, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 228, 0, 0, 1554, 0, 0, 0, + 0, 0, 0, 228, 0, 0, 1560, 0, 0, 0, 309, 229, 514, 634, 516, 515, 0, 0, 0, 0, 0, 0, 0, 0, 0, 312, 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, 0, 0, - 1552, 0, 0, 0, 0, 0, 0, 299, 441, 460, + 1558, 0, 0, 0, 0, 0, 0, 299, 441, 460, 310, 429, 473, 315, 437, 452, 305, 400, 426, 0, 0, 301, 458, 436, 382, 359, 360, 300, 0, 420, 334, 350, 331, 398, 0, 457, 485, 330, 476, 0, @@ -4308,18 +4464,18 @@ var yyAct = [...]int{ 0, 641, 642, 643, 640, 374, 425, 444, 432, 0, 656, 517, 518, 657, 628, 401, 0, 0, 532, 565, 554, 638, 520, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 336, 1550, 0, 369, 569, 551, 561, + 0, 0, 671, 336, 0, 0, 369, 569, 551, 561, 552, 537, 538, 539, 546, 348, 540, 541, 542, 512, 543, 513, 544, 545, 0, 568, 519, 434, 385, 586, 585, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 228, 0, 0, 1554, 0, 0, 0, 309, 229, + 0, 228, 0, 0, 0, 0, 0, 0, 309, 229, 514, 634, 516, 515, 0, 0, 0, 0, 0, 0, 0, 0, 0, 312, 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, 0, 0, 1552, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 299, 441, 460, 310, 429, 473, 315, 437, 452, 305, 400, 426, 0, 0, 301, 458, 436, 382, 359, 360, 300, 0, 420, 334, 350, @@ -4329,7 +4485,7 @@ var yyAct = [...]int{ 410, 355, 387, 386, 388, 0, 0, 0, 0, 0, 496, 497, 0, 0, 645, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 627, 0, 0, 631, - 0, 470, 0, 0, 0, 0, 0, 0, 440, 0, + 0, 470, 0, 669, 0, 0, 0, 0, 440, 0, 0, 366, 0, 0, 0, 486, 0, 423, 403, 659, 0, 0, 421, 371, 455, 411, 461, 442, 469, 417, 412, 294, 443, 333, 384, 306, 308, 328, 335, 337, @@ -4368,7 +4524,7 @@ var yyAct = [...]int{ 289, 290, 0, 0, 281, 282, 283, 284, 0, 0, 0, 478, 479, 480, 502, 0, 464, 526, 650, 0, 0, 0, 0, 0, 0, 0, 576, 588, 622, 0, - 632, 633, 635, 637, 636, 639, 438, 439, 0, 641, + 632, 633, 635, 637, 636, 639, 438, 439, 670, 641, 642, 643, 640, 374, 425, 444, 432, 0, 656, 517, 518, 657, 628, 401, 0, 0, 532, 565, 554, 638, 520, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -4376,8 +4532,8 @@ var yyAct = [...]int{ 538, 539, 546, 348, 540, 541, 542, 512, 543, 513, 544, 545, 0, 568, 519, 434, 385, 586, 585, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 4064, 0, 228, - 853, 0, 0, 0, 0, 0, 309, 229, 514, 634, + 0, 0, 0, 0, 0, 0, 0, 4084, 0, 228, + 855, 0, 0, 0, 0, 0, 309, 229, 514, 634, 516, 515, 0, 0, 0, 0, 0, 0, 0, 0, 0, 312, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -4441,13 +4597,13 @@ var yyAct = [...]int{ 0, 568, 519, 434, 385, 586, 585, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 228, 0, 0, - 1554, 0, 0, 0, 309, 229, 514, 634, 516, 515, + 1560, 0, 0, 0, 309, 229, 514, 634, 516, 515, 0, 0, 0, 0, 0, 0, 0, 0, 0, 312, 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, 0, 0, 1552, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1558, 0, 0, 0, 0, 0, 0, 299, 441, 460, 310, 429, 473, 315, 437, 452, 305, 400, 426, 0, 0, 301, 458, 436, 382, 359, 360, 300, 0, 420, 334, 350, 331, 398, 0, 457, @@ -4528,7 +4684,7 @@ var yyAct = [...]int{ 445, 446, 447, 332, 316, 422, 317, 352, 318, 295, 324, 322, 325, 430, 326, 297, 407, 451, 0, 347, 418, 379, 298, 378, 408, 450, 449, 307, 477, 483, - 484, 573, 0, 489, 660, 661, 662, 498, 2487, 413, + 484, 573, 0, 489, 660, 661, 662, 498, 2499, 413, 503, 504, 505, 507, 508, 509, 510, 574, 591, 558, 528, 491, 582, 525, 529, 530, 357, 594, 0, 0, 0, 482, 367, 368, 0, 339, 338, 380, 416, 345, @@ -4549,7 +4705,7 @@ var yyAct = [...]int{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 280, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 605, 604, 603, 602, - 601, 600, 599, 598, 979, 0, 547, 448, 323, 285, + 601, 600, 599, 598, 982, 0, 547, 448, 323, 285, 319, 320, 327, 652, 649, 453, 653, 0, 293, 527, 370, 0, 414, 343, 592, 593, 0, 644, 241, 242, 243, 244, 245, 246, 247, 248, 286, 249, 250, 251, @@ -4568,14 +4724,14 @@ var yyAct = [...]int{ 542, 512, 543, 513, 544, 545, 0, 568, 519, 434, 385, 586, 585, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 228, 0, 0, 1554, 0, 0, 0, + 0, 0, 0, 228, 0, 0, 1560, 0, 0, 0, 309, 229, 514, 634, 516, 515, 0, 0, 0, 0, 0, 0, 0, 0, 0, 312, 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, 0, 0, - 1764, 0, 0, 0, 0, 0, 0, 299, 441, 460, + 1772, 0, 0, 0, 0, 0, 0, 299, 441, 460, 310, 429, 473, 315, 437, 452, 305, 400, 426, 0, 0, 301, 458, 436, 382, 359, 360, 300, 0, 420, 334, 350, 331, 398, 0, 457, 485, 330, 476, 0, @@ -4626,13 +4782,13 @@ var yyAct = [...]int{ 622, 0, 632, 633, 635, 637, 636, 639, 438, 439, 0, 641, 642, 643, 640, 374, 425, 444, 432, 0, 656, 517, 518, 657, 628, 401, 0, 0, 532, 565, - 554, 638, 520, 0, 0, 0, 0, 0, 2526, 0, + 554, 638, 520, 0, 0, 0, 0, 0, 2538, 0, 0, 0, 0, 336, 0, 0, 369, 569, 551, 561, 552, 537, 538, 539, 546, 348, 540, 541, 542, 512, 543, 513, 544, 545, 0, 568, 519, 434, 385, 586, 585, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 228, 0, 0, 2528, 0, 0, 0, 309, 229, + 0, 228, 0, 0, 2540, 0, 0, 0, 309, 229, 514, 634, 516, 515, 0, 0, 0, 0, 0, 0, 0, 0, 0, 312, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -4690,13 +4846,13 @@ var yyAct = [...]int{ 632, 633, 635, 637, 636, 639, 438, 439, 0, 641, 642, 643, 640, 374, 425, 444, 432, 0, 656, 517, 518, 657, 628, 401, 0, 0, 532, 565, 554, 638, - 520, 0, 0, 0, 0, 0, 2135, 0, 0, 0, + 520, 0, 0, 0, 0, 0, 2144, 0, 0, 0, 0, 336, 0, 0, 369, 569, 551, 561, 552, 537, 538, 539, 546, 348, 540, 541, 542, 512, 543, 513, 544, 545, 0, 568, 519, 434, 385, 586, 585, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 228, - 0, 0, 2136, 0, 0, 0, 309, 229, 514, 634, + 0, 0, 2145, 0, 0, 0, 309, 229, 514, 634, 516, 515, 0, 0, 0, 0, 0, 0, 0, 0, 0, 312, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -4760,7 +4916,7 @@ var yyAct = [...]int{ 0, 568, 519, 434, 385, 586, 585, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 228, 0, 0, - 3194, 3196, 0, 0, 309, 229, 514, 634, 516, 515, + 3208, 3210, 0, 0, 309, 229, 514, 634, 516, 515, 0, 0, 0, 0, 0, 0, 0, 0, 0, 312, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -4818,12 +4974,12 @@ var yyAct = [...]int{ 636, 639, 438, 439, 0, 641, 642, 643, 640, 374, 425, 444, 432, 0, 656, 517, 518, 657, 628, 401, 0, 0, 532, 565, 554, 638, 520, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 336, 2549, 0, + 0, 0, 0, 0, 0, 0, 0, 336, 2561, 0, 369, 569, 551, 561, 552, 537, 538, 539, 546, 348, 540, 541, 542, 512, 543, 513, 544, 545, 0, 568, 519, 434, 385, 586, 585, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 228, 0, 0, 1554, 0, + 0, 0, 0, 0, 0, 228, 0, 0, 1560, 0, 0, 0, 309, 229, 514, 634, 516, 515, 0, 0, 0, 0, 0, 0, 0, 0, 0, 312, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -4882,7 +5038,7 @@ var yyAct = [...]int{ 438, 439, 0, 641, 642, 643, 640, 374, 425, 444, 432, 0, 656, 517, 518, 657, 628, 401, 0, 0, 532, 565, 554, 638, 520, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 670, 336, 0, 0, 369, 569, + 0, 0, 0, 0, 671, 336, 0, 0, 369, 569, 551, 561, 552, 537, 538, 539, 546, 348, 540, 541, 542, 512, 543, 513, 544, 545, 0, 568, 519, 434, 385, 586, 585, 0, 0, 0, 0, 0, 0, 0, @@ -4903,7 +5059,7 @@ var yyAct = [...]int{ 409, 373, 410, 355, 387, 386, 388, 0, 0, 0, 0, 0, 496, 497, 0, 0, 645, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 627, 0, - 0, 631, 0, 470, 0, 669, 0, 0, 0, 0, + 0, 631, 0, 470, 0, 0, 0, 0, 0, 0, 440, 0, 0, 366, 0, 0, 0, 486, 0, 423, 403, 659, 0, 0, 421, 371, 455, 411, 461, 442, 469, 417, 412, 294, 443, 333, 384, 306, 308, 328, @@ -4943,7 +5099,7 @@ var yyAct = [...]int{ 0, 0, 0, 478, 479, 480, 502, 0, 464, 526, 650, 0, 0, 0, 0, 0, 0, 0, 576, 588, 622, 0, 632, 633, 635, 637, 636, 639, 438, 439, - 0, 641, 642, 643, 640, 374, 425, 444, 432, 0, + 675, 641, 642, 643, 640, 374, 425, 444, 432, 0, 656, 517, 518, 657, 628, 401, 0, 0, 532, 565, 554, 638, 520, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 336, 0, 0, 369, 569, 551, 561, @@ -4951,7 +5107,7 @@ var yyAct = [...]int{ 543, 513, 544, 545, 0, 568, 519, 434, 385, 586, 585, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 228, 853, 0, 0, 0, 0, 0, 309, 229, + 0, 228, 855, 0, 0, 0, 0, 0, 309, 229, 514, 634, 516, 515, 0, 0, 0, 0, 0, 0, 0, 0, 0, 312, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -5014,7 +5170,7 @@ var yyAct = [...]int{ 538, 539, 546, 348, 540, 541, 542, 512, 543, 513, 544, 545, 0, 568, 519, 434, 385, 586, 585, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 4041, 0, 0, 228, + 0, 0, 0, 0, 0, 0, 4061, 0, 0, 228, 0, 0, 0, 0, 0, 0, 309, 229, 514, 634, 516, 515, 0, 0, 0, 0, 0, 0, 0, 0, 0, 312, 0, 0, 0, 0, 0, 0, 0, 0, @@ -5079,7 +5235,7 @@ var yyAct = [...]int{ 0, 568, 519, 434, 385, 586, 585, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 228, 0, 0, - 3800, 0, 0, 0, 309, 229, 514, 634, 516, 515, + 3817, 0, 0, 0, 309, 229, 514, 634, 516, 515, 0, 0, 0, 0, 0, 0, 0, 0, 0, 312, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -5158,7 +5314,7 @@ var yyAct = [...]int{ 365, 354, 409, 373, 410, 355, 387, 386, 388, 0, 0, 0, 0, 0, 496, 497, 0, 0, 645, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 627, 0, 0, 631, 0, 470, 0, 0, 0, 3934, + 627, 0, 0, 631, 0, 470, 0, 0, 0, 3953, 0, 0, 440, 0, 0, 366, 0, 0, 0, 486, 0, 423, 403, 659, 0, 0, 421, 371, 455, 411, 461, 442, 469, 417, 412, 294, 443, 333, 384, 306, @@ -5206,7 +5362,7 @@ var yyAct = [...]int{ 542, 512, 543, 513, 544, 545, 0, 568, 519, 434, 385, 586, 585, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1778, 0, 0, 228, 0, 0, 0, 0, 0, 0, + 1786, 0, 0, 228, 0, 0, 0, 0, 0, 0, 309, 229, 514, 634, 516, 515, 0, 0, 0, 0, 0, 0, 0, 0, 0, 312, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -5269,7 +5425,7 @@ var yyAct = [...]int{ 552, 537, 538, 539, 546, 348, 540, 541, 542, 512, 543, 513, 544, 545, 0, 568, 519, 434, 385, 586, 585, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 3815, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 3833, 0, 228, 0, 0, 0, 0, 0, 0, 309, 229, 514, 634, 516, 515, 0, 0, 0, 0, 0, 0, 0, 0, 0, 312, 0, 0, 0, 0, 0, 0, @@ -5350,7 +5506,7 @@ var yyAct = [...]int{ 387, 386, 388, 0, 0, 0, 0, 0, 496, 497, 0, 0, 645, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 627, 0, 0, 631, 0, 470, - 0, 0, 0, 3726, 0, 0, 440, 0, 0, 366, + 0, 0, 0, 3743, 0, 0, 440, 0, 0, 366, 0, 0, 0, 486, 0, 423, 403, 659, 0, 0, 421, 371, 455, 411, 461, 442, 469, 417, 412, 294, 443, 333, 384, 306, 308, 328, 335, 337, 341, 342, @@ -5398,7 +5554,7 @@ var yyAct = [...]int{ 0, 568, 519, 434, 385, 586, 585, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 228, 0, 0, - 3226, 0, 0, 0, 309, 229, 514, 634, 516, 515, + 3240, 0, 0, 0, 309, 229, 514, 634, 516, 515, 0, 0, 0, 0, 0, 0, 0, 0, 0, 312, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -5467,7 +5623,7 @@ var yyAct = [...]int{ 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, 3244, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 3258, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 299, 441, 460, 310, 429, 473, 315, 437, 452, 305, 400, 426, 0, 0, 301, 458, 436, 382, 359, 360, 300, @@ -5525,7 +5681,7 @@ var yyAct = [...]int{ 542, 512, 543, 513, 544, 545, 0, 568, 519, 434, 385, 586, 585, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 2067, 0, 0, 228, 0, 0, 0, 0, 0, 0, + 2076, 0, 0, 228, 0, 0, 0, 0, 0, 0, 309, 229, 514, 634, 516, 515, 0, 0, 0, 0, 0, 0, 0, 0, 0, 312, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -5583,7 +5739,7 @@ var yyAct = [...]int{ 622, 0, 632, 633, 635, 637, 636, 639, 438, 439, 0, 641, 642, 643, 640, 374, 425, 444, 432, 0, 656, 517, 518, 657, 628, 401, 0, 0, 532, 565, - 554, 638, 520, 0, 0, 3441, 0, 0, 0, 0, + 554, 638, 520, 0, 0, 3456, 0, 0, 0, 0, 0, 0, 0, 336, 0, 0, 369, 569, 551, 561, 552, 537, 538, 539, 546, 348, 540, 541, 542, 512, 543, 513, 544, 545, 0, 568, 519, 434, 385, 586, @@ -5658,7 +5814,7 @@ var yyAct = [...]int{ 0, 312, 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, 3354, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 3369, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 299, 441, 460, 310, 429, 473, 315, 437, 452, 305, 400, 426, 0, 0, 301, 458, 436, @@ -5722,7 +5878,7 @@ var yyAct = [...]int{ 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, 3083, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 3097, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 299, 441, 460, 310, 429, 473, 315, 437, 452, 305, 400, 426, 0, 0, 301, 458, 436, 382, 359, @@ -5780,7 +5936,7 @@ var yyAct = [...]int{ 540, 541, 542, 512, 543, 513, 544, 545, 0, 568, 519, 434, 385, 586, 585, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 228, 0, 0, 1554, 0, + 0, 0, 0, 0, 0, 228, 0, 0, 1560, 0, 0, 0, 309, 229, 514, 634, 516, 515, 0, 0, 0, 0, 0, 0, 0, 0, 0, 312, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -5844,7 +6000,7 @@ var yyAct = [...]int{ 542, 512, 543, 513, 544, 545, 0, 568, 519, 434, 385, 586, 585, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 228, 0, 0, 2528, 0, 0, 0, + 0, 0, 0, 228, 0, 0, 2540, 0, 0, 0, 309, 229, 514, 634, 516, 515, 0, 0, 0, 0, 0, 0, 0, 0, 0, 312, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -5902,7 +6058,7 @@ var yyAct = [...]int{ 622, 0, 632, 633, 635, 637, 636, 639, 438, 439, 0, 641, 642, 643, 640, 374, 425, 444, 432, 0, 656, 517, 518, 657, 628, 401, 0, 0, 532, 565, - 554, 638, 520, 0, 0, 2894, 0, 0, 0, 0, + 554, 638, 520, 0, 0, 2908, 0, 0, 0, 0, 0, 0, 0, 336, 0, 0, 369, 569, 551, 561, 552, 537, 538, 539, 546, 348, 540, 541, 542, 512, 543, 513, 544, 545, 0, 568, 519, 434, 385, 586, @@ -5977,7 +6133,7 @@ var yyAct = [...]int{ 0, 312, 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, 2205, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 2216, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 299, 441, 460, 310, 429, 473, 315, 437, 452, 305, 400, 426, 0, 0, 301, 458, 436, @@ -6036,7 +6192,7 @@ var yyAct = [...]int{ 0, 568, 519, 434, 385, 586, 585, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 228, 0, 0, - 2645, 0, 0, 0, 309, 229, 514, 634, 516, 515, + 2658, 0, 0, 0, 309, 229, 514, 634, 516, 515, 0, 0, 0, 0, 0, 0, 0, 0, 0, 312, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -6105,7 +6261,7 @@ var yyAct = [...]int{ 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, 2607, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 2619, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 299, 441, 460, 310, 429, 473, 315, 437, 452, 305, 400, 426, 0, 0, 301, 458, 436, 382, 359, 360, 300, @@ -6163,7 +6319,7 @@ var yyAct = [...]int{ 542, 512, 543, 513, 544, 545, 0, 568, 519, 434, 385, 586, 585, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 228, 0, 0, 2605, 0, 0, 0, + 0, 0, 0, 228, 0, 0, 2617, 0, 0, 0, 309, 229, 514, 634, 516, 515, 0, 0, 0, 0, 0, 0, 0, 0, 0, 312, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -6219,7 +6375,7 @@ var yyAct = [...]int{ 0, 0, 0, 478, 479, 480, 502, 0, 464, 526, 650, 0, 0, 0, 0, 0, 0, 0, 576, 588, 622, 0, 632, 633, 635, 637, 636, 639, 438, 439, - 0, 641, 642, 643, 640, 374, 425, 444, 432, 2375, + 0, 641, 642, 643, 640, 374, 425, 444, 432, 2386, 656, 517, 518, 657, 628, 401, 0, 0, 532, 565, 554, 638, 520, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 336, 0, 0, 369, 569, 551, 561, @@ -6291,7 +6447,7 @@ var yyAct = [...]int{ 544, 545, 0, 568, 519, 434, 385, 586, 585, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 228, - 0, 0, 0, 1918, 0, 0, 309, 229, 514, 634, + 0, 0, 0, 1926, 0, 0, 309, 229, 514, 634, 516, 515, 0, 0, 0, 0, 0, 0, 0, 0, 0, 312, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -6349,7 +6505,7 @@ var yyAct = [...]int{ 635, 637, 636, 639, 438, 439, 0, 641, 642, 643, 640, 374, 425, 444, 432, 0, 656, 517, 518, 657, 628, 401, 0, 0, 532, 565, 554, 638, 520, 0, - 2049, 0, 0, 0, 0, 0, 0, 0, 0, 336, + 2058, 0, 0, 0, 0, 0, 0, 0, 0, 336, 0, 0, 369, 569, 551, 561, 552, 537, 538, 539, 546, 348, 540, 541, 542, 512, 543, 513, 544, 545, 0, 568, 519, 434, 385, 586, 585, 0, 0, 0, @@ -6418,7 +6574,7 @@ var yyAct = [...]int{ 540, 541, 542, 512, 543, 513, 544, 545, 0, 568, 519, 434, 385, 586, 585, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 228, 0, 0, 1554, 0, + 0, 0, 0, 0, 0, 228, 0, 0, 1560, 0, 0, 0, 309, 229, 514, 634, 516, 515, 0, 0, 0, 0, 0, 0, 0, 0, 0, 312, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -6437,7 +6593,7 @@ var yyAct = [...]int{ 627, 0, 0, 631, 0, 470, 0, 0, 0, 0, 0, 0, 440, 0, 0, 366, 0, 0, 0, 486, 0, 423, 403, 659, 0, 0, 421, 371, 455, 411, - 461, 442, 469, 1954, 412, 294, 443, 333, 384, 306, + 461, 442, 469, 1963, 412, 294, 443, 333, 384, 306, 308, 328, 335, 337, 341, 342, 393, 394, 406, 428, 445, 446, 447, 332, 316, 422, 317, 352, 318, 295, 324, 322, 325, 430, 326, 297, 407, 451, 0, 347, @@ -6498,7 +6654,7 @@ var yyAct = [...]int{ 409, 373, 410, 355, 387, 386, 388, 0, 0, 0, 0, 0, 496, 497, 0, 0, 645, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 627, 0, - 0, 631, 0, 470, 0, 0, 1583, 0, 0, 0, + 0, 631, 0, 470, 0, 0, 1589, 0, 0, 0, 440, 0, 0, 366, 0, 0, 0, 486, 0, 423, 403, 659, 0, 0, 421, 371, 455, 411, 461, 442, 469, 417, 412, 294, 443, 333, 384, 306, 308, 328, @@ -6541,7 +6697,7 @@ var yyAct = [...]int{ 0, 641, 642, 643, 640, 374, 425, 444, 432, 0, 656, 517, 518, 657, 628, 401, 0, 0, 532, 565, 554, 638, 520, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 670, 336, 0, 0, 369, 569, 551, 561, + 0, 0, 671, 336, 0, 0, 369, 569, 551, 561, 552, 537, 538, 539, 546, 348, 540, 541, 542, 512, 543, 513, 544, 545, 0, 568, 519, 434, 385, 586, 585, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -6625,7 +6781,7 @@ var yyAct = [...]int{ 363, 340, 501, 364, 365, 354, 409, 373, 410, 355, 387, 386, 388, 0, 0, 0, 0, 0, 496, 497, 0, 0, 645, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 627, 0, 680, 631, 0, 470, + 0, 0, 0, 0, 627, 0, 682, 631, 0, 470, 0, 0, 0, 0, 0, 0, 440, 0, 0, 366, 0, 0, 0, 486, 0, 423, 403, 659, 0, 0, 421, 371, 455, 411, 461, 442, 469, 417, 412, 294, @@ -6718,7 +6874,7 @@ var yyAct = [...]int{ 550, 577, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 280, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 605, 604, - 603, 602, 601, 600, 599, 598, 979, 0, 547, 448, + 603, 602, 601, 600, 599, 598, 982, 0, 547, 448, 323, 285, 319, 320, 327, 652, 649, 453, 653, 0, 293, 527, 370, 0, 414, 343, 592, 593, 0, 644, 241, 242, 243, 244, 245, 246, 247, 248, 286, 249, @@ -6823,7 +6979,7 @@ var yyAct = [...]int{ 469, 417, 412, 294, 443, 333, 384, 306, 308, 328, 335, 337, 341, 342, 393, 394, 406, 428, 445, 446, 447, 332, 316, 422, 317, 352, 318, 295, 324, 322, - 325, 430, 326, 297, 407, 451, 0, 347, 3172, 379, + 325, 430, 326, 297, 407, 451, 0, 347, 3186, 379, 298, 378, 408, 450, 449, 307, 477, 483, 484, 573, 0, 489, 660, 661, 662, 498, 0, 413, 503, 504, 505, 507, 508, 509, 510, 574, 591, 558, 528, 491, @@ -6873,7 +7029,7 @@ var yyAct = [...]int{ 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, 299, 441, 460, 310, 429, - 473, 315, 437, 1904, 305, 400, 426, 0, 0, 301, + 473, 315, 437, 1912, 305, 400, 426, 0, 0, 301, 458, 436, 382, 359, 360, 300, 0, 420, 334, 350, 331, 398, 0, 457, 485, 330, 476, 0, 468, 303, 0, 467, 397, 454, 459, 383, 376, 0, 302, 456, @@ -6936,7 +7092,7 @@ var yyAct = [...]int{ 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, 299, 441, 1533, 310, 429, 473, 315, + 0, 0, 0, 299, 441, 1539, 310, 429, 473, 315, 437, 452, 305, 400, 426, 0, 0, 301, 458, 436, 382, 359, 360, 300, 0, 420, 334, 350, 331, 398, 0, 457, 485, 330, 476, 0, 468, 303, 0, 467, @@ -7000,7 +7156,7 @@ var yyAct = [...]int{ 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, 299, 441, 1531, 310, 429, 473, 315, 437, 452, + 0, 299, 441, 1537, 310, 429, 473, 315, 437, 452, 305, 400, 426, 0, 0, 301, 458, 436, 382, 359, 360, 300, 0, 420, 334, 350, 331, 398, 0, 457, 485, 330, 476, 0, 468, 303, 0, 467, 397, 454, @@ -7064,7 +7220,7 @@ var yyAct = [...]int{ 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, 299, - 441, 460, 310, 429, 473, 315, 437, 1410, 305, 400, + 441, 460, 310, 429, 473, 315, 437, 1415, 305, 400, 426, 0, 0, 301, 458, 436, 382, 359, 360, 300, 0, 420, 334, 350, 331, 398, 0, 457, 485, 330, 476, 0, 468, 303, 0, 467, 397, 454, 459, 383, @@ -7139,7 +7295,7 @@ var yyAct = [...]int{ 0, 631, 0, 470, 0, 0, 0, 0, 0, 0, 440, 0, 0, 366, 0, 0, 0, 486, 0, 423, 403, 659, 0, 0, 421, 371, 455, 411, 461, 442, - 469, 417, 412, 294, 443, 333, 384, 306, 308, 748, + 469, 417, 412, 294, 443, 333, 384, 306, 308, 750, 335, 337, 341, 342, 393, 394, 406, 428, 445, 446, 447, 332, 316, 422, 317, 352, 318, 295, 324, 322, 325, 430, 326, 297, 407, 451, 0, 347, 418, 379, @@ -7202,7 +7358,7 @@ var yyAct = [...]int{ 0, 0, 0, 0, 0, 0, 627, 0, 0, 631, 0, 470, 0, 0, 0, 0, 0, 0, 440, 0, 0, 366, 0, 0, 0, 486, 0, 423, 403, 659, - 0, 0, 421, 371, 455, 411, 461, 442, 469, 705, + 0, 0, 421, 371, 455, 411, 461, 442, 469, 707, 412, 294, 443, 333, 384, 306, 308, 328, 335, 337, 341, 342, 393, 394, 406, 428, 445, 446, 447, 332, 316, 422, 317, 352, 318, 295, 324, 322, 325, 430, @@ -7217,7 +7373,7 @@ var yyAct = [...]int{ 0, 575, 590, 658, 589, 651, 405, 0, 427, 587, 534, 0, 579, 553, 0, 580, 549, 584, 0, 523, 0, 435, 463, 475, 492, 495, 524, 609, 610, 611, - 296, 494, 613, 614, 615, 616, 617, 618, 706, 612, + 296, 494, 613, 614, 615, 616, 617, 618, 708, 612, 466, 556, 533, 559, 474, 536, 535, 0, 0, 570, 490, 571, 572, 389, 390, 391, 392, 349, 597, 314, 493, 415, 0, 557, 0, 0, 0, 0, 0, 0, @@ -7227,7 +7383,7 @@ var yyAct = [...]int{ 396, 356, 358, 431, 362, 372, 419, 471, 402, 424, 311, 462, 433, 377, 550, 577, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 280, 0, 0, - 0, 0, 0, 0, 1139, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 605, 604, 603, 602, 601, 600, 599, 598, 0, 0, 547, 448, 323, 285, 319, 320, 327, 652, 649, 453, 653, 0, 293, 527, 370, 0, 414, 343, @@ -7236,130 +7392,96 @@ var yyAct = [...]int{ 258, 259, 260, 261, 262, 263, 264, 265, 595, 256, 257, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 0, 0, 0, 287, 288, - 289, 290, 0, 0, 281, 282, 283, 284, 0, 0, + 289, 290, 2045, 0, 281, 282, 283, 284, 0, 0, 0, 478, 479, 480, 502, 0, 464, 526, 650, 0, 0, 0, 0, 0, 0, 0, 576, 588, 622, 0, - 632, 633, 635, 637, 636, 639, 438, 439, 1124, 641, + 632, 633, 635, 637, 636, 639, 438, 439, 2048, 641, 642, 643, 640, 374, 425, 444, 432, 0, 656, 517, - 518, 657, 628, 0, 0, 0, 0, 0, 0, 1147, - 1151, 1153, 1155, 1157, 1158, 1160, 0, 1165, 1161, 1162, - 1163, 1164, 0, 1142, 1143, 1144, 1145, 1122, 1123, 1148, - 0, 1125, 0, 1127, 1128, 1129, 1130, 1126, 1131, 1132, - 1133, 1134, 1135, 1138, 1140, 1136, 1137, 1146, 727, 726, - 733, 723, 0, 0, 0, 1150, 1152, 1154, 1156, 1159, - 0, 730, 731, 0, 732, 736, 0, 0, 717, 2036, - 0, 0, 727, 726, 733, 723, 0, 0, 741, 0, - 0, 0, 0, 0, 0, 730, 731, 0, 732, 736, - 0, 0, 717, 0, 0, 1141, 0, 0, 0, 0, - 0, 0, 741, 0, 0, 2039, 0, 0, 0, 0, + 518, 657, 628, 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, 745, 0, 0, 747, 0, 0, - 0, 0, 746, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 745, 3821, - 0, 747, 0, 0, 0, 0, 746, 0, 0, 2013, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2022, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 2029, 0, 0, - 2036, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 3809, 0, 0, 0, + 2038, 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, 2039, 0, 0, 0, - 0, 0, 718, 720, 719, 0, 0, 0, 0, 0, - 0, 0, 0, 725, 0, 0, 0, 0, 0, 2036, - 0, 0, 0, 0, 0, 729, 718, 720, 719, 0, - 0, 0, 744, 0, 0, 0, 0, 725, 0, 722, - 0, 2017, 0, 712, 0, 0, 0, 0, 0, 729, - 2013, 0, 2023, 0, 0, 2039, 744, 0, 0, 0, - 0, 0, 0, 722, 0, 0, 0, 0, 0, 0, - 0, 0, 2011, 2045, 0, 0, 2012, 2014, 2016, 0, - 2018, 2019, 2020, 2024, 2025, 2026, 2028, 2031, 2032, 2033, - 0, 0, 0, 0, 0, 0, 0, 2021, 2030, 2022, - 0, 0, 0, 1801, 0, 0, 0, 0, 0, 2013, - 0, 0, 0, 0, 3792, 1149, 0, 0, 2029, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 2037, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 724, 728, 734, 0, - 735, 737, 0, 0, 738, 739, 740, 0, 0, 742, - 743, 0, 0, 0, 0, 0, 0, 2029, 0, 0, - 724, 728, 734, 2034, 735, 737, 0, 0, 738, 739, - 740, 0, 0, 742, 743, 0, 0, 0, 0, 0, - 2010, 0, 2017, 0, 0, 0, 0, 2009, 0, 0, - 0, 0, 0, 2023, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 2027, 0, 2011, 2045, 0, 0, 2012, 2014, 2016, - 2015, 2018, 2019, 2020, 2024, 2025, 2026, 2028, 2031, 2032, - 2033, 0, 0, 0, 0, 0, 0, 0, 2021, 2030, - 2022, 2017, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 2023, 0, 0, 0, 1797, 0, 0, 0, - 0, 0, 0, 1794, 0, 0, 0, 1796, 1793, 1795, - 1799, 1800, 2011, 2045, 2037, 1798, 2012, 2014, 2016, 0, - 2018, 2019, 2020, 2024, 2025, 2026, 2028, 2031, 2032, 2033, - 0, 0, 0, 0, 0, 0, 0, 2021, 2030, 2022, - 0, 0, 0, 0, 0, 721, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 2034, 0, 0, 0, 3653, 721, - 0, 0, 0, 2037, 0, 0, 0, 0, 0, 0, - 0, 2010, 0, 0, 0, 0, 0, 0, 2009, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2026, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 2032, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 2027, 0, 0, 0, 0, 0, 0, 0, - 0, 2015, 0, 2034, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 2020, 2054, 0, 0, 2021, + 2023, 2025, 0, 2027, 2028, 2029, 2033, 2034, 2035, 2037, + 2040, 2041, 2042, 0, 0, 0, 0, 0, 0, 0, + 2030, 2039, 2031, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 2010, 0, 0, 0, 0, 0, 0, 2009, 1782, 1783, - 1784, 1785, 1786, 1787, 1788, 1789, 1790, 1791, 1792, 1804, - 1805, 1806, 1807, 1808, 1809, 1802, 1803, 0, 0, 0, - 0, 2027, 0, 0, 0, 0, 0, 0, 0, 0, - 2015, 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, 2046, 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, 3653, 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, 2043, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 2019, 0, 0, 0, 0, 0, 0, + 2018, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2036, 0, 0, 0, 0, 0, + 0, 0, 0, 2024, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 3653, + 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, 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, 0, 0, 0, 0, 0, 0, + 0, 3669, } var yyPact = [...]int{ - 333, -1000, -1000, -1000, -339, 15002, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + 274, -1000, -1000, -1000, -326, 15924, -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, 49486, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, 464, 49486, -334, 30984, 47572, -1000, -1000, 2890, -1000, - 48210, 16936, 49486, 550, 548, 49486, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, 51046, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, 489, 51046, -323, 26802, 32544, -1000, -1000, 2754, -1000, + 49770, 17858, 51046, 591, 576, 51046, -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, - -1000, -1000, -1000, -1000, 961, -1000, 53952, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, 897, 54645, 53314, 11147, - -217, -1000, 1802, -38, 2647, 504, -201, -204, 1135, 1153, - 1140, 1015, 49486, 1095, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, 204, 980, 48848, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, 973, -1000, 55512, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, 896, 4643, 54874, 12069, + -214, -1000, 1651, -27, 2643, 488, -184, -188, 1133, 1146, + 1366, 1063, 51046, 1117, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, 251, 133, 50408, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, 4012, 246, 960, 980, 22048, 108, - 100, 1802, 453, -91, 366, -1000, 1585, 4125, 199, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - 11147, 11147, 15002, -383, 15002, 11147, 49486, 49486, -1000, -1000, - -1000, -1000, -334, 48210, 897, 54645, 11147, 2647, 504, -201, - -204, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, 4148, 254, 972, 986, 22970, 158, + 143, 1651, 470, -78, 332, -1000, 2074, 4141, 208, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + 12069, 12069, 15924, -373, 15924, 12069, 51046, 51046, -1000, -1000, + -1000, -1000, -323, 49770, 896, 4643, 12069, 2643, 488, -184, + -188, -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, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -91, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -78, -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, -1000, @@ -7374,8 +7496,8 @@ 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, -1000, -1000, 100, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, 143, -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, @@ -7392,424 +7514,427 @@ 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, -1000, -1000, -1000, 5048, -1000, 1637, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, 2381, 3203, 1631, 2645, 838, 47572, - 49486, -1000, 142, 838, -1000, -1000, -1000, 1802, 3631, -1000, - 49486, 49486, 233, 1924, -1000, 566, 547, 469, 621, 369, - 1629, -1000, -1000, -1000, -1000, -1000, -1000, 756, 3561, -1000, - 49486, 49486, 3231, 49486, -1000, 2358, 778, -1000, 54669, 3399, - 1475, 1024, 3243, -1000, -1000, 3202, -1000, 379, 372, 359, - 623, 442, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 355, - -1000, 3462, -1000, -1000, 363, -1000, -1000, 422, -1000, -1000, - -1000, 98, -1000, -1000, -1000, -1000, -1000, -1000, -14, -1000, - -1000, 1221, 2743, 11147, 2757, -1000, 3481, 1646, -1000, -1000, - -1000, 6654, 13711, 13711, 13711, 13711, 49486, -1000, -1000, 3053, - 11147, 3201, 3197, 3196, 3195, -1000, -1000, -1000, -1000, -1000, - -1000, 3192, 1616, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, 2057, -1000, -1000, -1000, 14352, -1000, 3191, 3188, - 3187, 3186, 3185, 3184, 3183, 3182, 3180, 3177, 3161, 3158, - 3157, 3156, 2919, 16288, 3152, 2644, 2642, 3151, 3149, 3148, - 2635, 3147, 3146, 3145, 2919, 2919, 3144, 3142, 3135, 3134, - 3132, 3130, 3129, 3125, 3124, 3123, 3121, 3120, 3119, 3118, - 3112, 3106, 3105, 3104, 3102, 3101, 3099, 3096, 3093, 3090, - 3089, 3085, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, 5161, -1000, 1699, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, 2448, 3171, 1697, 2642, 845, 49132, + 49132, 51046, -1000, 157, 845, 49132, -1000, -1000, -1000, 1651, + 3506, -1000, 51046, 51046, 275, 1933, -1000, 536, 570, 544, + 409, 401, 1692, -1000, -1000, -1000, -1000, -1000, -1000, 794, + 3462, -1000, 51046, 51046, 3180, 51046, -1000, 2304, 815, -1000, + 5430, 3316, 1446, 999, 3188, -1000, -1000, 3170, -1000, 412, + 346, 504, 496, 474, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, 410, -1000, 3387, -1000, -1000, 388, -1000, -1000, 414, + -1000, -1000, -1000, 125, -1000, -1000, -1000, -1000, -1000, -1000, + 5, -1000, -1000, 1164, 2552, 12069, 2288, -1000, 3661, 1704, + -1000, -1000, -1000, 7576, 14633, 14633, 14633, 14633, 51046, -1000, + -1000, 3024, 12069, 3165, 3164, 3163, 3161, -1000, -1000, -1000, + -1000, -1000, -1000, 3159, 1691, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, 2062, -1000, -1000, -1000, 15274, -1000, + 3158, 3157, 3156, 3142, 3139, 3138, 3137, 3136, 3134, 3129, + 3127, 3126, 3121, 3117, 2831, 17210, 3116, 2634, 2630, 3115, + 3114, 3113, 2629, 3110, 3109, 3107, 2831, 2831, 3104, 3101, + 3099, 3098, 3097, 3091, 3090, 3089, 3088, 3082, 3081, 3080, + 3079, 3078, 3077, 3076, 3075, 3074, 3070, 3069, 3068, 3066, + 3065, 3064, 3058, 3054, -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, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, 1467, -1000, 3084, 3575, - 3001, -1000, 3438, 3429, 3426, 3424, -268, 3083, 2253, -1000, - -1000, 102, 3559, 49486, -286, 49486, 425, -103, -108, -109, - -1000, -66, -1000, -1000, 1110, -1000, 1075, 52676, 943, -1000, - -1000, 49486, 884, 884, 884, 49486, 49486, 198, 956, 884, - 884, 884, 884, 884, 946, 884, 3480, 958, 957, 954, - 952, 884, -64, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - 1923, 1919, 3306, 1047, -1000, -1000, -1000, -1000, 1500, 49486, - -1000, 3018, 425, -317, 1814, 1814, 3538, 3538, 3479, 3477, - 821, 789, 783, 1814, 622, -1000, 1825, 1825, 1825, 1825, - 1814, 507, 824, 3487, 3487, 191, 1825, 61, 1814, 1814, - 61, 1814, 1814, -1000, 1914, 285, -275, -1000, -1000, -1000, - -1000, 1825, 1825, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - 3455, 3452, 897, 897, 49486, 897, 210, 49486, 897, 897, - 897, 49486, 917, -316, 19, 52038, 51400, 2369, 2358, 776, - 775, 1531, 1817, -1000, 1717, 49486, 49486, 1717, 1717, 25242, - 24604, -1000, 49486, -1000, 3575, 3001, 2905, 1625, 2902, 3001, - -110, 425, 897, 897, 897, 897, 897, 332, 897, 897, - 897, 897, 897, 49486, 49486, 46934, 897, 897, 897, 897, - 9218, 1585, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, 15002, 2028, 2105, 195, -12, - -311, 282, -1000, -1000, 49486, 3373, 343, -1000, -1000, -1000, - 3003, -1000, 3006, 3006, 3006, 3006, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, 3006, 3006, 3014, 3077, - -1000, -1000, 3004, 3004, 3004, 3003, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, 3007, 3007, 3008, 3008, 3007, 49486, -128, -1000, -1000, - 11147, 49486, 3386, 444, 3076, 838, -1000, -1000, 49486, 318, - 446, 3575, 3384, 3487, 3529, -1000, -1000, 1607, 2252, 2630, - -1000, 369, -1000, 459, 369, -1000, 583, 583, 1821, -1000, - 1182, -1000, -1000, -1000, -1000, -1000, -1000, 49486, -14, 417, - -1000, -1000, 2601, 3062, -1000, 681, 1422, 1429, -1000, 329, - 4619, 39916, 2358, 39916, 49486, -1000, -1000, -1000, -1000, -1000, - -1000, 87, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 1503, -1000, + 3041, 3478, 2921, -1000, 3374, 3372, 3370, 3366, -253, 3036, + 2284, -1000, -1000, 111, 3461, 51046, -272, 51046, 443, -92, + -94, -96, -1000, -68, -1000, -1000, 1111, -1000, 1100, 54236, + 945, -1000, -1000, 51046, 895, 895, 895, 51046, 51046, 229, + 956, 895, 895, 895, 895, 895, 948, 895, 3404, 964, + 961, 958, 957, 895, -28, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, 1920, 1917, 3248, 1082, 986, -1000, -1000, -1000, + -1000, 1517, 51046, -1000, 2975, 443, -299, 1871, 1871, 3443, + 3443, 3401, 3399, 831, 830, 820, 1871, 704, -1000, 1889, + 1889, 1889, 1889, 1871, 545, 825, 3408, 3408, 151, 1889, + 94, 1871, 1871, 94, 1871, 1871, -1000, 1893, 341, -260, + -1000, -1000, -1000, -1000, 1889, 1889, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, 3381, 3378, 896, 896, 51046, 896, 218, + 51046, 896, 896, 896, 51046, 905, -313, 46, 53598, 52960, + 2399, 2304, 809, 807, 1556, 1988, -1000, 1818, 51046, 51046, + 1818, 1818, 26164, 25526, -1000, 51046, -1000, 3478, 2921, 2822, + 1549, 2815, 2921, -97, 443, 896, 896, 896, 896, 896, + 364, 896, 896, 896, 896, 896, 51046, 51046, 48494, 896, + 896, 896, 896, 10140, 2074, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 15924, 2260, + 2201, 206, 0, -300, 295, -1000, -1000, 51046, 3290, 355, + -1000, -1000, -1000, 2957, -1000, 2959, 2959, 2959, 2959, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 2959, + 2959, 2974, 3035, -1000, -1000, 2958, 2958, 2958, 2957, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, 341, -1000, 11147, 11147, - 11147, 11147, 11147, -1000, 1022, 13070, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, 13711, 13711, 13711, 13711, 13711, 13711, 13711, - 13711, 13711, 13711, 13711, 13711, 3052, 1904, 13711, 13711, 13711, - 13711, 27794, 1625, 3110, 1501, 304, 1646, 1646, 1646, 1646, - 11147, -1000, 1927, 2743, 11147, 11147, 11147, 11147, 34174, 49486, - -1000, -1000, 4813, 11147, 11147, 54789, 11147, 3419, 11147, 11147, - 11147, 2901, 5363, 49486, 11147, -1000, 2898, 2886, -1000, -1000, - 2164, 11147, -1000, -1000, 11147, -1000, -1000, 11147, 13711, 11147, - -1000, 11147, 11147, 11147, -1000, -1000, 1496, 3419, 3419, 3419, - 1818, 11147, 11147, 3419, 3419, 3419, 1799, 3419, 3419, 3419, - 3419, 3419, 3419, 3419, 3419, 3419, 3419, 3419, 2885, 2883, - 2877, 10506, 3487, -217, -1000, 8577, 3384, 3487, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -270, 3061, - 49486, 2629, 2616, -350, 187, 473, 49486, 1184, -1000, -1000, - 49486, 2251, 49486, 2249, 63, 1131, 1088, 1091, -1000, -1000, - 49486, 50762, -1000, 49486, 1958, 49486, 49486, 3409, -1000, 3060, - 49486, 884, 884, 884, -1000, 45020, 39916, 49486, 49486, 2358, - 49486, 49486, 49486, 884, 884, 884, 884, 49486, -1000, 3331, - 39916, 3321, 917, -1000, 49486, 1500, 3408, 49486, -1000, -1000, - -1000, -1000, 3538, 13711, 13711, -1000, -1000, 11147, -1000, 224, - 46296, 1825, 1814, 1814, -1000, -1000, 49486, -1000, -1000, -1000, - 1825, 49486, 1825, 1825, 3538, 1825, -1000, -1000, -1000, 1814, - 1814, -1000, -1000, 11147, -1000, -1000, 1825, 1825, -1000, -1000, - 3538, 49486, 85, 3538, 3538, 90, -1000, -1000, -1000, 1814, - 49486, 49486, 884, 49486, -1000, 49486, 49486, -1000, -1000, 49486, - 49486, 4526, 49486, 45020, 45658, 3445, -1000, 39916, 49486, 49486, - 1499, -1000, 942, 37364, -1000, 49486, 1431, -1000, 26, -1000, - 32, 19, 1717, 19, 1717, 937, -1000, 675, 672, 23328, - 592, 39916, 6004, -1000, -1000, 1717, 1717, 6004, 6004, 1647, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, 1494, -1000, 283, - 3487, -1000, -1000, -1000, -1000, -1000, 2244, -1000, 49486, 45020, - 39916, 2358, 49486, 897, 49486, 49486, 49486, 49486, 49486, -1000, - 3055, 1604, -1000, 3398, 49486, 49486, 49486, 49486, 1372, -1000, - -1000, 20126, 1597, -1000, -1000, 1986, -1000, 11147, 15002, -255, - 11147, 15002, 15002, 11147, 15002, -1000, 11147, 317, -1000, -1000, - -1000, -1000, 2241, -1000, 2236, -1000, -1000, -1000, -1000, -1000, - 2611, 2611, -1000, 2234, -1000, -1000, -1000, -1000, 2233, -1000, - -1000, 2230, -1000, -1000, -1000, -1000, -159, 2872, 1221, -1000, - 2609, 3241, -223, -1000, 21410, 49486, 49486, 444, -356, 1897, - 1895, 1894, 3466, -1000, -223, -1000, 20768, 49486, 3487, -1000, - -230, 3384, 11147, 49486, -1000, 3475, -1000, -1000, 369, -1000, - -1000, -1000, 583, 471, -1000, -1000, -1000, -1000, -1000, -1000, - 1594, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -92, -96, 1491, -1000, 49486, -1000, -1000, 329, 39916, - 41830, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 260, -1000, - -1000, 181, -1000, 936, 287, 1820, -1000, -1000, 228, 211, - 203, 999, 2743, -1000, 1989, 1989, 1979, -1000, 920, -1000, - -1000, -1000, -1000, 3053, -1000, -1000, -1000, 2925, 3982, -1000, - 1912, 1912, 1652, 1652, 1652, 1652, 1652, 2718, 2718, -1000, - -1000, -1000, 6654, 3052, 13711, 13711, 13711, 13711, 982, 982, - 3518, 3928, -1000, -1000, -1000, -1000, 11147, 177, 1960, -1000, - 11147, 2631, 1613, 2373, 1555, 1816, -1000, 3003, 11147, 1590, + -1000, -1000, -1000, -1000, 2963, 2963, 2965, 2965, 2963, 51046, + -116, -1000, -1000, 12069, 51046, 3309, 512, 3034, 845, 845, + -1000, -1000, 51046, 334, 484, 845, 3478, 3305, 3408, 3435, + -1000, -1000, 1690, 2283, 2628, -1000, 401, -1000, 475, 401, + -1000, 459, 459, 1808, -1000, 1349, -1000, -1000, -1000, -1000, + -1000, -1000, 51046, 5, 451, -1000, -1000, 2599, 3029, -1000, + 698, 1367, 1375, -1000, 370, 5536, 41476, 2304, 41476, 51046, + -1000, -1000, -1000, -1000, -1000, -1000, 106, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, 398, -1000, 12069, 12069, 12069, 12069, 12069, -1000, 1044, + 13992, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 14633, 14633, + 14633, 14633, 14633, 14633, 14633, 14633, 14633, 14633, 14633, 14633, + 3021, 1922, 14633, 14633, 14633, 14633, 29354, 1549, 3102, 1524, + 310, 1704, 1704, 1704, 1704, 12069, -1000, 1950, 2552, 12069, + 12069, 12069, 12069, 35734, 51046, -1000, -1000, 4706, 12069, 12069, + 3831, 12069, 3350, 12069, 12069, 12069, 2814, 6285, 51046, 12069, + -1000, 2813, 2811, -1000, -1000, 2093, 12069, -1000, -1000, 12069, + -1000, -1000, 12069, 14633, 12069, -1000, 12069, 12069, 12069, -1000, + -1000, 3628, 3350, 3350, 3350, 1887, 12069, 12069, 3350, 3350, + 3350, 1881, 3350, 3350, 3350, 3350, 3350, 3350, 3350, 3350, + 3350, 3350, 3350, 2809, 2808, 2807, 11428, 3408, -214, -1000, + 9499, 3305, 3408, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -256, 3028, 51046, 2627, 2626, -332, 204, + 500, 51046, 1194, -1000, -1000, 51046, 2278, 51046, 2267, 69, + 1131, 1105, 1113, -1000, -1000, 51046, 52322, -1000, 51046, 1973, + 51046, 51046, 3342, -1000, 3027, 51046, 895, 895, 895, -1000, + 46580, 41476, 51046, 51046, 2304, 51046, 51046, 51046, 895, 895, + 895, 895, 51046, -1000, 3260, 41476, 3254, 905, -1000, 1082, + 51046, 1517, 3338, 51046, -1000, -1000, -1000, -1000, 3443, 14633, + 14633, -1000, -1000, 12069, -1000, 246, 47856, 1889, 1871, 1871, + -1000, -1000, 51046, -1000, -1000, -1000, 1889, 51046, 1889, 1889, + 3443, 1889, -1000, -1000, -1000, 1871, 1871, -1000, -1000, 12069, + -1000, -1000, 1889, 1889, -1000, -1000, 3443, 51046, 102, 3443, + 3443, 126, -1000, -1000, -1000, 1871, 51046, 51046, 895, 51046, + -1000, 51046, 51046, -1000, -1000, 51046, 51046, 4569, 51046, 46580, + 47218, 3377, -1000, 41476, 51046, 51046, 1513, -1000, 944, 38924, + -1000, 51046, 1471, -1000, 49, -1000, 67, 46, 1818, 46, + 1818, 934, -1000, 694, 699, 24250, 631, 41476, 6926, -1000, + -1000, 1818, 1818, 6926, 6926, 1706, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, 1506, -1000, 289, 3408, -1000, -1000, -1000, + -1000, -1000, 2266, -1000, 51046, 46580, 41476, 2304, 51046, 896, + 51046, 51046, 51046, 51046, 51046, -1000, 3026, 1687, -1000, 3314, + 51046, 51046, 51046, 51046, 1358, -1000, -1000, 21048, 1675, -1000, + -1000, 1947, -1000, 12069, 15924, -240, 12069, 15924, 15924, 12069, + 15924, -1000, 12069, 350, -1000, -1000, -1000, -1000, 2265, -1000, + 2263, -1000, -1000, -1000, -1000, -1000, 2623, 2623, -1000, 2262, + -1000, -1000, -1000, -1000, 2259, -1000, -1000, 2258, -1000, -1000, + -1000, -1000, -157, 2804, 1164, -1000, 2622, 3186, -216, -1000, + 22332, 51046, 51046, 512, 512, -340, 1916, 1915, 1911, 3391, + -1000, -216, -1000, 21690, 51046, 484, 3408, -1000, -223, 3305, + 12069, 51046, -1000, 3396, -1000, -1000, 401, -1000, -1000, -1000, + 459, 467, -1000, -1000, -1000, -1000, -1000, -1000, 1670, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -85, + -87, 1494, -1000, 51046, -1000, -1000, 370, 41476, 43390, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, 272, -1000, -1000, 180, + -1000, 932, 309, 1807, -1000, -1000, 231, 223, 267, 997, + 2552, -1000, 1968, 1968, 1987, -1000, 782, -1000, -1000, -1000, + -1000, 3024, -1000, -1000, -1000, 2382, 2206, -1000, 1828, 1828, + 1726, 1726, 1726, 1726, 1726, 1870, 1870, -1000, -1000, -1000, + 7576, 3021, 14633, 14633, 14633, 14633, 974, 974, 4331, 4349, + -1000, -1000, -1000, -1000, 12069, 179, 1946, -1000, 12069, 2615, + 1605, 2396, 1452, 1806, -1000, 2957, 12069, 1660, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - 2871, 2870, 2290, 3558, 2863, 11147, -1000, -1000, 1815, 1798, - 1780, -1000, 2257, 9865, -1000, -1000, -1000, 2862, 1586, 2850, - -1000, -1000, -1000, 2849, 1773, 1253, 2845, 2504, 2843, 2841, - 2839, 2838, 1489, 11147, 11147, 11147, 11147, 2834, 1768, 1767, - 11147, 11147, 11147, 11147, 2831, 11147, 11147, 11147, 11147, 11147, - 11147, 11147, 11147, 11147, 11147, 49486, 143, 143, 143, 1470, - 1453, -1000, -1000, 1763, -1000, 2743, -1000, -1000, 3384, -1000, - 3049, 2229, 1449, -1000, -1000, -329, 2536, 49486, 49486, 183, - 49486, 2606, -288, 49486, -1000, -1000, 2605, -1000, -1000, -1000, - 1123, 1066, 1060, -1000, 49486, -1000, 2604, 3397, 3473, 903, - 49486, 1206, 3048, 49486, 49486, 49486, 312, -1000, -1000, 1340, - -1000, 287, -36, 555, 1277, 3230, 3555, -131, 49486, 49486, - 49486, 49486, 3407, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, 44382, -1000, 3047, 1762, -1000, -1000, 1646, 1646, 2743, - 49486, 49486, 49486, 3215, 49486, 49486, 3538, 3538, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, 1825, 3538, 3538, 1421, 1814, - 1825, -1000, -1000, 1825, -356, -1000, 1825, -1000, -356, 1583, - -356, 49486, -1000, -1000, -1000, 3406, 3018, 1444, -1000, -1000, - -1000, 3526, 1296, 871, 871, 1099, 822, 3525, 18850, -1000, - 1730, 1362, 935, 3336, 376, -1000, 1730, -156, 847, 1730, - 1730, 1730, 1730, 1730, 1730, 1730, 739, 737, 1730, 1730, - 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1142, - 1730, 1730, 1730, 1730, 1730, -1000, 1730, 3043, 542, -1000, - -1000, -1000, -1000, -1000, -1000, 763, 680, 307, 3444, 419, - -1000, 462, 1340, 334, 3443, 435, 49486, 49486, 3335, 1322, - -1000, -1000, -1000, -1000, -1000, 28432, 28432, 22690, 28432, -1000, - 196, 1717, 19, 129, -1000, -1000, 1431, 6004, 1431, 6004, - 2227, -1000, -1000, 928, -1000, -1000, 1277, -1000, 49486, 49486, - -1000, -1000, 3038, 1877, -1000, -1000, 16288, -1000, 6004, 6004, - -1000, -1000, 30346, 49486, -1000, -21, -1000, 3, 3384, -1000, - 1235, -1000, -1000, 1424, 1277, 3240, 49486, 1235, 1235, 1235, - -1000, -1000, 17574, 49486, 49486, -1000, -1000, -1000, -1000, 3538, - 9218, -1000, 37364, -1000, -1000, 43744, -1000, 43106, 1949, -1000, - 15002, 2100, 193, -1000, 263, -322, 190, 1977, 188, 2743, - -1000, -1000, 2830, 2826, 1760, -1000, 1759, 2825, 1757, 1753, - 2226, -1000, 50, -1000, 3380, 1280, -1000, 3037, -1000, 1750, - 3303, -1000, 1414, -1000, 1872, 1744, -1000, -1000, -1000, 11147, - 42468, 11147, 1037, 1280, 1740, 3302, 1414, 3384, 2597, -1000, - 1406, -1000, 2225, 1580, 232, -1000, -1000, -1000, 49486, 2601, - 1732, 41830, 1365, -1000, 927, 1579, 1567, -1000, 39916, 365, - 39916, -1000, 39916, -1000, -1000, 402, -1000, 49486, 3382, -1000, - -1000, -1000, 2536, 1869, -354, 49486, -1000, -1000, -1000, -1000, - -1000, 1726, -1000, 982, 982, 3518, 3841, -1000, 13711, -1000, - 13711, 3086, -1000, 1940, -1000, 11147, 2080, 4950, 11147, 4950, - 1892, 26518, 34174, -115, 3393, 3028, 49486, -1000, -1000, 11147, - 11147, -1000, 3011, -1000, -1000, -1000, -1000, 11147, 11147, 2118, - -1000, 49486, -1000, -1000, -1000, -1000, 26518, -1000, 13711, -1000, - -1000, -1000, -1000, 11147, 1327, 1327, 2993, 1713, 143, 143, - 143, 2924, 2904, 2887, 1705, 143, 2881, 2829, 2736, 2721, - 2705, 2687, 2669, 2655, 2646, 2519, 1704, -1000, 3034, -1000, - -1000, 2044, 12429, 8577, -1000, -1000, 328, 1404, 2223, 2589, - 119, -1000, 1866, -1000, 2587, 49486, 49486, 1178, -1000, 49486, - 3551, -1000, -1000, -1000, -1000, 1061, -1000, 2586, -1000, 266, - 245, 2084, 336, 2821, 1401, -1000, -1000, 49486, -1000, -1000, - -1000, 17574, 3018, 3032, 3018, 174, 1730, 645, 39916, 773, - -1000, 49486, 2147, 1858, 3239, 816, 3359, 49486, 3031, 408, - 3030, 3026, 3404, 532, 54442, 49486, 1363, -1000, 1566, 4125, - -1000, 49486, -1000, -1000, 49486, -1000, 2358, -1000, 1814, -1000, - -1000, 3538, -1000, -1000, 11147, 11147, 3538, 1814, 1814, -1000, - 1825, -1000, 49486, -1000, -356, 532, 54442, 3403, 4665, 608, - 2607, -1000, 49486, -1000, -1000, -1000, 861, -1000, 1086, 884, - 49486, 2016, 1086, 2015, 3025, -1000, -1000, 49486, 49486, 49486, - 49486, -1000, -1000, 49486, -1000, 49486, 49486, 49486, 49486, 49486, - 41192, -1000, 49486, 49486, -1000, 49486, 2013, 49486, 2008, 3341, - -1000, 1730, 1730, 1013, -1000, -1000, 664, -1000, 41192, 2222, - 2221, 2219, 2218, 2578, 2576, 2573, 1730, 1730, 2216, 2570, - 40554, 2567, 1201, 2214, 2213, 2203, 2208, 2552, 997, -1000, - 2550, 2207, 2142, 2141, 49486, 3020, 2448, 534, -1000, -1000, - 2084, 174, 1730, 409, 49486, 1856, 1855, 645, 625, 552, - -42, 23966, -1000, -1000, -1000, 49486, 37364, 37364, 37364, 37364, - 37364, 37364, -1000, 3284, 3262, 3019, -1000, 3267, 3264, 3277, - 3283, 3248, 49486, 37364, 3018, -1000, 40554, -1000, -1000, -1000, - 1625, 1699, 3603, 1080, 11147, 6004, -1000, -1000, 11, 24, - -1000, -1000, -1000, -1000, 39916, 2549, 592, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, 3472, 49486, 49486, 862, 2813, 1399, - -1000, -1000, -1000, 54442, 3006, 3006, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, 3006, 3006, 3014, -1000, -1000, - 3004, 3004, 3004, 3003, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, 3007, 3007, 3008, 3008, 3007, -1000, - -1000, 3532, -1000, 1396, -1000, -1000, 1562, -1000, 1954, -347, - 15002, 1843, 1929, -1000, 11147, 15002, 11147, -258, 393, -260, - -1000, -1000, -1000, 2547, -1000, -1000, -1000, 2202, -1000, 2201, - -1000, 201, 223, 2007, -223, 8577, 452, 49486, -223, 49486, - 8577, -1000, 49486, 173, -364, -366, 159, 2545, 440, -223, - 3472, 50, 11147, 3329, -1000, -1000, 49486, 2194, -1000, -1000, - -1000, 3549, 39916, 2358, 1676, 39278, -1000, 362, -1000, 257, - 633, 2539, -1000, 951, 118, 2538, 2536, -1000, -1000, -1000, - -1000, 13711, 1646, -1000, -1000, -1000, 2743, 11147, 2812, -1000, - 1050, 1050, 2170, 2811, 2808, -1000, 3006, 3006, -1000, 3003, - 3004, 3003, 1050, 1050, 2806, -1000, 3000, -1000, 3393, -1000, - 2154, 2487, -1000, 2414, 2383, 11147, -1000, 2795, 3645, 1481, - -58, -187, 143, 143, -1000, -1000, -1000, -1000, 143, 143, - 143, 143, -1000, 143, 143, 143, 143, 143, 143, 143, - 143, 143, 143, 143, 841, -98, -279, -99, -282, -1000, - 2794, 1392, -1000, -1000, -1000, -1000, -1000, 54789, 1387, 565, - 565, 2536, 2531, -1000, 924, 2530, 1115, 49486, 2529, -293, - -1000, 2526, -1000, -1000, 49486, 49486, 49486, 50124, 677, 49486, - 49486, 2525, -1000, 2523, 2517, 1206, 54442, 2793, 3402, 18212, - 3401, 2184, -1000, -1000, -1000, 29708, 625, -1000, -1000, -1000, - 743, 382, 2188, 609, -1000, 49486, 570, 3323, 1851, 2515, - 49486, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 3359, - -1000, 925, 505, 36088, 15650, -1000, 430, 49486, -1000, 18212, - 18212, 430, 516, 1888, -1000, 838, 1352, 136, 37364, 49486, - -1000, 36726, 2788, -1000, -1000, 1277, 3538, -1000, 2743, 2743, - -356, 3538, 3538, 1814, -1000, -1000, 516, -1000, 430, -1000, - 1368, 19488, 594, 461, 454, -1000, 752, -1000, -1000, 836, - 3352, 54442, -1000, 49486, -1000, 49486, -1000, 49486, 49486, 884, - 11147, 3352, 49486, 904, -1000, 1180, 495, 460, 858, 858, - 1386, -1000, 3393, -1000, -1000, 1374, -1000, -1000, -1000, -1000, - 49486, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 26518, 26518, - 3441, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, 2507, 2506, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 2802, 2792, + 2625, 3459, 2791, 12069, -1000, -1000, 1803, 1792, 1784, -1000, + 2322, 10787, -1000, -1000, -1000, 2775, 1641, 2774, -1000, -1000, + -1000, 2772, 1781, 1444, 2767, 2723, 2762, 2761, 2755, 2749, + 1490, 12069, 12069, 12069, 12069, 2748, 1775, 1770, 12069, 12069, + 12069, 12069, 2746, 12069, 12069, 12069, 12069, 12069, 12069, 12069, + 12069, 12069, 12069, 51046, 149, 149, 149, 1481, 1480, -1000, + -1000, 1751, -1000, 2552, -1000, -1000, 3305, -1000, 3020, 2244, + 1474, -1000, -1000, -320, 2557, 51046, 51046, 186, 51046, 2613, + -273, 51046, -1000, -1000, 2612, -1000, -1000, -1000, 1126, 1092, + 1086, -1000, 51046, -1000, 2606, 3313, 3395, 988, 51046, 1327, + 3016, 51046, 51046, 51046, 347, -1000, -1000, 1312, -1000, 309, + -19, 596, 1287, 3178, 3457, -120, 51046, 51046, 51046, 51046, + 3332, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 45942, + 905, -1000, 3009, 1748, -1000, -1000, 1704, 1704, 2552, 51046, + 51046, 51046, 3177, 51046, 51046, 3443, 3443, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, 1889, 3443, 3443, 1614, 1871, 1889, + -1000, -1000, 1889, -340, -1000, 1889, -1000, -340, 1620, -340, + 51046, -1000, -1000, -1000, 3329, 2975, 1472, -1000, -1000, -1000, + 3434, 1509, 869, 869, 1170, 763, 3433, 19772, -1000, 1782, + 1304, 931, 3274, 407, -1000, 1782, -145, 853, 1782, 1782, + 1782, 1782, 1782, 1782, 1782, 787, 771, 1782, 1782, 1782, + 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1128, 1782, + 1782, 1782, 1782, 1782, -1000, 1782, 3007, 562, -1000, -1000, + -1000, -1000, -1000, -1000, 799, 726, 329, 3365, 445, -1000, + 513, 1312, 369, 3361, 472, 51046, 51046, 3633, 1412, -1000, + -1000, -1000, -1000, -1000, 29992, 29992, 23612, 29992, -1000, 219, + 1818, 46, 99, -1000, -1000, 1471, 6926, 1471, 6926, 2243, + -1000, -1000, 929, -1000, -1000, 1287, -1000, 51046, 51046, -1000, + -1000, 3004, 1910, -1000, -1000, 17210, -1000, 6926, 6926, -1000, + -1000, 31906, 51046, -1000, -7, -1000, 15, 3305, -1000, 1252, + -1000, -1000, 1469, 1287, 3187, 51046, 1252, 1252, 1252, -1000, + -1000, 18496, 51046, 51046, -1000, -1000, -1000, -1000, 3443, 10140, + -1000, 38924, -1000, -1000, 45304, -1000, 44666, 1939, -1000, 15924, + 2196, 203, -1000, 291, -304, 202, 2142, 201, 2552, -1000, + -1000, 2745, 2743, 1743, -1000, 1725, 2742, 1717, 1716, 2234, + -1000, 73, -1000, 3294, 1293, -1000, 3003, -1000, 1715, 3244, + -1000, 1463, -1000, 1909, 1710, -1000, -1000, 3186, -1000, 12069, + 44028, 12069, 1061, 1293, 1709, 3243, 1463, -1000, 3305, 2605, + -1000, 1458, -1000, 2291, 1612, 258, -1000, -1000, -1000, 51046, + 2599, 1705, 43390, 1351, -1000, 924, 1609, 1601, -1000, 41476, + 396, 41476, -1000, 41476, -1000, -1000, 415, -1000, 51046, 3304, + -1000, -1000, -1000, 2557, 1908, -338, 51046, -1000, -1000, -1000, + -1000, -1000, 1700, -1000, 974, 974, 4331, 4175, -1000, 14633, + -1000, 14633, 3094, -1000, 1938, -1000, 12069, 2170, 5088, 12069, + 5088, 2084, 28078, 35734, -103, 3300, 3056, 51046, -1000, -1000, + 12069, 12069, -1000, 3032, -1000, -1000, -1000, -1000, 12069, 12069, + 2482, -1000, 51046, -1000, -1000, -1000, -1000, 28078, -1000, 14633, + -1000, -1000, -1000, -1000, 12069, 1495, 1495, 2970, 1695, 149, + 149, 149, 2961, 2954, 2919, 1694, 149, 2911, 2901, 2897, + 2888, 2839, 2835, 2825, 2821, 2790, 2770, 1693, -1000, 2997, + -1000, -1000, 2090, 13351, 9499, -1000, -1000, 335, 1420, 2233, + 2595, 144, -1000, 1907, -1000, 2594, 51046, 51046, 1181, -1000, + 51046, 3456, -1000, -1000, -1000, -1000, 1088, -1000, 2593, -1000, + 285, 247, 2123, 366, 2739, 1400, -1000, -1000, 51046, -1000, + -1000, -1000, 18496, 2975, 2996, 2975, 217, 1782, 696, 41476, + 806, -1000, 51046, 2087, 1898, 3185, 819, 3287, 51046, 2986, + 433, 2980, 2979, 3328, 571, 5224, 51046, 1332, -1000, 1586, + 3454, 4141, -1000, 51046, -1000, -1000, 51046, -1000, 2304, -1000, + 1871, -1000, -1000, 3443, -1000, -1000, 12069, 12069, 3443, 1871, + 1871, -1000, 1889, -1000, 51046, -1000, -340, 571, 5224, 3326, + 4705, 729, 2724, -1000, 51046, -1000, -1000, -1000, 920, -1000, + 1089, 895, 51046, 2012, 1089, 2010, 2978, -1000, -1000, 51046, + 51046, 51046, 51046, -1000, -1000, 51046, -1000, 51046, 51046, 51046, + 51046, 51046, 42752, -1000, 51046, 51046, -1000, 51046, 2007, 51046, + 2006, 3306, -1000, 1782, 1782, 1041, -1000, -1000, 687, -1000, + 42752, 2230, 2226, 2224, 2221, 2592, 2589, 2588, 1782, 1782, + 2219, 2586, 42114, 2582, 1417, 2218, 2199, 2198, 2193, 2581, + 1070, -1000, 2579, 2192, 2174, 2158, 51046, 2977, 2486, 585, + -1000, -1000, 2123, 217, 1782, 436, 51046, 1897, 1896, 696, + 650, 595, -20, 24888, -1000, -1000, -1000, 51046, 38924, 38924, + 38924, 38924, 38924, 38924, -1000, 3219, 3203, 2976, -1000, 3215, + 3211, 3228, 3218, 2960, 51046, 38924, 2975, -1000, 42114, -1000, + -1000, -1000, 1549, 1685, 3160, 1123, 12069, 6926, -1000, -1000, + 24, 23, -1000, -1000, -1000, -1000, 41476, 2567, 631, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, 3394, 51046, 51046, 901, + 2738, 1394, -1000, -1000, -1000, 5224, 2959, 2959, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, 2959, 2959, 2974, + -1000, -1000, 2958, 2958, 2958, 2957, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, 2963, 2963, 2965, 2965, + 2963, -1000, -1000, 3439, -1000, 1393, -1000, -1000, 1582, -1000, + 1952, -327, 15924, 1941, 1783, -1000, 12069, 15924, 12069, -242, + 421, -244, -1000, -1000, -1000, 2566, -1000, -1000, -1000, 2194, + -1000, 2190, -1000, 228, 264, 2005, -216, 9499, 468, 51046, + -216, 51046, 9499, -1000, 51046, -1000, 169, -349, -351, 165, + 2564, 447, -216, 3394, 73, 12069, 3277, -1000, -1000, 51046, + 2187, -1000, -1000, -1000, 3453, 41476, 2304, 1739, 40838, -1000, + 386, -1000, 268, 649, 2562, -1000, 953, 142, 2561, 2557, + -1000, -1000, -1000, -1000, 14633, 1704, -1000, -1000, -1000, 2552, + 12069, 2736, -1000, 1075, 1075, 2297, 2735, 2734, -1000, 2959, + 2959, -1000, 2957, 2958, 2957, 1075, 1075, 2733, -1000, 2956, + -1000, 3300, -1000, 2275, 2700, -1000, 2638, 2578, 12069, -1000, + 2721, 4301, 1528, -34, -175, 149, 149, -1000, -1000, -1000, + -1000, 149, 149, 149, 149, -1000, 149, 149, 149, 149, + 149, 149, 149, 149, 149, 149, 149, 847, -86, -265, + -114, -266, -1000, 2720, 1392, -1000, -1000, -1000, -1000, -1000, + 3831, 1389, 616, 616, 2557, 2556, -1000, 911, 2555, 1125, + 51046, 2553, -278, -1000, 2551, -1000, -1000, 51046, 51046, 51046, + 51684, 722, 51046, 51046, 2544, -1000, 2543, 2535, 1327, 5224, + 2717, 3322, 19134, 3310, 2302, -1000, -1000, -1000, 31268, 650, + -1000, -1000, -1000, 846, 424, 2180, 645, -1000, 51046, 636, + 3264, 1862, 2533, 51046, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, 3287, -1000, 1122, 537, 37648, 16572, -1000, 434, + 51046, -1000, 19134, 19134, 434, 541, 1867, -1000, 845, 1241, + 152, 38924, 51046, -1000, 38286, 51046, 2715, -1000, -1000, 1287, + 3443, -1000, 2552, 2552, -340, 3443, 3443, 1871, -1000, -1000, + 541, -1000, 434, -1000, 1536, 20410, 679, 559, 521, -1000, + 748, -1000, -1000, 844, 3273, 5224, -1000, 51046, -1000, 51046, + -1000, 51046, 51046, 895, 12069, 3273, 51046, 907, -1000, 1196, + 560, 508, 903, 903, 1382, -1000, 3300, -1000, -1000, 1355, + -1000, -1000, -1000, -1000, 51046, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, 28078, 28078, 3359, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 2532, 2527, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, 49486, 1675, -1000, 1849, 2180, - 2505, 2184, 29708, 1845, 1717, 2483, 2474, 625, -1000, 2473, - 2471, 2147, 1844, 950, 49486, -1000, 1239, 49486, 49486, -1000, - 1361, -1000, 1842, 3207, 3237, 3207, -1000, 3207, -1000, -1000, - -1000, -1000, 3276, 2470, -1000, 3266, -1000, 3263, -1000, -1000, - -1000, -1000, 1361, -1000, -1000, -1000, -1000, -1000, 1080, -1000, - 3468, 1086, 1086, 1086, 2784, -1000, -1000, -1000, -1000, 1365, - 2774, -1000, -1000, -1000, 3569, -1000, -1000, -1000, -1000, -1000, - -1000, 17574, 3355, 3519, 3521, 38640, -1000, -347, 1931, -1000, - 1984, 186, 1921, 49486, -1000, -1000, -1000, 2768, 2767, -233, - 222, 3517, 3516, 1118, -1000, 2761, 1343, -223, -1000, -1000, - 1280, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -380, -223, - -1000, 1280, -1000, 201, -1000, -1000, 3372, -1000, -1000, 2358, - -1000, 256, -1000, -1000, -1000, -1000, -1000, -1000, 247, -1000, - 49486, -1000, 1338, 117, -1000, 2743, -1000, -1000, -1000, -1000, - -1000, 4950, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, 2466, -1000, -1000, 11147, -1000, -1000, -1000, 2366, - -1000, -1000, 11147, 2745, 2463, 2731, 2461, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, 3575, -1000, 3515, 1674, 2730, 2727, - 1670, 2726, 2725, -1000, 11147, 2723, 54789, 1026, 2458, 1026, - -1000, -1000, 433, 29070, 49486, 3542, -1000, 49486, 2457, -1000, - -1000, 49486, 2084, 665, 2084, 684, 49486, -1000, -1000, -1000, - -1000, -1000, 966, 430, 2720, 1289, -1000, -1000, -1000, -1000, - 430, -1000, 2456, 286, -1000, -1000, -1000, -1000, 2174, -1000, - -1000, 2137, 1364, 298, -1000, -1000, -1000, -1000, -1000, -1000, - 2111, 49486, 38002, 2160, 1840, -357, -1000, 2970, -1000, 1730, - 1730, 1730, 49486, 1668, -1000, 1730, 1730, 2713, -1000, -1000, - 2710, 2707, -133, 856, 1847, 1841, -1000, 2171, 28432, 37364, - 36726, 1317, -1000, 1552, -1000, -1000, -1000, -1000, -1000, -1000, - 3538, 856, -1000, 579, 2145, 13711, 2965, 13711, 2963, 604, - 2962, 1664, -1000, 49486, -1000, -1000, 49486, 4004, 2959, -1000, - 2957, 3213, 562, 2956, 2951, 49486, 2308, -1000, 3352, 49486, - 813, 3346, -1000, -1000, -1000, 479, -1000, -1000, -1000, 683, - -1000, 49486, -1000, 49486, -1000, 1589, -1000, 26518, -1000, -1000, - 1633, -1000, 2448, 2447, 54789, -1000, -1000, 286, 2434, 6004, - -1000, -1000, -1000, -1000, -1000, 3323, 2430, 2111, 49486, -1000, - 49486, 1239, 1239, 3575, 49486, 8577, -1000, -1000, 11147, 2948, - -1000, 11147, -1000, -1000, -1000, 2706, -1000, -1000, -1000, -1000, - -1000, 2945, 3344, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - 1672, -1000, 11147, 11788, -1000, 876, 15002, -261, 390, -1000, - -1000, -1000, -235, 2429, -1000, -1000, 3513, 2427, 2288, 49486, - -1000, -1000, 1280, -1000, 1280, -233, -1000, -1000, 1277, -1000, - -1000, 1147, 746, -1000, 2692, 275, -1000, 2302, -1000, 2276, - 143, -1000, 143, -1000, 276, 11147, -1000, 2423, -1000, -1000, - -1000, 2422, -1000, -1000, 2178, -1000, 2677, -1000, 2421, -1000, - -1000, 49486, -1000, -1000, 1109, 2413, -358, -1000, 2411, 2084, - 2402, 2084, 49486, 663, 54442, -140, -133, 18212, -140, -1000, - -1000, 397, 428, -1000, -1000, 2122, 676, -1000, -1000, 2401, - 653, -1000, 1239, -1000, 1836, 2031, 2341, 34174, 26518, 27794, - 2400, -1000, -1000, 36088, 1672, 1672, 4307, 341, 54893, -1000, - 2944, 1141, 1839, -1000, 2140, -1000, 2136, -1000, 3538, 1317, - 126, -1000, -1000, 1658, -1000, 1141, 2607, 3512, -1000, 3159, - 49486, 3109, 49486, 2943, 1833, 13711, -1000, 836, 3300, -1000, - -1000, 4004, -1000, -1000, 2023, 13711, -1000, -1000, 2394, 27794, - 976, 1810, 1808, 1020, 2942, -1000, 688, 3566, -1000, -1000, - -1000, 1004, 2941, -1000, 2006, 1998, -1000, 49486, -1000, 34174, - 34174, 797, 797, 34174, 34174, 2940, 858, -1000, -1000, 13711, - -1000, -1000, 1730, -1000, -1000, -1000, 1730, 1559, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, 2160, -1000, -1000, 1235, -1000, - 3487, -1000, -1000, 2743, 49486, 2743, -1000, 35450, -1000, 3510, - 3509, -1000, 2743, 252, 255, 2937, 2936, -1000, -347, 49486, - 49486, -237, 2135, -1000, 2392, 212, -1000, -1000, 1226, -235, - -239, 90, 26518, 1784, -1000, 2671, 360, -145, -1000, -1000, - -1000, -1000, 2670, -1000, 701, -1000, -1000, -1000, 1221, 2665, - 2664, -1000, -1000, -1000, -1000, 49486, -1000, 2334, -1000, 2386, - -1000, 2385, 655, 2084, -120, -1000, -1000, 410, -1000, -1000, - -1000, 649, 2265, -1000, -1000, 424, -1000, -1000, -1000, 2111, - 2384, -1000, -1000, 109, -1000, 1751, 1588, -1000, -1000, -1000, - -1000, -1000, -1000, 819, -1000, 430, 54834, -1000, 1362, 27156, - -1000, 1147, 819, 542, 32898, 702, 306, -1000, 2110, -1000, - -1000, 3575, -1000, 697, -1000, 597, -1000, 1581, -1000, 1557, - 34812, 2108, 3009, -1000, 54673, 970, -1000, -1000, 3518, -1000, - -1000, -1000, -1000, -1000, -1000, 2382, 2376, -1000, -1000, -1000, - -1000, -1000, 2098, 2931, 42, 3433, 2375, -1000, -1000, 2929, - 1556, 1514, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, 1513, 1506, 34174, -1000, -1000, 3518, 2090, 26518, - 1730, -1000, -1000, 1503, 1493, -1000, -1000, -1000, -1000, -1000, - -318, 2926, 11147, 11147, -1000, -1000, -1000, 2922, -1000, -1000, - 3505, -237, -248, 2374, 200, 242, -1000, 2370, -1000, -125, - 3294, -151, -1000, -1000, 969, -224, 138, 127, 111, -1000, - -1000, -1000, 11147, -1000, -1000, -1000, 107, -1000, 1743, -1000, - -1000, 2084, 2353, 49486, 678, -1000, -1000, -1000, -1000, 213, - -1000, -1000, -1000, -1000, -1000, -1000, 2341, 2340, -1000, 571, - 3498, -1000, 54893, -1000, 1730, -1000, 571, 1480, -1000, 1730, - 1730, -1000, 508, -1000, 1832, -1000, 2078, -1000, 3487, -1000, - 506, -1000, 577, -1000, -1000, -1000, 1476, -1000, -1000, -1000, - 54673, 585, -1000, 800, 2921, -1000, -1000, 2662, 11147, 2919, - 1730, 2656, -113, 34174, 3212, 3211, 3209, 3111, 1454, -1000, - -1000, 26518, -1000, -1000, 33536, -1000, 2908, 1446, 1412, 49486, - 2288, -1000, -1000, 2335, -1000, 901, 189, 242, -1000, 3496, - 192, 3494, 3493, 1218, 3293, -1000, -1000, 1971, -1000, 172, - 162, 154, -1000, -1000, -1000, -1000, -1000, 2334, 2328, 2307, - -1000, 588, -1000, 344, -1000, -1000, -1000, 330, -1000, 3492, - 608, -1000, 26518, -1000, -1000, 32898, 1672, 1672, -1000, -1000, - 2073, -1000, -1000, -1000, -1000, 2071, -1000, -1000, -1000, 1402, - -1000, 49486, 1031, 7936, -1000, 2144, -1000, 49486, -1000, 3234, - -1000, 274, 1388, 330, 797, 330, 797, 330, 797, 330, - 797, 352, -1000, -1000, -1000, 1328, 11147, -1000, -1000, 1311, - -1000, -1000, -1000, 2891, 2068, 222, 178, 3491, -1000, 2288, - 3490, 2288, 2288, -1000, 169, -141, 969, -1000, -1000, -1000, - -1000, -1000, -1000, 2306, -1000, -1000, -1000, -1000, 1730, 1730, - 2305, 2292, 498, -1000, -1000, 1730, 1730, 1730, 1730, 32260, - 594, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 585, 54893, - -1000, 7936, 1309, -1000, 2743, -1000, 858, -1000, -1000, 3233, - 3012, 3547, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, 2719, 2654, -1000, 49486, 3414, 25880, 182, -1000, - -1000, -1000, 2289, -1000, 2288, -1000, -1000, 1729, -149, -1000, - -277, 2064, 2055, -1000, -1000, 49486, 2051, 2035, 2032, 2277, - -1000, 49486, 579, -1000, 54893, 1306, -1000, 7936, -1000, -1000, - 3565, -1000, 3563, 1008, 1008, 330, 330, 330, 330, 11147, - -1000, -1000, -1000, 49486, -1000, 1297, -1000, -1000, -1000, 1551, - -1000, -1000, -1000, -1000, 2273, -153, -1000, -1000, 2272, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, 1225, 2607, -1000, -1000, - -1000, -1000, -1000, 2123, 693, -1000, 2653, 1183, -1000, 1693, - -1000, 31622, 49486, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, 49486, 7295, -1000, 1533, -1000, -1000, 2743, 49486, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 51046, + 1671, -1000, 1857, 2179, 2525, 2302, 31268, 1856, 1818, 2518, + 2517, 650, -1000, 2512, 2510, 2087, 1855, 951, 51046, -1000, + 1270, 51046, 51046, -1000, 1387, -1000, 1854, 3175, 3184, 3175, + -1000, 3175, -1000, -1000, -1000, -1000, 3205, 2509, -1000, 3204, + -1000, 2842, -1000, -1000, -1000, -1000, 1387, -1000, -1000, -1000, + -1000, -1000, 1123, -1000, 3393, 1089, 1089, 1089, 2714, -1000, + -1000, -1000, -1000, 1351, 2709, -1000, -1000, -1000, 3472, -1000, + -1000, -1000, -1000, -1000, -1000, 18496, 3286, 3437, 3432, 40200, + -1000, -327, 1811, -1000, 2130, 196, 2021, 51046, -1000, -1000, + -1000, 2708, 2705, -225, 222, 3431, 3430, 1139, -1000, 2699, + 1344, -216, -1000, -1000, 1293, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -354, -216, -1000, 1293, -1000, 228, -1000, -1000, + 3278, -1000, -1000, 2304, -1000, 265, -1000, -1000, -1000, -1000, + -1000, -1000, 292, -1000, 51046, -1000, 1333, 140, -1000, 2552, + -1000, -1000, -1000, -1000, -1000, 5088, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, 2501, -1000, -1000, 12069, + -1000, -1000, -1000, 2547, -1000, -1000, 12069, 2697, 2500, 2696, + 2497, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 3478, -1000, + 3427, 1666, 2695, 2693, 1665, 2691, 2689, -1000, 12069, 2688, + 3831, 1052, 2493, 1052, -1000, -1000, 469, 30630, 51046, 3445, + -1000, 51046, 2488, -1000, -1000, 51046, 2123, 714, 2123, 762, + 51046, -1000, -1000, -1000, -1000, -1000, 933, 434, 2687, 1324, + -1000, -1000, -1000, -1000, 434, -1000, 2487, 304, -1000, -1000, + -1000, -1000, 2160, -1000, -1000, 2113, 1511, 319, -1000, -1000, + -1000, -1000, -1000, -1000, 2202, 51046, 39562, 2207, 1830, -342, + -1000, 2952, -1000, 1782, 1782, 1782, 51046, 1653, -1000, 1782, + 1782, 2685, -1000, -1000, 2679, 2677, -122, 843, 1810, 1802, + -1000, 2152, 29992, 38924, 38286, 1345, -1000, 1579, -1000, 845, + -1000, -1000, -1000, -1000, -1000, 3443, 843, -1000, 634, 2148, + 14633, 2951, 14633, 2946, 691, 2945, 1646, -1000, 51046, -1000, + -1000, 51046, 3998, 2944, -1000, 2938, 3176, 615, 2936, 2935, + 51046, 2524, -1000, 3273, 51046, 829, 3285, -1000, -1000, -1000, + 483, -1000, -1000, -1000, 738, -1000, 51046, -1000, 51046, -1000, + 1669, -1000, 28078, -1000, -1000, 1638, -1000, 2486, 2473, 3831, + -1000, -1000, 304, 2459, 6926, -1000, -1000, -1000, -1000, -1000, + 3264, 2458, 2202, 51046, -1000, 51046, 1270, 1270, 3478, 51046, + 9499, -1000, -1000, 12069, 2922, -1000, 12069, -1000, -1000, -1000, + 2676, -1000, -1000, -1000, -1000, -1000, 2913, 3291, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, 1735, -1000, 12069, 12710, -1000, + 878, 15924, -245, 416, -1000, -1000, -1000, -228, 2457, -1000, + -1000, 3426, 2455, 2338, 51046, -1000, -1000, 1293, -1000, 1293, + -225, -1000, -1000, 1287, -1000, -1000, 1178, 792, -1000, 2674, + 286, -1000, 2516, -1000, 2499, 149, -1000, 149, -1000, 259, + 12069, -1000, 2453, -1000, -1000, -1000, 2451, -1000, -1000, 2375, + -1000, 2673, -1000, 2450, -1000, -1000, 51046, -1000, -1000, 1124, + 2446, -343, -1000, 2425, 2123, 2424, 2123, 51046, 713, 5224, + -124, -122, 19134, -124, -1000, -1000, 408, 458, -1000, -1000, + 2107, 721, -1000, -1000, 2423, 671, -1000, 1270, -1000, 1827, + 2020, 2380, 35734, 28078, 29354, 2416, -1000, -1000, 37648, 1735, + 1735, 5458, 398, 5751, -1000, 2895, 1140, 1799, -1000, 2147, + -1000, 2140, -1000, 3443, 1345, 148, -1000, -1000, 1720, 29992, + -1000, 1140, 2724, 3425, -1000, 4282, 51046, 4119, 51046, 2893, + 1821, 14633, -1000, 844, 3232, -1000, -1000, 3998, -1000, -1000, + 2024, 14633, -1000, -1000, 2414, 29354, 1103, 1819, 1815, 1116, + 2892, -1000, 741, 3470, -1000, -1000, -1000, 1017, 2890, -1000, + 1998, 1997, -1000, 51046, -1000, 35734, 35734, 842, 842, 35734, + 35734, 2887, 903, -1000, -1000, 14633, -1000, -1000, 1782, -1000, + -1000, -1000, 1782, 1592, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, 2207, -1000, -1000, 1252, -1000, 3408, -1000, -1000, 2552, + 51046, 2552, -1000, 37010, -1000, 3424, 3423, -1000, 2552, 263, + 262, 2878, 2873, -1000, -327, 51046, 51046, -230, 2139, -1000, + 2411, 237, -1000, -1000, 1180, -228, -232, 126, 28078, 1814, + -1000, 2671, 378, -138, -1000, -1000, -1000, -1000, 2664, -1000, + 927, -1000, -1000, -1000, 1164, 2661, 2659, -1000, -1000, -1000, + -1000, 51046, -1000, 2372, -1000, 2410, -1000, 2406, 708, 2123, + -110, -1000, -1000, 478, -1000, -1000, -1000, 662, 2334, -1000, + -1000, 450, -1000, -1000, -1000, 2202, 2404, -1000, -1000, 139, + -1000, 1800, 1625, -1000, -1000, -1000, -1000, -1000, -1000, 839, + -1000, 434, 56116, -1000, 1304, 28716, -1000, 1178, 839, 562, + 34458, 719, 317, -1000, 2137, -1000, -1000, 3478, -1000, 3443, + 707, -1000, 686, -1000, 1595, -1000, 1588, 36372, 2134, 4087, + -1000, 5713, 969, -1000, -1000, 4331, -1000, -1000, -1000, -1000, + -1000, -1000, 2403, 2394, -1000, -1000, -1000, -1000, -1000, 2125, + 2860, 131, 3357, 2393, -1000, -1000, 2858, 1584, 1575, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 1551, + 1516, 35734, -1000, -1000, 4331, 2124, 28078, 1782, -1000, -1000, + 1510, 1487, -1000, -1000, -1000, -1000, -1000, -307, 2857, 12069, + 12069, -1000, -1000, -1000, 2841, -1000, -1000, 3420, -230, -234, + 2390, 227, 260, -1000, 2388, -1000, -111, 3237, -141, -1000, + -1000, 970, -217, 198, 197, 156, -1000, -1000, -1000, 12069, + -1000, -1000, -1000, 137, -1000, 1788, -1000, -1000, 2123, 2386, + 51046, 740, -1000, -1000, -1000, -1000, 283, -1000, -1000, -1000, + -1000, -1000, -1000, 2380, 2378, -1000, 618, 3419, -1000, 5751, + -1000, 1782, -1000, 618, 1486, -1000, 1782, 1782, -1000, 561, + -1000, 1787, -1000, 2112, -1000, 3408, 3478, -1000, 552, -1000, + 625, -1000, -1000, -1000, 1475, -1000, -1000, -1000, 5713, 672, + -1000, 832, 2832, -1000, -1000, 2658, 12069, 2831, 1782, 2657, + -100, 35734, 3162, 2903, 2899, 2837, 1457, -1000, -1000, 28078, + -1000, -1000, 35096, -1000, 2828, 1456, 1450, 51046, 2338, -1000, + -1000, 2374, -1000, 898, 211, 260, -1000, 3418, 232, 3415, + 3414, 1161, 3226, -1000, -1000, 1980, -1000, 192, 189, 166, + -1000, -1000, -1000, -1000, -1000, 2372, 2371, 2367, -1000, 630, + -1000, 381, -1000, -1000, -1000, 338, -1000, 3413, 729, -1000, + 28078, -1000, -1000, 34458, 1735, 1735, -1000, -1000, 2110, -1000, + -1000, 3408, -1000, -1000, 2104, -1000, -1000, -1000, 1435, -1000, + 51046, 1024, 8858, -1000, 2360, -1000, 51046, -1000, 3183, -1000, + 336, 1410, 338, 842, 338, 842, 338, 842, 338, 842, + 376, -1000, -1000, -1000, 1403, 12069, -1000, -1000, 1381, -1000, + -1000, -1000, 2827, 2099, 222, 220, 3412, -1000, 2338, 3411, + 2338, 2338, -1000, 146, -128, 970, -1000, -1000, -1000, -1000, + -1000, -1000, 2362, -1000, -1000, -1000, -1000, 1782, 1782, 2343, + 2342, 525, -1000, -1000, 1782, 1782, 1782, 1782, 33820, 679, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 672, 5751, + -1000, 8858, 1373, -1000, 2552, -1000, 903, -1000, -1000, 3182, + 2964, 3451, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, 2824, 2649, -1000, 51046, 3348, 27440, 215, -1000, + -1000, -1000, 2339, -1000, 2338, -1000, -1000, 1772, -139, -1000, + -263, 2096, 2095, -1000, -1000, 51046, 2066, 2046, 2037, 2332, + -1000, 51046, 634, -1000, 5751, 1336, -1000, 8858, -1000, -1000, + 3469, -1000, 3464, 1039, 1039, 338, 338, 338, 338, 12069, + -1000, -1000, -1000, 51046, -1000, 1258, -1000, -1000, -1000, 1559, + -1000, -1000, -1000, -1000, 2311, -142, -1000, -1000, 2307, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, 1229, 2724, -1000, -1000, + -1000, -1000, -1000, 2101, 749, -1000, 2521, 1158, -1000, 1759, + -1000, 33182, 51046, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, 51046, 8217, -1000, 1350, -1000, -1000, 2552, 51046, -1000, } var yyPgo = [...]int{ - 0, 181, 3594, 241, 179, 4264, 84, 248, 333, 245, - 244, 243, 4263, 4262, 4261, 3361, 3358, 4260, 4256, 4255, - 4254, 4253, 4252, 4251, 4250, 4248, 4247, 4246, 4245, 4240, - 4239, 4238, 4237, 4236, 4235, 4234, 4233, 4232, 4231, 4230, - 4229, 4225, 4224, 4223, 4222, 4221, 4220, 242, 4219, 4218, - 4217, 4216, 4215, 4214, 4213, 4212, 4209, 4208, 4205, 4204, - 4203, 4201, 4200, 4199, 4198, 4197, 4196, 4195, 4194, 4193, - 4192, 4191, 4190, 4189, 4188, 4186, 4184, 4183, 4181, 4180, - 4178, 4177, 4176, 4175, 4174, 208, 4173, 3356, 4172, 4171, - 4170, 4169, 4167, 4166, 4165, 4162, 4161, 4160, 4158, 296, - 4156, 4155, 4154, 4153, 4152, 4151, 4150, 4149, 4148, 4147, - 4145, 4144, 4143, 262, 4142, 4137, 4136, 4135, 215, 4121, - 253, 4119, 174, 140, 4118, 4110, 4109, 4108, 4107, 4104, - 4101, 4099, 4098, 4097, 4096, 4095, 4092, 4091, 238, 191, - 70, 4089, 47, 4088, 4086, 216, 4085, 155, 4083, 152, - 4082, 4081, 4067, 4066, 4064, 4063, 4061, 4060, 4059, 4058, - 4053, 4052, 4051, 4050, 4049, 4048, 4047, 4044, 4043, 4041, - 4038, 4037, 4035, 4034, 50, 4033, 260, 4032, 79, 4031, - 182, 4030, 75, 4029, 45, 137, 258, 1081, 264, 4028, - 188, 4027, 4022, 249, 171, 4020, 4019, 286, 4017, 164, - 222, 163, 103, 120, 4013, 145, 4007, 272, 48, 49, - 251, 150, 4006, 4005, 58, 165, 135, 4004, 212, 100, - 115, 4003, 4002, 148, 3999, 235, 173, 3998, 108, 3997, - 3996, 3995, 3994, 3979, 198, 192, 3977, 3975, 133, 3974, - 3973, 64, 130, 3972, 77, 129, 176, 125, 3968, 2312, - 126, 128, 3965, 123, 106, 3963, 97, 3962, 3961, 3960, - 3956, 184, 3954, 3952, 141, 61, 3950, 3949, 3948, 68, - 3947, 83, 3946, 31, 3944, 57, 3943, 3942, 3941, 3939, - 3938, 3937, 3936, 3935, 3934, 3933, 3932, 3931, 55, 3930, - 3926, 3925, 3923, 7, 11, 15, 3921, 27, 3917, 178, - 3916, 3915, 169, 3914, 197, 3911, 3909, 98, 90, 3907, - 92, 167, 3905, 10, 33, 69, 3904, 3903, 3902, 331, - 3901, 3900, 3899, 266, 3898, 3897, 3895, 168, 3891, 3890, - 3886, 653, 3885, 3884, 3883, 3882, 3880, 3879, 104, 3876, - 1, 214, 43, 3875, 134, 138, 3872, 39, 32, 3870, - 51, 113, 200, 136, 102, 3869, 3868, 3867, 557, 196, - 105, 29, 0, 101, 220, 158, 3864, 3863, 3862, 252, - 3861, 230, 221, 231, 886, 256, 211, 3860, 3859, 62, - 3857, 162, 30, 54, 159, 81, 21, 240, 3855, 853, - 9, 177, 3849, 203, 3848, 8, 18, 144, 156, 3847, - 3846, 36, 268, 3844, 3843, 3841, 131, 3840, 3839, 300, - 82, 3838, 3837, 3836, 3833, 40, 3832, 189, 16, 3830, - 109, 3829, 239, 3828, 201, 146, 185, 183, 157, 218, - 229, 78, 85, 3827, 1814, 160, 112, 17, 3825, 219, - 3824, 224, 132, 3817, 89, 3815, 247, 259, 207, 3809, - 186, 12, 52, 38, 28, 42, 13, 323, 204, 3802, - 3799, 24, 53, 3798, 59, 3782, 20, 3781, 3780, 44, - 3773, 60, 5, 3769, 3766, 19, 22, 3763, 35, 205, - 190, 124, 99, 67, 3762, 3761, 147, 250, 3760, 142, - 154, 161, 3759, 80, 3758, 3757, 3756, 3754, 2731, 254, - 3753, 3752, 3748, 3747, 3746, 3744, 3743, 3742, 213, 3739, - 116, 41, 3738, 3737, 3735, 3733, 94, 151, 3731, 3729, - 3728, 3727, 34, 143, 3726, 14, 3725, 25, 23, 37, - 3724, 107, 3723, 3, 187, 3722, 3721, 4, 3719, 3717, - 2, 3713, 3712, 121, 3711, 93, 26, 172, 118, 3709, - 3707, 91, 210, 149, 3706, 3704, 88, 236, 202, 3702, - 95, 232, 257, 3701, 209, 3698, 3696, 3695, 3694, 3693, - 1236, 3690, 3689, 233, 74, 96, 3688, 217, 122, 3687, - 3686, 87, 166, 119, 114, 56, 86, 3681, 111, 206, - 3656, 195, 3654, 255, 3653, 3652, 110, 3651, 3647, 3646, - 3645, 193, 3644, 3643, 194, 226, 3636, 3634, 265, 3620, - 3615, 3610, 3609, 3608, 3607, 3604, 3603, 3598, 3597, 237, - 486, 3596, + 0, 185, 3501, 256, 189, 4133, 78, 267, 272, 246, + 261, 255, 4132, 4131, 4128, 3304, 3301, 4127, 4124, 4121, + 4120, 4119, 4118, 4117, 4114, 4109, 4108, 4107, 4106, 4104, + 4103, 4102, 4101, 4100, 4099, 4098, 4097, 4096, 4095, 4093, + 4092, 4091, 4090, 4089, 4087, 4086, 4084, 254, 4082, 4079, + 4077, 4076, 4072, 4071, 4070, 4069, 4061, 4057, 4055, 4054, + 4053, 4052, 4051, 4050, 4049, 4047, 4046, 4044, 4043, 4042, + 4039, 4034, 4033, 4031, 4030, 4026, 4024, 4023, 4022, 4021, + 4018, 4017, 4016, 4015, 4011, 226, 4005, 3290, 4004, 4003, + 4001, 4000, 3996, 3994, 3993, 3992, 3988, 3987, 3983, 253, + 3981, 3977, 3976, 3974, 3972, 3968, 3967, 3966, 3965, 3963, + 3962, 3961, 3960, 292, 3957, 3956, 3955, 3954, 214, 3952, + 278, 3949, 179, 144, 3948, 3947, 3946, 3944, 3943, 3938, + 3936, 3935, 3934, 3933, 3932, 3930, 3929, 3927, 251, 196, + 62, 3925, 50, 3924, 3923, 221, 3922, 155, 3921, 152, + 3920, 3919, 3918, 3917, 3916, 3915, 3913, 3912, 3909, 3908, + 3906, 3905, 3904, 3903, 3902, 3901, 3900, 3898, 3893, 3888, + 3887, 3886, 3885, 3884, 54, 3883, 266, 3881, 79, 3878, + 175, 3873, 75, 3872, 88, 122, 271, 3073, 263, 3871, + 194, 3870, 3869, 265, 177, 3867, 3866, 276, 3865, 188, + 231, 167, 113, 112, 3864, 140, 3861, 273, 47, 29, + 250, 150, 3859, 3858, 55, 206, 119, 3857, 220, 104, + 109, 3856, 3853, 148, 3851, 235, 178, 3850, 107, 3849, + 3847, 3846, 3845, 3844, 202, 197, 3843, 3841, 130, 3839, + 3838, 67, 128, 3836, 77, 125, 171, 120, 3835, 636, + 121, 97, 3834, 123, 105, 3833, 81, 3832, 3831, 3829, + 3828, 182, 3827, 3826, 134, 60, 3825, 3824, 3823, 70, + 3821, 82, 3820, 34, 3817, 57, 3816, 3815, 3814, 3796, + 3795, 3794, 3792, 3790, 3788, 3786, 3785, 3784, 49, 3783, + 3782, 3780, 3778, 5, 14, 17, 3777, 28, 3774, 174, + 3773, 3772, 169, 3770, 200, 3769, 3768, 94, 95, 3767, + 100, 166, 3766, 9, 27, 74, 3765, 3760, 3759, 64, + 3758, 3757, 3756, 277, 3755, 3753, 3752, 164, 3751, 3749, + 3748, 633, 3747, 3746, 3745, 3743, 3742, 3740, 142, 3739, + 1, 219, 41, 3738, 124, 138, 3736, 38, 30, 3735, + 45, 114, 224, 129, 101, 3734, 3733, 3731, 141, 201, + 80, 39, 0, 99, 233, 161, 3730, 3729, 3728, 247, + 3726, 239, 252, 243, 346, 268, 213, 3724, 3723, 58, + 3722, 165, 24, 53, 132, 98, 21, 207, 3721, 1788, + 10, 183, 3720, 210, 3719, 8, 16, 262, 151, 3716, + 3715, 32, 269, 3711, 3698, 3697, 136, 3696, 3695, 186, + 83, 3693, 3692, 3691, 3689, 43, 3687, 181, 36, 3686, + 154, 3685, 257, 3684, 259, 137, 184, 176, 159, 222, + 232, 89, 87, 193, 1880, 158, 102, 15, 3683, 230, + 3682, 192, 162, 3680, 143, 3679, 236, 274, 211, 3678, + 187, 11, 48, 40, 33, 44, 12, 381, 205, 3677, + 3676, 22, 52, 3675, 69, 3674, 20, 3670, 3669, 51, + 3668, 61, 7, 3662, 3651, 19, 18, 3650, 37, 212, + 173, 126, 96, 59, 3646, 3643, 145, 135, 3640, 133, + 157, 163, 3637, 84, 3636, 3635, 3634, 3630, 1010, 241, + 3629, 3627, 3625, 3624, 3623, 3621, 3619, 3617, 218, 215, + 108, 42, 3616, 3615, 3614, 3613, 85, 149, 3611, 3609, + 3608, 3607, 31, 146, 3605, 13, 3604, 26, 23, 35, + 3603, 106, 3602, 3, 191, 3601, 3598, 4, 3597, 3595, + 2, 3594, 3593, 117, 3592, 103, 25, 172, 131, 3590, + 3589, 93, 217, 147, 3588, 3582, 92, 248, 204, 3581, + 156, 249, 260, 3578, 216, 3577, 3576, 3572, 3569, 3562, + 258, 3561, 244, 208, 68, 86, 3559, 229, 111, 3557, + 3556, 91, 168, 115, 110, 56, 90, 3552, 118, 209, + 3550, 203, 3547, 264, 3546, 3545, 116, 3542, 3539, 3538, + 3533, 195, 3532, 3530, 198, 237, 3529, 3528, 275, 3526, + 3525, 3519, 3518, 3511, 3509, 3507, 3505, 3496, 3493, 242, + 245, 3491, } -//line mysql_sql.y:12964 +//line mysql_sql.y:12998 type yySymType struct { union interface{} id int @@ -8926,123 +9051,123 @@ var yyR1 = [...]int{ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 26, 27, 29, 429, 429, 426, 28, 20, 19, 19, 23, 22, 18, 18, 21, 24, 25, 25, - 9, 9, 9, 9, 15, 15, 16, 194, 194, 250, - 250, 574, 574, 570, 570, 571, 571, 571, 572, 572, - 573, 573, 120, 509, 509, 509, 509, 509, 509, 8, - 8, 219, 219, 508, 508, 508, 508, 508, 508, 433, - 433, 433, 552, 552, 552, 553, 218, 218, 211, 211, - 510, 510, 398, 554, 554, 518, 518, 517, 517, 516, - 516, 216, 216, 217, 217, 197, 197, 139, 139, 523, - 523, 523, 523, 531, 531, 493, 493, 288, 288, 342, - 342, 343, 343, 184, 184, 185, 185, 185, 185, 185, - 185, 608, 608, 609, 610, 611, 611, 612, 612, 612, - 613, 613, 613, 613, 613, 560, 560, 562, 562, 561, - 215, 215, 209, 209, 210, 210, 210, 208, 208, 207, - 206, 206, 205, 203, 203, 203, 204, 204, 204, 223, - 223, 187, 187, 187, 186, 186, 186, 186, 186, 323, - 323, 323, 323, 323, 323, 323, 323, 323, 323, 323, - 323, 188, 191, 191, 192, 192, 193, 193, 193, 193, - 193, 193, 193, 193, 193, 193, 320, 320, 321, 321, - 321, 321, 321, 137, 137, 502, 502, 319, 319, 189, - 189, 190, 190, 190, 190, 318, 318, 317, 202, 202, - 201, 200, 200, 200, 195, 195, 195, 195, 195, 196, - 329, 329, 328, 328, 327, 327, 327, 327, 330, 123, - 136, 136, 138, 222, 222, 213, 212, 326, 325, 325, - 325, 325, 221, 221, 220, 220, 214, 214, 199, 199, - 199, 199, 324, 198, 322, 598, 598, 597, 597, 596, - 594, 594, 594, 595, 595, 595, 595, 544, 544, 544, - 544, 544, 360, 360, 360, 365, 365, 363, 363, 363, - 363, 363, 369, 7, 7, 7, 7, 7, 7, 7, - 7, 7, 33, 33, 33, 33, 33, 33, 33, 33, - 33, 33, 33, 33, 33, 39, 233, 234, 40, 235, - 235, 236, 236, 237, 237, 238, 239, 240, 240, 240, - 240, 38, 225, 225, 226, 226, 227, 227, 228, 229, - 229, 229, 232, 230, 231, 231, 616, 616, 615, 37, - 37, 30, 175, 175, 176, 176, 176, 178, 178, 284, - 284, 284, 177, 177, 179, 179, 179, 575, 577, 577, - 579, 578, 578, 578, 581, 581, 581, 581, 581, 582, - 582, 582, 582, 583, 583, 31, 157, 157, 182, 182, - 162, 586, 586, 586, 585, 585, 587, 587, 588, 588, - 346, 346, 347, 347, 173, 174, 174, 164, 159, 181, - 181, 181, 181, 181, 183, 183, 252, 252, 158, 163, - 166, 168, 576, 584, 584, 584, 430, 430, 427, 428, - 428, 425, 424, 424, 424, 590, 590, 589, 589, 589, - 361, 361, 32, 420, 420, 422, 423, 423, 423, 414, - 414, 414, 414, 36, 418, 418, 419, 419, 419, 419, - 419, 419, 419, 419, 419, 419, 419, 415, 415, 417, - 417, 413, 413, 413, 413, 413, 413, 413, 413, 35, - 180, 180, 412, 412, 409, 409, 407, 407, 408, 408, - 406, 406, 406, 410, 410, 43, 78, 44, 45, 46, - 42, 411, 411, 34, 34, 34, 34, 34, 34, 34, - 34, 34, 34, 141, 140, 140, 140, 140, 140, 143, - 143, 345, 345, 344, 344, 142, 285, 285, 41, 263, - 263, 485, 485, 480, 480, 480, 480, 480, 500, 500, - 500, 481, 481, 481, 482, 482, 482, 484, 484, 484, - 483, 483, 483, 483, 483, 499, 499, 501, 501, 501, - 452, 452, 453, 453, 453, 456, 456, 472, 472, 473, - 473, 471, 471, 478, 478, 477, 477, 476, 476, 475, - 475, 474, 474, 474, 474, 467, 467, 466, 466, 454, - 454, 454, 454, 454, 455, 455, 455, 465, 465, 470, - 470, 316, 316, 315, 315, 271, 271, 272, 272, 314, - 314, 269, 269, 270, 270, 270, 313, 313, 313, 313, + 9, 9, 9, 9, 15, 15, 15, 16, 194, 194, + 250, 250, 574, 574, 570, 570, 571, 571, 571, 572, + 572, 573, 573, 120, 120, 509, 509, 509, 509, 509, + 509, 8, 8, 8, 219, 219, 508, 508, 508, 508, + 508, 508, 433, 433, 433, 552, 552, 552, 553, 218, + 218, 211, 211, 510, 510, 398, 554, 554, 518, 518, + 517, 517, 516, 516, 216, 216, 217, 217, 197, 197, + 139, 139, 523, 523, 523, 523, 531, 531, 493, 493, + 288, 288, 342, 342, 343, 343, 184, 184, 185, 185, + 185, 185, 185, 185, 608, 608, 609, 610, 611, 611, + 612, 612, 612, 613, 613, 613, 613, 613, 560, 560, + 562, 562, 561, 215, 215, 209, 209, 210, 210, 210, + 208, 208, 207, 206, 206, 205, 203, 203, 203, 204, + 204, 204, 223, 223, 187, 187, 187, 186, 186, 186, + 186, 186, 323, 323, 323, 323, 323, 323, 323, 323, + 323, 323, 323, 323, 188, 191, 191, 192, 192, 193, + 193, 193, 193, 193, 193, 193, 193, 193, 193, 320, + 320, 321, 321, 321, 321, 321, 137, 137, 502, 502, + 319, 319, 189, 189, 190, 190, 190, 190, 318, 318, + 317, 202, 202, 201, 200, 200, 200, 195, 195, 195, + 195, 195, 196, 329, 329, 328, 328, 327, 327, 327, + 327, 330, 123, 136, 136, 138, 222, 222, 213, 212, + 326, 325, 325, 325, 325, 221, 221, 220, 220, 214, + 214, 199, 199, 199, 199, 324, 198, 322, 598, 598, + 597, 597, 596, 594, 594, 594, 595, 595, 595, 595, + 544, 544, 544, 544, 544, 360, 360, 360, 365, 365, + 363, 363, 363, 363, 363, 369, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 33, 33, 33, 33, 33, + 33, 33, 33, 33, 33, 33, 33, 33, 39, 233, + 234, 40, 235, 235, 236, 236, 237, 237, 238, 239, + 240, 240, 240, 240, 38, 225, 225, 226, 226, 227, + 227, 228, 229, 229, 229, 232, 230, 231, 231, 616, + 616, 615, 37, 37, 30, 175, 175, 176, 176, 176, + 178, 178, 284, 284, 284, 177, 177, 179, 179, 179, + 575, 577, 577, 579, 578, 578, 578, 581, 581, 581, + 581, 581, 582, 582, 582, 582, 583, 583, 31, 157, + 157, 182, 182, 162, 586, 586, 586, 585, 585, 587, + 587, 588, 588, 346, 346, 347, 347, 173, 174, 174, + 164, 159, 181, 181, 181, 181, 181, 183, 183, 252, + 252, 158, 163, 166, 168, 576, 584, 584, 584, 430, + 430, 427, 428, 428, 425, 424, 424, 424, 590, 590, + 589, 589, 589, 361, 361, 32, 420, 420, 422, 423, + 423, 423, 414, 414, 414, 414, 36, 418, 418, 419, + 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, + 415, 415, 417, 417, 413, 413, 413, 413, 413, 413, + 413, 413, 35, 180, 180, 412, 412, 409, 409, 407, + 407, 408, 408, 406, 406, 406, 410, 410, 43, 78, + 44, 45, 46, 42, 411, 411, 34, 34, 34, 34, + 34, 34, 34, 34, 34, 34, 141, 140, 140, 140, + 140, 140, 143, 143, 345, 345, 344, 344, 142, 285, + 285, 41, 263, 263, 485, 485, 480, 480, 480, 480, + 480, 500, 500, 500, 481, 481, 481, 482, 482, 482, + 484, 484, 484, 483, 483, 483, 483, 483, 499, 499, + 501, 501, 501, 452, 452, 453, 453, 453, 456, 456, + 472, 472, 473, 473, 471, 471, 478, 478, 477, 477, + 476, 476, 475, 475, 474, 474, 474, 474, 467, 467, + 466, 466, 454, 454, 454, 454, 454, 455, 455, 455, + 465, 465, 470, 470, 316, 316, 315, 315, 271, 271, + 272, 272, 314, 314, 269, 269, 270, 270, 270, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, - 313, 313, 550, 550, 551, 274, 274, 286, 286, 286, - 286, 286, 286, 273, 273, 275, 275, 251, 251, 249, - 249, 241, 241, 241, 241, 241, 241, 242, 242, 243, - 243, 244, 244, 244, 248, 248, 247, 247, 247, 247, - 245, 245, 246, 246, 246, 246, 246, 246, 438, 438, - 547, 547, 548, 548, 543, 543, 543, 546, 546, 546, - 546, 546, 546, 546, 546, 549, 549, 549, 545, 545, - 253, 339, 339, 339, 362, 362, 362, 362, 364, 338, - 338, 338, 268, 268, 267, 267, 265, 265, 265, 265, + 313, 313, 313, 313, 313, 550, 550, 551, 274, 274, + 286, 286, 286, 286, 286, 286, 273, 273, 275, 275, + 251, 251, 249, 249, 241, 241, 241, 241, 241, 241, + 242, 242, 243, 243, 244, 244, 244, 248, 248, 247, + 247, 247, 247, 245, 245, 246, 246, 246, 246, 246, + 246, 438, 438, 547, 547, 548, 548, 543, 543, 543, + 546, 546, 546, 546, 546, 546, 546, 546, 549, 549, + 549, 545, 545, 253, 339, 339, 339, 362, 362, 362, + 362, 364, 338, 338, 338, 268, 268, 267, 267, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, - 265, 265, 265, 265, 265, 265, 265, 265, 437, 437, - 378, 378, 379, 379, 297, 296, 296, 296, 296, 296, - 294, 295, 293, 293, 293, 293, 293, 290, 290, 289, - 289, 289, 291, 291, 291, 291, 291, 416, 416, 287, - 287, 277, 277, 277, 276, 276, 276, 479, 385, 385, - 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, - 385, 387, 387, 387, 387, 387, 387, 387, 387, 387, + 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, + 265, 437, 437, 378, 378, 379, 379, 297, 296, 296, + 296, 296, 296, 294, 295, 293, 293, 293, 293, 293, + 290, 290, 289, 289, 289, 291, 291, 291, 291, 291, + 416, 416, 287, 287, 277, 277, 277, 276, 276, 276, + 479, 385, 385, 385, 385, 385, 385, 385, 385, 385, + 385, 385, 385, 385, 387, 387, 387, 387, 387, 387, + 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, - 387, 387, 387, 387, 387, 387, 387, 387, 292, 336, - 336, 336, 337, 337, 337, 337, 337, 337, 337, 337, - 388, 388, 394, 394, 559, 559, 558, 254, 254, 254, - 255, 255, 255, 255, 255, 255, 255, 255, 255, 264, - 264, 264, 461, 461, 461, 461, 462, 462, 462, 462, - 463, 463, 463, 459, 459, 460, 460, 399, 400, 400, - 506, 506, 507, 507, 457, 457, 458, 335, 335, 335, + 387, 292, 336, 336, 336, 337, 337, 337, 337, 337, + 337, 337, 337, 388, 388, 394, 394, 559, 559, 558, + 254, 254, 254, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 264, 264, 264, 461, 461, 461, 461, 462, + 462, 462, 462, 463, 463, 463, 459, 459, 460, 460, + 399, 400, 400, 506, 506, 507, 507, 457, 457, 458, 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 514, 514, 514, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 569, - 569, 569, 555, 555, 555, 556, 556, 556, 556, 556, - 556, 556, 556, 556, 556, 556, 556, 557, 557, 557, + 335, 335, 335, 514, 514, 514, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 569, 569, 569, 555, 555, 555, 556, 556, + 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 557, 557, 557, 557, 557, 557, 557, 557, 557, 557, - 557, 557, 557, 557, 334, 334, 334, 333, 333, 333, + 557, 557, 557, 557, 557, 557, 557, 334, 334, 334, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, - 333, 333, 333, 333, 333, 401, 401, 402, 402, 511, - 511, 511, 511, 511, 511, 512, 512, 513, 513, 513, - 513, 505, 505, 505, 505, 505, 505, 505, 505, 505, + 333, 333, 333, 333, 333, 333, 333, 333, 401, 401, + 402, 402, 511, 511, 511, 511, 511, 511, 512, 512, + 513, 513, 513, 513, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, - 505, 386, 331, 331, 331, 403, 395, 395, 396, 396, - 397, 397, 389, 389, 389, 389, 389, 389, 390, 390, - 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, - 392, 384, 384, 384, 384, 384, 384, 384, 384, 384, - 384, 384, 391, 391, 393, 393, 405, 405, 405, 404, - 404, 404, 404, 404, 404, 404, 266, 266, 266, 266, - 383, 383, 383, 382, 382, 382, 382, 382, 382, 382, - 382, 382, 382, 382, 382, 256, 256, 256, 256, 260, - 260, 262, 262, 262, 262, 262, 262, 262, 262, 262, - 262, 262, 262, 262, 262, 261, 261, 261, 261, 261, - 259, 259, 259, 259, 259, 257, 257, 257, 257, 257, + 505, 505, 505, 505, 386, 331, 331, 331, 403, 395, + 395, 396, 396, 397, 397, 389, 389, 389, 389, 389, + 389, 390, 390, 392, 392, 392, 392, 392, 392, 392, + 392, 392, 392, 392, 384, 384, 384, 384, 384, 384, + 384, 384, 384, 384, 384, 391, 391, 393, 393, 405, + 405, 405, 404, 404, 404, 404, 404, 404, 404, 266, + 266, 266, 266, 383, 383, 383, 382, 382, 382, 382, + 382, 382, 382, 382, 382, 382, 382, 382, 256, 256, + 256, 256, 260, 260, 262, 262, 262, 262, 262, 262, + 262, 262, 262, 262, 262, 262, 262, 262, 261, 261, + 261, 261, 261, 259, 259, 259, 259, 259, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, - 257, 257, 257, 257, 121, 122, 122, 258, 341, 341, - 486, 486, 489, 489, 487, 487, 488, 490, 490, 490, - 491, 491, 491, 492, 492, 492, 496, 496, 350, 350, - 350, 358, 358, 357, 357, 357, 357, 357, 357, 357, + 257, 257, 257, 257, 257, 257, 257, 121, 122, 122, + 258, 341, 341, 486, 486, 489, 489, 487, 487, 488, + 490, 490, 490, 491, 491, 491, 492, 492, 492, 496, + 496, 350, 350, 350, 358, 358, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, @@ -9078,13 +9203,13 @@ var yyR1 = [...]int{ 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, - 357, 357, 357, 357, 357, 357, 357, 356, 356, 356, - 356, 356, 356, 356, 356, 356, 356, 355, 355, 355, + 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, + 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, + 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, - 355, 355, 355, 355, 355, 355, 355, } var yyR2 = [...]int{ @@ -9160,123 +9285,124 @@ var yyR2 = [...]int{ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 4, 4, 1, 3, 1, 4, 6, 6, 4, 4, 4, 4, 4, 3, 6, 3, 5, - 1, 1, 2, 2, 11, 8, 9, 1, 3, 2, - 4, 0, 2, 0, 1, 1, 1, 1, 0, 1, - 0, 1, 4, 2, 1, 5, 4, 4, 2, 5, - 5, 1, 3, 2, 1, 5, 4, 4, 2, 0, - 5, 4, 0, 1, 3, 3, 1, 3, 1, 3, - 1, 3, 4, 0, 1, 0, 1, 1, 3, 1, - 1, 0, 4, 1, 3, 2, 1, 0, 8, 0, - 4, 7, 4, 0, 2, 0, 2, 0, 2, 0, - 4, 1, 3, 1, 1, 6, 4, 5, 7, 4, - 5, 0, 1, 3, 8, 0, 6, 0, 4, 6, - 1, 1, 1, 1, 1, 2, 3, 1, 3, 6, - 0, 3, 0, 1, 2, 4, 4, 0, 1, 3, - 1, 3, 3, 0, 1, 1, 0, 2, 2, 0, - 2, 3, 3, 3, 1, 3, 3, 3, 3, 1, - 2, 2, 1, 2, 2, 1, 2, 2, 1, 2, - 2, 7, 0, 1, 1, 2, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 0, 2, 0, 4, - 7, 6, 6, 3, 5, 0, 2, 0, 2, 1, - 3, 1, 2, 3, 5, 0, 1, 2, 1, 3, - 1, 1, 1, 1, 4, 4, 4, 3, 4, 3, - 2, 2, 2, 2, 2, 3, 2, 3, 2, 4, - 1, 3, 4, 0, 2, 1, 3, 1, 1, 2, - 2, 3, 0, 1, 2, 4, 1, 3, 1, 3, - 2, 3, 1, 4, 3, 0, 1, 1, 2, 5, - 2, 2, 2, 0, 2, 3, 3, 0, 1, 3, - 1, 3, 0, 1, 2, 1, 1, 0, 1, 2, - 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 2, 2, 11, 12, 8, 9, 1, 3, + 2, 4, 0, 2, 0, 1, 1, 1, 1, 0, + 1, 0, 1, 4, 5, 2, 1, 5, 4, 4, + 2, 5, 5, 6, 1, 3, 2, 1, 5, 4, + 4, 2, 0, 5, 4, 0, 1, 3, 3, 1, + 3, 1, 3, 1, 3, 4, 0, 1, 0, 1, + 1, 3, 1, 1, 0, 4, 1, 3, 2, 1, + 0, 8, 0, 4, 7, 4, 0, 2, 0, 2, + 0, 2, 0, 4, 1, 3, 1, 1, 6, 4, + 5, 7, 4, 5, 0, 1, 3, 8, 0, 6, + 0, 4, 6, 1, 1, 1, 1, 1, 2, 3, + 1, 3, 6, 0, 3, 0, 1, 2, 4, 4, + 0, 1, 3, 1, 3, 3, 0, 1, 1, 0, + 2, 2, 0, 2, 3, 3, 3, 1, 3, 3, + 3, 3, 1, 2, 2, 1, 2, 2, 1, 2, + 2, 1, 2, 2, 7, 0, 1, 1, 2, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, + 2, 0, 4, 7, 6, 6, 3, 5, 0, 2, + 0, 2, 1, 3, 1, 2, 3, 5, 0, 1, + 2, 1, 3, 1, 1, 1, 1, 4, 4, 4, + 3, 4, 3, 2, 2, 2, 2, 2, 3, 2, + 3, 2, 4, 1, 3, 4, 0, 2, 1, 3, + 1, 1, 2, 2, 3, 0, 1, 2, 4, 1, + 3, 1, 3, 2, 3, 1, 4, 3, 0, 1, + 1, 2, 5, 2, 2, 2, 0, 2, 3, 3, + 0, 1, 3, 1, 3, 0, 1, 2, 1, 1, + 0, 1, 2, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 7, 1, 1, 7, 1, - 3, 0, 1, 1, 3, 1, 3, 0, 1, 1, - 1, 14, 1, 3, 0, 1, 1, 3, 1, 1, - 2, 4, 1, 1, 1, 1, 0, 1, 2, 9, - 9, 7, 1, 2, 3, 3, 3, 0, 4, 1, - 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, - 4, 1, 1, 1, 3, 3, 4, 3, 3, 0, - 1, 1, 1, 0, 2, 7, 8, 10, 2, 2, - 8, 0, 3, 3, 0, 3, 0, 3, 0, 5, - 1, 3, 0, 3, 3, 0, 2, 9, 8, 0, - 2, 2, 3, 3, 0, 2, 0, 2, 4, 4, - 4, 4, 1, 0, 2, 2, 1, 3, 2, 1, - 3, 2, 1, 3, 2, 0, 1, 3, 4, 3, - 1, 1, 4, 1, 3, 1, 1, 1, 1, 0, - 1, 1, 1, 11, 0, 2, 3, 3, 2, 2, - 3, 1, 1, 3, 3, 3, 3, 1, 3, 3, - 4, 0, 2, 2, 2, 2, 2, 2, 2, 6, - 0, 4, 1, 1, 0, 3, 0, 1, 1, 2, - 4, 4, 4, 0, 1, 8, 2, 4, 4, 4, - 9, 0, 2, 11, 9, 11, 8, 6, 9, 7, - 10, 7, 6, 2, 2, 9, 4, 5, 3, 0, - 4, 1, 3, 0, 3, 6, 0, 2, 10, 0, - 2, 0, 2, 0, 3, 2, 4, 3, 0, 2, - 1, 0, 2, 3, 0, 2, 3, 0, 2, 1, - 0, 3, 2, 4, 3, 0, 1, 0, 1, 1, - 0, 6, 0, 3, 5, 0, 4, 0, 3, 1, - 3, 4, 5, 0, 3, 1, 3, 2, 3, 1, - 2, 0, 4, 6, 5, 0, 2, 0, 2, 4, - 5, 4, 5, 1, 5, 6, 5, 0, 3, 0, - 1, 1, 3, 3, 3, 0, 4, 1, 3, 3, - 3, 0, 1, 1, 3, 2, 3, 3, 3, 4, - 4, 3, 3, 3, 3, 4, 4, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, - 3, 3, 3, 3, 3, 3, 3, 3, 1, 5, - 4, 5, 1, 3, 3, 2, 2, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 3, 2, - 4, 0, 5, 5, 5, 5, 6, 0, 1, 1, - 3, 1, 1, 1, 1, 1, 7, 9, 7, 9, - 2, 1, 7, 9, 7, 9, 8, 5, 0, 1, - 0, 1, 1, 1, 1, 3, 3, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, - 3, 1, 3, 5, 1, 1, 1, 1, 1, 1, - 3, 5, 0, 1, 1, 2, 1, 2, 2, 1, - 1, 2, 2, 2, 3, 3, 2, 2, 1, 5, - 6, 4, 1, 1, 1, 5, 4, 1, 1, 2, - 0, 1, 1, 2, 5, 0, 1, 1, 2, 2, - 3, 3, 1, 1, 2, 2, 2, 0, 1, 2, - 2, 2, 0, 4, 7, 3, 3, 0, 3, 0, - 3, 1, 1, 1, 1, 1, 1, 1, 3, 3, + 1, 1, 1, 1, 1, 1, 1, 1, 7, 1, + 1, 7, 1, 3, 0, 1, 1, 3, 1, 3, + 0, 1, 1, 1, 14, 1, 3, 0, 1, 1, + 3, 1, 1, 2, 4, 1, 1, 1, 1, 0, + 1, 2, 9, 9, 7, 1, 2, 3, 3, 3, + 0, 4, 1, 1, 1, 1, 1, 0, 1, 1, + 1, 1, 1, 4, 1, 1, 1, 3, 3, 4, + 3, 3, 0, 1, 1, 1, 0, 2, 7, 8, + 10, 2, 2, 8, 0, 3, 3, 0, 3, 0, + 3, 0, 5, 1, 3, 0, 3, 3, 0, 2, + 9, 8, 0, 2, 2, 3, 3, 0, 2, 0, + 2, 4, 4, 4, 4, 1, 0, 2, 2, 1, + 3, 2, 1, 3, 2, 1, 3, 2, 0, 1, + 3, 4, 3, 1, 1, 4, 1, 3, 1, 1, + 1, 1, 0, 1, 1, 1, 11, 0, 2, 3, + 3, 2, 2, 3, 1, 1, 3, 3, 3, 3, + 1, 3, 3, 4, 0, 2, 2, 2, 2, 2, + 2, 2, 6, 0, 4, 1, 1, 0, 3, 0, + 1, 1, 2, 4, 4, 4, 0, 1, 8, 2, + 4, 4, 4, 9, 0, 2, 11, 9, 11, 8, + 6, 9, 7, 10, 7, 6, 2, 2, 9, 4, + 5, 3, 0, 4, 1, 3, 0, 3, 6, 0, + 2, 10, 0, 2, 0, 2, 0, 3, 2, 4, + 3, 0, 2, 1, 0, 2, 3, 0, 2, 3, + 0, 2, 1, 0, 3, 2, 4, 3, 0, 1, + 0, 1, 1, 0, 6, 0, 3, 5, 0, 4, + 0, 3, 1, 3, 4, 5, 0, 3, 1, 3, + 2, 3, 1, 2, 0, 4, 6, 5, 0, 2, + 0, 2, 4, 5, 4, 5, 1, 5, 6, 5, + 0, 3, 0, 1, 1, 3, 3, 3, 0, 4, + 1, 3, 3, 3, 0, 1, 1, 3, 2, 3, + 3, 3, 4, 4, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 1, 1, 1, 1, 3, 5, 2, 2, 2, 2, - 4, 1, 1, 2, 5, 6, 8, 6, 6, 6, - 1, 1, 1, 1, 1, 1, 3, 9, 1, 4, - 4, 4, 7, 9, 7, 7, 7, 9, 7, 7, - 0, 2, 0, 1, 1, 2, 4, 1, 2, 2, - 1, 2, 2, 1, 2, 2, 2, 2, 2, 0, - 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, - 1, 1, 1, 2, 5, 0, 1, 3, 0, 1, - 0, 2, 0, 2, 0, 1, 6, 8, 8, 6, - 6, 5, 5, 5, 6, 6, 6, 6, 5, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 1, 1, 1, 4, 4, 6, 8, 6, 4, 5, - 4, 4, 4, 3, 4, 6, 6, 7, 4, 1, + 3, 3, 2, 3, 3, 3, 3, 3, 3, 3, + 3, 1, 5, 4, 5, 1, 3, 3, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 3, 2, 4, 0, 5, 5, 5, 5, 6, + 0, 1, 1, 3, 1, 1, 1, 1, 1, 7, + 9, 7, 9, 2, 1, 7, 9, 7, 9, 8, + 5, 0, 1, 0, 1, 1, 1, 1, 3, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 2, 2, 8, 4, 2, 3, - 2, 4, 2, 2, 4, 6, 2, 2, 4, 6, - 4, 2, 4, 4, 4, 0, 1, 2, 3, 1, - 1, 1, 1, 1, 1, 0, 2, 1, 1, 1, + 1, 0, 1, 3, 1, 3, 5, 1, 1, 1, + 1, 1, 1, 3, 5, 0, 1, 1, 2, 1, + 2, 2, 1, 1, 2, 2, 2, 3, 3, 2, + 2, 1, 5, 6, 4, 1, 1, 1, 5, 4, + 1, 1, 2, 0, 1, 1, 2, 5, 0, 1, + 1, 2, 2, 3, 3, 1, 1, 2, 2, 2, + 0, 1, 2, 2, 2, 0, 4, 7, 3, 3, + 0, 3, 0, 3, 1, 1, 1, 1, 1, 1, + 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 1, 1, 1, 1, 3, 5, 2, + 2, 2, 2, 4, 1, 1, 2, 5, 6, 8, + 6, 6, 6, 1, 1, 1, 1, 1, 1, 3, + 9, 1, 4, 4, 4, 7, 9, 7, 7, 7, + 9, 7, 7, 0, 2, 0, 1, 1, 2, 4, + 1, 2, 2, 1, 2, 2, 1, 2, 2, 2, + 2, 2, 0, 1, 1, 1, 2, 2, 2, 2, + 2, 2, 2, 1, 1, 1, 2, 5, 0, 1, + 3, 0, 1, 0, 2, 0, 2, 0, 1, 6, + 8, 8, 6, 6, 5, 5, 5, 6, 6, 6, + 6, 5, 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 1, 1, 1, 4, 4, 6, 8, + 6, 4, 5, 4, 4, 4, 3, 4, 6, 6, + 7, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 2, 2, 8, + 4, 2, 3, 2, 4, 2, 2, 4, 6, 2, + 2, 4, 6, 4, 2, 4, 4, 4, 0, 1, + 2, 3, 1, 1, 1, 1, 1, 1, 0, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 3, 0, 1, 1, 3, 0, 1, 1, 3, - 1, 3, 3, 3, 3, 3, 2, 1, 1, 1, - 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, - 1, 3, 4, 4, 5, 4, 5, 3, 4, 5, - 6, 1, 0, 2, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 2, 1, 1, 1, 2, 3, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, - 1, 2, 2, 2, 2, 2, 2, 2, 2, 1, + 1, 1, 1, 1, 3, 0, 1, 1, 3, 0, + 1, 1, 3, 1, 3, 3, 3, 3, 3, 2, + 1, 1, 1, 3, 4, 3, 4, 3, 4, 3, + 4, 3, 4, 1, 3, 4, 4, 5, 4, 5, + 3, 4, 5, 6, 1, 0, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, - 2, 4, 4, 1, 2, 3, 5, 1, 1, 3, - 0, 1, 0, 3, 0, 3, 3, 0, 3, 5, - 0, 3, 5, 0, 1, 1, 0, 1, 1, 2, - 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, + 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 2, 1, 1, 1, 2, 3, 1, + 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, + 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, + 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 2, 2, 4, 4, 1, 2, 3, 5, + 1, 1, 3, 0, 1, 0, 3, 0, 3, 3, + 0, 3, 5, 0, 3, 5, 0, 1, 1, 0, + 1, 1, 2, 2, 0, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -9318,7 +9444,6 @@ var yyR2 = [...]int{ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, } var yyChk = [...]int{ @@ -9389,338 +9514,340 @@ var yyChk = [...]int{ 650, 647, 648, 649, 561, 232, -443, -441, -362, 548, 626, 393, 547, 550, 387, 366, 656, 659, 391, 267, 328, 329, 330, 463, 364, -235, -362, 660, -197, 251, - 40, -249, -362, -197, -87, -16, -15, -186, -187, -249, - 246, -371, 24, 445, -99, 446, 241, 242, 86, 78, - -362, -9, -113, -8, -120, -85, -184, 450, -369, -362, - 328, 328, -369, 246, -364, 277, 426, -362, -498, 252, - -447, -420, 278, -446, -422, -449, -423, 33, 237, 239, - 238, 560, 274, 16, 391, 248, 14, 13, 392, 260, - 26, 27, 29, 15, 393, 395, 30, 396, 399, 400, - 401, 43, 404, 405, 267, 89, 97, 92, 285, -234, - -362, -397, -389, 118, -392, -384, -385, -387, -340, -534, - -382, 86, 145, 146, 153, 119, 662, -386, -479, 37, - 121, 566, 570, 606, 513, -332, -333, -334, -335, -336, - -337, 551, -362, -535, -533, 92, 102, 104, 108, 109, - 107, 105, 157, 190, 106, 93, 158, -187, 89, -555, - 576, -356, 599, 612, 613, 614, 615, 598, 62, -505, - -513, 245, -511, 156, 195, 263, 191, 14, 151, 438, - 192, 607, 608, 609, 573, 595, 515, 577, 587, 602, - 568, 569, 571, 563, 564, 565, 567, 578, 580, 594, - -514, 590, 600, 601, 586, 610, 611, 647, 603, 604, - 605, 642, 91, 90, 593, 592, 579, 574, 575, 581, - 562, 572, 582, 583, 591, 596, 597, 375, 111, 376, - 377, 505, 367, 81, 378, 252, 445, 71, 379, 380, - 381, 382, 383, 512, 384, 72, 385, 374, 267, 428, - 386, 194, 212, 517, 516, 518, 509, 506, 504, 507, - 508, 510, 511, 584, 585, 589, -136, -138, 617, -608, - -323, -609, 6, 7, 8, 9, -610, 158, -599, 447, - 556, 92, 321, 364, 17, 505, 646, 546, 646, 546, - 168, 165, -434, 168, 117, 174, 173, 250, 168, -434, - -362, 171, 646, 170, 644, 331, 273, -411, -175, 364, - 428, 337, 98, 277, -414, -412, 544, -499, 325, 321, - 297, 247, 114, -176, 257, 256, 112, 505, 245, 402, - 316, 57, 59, -570, -571, 234, 235, 236, -562, 538, - -561, -362, 646, 651, 377, 100, 101, 644, 645, 28, - 246, 388, 273, 483, 481, 482, 484, 485, 486, 487, - -65, -515, -497, 478, 477, -375, 470, 476, 468, 480, - 471, 365, 339, 560, 338, 237, 638, 545, 539, -350, - 412, 448, 502, 503, 389, 449, 489, 491, 472, 111, - 198, 195, 247, 249, 246, 644, 364, 505, 428, 98, - 337, 246, -570, 651, 165, 489, 491, 447, 277, 426, - 42, -440, 438, -439, -441, 490, 501, 90, 91, 488, - -350, 111, 469, 469, -608, -323, -185, -187, -123, -560, - 546, 646, 247, 364, 428, 277, 248, 246, 541, 544, - 249, 505, 245, 328, 388, 273, 337, 98, 170, 644, - -191, -192, -193, 230, 231, 232, 70, 235, 233, 67, - 33, 34, 35, -1, 125, 661, -389, -389, -6, 664, - -6, -389, -362, -362, 160, -256, -260, -257, -259, -258, - -262, -261, 195, 196, 156, 199, 205, 201, 202, 203, - 204, 206, 207, 208, 209, 210, 213, 214, 211, 32, - 212, 263, 191, 192, 193, 194, 215, 177, 197, 553, - 223, 178, 224, 179, 225, 180, 226, 181, 182, 227, - 183, 186, 187, 188, 189, 185, 159, -224, 92, 33, - 86, 159, 92, -216, 269, -197, -249, -241, 159, 662, - -216, -608, -207, -208, 11, -249, -338, -362, 447, 128, - -99, 78, -99, 446, 78, -99, 446, 241, -563, -564, - -565, -567, 241, 446, 445, 242, -118, 159, 285, 17, - -369, -369, 84, -249, -422, 277, -447, -420, 37, 83, - 160, 250, 160, 83, 86, 389, 364, 428, 390, 505, - 246, 402, 249, 277, 403, 364, 428, 246, 249, 505, - 277, 364, 246, 249, 428, 277, 403, 364, 468, 469, - 249, 28, 394, 397, 398, 469, -519, 501, 160, 117, - 114, 115, 116, -389, 135, -404, 128, 129, 130, 131, - 132, 133, 134, 142, 141, 152, 145, 146, 147, 148, - 149, 150, 151, 143, 144, 138, 118, 136, 140, 137, - 120, 155, -187, -389, -397, 62, -387, -387, -387, -387, - -362, -479, -394, -389, 86, 86, 86, 86, 86, 159, - 105, 92, -389, 86, 86, 86, 86, 86, 86, 86, - 86, 86, 86, 86, 86, -512, 86, 86, -401, -402, - 86, 86, -382, -338, 86, 92, 92, 86, 86, 86, - 92, 86, 86, 86, -402, -402, 86, 86, 86, 86, + 646, 40, -249, -362, -197, 646, -87, -16, -15, -186, + -187, -249, 246, -371, 24, 445, -99, 446, 241, 242, + 86, 78, -362, -9, -113, -8, -120, -85, -184, 450, + -369, -362, 328, 328, -369, 246, -364, 277, 426, -362, + -498, 252, -447, -420, 278, -446, -422, -449, -423, 33, + 237, 239, 238, 560, 274, 16, 391, 248, 14, 13, + 392, 260, 26, 27, 29, 15, 393, 395, 30, 396, + 399, 400, 401, 43, 404, 405, 267, 89, 97, 92, + 285, -234, -362, -397, -389, 118, -392, -384, -385, -387, + -340, -534, -382, 86, 145, 146, 153, 119, 662, -386, + -479, 37, 121, 566, 570, 606, 513, -332, -333, -334, + -335, -336, -337, 551, -362, -535, -533, 92, 102, 104, + 108, 109, 107, 105, 157, 190, 106, 93, 158, -187, + 89, -555, 576, -356, 599, 612, 613, 614, 615, 598, + 62, -505, -513, 245, -511, 156, 195, 263, 191, 14, + 151, 438, 192, 607, 608, 609, 573, 595, 515, 577, + 587, 602, 568, 569, 571, 563, 564, 565, 567, 578, + 580, 594, -514, 590, 600, 601, 586, 610, 611, 647, + 603, 604, 605, 642, 91, 90, 593, 592, 579, 574, + 575, 581, 562, 572, 582, 583, 591, 596, 597, 375, + 111, 376, 377, 505, 367, 81, 378, 252, 445, 71, + 379, 380, 381, 382, 383, 512, 384, 72, 385, 374, + 267, 428, 386, 194, 212, 517, 516, 518, 509, 506, + 504, 507, 508, 510, 511, 584, 585, 589, -136, -138, + 617, -608, -323, -609, 6, 7, 8, 9, -610, 158, + -599, 447, 556, 92, 321, 364, 17, 505, 646, 546, + 646, 546, 168, 165, -434, 168, 117, 174, 173, 250, + 168, -434, -362, 171, 646, 170, 644, 331, 273, -411, + -175, 364, 428, 337, 98, 277, -414, -412, 544, -499, + 325, 321, 297, 247, 114, -176, 257, 256, 112, 505, + 245, 402, 316, 57, 59, -570, 646, -571, 234, 235, + 236, -562, 538, -561, -362, 646, 651, 377, 100, 101, + 644, 645, 28, 246, 388, 273, 483, 481, 482, 484, + 485, 486, 487, -65, -515, -497, 478, 477, -375, 470, + 476, 468, 480, 471, 365, 339, 560, 338, 237, 638, + 545, 539, -350, 412, 448, 502, 503, 389, 449, 489, + 491, 472, 111, 198, 195, 247, 249, 246, 644, 364, + 505, 428, 98, 337, 246, -570, 651, 165, 489, 491, + 447, 277, 426, 42, -440, 438, -439, -441, 490, 501, + 90, 91, 488, -350, 111, 469, 469, -608, -323, -185, + -187, -123, -560, 546, 646, 247, 364, 428, 277, 248, + 246, 541, 544, 249, 505, 245, 328, 388, 273, 337, + 98, 170, 644, -191, -192, -193, 230, 231, 232, 70, + 235, 233, 67, 33, 34, 35, -1, 125, 661, -389, + -389, -6, 664, -6, -389, -362, -362, 160, -256, -260, + -257, -259, -258, -262, -261, 195, 196, 156, 199, 205, + 201, 202, 203, 204, 206, 207, 208, 209, 210, 213, + 214, 211, 32, 212, 263, 191, 192, 193, 194, 215, + 177, 197, 553, 223, 178, 224, 179, 225, 180, 226, + 181, 182, 227, 183, 186, 187, 188, 189, 185, 159, + -224, 92, 33, 86, 159, 92, -216, 269, -197, -197, + -249, -241, 159, 662, -216, -197, -608, -207, -208, 11, + -249, -338, -362, 447, 128, -99, 78, -99, 446, 78, + -99, 446, 241, -563, -564, -565, -567, 241, 446, 445, + 242, -118, 159, 285, 17, -369, -369, 84, -249, -422, + 277, -447, -420, 37, 83, 160, 250, 160, 83, 86, + 389, 364, 428, 390, 505, 246, 402, 249, 277, 403, + 364, 428, 246, 249, 505, 277, 364, 246, 249, 428, + 277, 403, 364, 468, 469, 249, 28, 394, 397, 398, + 469, -519, 501, 160, 117, 114, 115, 116, -389, 135, + -404, 128, 129, 130, 131, 132, 133, 134, 142, 141, + 152, 145, 146, 147, 148, 149, 150, 151, 143, 144, + 138, 118, 136, 140, 137, 120, 155, -187, -389, -397, + 62, -387, -387, -387, -387, -362, -479, -394, -389, 86, + 86, 86, 86, 86, 159, 105, 92, -389, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, + -512, 86, 86, -401, -402, 86, 86, -382, -338, 86, + 92, 92, 86, 86, 86, 92, 86, 86, 86, -402, + -402, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, - 86, 86, -208, 160, -207, 86, -207, -208, -188, -187, - 33, 34, 33, 34, 33, 34, 33, 34, -611, 635, - 86, 102, 657, 228, 17, -362, 644, -362, -593, 33, - 549, 549, 549, 549, 494, 555, 172, 173, 174, -362, - 171, 250, -362, -409, 252, -409, -409, -233, -362, -235, - 388, 249, 541, 249, -176, -409, -409, -409, -409, -409, - 248, -409, 24, 246, 246, 246, 246, -409, 512, 128, - 128, 60, -572, 176, 160, -562, -215, 86, -593, 652, - 653, 654, -374, 136, 140, -374, -319, 18, -319, 24, - 24, 275, 275, 275, -374, 315, -619, -620, 17, 138, - -372, -620, -372, -372, -374, -621, 248, 479, 44, 276, - 275, -209, -210, 22, -209, 473, 469, -464, 474, 475, - -376, -620, -375, -374, -374, -375, -374, -374, -374, 33, - 246, 249, 505, 337, 639, -619, -619, 32, 32, -498, - -498, -249, -498, -498, 539, -351, -362, -498, -498, -498, - -303, -304, -249, -573, 251, 654, -605, -604, 492, -607, - 494, 165, -441, 165, -441, 89, -422, 277, 277, 160, - 128, 24, -442, 128, 139, -441, -441, -442, -442, -273, - 42, -361, 156, -362, 92, -273, 42, -602, -601, -249, - -208, -188, -187, 87, 87, 87, 549, -593, -498, -498, - -498, -498, -498, -499, -498, -498, -498, -498, -498, -369, - -225, -362, -235, 252, -498, -498, -498, -498, -189, -190, - 147, -389, -362, -193, -3, -146, -145, 122, 123, 125, - 629, 383, 628, 632, 626, -441, 42, -492, 410, 409, - -486, -488, 86, -487, 86, -487, -487, -487, -487, -487, - 86, 86, -489, 86, -489, -489, -486, -490, 86, -490, - -491, 86, -491, -490, -362, -468, 555, -395, -397, -362, - 40, -508, 62, -184, 86, 32, 86, -216, -362, 192, - 170, 643, 36, -509, 62, -184, 86, 32, -208, -139, - 40, -210, 21, 159, 102, 92, -118, -99, 78, -118, - -99, -99, 87, 160, -566, 108, 109, -568, 210, 201, - -362, -116, 92, -7, -11, -8, -9, -10, -47, -85, - -184, 547, 550, -536, -534, 86, 33, 437, 83, 17, - -448, 246, 505, 388, 273, 249, 364, -446, -429, -426, - -424, -361, -422, -425, -424, -451, -338, 469, -140, 452, - 451, 327, -389, -389, -389, -389, -389, 107, 118, 355, - 108, 109, -384, -405, 33, 323, 324, -385, -385, -385, - -385, -385, -385, -385, -385, -385, -385, -385, -385, -393, - -403, -479, 86, 138, 136, 140, 137, 120, -387, -387, - -385, -385, -275, -361, 156, 87, 160, -389, -559, -558, - 122, -389, -389, -389, -389, -415, -417, -338, 86, -362, - -556, -557, 519, 520, 521, 522, 523, 524, 525, 526, - 527, 528, 529, 379, 374, 380, 378, 367, 386, 381, - 382, 194, 536, 537, 530, 531, 532, 533, 534, 535, - -395, -395, -389, -556, -395, -331, 34, 33, -397, -397, - -397, 87, -389, -569, 353, 352, 354, -211, -362, -395, - 87, 87, 87, 102, -397, -397, -395, -385, -395, -395, - -395, -395, -557, -331, -331, -331, -331, 147, -397, -397, - -331, -331, -331, -331, 147, -331, -331, -331, -331, -331, - -331, -331, -331, -331, -331, -331, 87, 87, 87, 147, - -397, -209, -138, -517, -516, -389, 42, -139, -210, -612, - 636, 86, -338, -600, 92, 92, 662, 170, 644, 17, - 505, -362, 17, 246, -362, 102, -362, 102, 495, 496, - 169, 173, 172, -362, 171, -362, -362, 118, -362, -362, - 36, 86, -225, -409, -409, -409, -577, -362, 93, -430, - -427, -424, -362, -362, -420, -362, -351, -249, -409, -409, - -409, -409, -249, -284, 54, 55, 56, -424, -177, 57, - 58, -573, -561, 36, -214, -362, -319, -387, -387, -389, - 364, 505, 246, -424, 277, -619, -374, -374, -352, -351, - -376, -371, -376, -376, -319, -372, -374, -374, -389, -376, - -372, -319, -362, 469, -319, -319, -464, -374, -373, -362, - -373, -409, -351, -352, -352, -249, -249, -298, -305, -299, - -306, 269, 243, 372, 373, 240, 238, 11, 239, -313, - 316, -410, 513, -279, -280, 78, 43, -282, 267, 414, - 407, 279, 283, 96, 284, 447, 285, 248, 287, 288, - 289, 304, 306, 259, 290, 291, 292, 438, 293, 164, - 305, 294, 295, 296, 390, -274, 6, 340, 555, 42, - 52, 53, 461, 460, 558, 280, -362, -577, -575, 32, - -362, 32, -430, -424, -362, -362, 160, 250, -200, -202, - -199, -195, -196, -201, -322, -324, -198, 86, -249, -187, - -362, -441, 160, 493, 495, 496, -605, -442, -605, -442, - 250, 33, 437, -445, 437, 33, -420, -439, 489, 491, - -435, 92, 438, -425, -444, 83, 156, -516, -442, -442, - -444, -444, 155, 160, -603, 494, 495, 234, -209, 102, - -251, -249, -577, -429, -420, -362, -498, -251, -251, -251, - -364, -364, 86, 159, 37, -362, -362, -362, -362, -318, - 160, -317, 17, -363, -362, 36, 92, 159, -147, -145, - 124, -389, -6, 628, -389, -6, -6, -389, -6, -389, - -496, 411, 102, 102, -341, 92, -341, 102, 102, 102, - 561, 87, 92, -433, 83, -510, -398, -554, 617, -218, - 87, -211, -552, -553, -211, -217, -362, -508, -241, 128, - 128, 128, 25, -510, -218, 87, -552, -209, 618, -139, - -206, -205, -389, -362, 24, -118, -99, -564, 159, 160, - -214, -448, -428, -425, -450, 147, -362, -436, 160, 555, - 665, 90, 250, -590, -589, 429, 87, 160, -520, 251, - 512, 92, 662, 445, 228, 229, 107, 355, 108, 109, - -479, -397, -393, -387, -387, -385, -385, -391, 264, -391, - 117, -389, 663, -388, -558, 124, -389, 36, 160, 36, - 160, 84, 160, 87, -486, -389, 159, 87, 87, 17, - 17, 87, -389, 87, 87, 87, 87, 17, 17, -389, - 87, 159, 87, 87, 87, 87, 84, 87, 160, 87, - 87, 87, 87, 160, -397, -397, -389, -397, 87, 87, - 87, -389, -389, -389, -397, 87, -389, -389, -389, -389, - -389, -389, -389, -389, -389, -389, -214, -458, 464, -458, - -458, 160, 160, 160, 87, -139, 86, 102, 160, 658, - -345, -344, 92, -362, -362, 170, 644, -362, 92, 644, - -362, 92, 170, 174, 174, 173, -362, 92, 37, 24, - 24, 314, -234, -236, -237, -238, -239, -240, 138, 161, - 162, 86, -249, -249, -249, -579, 415, -591, 160, 42, - -589, 505, -173, 327, -413, 84, -180, 17, 555, -249, - -249, -249, -249, -263, 36, 17, -194, -250, -362, 86, - 87, 160, -362, -362, -362, -421, 84, -362, -352, -319, - -319, -376, -319, -319, 160, 23, -374, -376, -376, -241, - -372, -241, 159, -241, -351, -485, 36, -215, 160, 21, - 269, -248, -359, -245, -247, 254, -379, -246, 257, -548, - 255, 253, 112, 258, 312, 113, 248, -359, -359, 254, - -283, 250, 36, -359, -301, 248, 358, 312, 255, 21, - 269, -300, 248, 113, -362, 254, 258, 255, 253, -358, - 128, -350, 155, 250, 44, 390, -358, 559, 269, -358, - -358, -358, -358, -358, -358, -358, 286, 286, -358, -358, - -358, -358, -358, -358, -358, -358, -358, -358, -358, 165, - -358, -358, -358, -358, -358, -358, 86, 332, 281, 282, - 314, -580, 415, 32, 370, 370, 371, -591, 366, 32, - -181, 364, -304, -302, -373, 32, -325, -326, -327, -328, - -330, -329, 69, 73, 75, 79, 70, 71, 72, 76, - 81, 74, 32, 160, -360, -365, 36, -362, 92, -360, - -187, -202, -200, -360, 86, -442, -604, -606, 497, 494, - 500, -444, -444, 102, 250, 86, 128, -444, -444, 42, - -361, -601, 501, 495, -139, 160, 83, -251, -226, -227, - -228, -229, -256, -338, 196, 199, 201, 202, 203, 204, - 206, 207, 208, 209, 210, 213, 214, 211, 212, 263, - 191, 192, 193, 194, 215, 177, 197, 553, 178, 179, - 180, 181, 182, 183, 186, 187, 188, 189, 185, -362, - -235, -319, -190, -202, -362, 92, -362, 147, 125, -6, - 123, -151, -150, -149, 126, 626, 632, 125, 125, 125, - 87, 87, 87, 160, 87, 87, 87, 160, 87, 160, - 102, -523, 474, 41, 160, 86, 87, 160, 62, 160, - 128, 87, 160, -389, -362, 92, -389, 192, 87, 62, - -139, 92, 160, -203, 38, 39, 159, 447, -362, -534, - 87, -450, 160, 250, 159, 159, -426, 393, -361, -428, - 21, 555, -338, 40, -345, 128, 662, -362, 87, -391, - -391, 117, -387, -384, 87, 125, -389, 123, -254, -256, - 409, 410, -389, -254, -255, -261, 156, 195, 263, 194, - 193, 191, 409, 410, -273, -417, 552, -203, 87, -362, - -389, -389, 87, -389, -389, 17, -362, -273, -385, -389, - -208, -208, 87, 87, -457, -458, -457, -457, 87, 87, - 87, 87, -457, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 86, 102, 104, 102, 104, -516, - -613, 64, 634, 63, 437, 107, 317, 160, 102, 92, - 663, 160, 128, 92, -362, -362, 17, 246, -362, 17, - 174, 92, -592, 321, 364, 505, 246, 364, 321, 505, - 246, -469, 102, 401, 87, 160, -338, -226, -215, 86, - -215, -582, 476, 417, 427, -358, -381, -380, 366, 43, - -503, 438, 423, 424, -427, 277, -351, -588, 99, 128, - 83, 344, 348, 350, 349, 345, 346, 347, -407, -408, - -406, -410, -575, 86, 86, -184, 36, 136, -180, 86, - 86, 36, -480, 334, -256, -249, -194, -362, 17, 160, - -574, 159, -1, -362, -362, -420, -374, -319, -389, -389, - -319, -374, -374, -376, -362, -241, -480, -256, 36, -299, - 243, 239, -454, 314, 315, -455, -470, 317, -472, 86, - -253, -338, -246, -547, -548, -409, -362, 113, -547, 113, - 86, -253, -338, -338, -302, -338, -362, -362, -362, -362, - -309, -308, -338, -311, 33, -312, -362, -362, -362, -362, - 113, -362, 113, -278, 42, 49, 50, 51, -358, -358, - 198, -281, 42, 437, 439, 440, -311, 102, 102, 102, - 102, 92, 92, 92, -358, -358, 102, 92, -365, 92, - -549, 173, 46, 47, 102, 102, 102, 102, 42, 92, - -286, 42, 297, 301, 298, 299, 300, 92, 102, 42, - 102, 42, 102, 42, -362, 86, -550, -551, 92, 333, - -469, -582, -358, 370, -441, 128, 128, -381, -584, 96, - 418, -587, 327, -183, 505, 33, -219, 243, 239, -575, - -432, -431, -338, -199, -199, -199, -199, -199, -199, 69, - 80, 69, -212, 86, 69, 74, 69, 74, 69, -327, - 69, 80, -432, -201, -215, -365, 87, -598, -597, -596, - -594, 77, 251, 78, -395, -444, 494, 498, 499, -428, - -377, 92, -435, -223, 24, -249, -249, -501, 307, 308, - 87, 160, -256, -321, 19, 159, 121, -6, -147, -149, - -389, -6, -389, 628, 383, 629, 92, 102, 102, -531, - 458, 453, 455, 113, -398, -518, -517, 62, -184, -211, - -510, -553, -516, -362, 663, 663, 663, 663, 92, 62, - -184, -510, -223, -523, -205, -204, 45, -362, 102, 17, - -425, -420, 147, 147, -362, 394, -436, 92, 416, 92, - 246, 663, 92, -345, -384, -389, 87, -264, 182, 181, - -264, 36, 87, 87, -487, -487, -486, -489, -486, -264, - -264, 87, 86, -203, 87, 24, 87, 87, 87, -389, - 87, 87, 160, -506, 514, -507, 588, -457, -457, -457, - -457, -457, -457, -457, -457, -457, -457, -457, -457, -457, - -457, -457, -457, -457, -400, -399, 269, 459, 641, 641, - 459, 641, 641, 87, 160, -556, 160, -353, 322, -353, - -344, 92, 250, 92, 170, -362, 92, 644, 92, -362, - -362, -362, 314, -362, 314, -362, -362, 92, 92, 92, - -238, -256, 87, 36, -242, -243, -244, -253, -245, -247, - 36, -583, 96, -578, 92, -362, 93, -584, 158, 368, - 42, 419, 420, 435, 363, 102, 102, 425, -576, -362, - -182, 246, 364, -586, 53, 128, 92, -249, -406, -350, - 155, 288, 337, -316, -315, -362, 92, -242, -184, -249, - -242, -242, -184, -481, 336, 21, 102, 146, -216, 84, - 159, -202, -250, -362, 147, 87, -319, -241, -319, -319, - -374, -481, -184, -466, 318, 86, -464, 86, -464, 113, - 345, -473, -471, 269, -307, 46, 48, -256, -545, -362, - -543, -545, -362, -543, -543, -409, -389, -307, -253, 250, - 32, 239, -310, 342, 343, 348, 350, -437, 313, 118, - -437, 160, -203, 160, -362, -273, -273, 32, 92, 92, - -251, 87, 160, 128, 102, 92, -583, -578, 128, -442, - 92, 92, -584, 92, 92, -588, 128, -252, 246, -351, - 160, -219, -219, -319, 160, 128, -221, -220, 83, 84, - -222, 83, -220, -220, 69, -213, 92, 69, 69, -319, - -596, -595, 24, -548, -548, -548, 87, 87, 15, -228, - 42, -320, 20, 21, 147, 125, 123, 125, 125, -362, - 87, 87, -493, 619, -527, -529, 453, 21, 21, 15, - 251, 87, -510, 663, -510, -531, 46, 47, -420, -436, - 438, -249, 160, 663, -254, -292, 92, -389, 87, -389, - 87, 92, 87, 92, -208, 21, 87, 160, 87, 87, - 87, 160, 87, 87, -389, 87, -556, -354, 192, 92, - -354, 364, -363, -362, 17, -362, 92, -362, -469, 314, - -469, 314, 246, -362, 244, -184, 87, 160, -184, 92, - -581, 429, 102, 42, 102, 158, 421, -504, -174, 96, - -251, 33, -219, -585, 96, 128, 662, 86, -358, -358, - -358, -362, 87, 160, -358, -358, 87, 87, 87, -271, - 555, -482, 268, 102, 146, 102, 146, 102, -360, -202, - -362, -319, -574, 159, -319, -482, -456, 319, 102, -385, - 86, -385, 86, -465, 316, 86, 87, 160, -362, -338, - -268, -267, -265, 107, 118, 42, 407, -266, 96, 155, - 302, 305, 304, 280, 303, -297, -378, 83, 413, 342, - 343, -410, 619, 543, 253, 112, 113, 395, -379, 86, - 86, 84, 322, 86, 86, -545, 87, -307, -338, 42, - -310, 42, 356, 313, -308, -362, 155, -273, 87, -551, - 92, -556, -581, 92, -444, -586, 92, -174, -251, -575, - -208, -431, -516, -389, 86, -389, 87, 86, 69, 11, - 19, -382, -389, -397, 647, 649, 650, 252, -6, 629, - 383, -288, 620, 92, 21, 92, -525, 92, -432, -493, - -142, -285, -350, 285, 87, -291, 138, 555, 87, 87, - -457, -457, -460, -459, -463, 459, 314, 467, -397, 92, - 92, 87, 87, 92, -362, 170, 92, 662, 92, -469, - 92, -469, -362, 314, -230, -256, -178, 555, -271, -244, - -178, 21, 555, 367, 42, 102, 42, 422, 92, -182, - 128, 108, 109, -346, -347, 92, -415, -273, -275, 92, - -315, -382, -382, -269, -184, 36, -270, -313, -410, 555, - -141, -140, -269, 555, 86, -483, 164, 102, 146, 102, - 102, -319, -319, -483, -472, 21, 87, -451, 87, -451, - 86, 128, -385, -471, -474, 62, -265, 107, -385, 92, - -275, -276, 42, 301, 297, 128, 128, -277, 42, 281, - 282, -287, 86, 312, 15, 198, 86, 113, 113, -249, - -415, -415, -546, 344, 345, 346, 351, 348, 349, 347, - 350, -546, -415, -415, 86, -438, -437, -385, -358, -358, - 155, -585, -209, -214, -544, -362, 253, 21, 21, -502, - 555, 648, 86, 86, -362, -362, -342, 621, 102, 92, - 455, -288, -494, 622, -521, -464, -273, 128, 87, 76, - 553, 556, 87, -462, 120, 421, 425, -383, -386, 102, - 104, 190, 158, 87, 87, -362, -349, -348, 92, 92, - 92, 314, -469, 554, -179, 61, 501, 92, 93, 416, - 92, 93, 367, -174, 92, 663, 160, 128, 87, -452, - 269, -184, 160, -313, -350, -142, -452, -272, -314, -362, - 92, -500, 173, 335, 555, 102, 146, 102, -208, -484, - 173, 335, -455, 87, 87, 87, -451, 102, 87, -478, - -475, 86, -313, 271, 138, 92, 92, 102, 86, -511, - 32, 92, -416, 86, 87, 87, 87, 87, -415, 102, - -273, -358, 87, 87, 160, 650, 86, -397, -397, 86, - 21, -342, -495, 623, 92, -530, 458, -524, -522, 453, - 454, 455, 456, 92, 554, 66, 557, -461, -462, 425, - -383, -386, 617, 465, 465, 465, 663, 160, 128, -469, - 92, -232, -362, 312, 438, -347, 92, -418, -453, 321, - 21, -313, -358, -453, 87, 160, -358, -358, 335, 102, - 146, 102, -209, 335, -467, 320, 87, -478, -313, -477, - -476, 319, 272, 86, 87, -389, -401, -358, 87, -290, - -289, 551, -415, -418, 84, -418, 84, -418, 84, -418, - 84, 87, -273, -362, 253, -137, 86, 87, 87, -343, - -362, -525, 92, -532, 251, -528, -529, 457, -522, 21, - 455, 21, 21, -143, 160, 66, 117, 466, 466, 466, - -348, 92, 92, -231, 36, 460, 394, -419, 259, 356, - 357, 96, 555, 342, 343, 361, 360, 359, 362, 21, - -454, -273, -314, -382, -382, 102, 102, 87, 160, -362, + 86, 86, 86, 86, 86, 86, 86, -208, 160, -207, + 86, -207, -208, -188, -187, 33, 34, 33, 34, 33, + 34, 33, 34, -611, 635, 86, 102, 657, 228, 17, + -362, 644, -362, -593, 33, 549, 549, 549, 549, 494, + 555, 172, 173, 174, -362, 171, 250, -362, -409, 252, + -409, -409, -233, -362, -235, 388, 249, 541, 249, -176, + -409, -409, -409, -409, -409, 248, -409, 24, 246, 246, + 246, 246, -409, 512, 128, 128, 60, -572, 176, -570, + 160, -562, -215, 86, -593, 652, 653, 654, -374, 136, + 140, -374, -319, 18, -319, 24, 24, 275, 275, 275, + -374, 315, -619, -620, 17, 138, -372, -620, -372, -372, + -374, -621, 248, 479, 44, 276, 275, -209, -210, 22, + -209, 473, 469, -464, 474, 475, -376, -620, -375, -374, + -374, -375, -374, -374, -374, 33, 246, 249, 505, 337, + 639, -619, -619, 32, 32, -498, -498, -249, -498, -498, + 539, -351, -362, -498, -498, -498, -303, -304, -249, -573, + 251, 654, -605, -604, 492, -607, 494, 165, -441, 165, + -441, 89, -422, 277, 277, 160, 128, 24, -442, 128, + 139, -441, -441, -442, -442, -273, 42, -361, 156, -362, + 92, -273, 42, -602, -601, -249, -208, -188, -187, 87, + 87, 87, 549, -593, -498, -498, -498, -498, -498, -499, + -498, -498, -498, -498, -498, -369, -225, -362, -235, 252, + -498, -498, -498, -498, -189, -190, 147, -389, -362, -193, + -3, -146, -145, 122, 123, 125, 629, 383, 628, 632, + 626, -441, 42, -492, 410, 409, -486, -488, 86, -487, + 86, -487, -487, -487, -487, -487, 86, 86, -489, 86, + -489, -489, -486, -490, 86, -490, -491, 86, -491, -490, + -362, -468, 555, -395, -397, -362, 40, -508, 62, -184, + 86, 32, 86, -216, -216, -362, 192, 170, 643, 36, + -509, 62, -184, 86, 32, -216, -208, -139, 40, -210, + 21, 159, 102, 92, -118, -99, 78, -118, -99, -99, + 87, 160, -566, 108, 109, -568, 210, 201, -362, -116, + 92, -7, -11, -8, -9, -10, -47, -85, -184, 547, + 550, -536, -534, 86, 33, 437, 83, 17, -448, 246, + 505, 388, 273, 249, 364, -446, -429, -426, -424, -361, + -422, -425, -424, -451, -338, 469, -140, 452, 451, 327, + -389, -389, -389, -389, -389, 107, 118, 355, 108, 109, + -384, -405, 33, 323, 324, -385, -385, -385, -385, -385, + -385, -385, -385, -385, -385, -385, -385, -393, -403, -479, + 86, 138, 136, 140, 137, 120, -387, -387, -385, -385, + -275, -361, 156, 87, 160, -389, -559, -558, 122, -389, + -389, -389, -389, -415, -417, -338, 86, -362, -556, -557, + 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, + 529, 379, 374, 380, 378, 367, 386, 381, 382, 194, + 536, 537, 530, 531, 532, 533, 534, 535, -395, -395, + -389, -556, -395, -331, 34, 33, -397, -397, -397, 87, + -389, -569, 353, 352, 354, -211, -362, -395, 87, 87, + 87, 102, -397, -397, -395, -385, -395, -395, -395, -395, + -557, -331, -331, -331, -331, 147, -397, -397, -331, -331, + -331, -331, 147, -331, -331, -331, -331, -331, -331, -331, + -331, -331, -331, -331, 87, 87, 87, 147, -397, -209, + -138, -517, -516, -389, 42, -139, -210, -612, 636, 86, + -338, -600, 92, 92, 662, 170, 644, 17, 505, -362, + 17, 246, -362, 102, -362, 102, 495, 496, 169, 173, + 172, -362, 171, -362, -362, 118, -362, -362, 36, 86, + -225, -409, -409, -409, -577, -362, 93, -430, -427, -424, + -362, -362, -420, -362, -351, -249, -409, -409, -409, -409, + -249, -284, 54, 55, 56, -424, -177, 57, 58, -573, + -572, -561, 36, -214, -362, -319, -387, -387, -389, 364, + 505, 246, -424, 277, -619, -374, -374, -352, -351, -376, + -371, -376, -376, -319, -372, -374, -374, -389, -376, -372, + -319, -362, 469, -319, -319, -464, -374, -373, -362, -373, + -409, -351, -352, -352, -249, -249, -298, -305, -299, -306, + 269, 243, 372, 373, 240, 238, 11, 239, -313, 316, + -410, 513, -279, -280, 78, 43, -282, 267, 414, 407, + 279, 283, 96, 284, 447, 285, 248, 287, 288, 289, + 304, 306, 259, 290, 291, 292, 438, 293, 164, 305, + 294, 295, 296, 390, -274, 6, 340, 555, 42, 52, + 53, 461, 460, 558, 280, -362, -577, -575, 32, -362, + 32, -430, -424, -362, -362, 160, 250, -200, -202, -199, + -195, -196, -201, -322, -324, -198, 86, -249, -187, -362, + -441, 160, 493, 495, 496, -605, -442, -605, -442, 250, + 33, 437, -445, 437, 33, -420, -439, 489, 491, -435, + 92, 438, -425, -444, 83, 156, -516, -442, -442, -444, + -444, 155, 160, -603, 494, 495, 234, -209, 102, -251, + -249, -577, -429, -420, -362, -498, -251, -251, -251, -364, + -364, 86, 159, 37, -362, -362, -362, -362, -318, 160, + -317, 17, -363, -362, 36, 92, 159, -147, -145, 124, + -389, -6, 628, -389, -6, -6, -389, -6, -389, -496, + 411, 102, 102, -341, 92, -341, 102, 102, 102, 561, + 87, 92, -433, 83, -510, -398, -554, 617, -218, 87, + -211, -552, -553, -211, -217, -362, -508, -508, -241, 128, + 128, 128, 25, -510, -218, 87, -552, -509, -209, 618, + -139, -206, -205, -389, -362, 24, -118, -99, -564, 159, + 160, -214, -448, -428, -425, -450, 147, -362, -436, 160, + 555, 665, 90, 250, -590, -589, 429, 87, 160, -520, + 251, 512, 92, 662, 445, 228, 229, 107, 355, 108, + 109, -479, -397, -393, -387, -387, -385, -385, -391, 264, + -391, 117, -389, 663, -388, -558, 124, -389, 36, 160, + 36, 160, 84, 160, 87, -486, -389, 159, 87, 87, + 17, 17, 87, -389, 87, 87, 87, 87, 17, 17, + -389, 87, 159, 87, 87, 87, 87, 84, 87, 160, + 87, 87, 87, 87, 160, -397, -397, -389, -397, 87, + 87, 87, -389, -389, -389, -397, 87, -389, -389, -389, + -389, -389, -389, -389, -389, -389, -389, -214, -458, 464, + -458, -458, 160, 160, 160, 87, -139, 86, 102, 160, + 658, -345, -344, 92, -362, -362, 170, 644, -362, 92, + 644, -362, 92, 170, 174, 174, 173, -362, 92, 37, + 24, 24, 314, -234, -236, -237, -238, -239, -240, 138, + 161, 162, 86, -249, -249, -249, -579, 415, -591, 160, + 42, -589, 505, -173, 327, -413, 84, -180, 17, 555, + -249, -249, -249, -249, -263, 36, 17, -194, -250, -362, + -573, 86, 87, 160, -362, -362, -362, -421, 84, -362, + -352, -319, -319, -376, -319, -319, 160, 23, -374, -376, + -376, -241, -372, -241, 159, -241, -351, -485, 36, -215, + 160, 21, 269, -248, -359, -245, -247, 254, -379, -246, + 257, -548, 255, 253, 112, 258, 312, 113, 248, -359, + -359, 254, -283, 250, 36, -359, -301, 248, 358, 312, + 255, 21, 269, -300, 248, 113, -362, 254, 258, 255, + 253, -358, 128, -350, 155, 250, 44, 390, -358, 559, + 269, -358, -358, -358, -358, -358, -358, -358, 286, 286, + -358, -358, -358, -358, -358, -358, -358, -358, -358, -358, + -358, 165, -358, -358, -358, -358, -358, -358, 86, 332, + 281, 282, 314, -580, 415, 32, 370, 370, 371, -591, + 366, 32, -181, 364, -304, -302, -373, 32, -325, -326, + -327, -328, -330, -329, 69, 73, 75, 79, 70, 71, + 72, 76, 81, 74, 32, 160, -360, -365, 36, -362, + 92, -360, -187, -202, -200, -360, 86, -442, -604, -606, + 497, 494, 500, -444, -444, 102, 250, 86, 128, -444, + -444, 42, -361, -601, 501, 495, -139, 160, 83, -251, + -226, -227, -228, -229, -256, -338, 196, 199, 201, 202, + 203, 204, 206, 207, 208, 209, 210, 213, 214, 211, + 212, 263, 191, 192, 193, 194, 215, 177, 197, 553, + 178, 179, 180, 181, 182, 183, 186, 187, 188, 189, + 185, -362, -235, -319, -190, -202, -362, 92, -362, 147, + 125, -6, 123, -151, -150, -149, 126, 626, 632, 125, + 125, 125, 87, 87, 87, 160, 87, 87, 87, 160, + 87, 160, 102, -523, 474, 41, 160, 86, 87, 160, + 62, 160, 128, 87, 160, -433, -389, -362, 92, -389, + 192, 87, 62, -139, 92, 160, -203, 38, 39, 159, + 447, -362, -534, 87, -450, 160, 250, 159, 159, -426, + 393, -361, -428, 21, 555, -338, 40, -345, 128, 662, + -362, 87, -391, -391, 117, -387, -384, 87, 125, -389, + 123, -254, -256, 409, 410, -389, -254, -255, -261, 156, + 195, 263, 194, 193, 191, 409, 410, -273, -417, 552, + -203, 87, -362, -389, -389, 87, -389, -389, 17, -362, + -273, -385, -389, -208, -208, 87, 87, -457, -458, -457, + -457, 87, 87, 87, 87, -457, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 86, 102, 104, + 102, 104, -516, -613, 64, 634, 63, 437, 107, 317, + 160, 102, 92, 663, 160, 128, 92, -362, -362, 17, + 246, -362, 17, 174, 92, -592, 321, 364, 505, 246, + 364, 321, 505, 246, -469, 102, 401, 87, 160, -338, + -226, -215, 86, -215, -582, 476, 417, 427, -358, -381, + -380, 366, 43, -503, 438, 423, 424, -427, 277, -351, + -588, 99, 128, 83, 344, 348, 350, 349, 345, 346, + 347, -407, -408, -406, -410, -575, 86, 86, -184, 36, + 136, -180, 86, 86, 36, -480, 334, -256, -249, -194, + -362, 17, 160, -574, 159, 17, -1, -362, -362, -420, + -374, -319, -389, -389, -319, -374, -374, -376, -362, -241, + -480, -256, 36, -299, 243, 239, -454, 314, 315, -455, + -470, 317, -472, 86, -253, -338, -246, -547, -548, -409, + -362, 113, -547, 113, 86, -253, -338, -338, -302, -338, + -362, -362, -362, -362, -309, -308, -338, -311, 33, -312, + -362, -362, -362, -362, 113, -362, 113, -278, 42, 49, + 50, 51, -358, -358, 198, -281, 42, 437, 439, 440, + -311, 102, 102, 102, 102, 92, 92, 92, -358, -358, + 102, 92, -365, 92, -549, 173, 46, 47, 102, 102, + 102, 102, 42, 92, -286, 42, 297, 301, 298, 299, + 300, 92, 102, 42, 102, 42, 102, 42, -362, 86, + -550, -551, 92, 333, -469, -582, -358, 370, -441, 128, + 128, -381, -584, 96, 418, -587, 327, -183, 505, 33, + -219, 243, 239, -575, -432, -431, -338, -199, -199, -199, + -199, -199, -199, 69, 80, 69, -212, 86, 69, 74, + 69, 74, 69, -327, 69, 80, -432, -201, -215, -365, + 87, -598, -597, -596, -594, 77, 251, 78, -395, -444, + 494, 498, 499, -428, -377, 92, -435, -223, 24, -249, + -249, -501, 307, 308, 87, 160, -256, -321, 19, 159, + 121, -6, -147, -149, -389, -6, -389, 628, 383, 629, + 92, 102, 102, -531, 458, 453, 455, 113, -398, -518, + -517, 62, -184, -211, -510, -553, -516, -362, 663, 663, + 663, 663, 92, 62, -184, -510, -223, -523, -205, -204, + 45, -362, 102, 17, -425, -420, 147, 147, -362, 394, + -436, 92, 416, 92, 246, 663, 92, -345, -384, -389, + 87, -264, 182, 181, -264, 36, 87, 87, -487, -487, + -486, -489, -486, -264, -264, 87, 86, -203, 87, 24, + 87, 87, 87, -389, 87, 87, 160, -506, 514, -507, + 588, -457, -457, -457, -457, -457, -457, -457, -457, -457, + -457, -457, -457, -457, -457, -457, -457, -457, -400, -399, + 269, 459, 641, 641, 459, 641, 641, 87, 160, -556, + 160, -353, 322, -353, -344, 92, 250, 92, 170, -362, + 92, 644, 92, -362, -362, -362, 314, -362, 314, -362, + -362, 92, 92, 92, -238, -256, 87, 36, -242, -243, + -244, -253, -245, -247, 36, -583, 96, -578, 92, -362, + 93, -584, 158, 368, 42, 419, 420, 435, 363, 102, + 102, 425, -576, -362, -182, 246, 364, -586, 53, 128, + 92, -249, -406, -350, 155, 288, 337, -316, -315, -362, + 92, -242, -184, -249, -242, -242, -184, -481, 336, 21, + 102, 146, -216, 84, 159, -202, -250, -362, 147, -249, + 87, -319, -241, -319, -319, -374, -481, -184, -466, 318, + 86, -464, 86, -464, 113, 345, -473, -471, 269, -307, + 46, 48, -256, -545, -362, -543, -545, -362, -543, -543, + -409, -389, -307, -253, 250, 32, 239, -310, 342, 343, + 348, 350, -437, 313, 118, -437, 160, -203, 160, -362, + -273, -273, 32, 92, 92, -251, 87, 160, 128, 102, + 92, -583, -578, 128, -442, 92, 92, -584, 92, 92, + -588, 128, -252, 246, -351, 160, -219, -219, -319, 160, + 128, -221, -220, 83, 84, -222, 83, -220, -220, 69, + -213, 92, 69, 69, -319, -596, -595, 24, -548, -548, + -548, 87, 87, 15, -228, 42, -320, 20, 21, 147, + 125, 123, 125, 125, -362, 87, 87, -493, 619, -527, + -529, 453, 21, 21, 15, 251, 87, -510, 663, -510, + -531, 46, 47, -420, -436, 438, -249, 160, 663, -254, + -292, 92, -389, 87, -389, 87, 92, 87, 92, -208, + 21, 87, 160, 87, 87, 87, 160, 87, 87, -389, + 87, -556, -354, 192, 92, -354, 364, -363, -362, 17, + -362, 92, -362, -469, 314, -469, 314, 246, -362, 244, + -184, 87, 160, -184, 92, -581, 429, 102, 42, 102, + 158, 421, -504, -174, 96, -251, 33, -219, -585, 96, + 128, 662, 86, -358, -358, -358, -362, 87, 160, -358, + -358, 87, 87, 87, -271, 555, -482, 268, 102, 146, + 102, 146, 102, -360, -202, -362, -319, -574, 159, -216, + -319, -482, -456, 319, 102, -385, 86, -385, 86, -465, + 316, 86, 87, 160, -362, -338, -268, -267, -265, 107, + 118, 42, 407, -266, 96, 155, 302, 305, 304, 280, + 303, -297, -378, 83, 413, 342, 343, -410, 619, 543, + 253, 112, 113, 395, -379, 86, 86, 84, 322, 86, + 86, -545, 87, -307, -338, 42, -310, 42, 356, 313, + -308, -362, 155, -273, 87, -551, 92, -556, -581, 92, + -444, -586, 92, -174, -251, -575, -208, -431, -516, -389, + 86, -389, 87, 86, 69, 11, 19, -382, -389, -397, + 647, 649, 650, 252, -6, 629, 383, -288, 620, 92, + 21, 92, -525, 92, -432, -493, -142, -285, -350, 285, + 87, -291, 138, 555, 87, 87, -457, -457, -460, -459, + -463, 459, 314, 467, -397, 92, 92, 87, 87, 92, + -362, 170, 92, 662, 92, -469, 92, -469, -362, 314, + -230, -256, -178, 555, -271, -244, -178, 21, 555, 367, + 42, 102, 42, 422, 92, -182, 128, 108, 109, -346, + -347, 92, -415, -273, -275, 92, -315, -382, -382, -269, + -184, 36, -270, -313, -410, 555, -141, -140, -269, 555, + 86, -483, 164, 102, 146, 102, 102, -319, -319, -360, + -483, -472, 21, 87, -451, 87, -451, 86, 128, -385, + -471, -474, 62, -265, 107, -385, 92, -275, -276, 42, + 301, 297, 128, 128, -277, 42, 281, 282, -287, 86, + 312, 15, 198, 86, 113, 113, -249, -415, -415, -546, + 344, 345, 346, 351, 348, 349, 347, 350, -546, -415, + -415, 86, -438, -437, -385, -358, -358, 155, -585, -209, + -214, -544, -362, 253, 21, 21, -502, 555, 648, 86, + 86, -362, -362, -342, 621, 102, 92, 455, -288, -494, + 622, -521, -464, -273, 128, 87, 76, 553, 556, 87, + -462, 120, 421, 425, -383, -386, 102, 104, 190, 158, + 87, 87, -362, -349, -348, 92, 92, 92, 314, -469, + 554, -179, 61, 501, 92, 93, 416, 92, 93, 367, + -174, 92, 663, 160, 128, 87, -452, 269, -184, 160, + -313, -350, -142, -452, -272, -314, -362, 92, -500, 173, + 335, 555, 102, 146, 102, -208, -319, -484, 173, 335, + -455, 87, 87, 87, -451, 102, 87, -478, -475, 86, + -313, 271, 138, 92, 92, 102, 86, -511, 32, 92, + -416, 86, 87, 87, 87, 87, -415, 102, -273, -358, + 87, 87, 160, 650, 86, -397, -397, 86, 21, -342, + -495, 623, 92, -530, 458, -524, -522, 453, 454, 455, + 456, 92, 554, 66, 557, -461, -462, 425, -383, -386, + 617, 465, 465, 465, 663, 160, 128, -469, 92, -232, + -362, 312, 438, -347, 92, -418, -453, 321, 21, -313, + -358, -453, 87, 160, -358, -358, 335, 102, 146, 102, + -209, -208, 335, -467, 320, 87, -478, -313, -477, -476, + 319, 272, 86, 87, -389, -401, -358, 87, -290, -289, + 551, -415, -418, 84, -418, 84, -418, 84, -418, 84, + 87, -273, -362, 253, -137, 86, 87, 87, -343, -362, + -525, 92, -532, 251, -528, -529, 457, -522, 21, 455, + 21, 21, -143, 160, 66, 117, 466, 466, 466, -348, + 92, 92, -231, 36, 460, 394, -419, 259, 356, 357, + 96, 555, 342, 343, 361, 360, 359, 362, 21, -454, + -273, -314, -382, -382, 102, -209, 102, 87, 160, -362, 268, 86, -396, -390, -389, 268, 87, -362, -296, -294, -295, 83, 472, 310, 311, 87, -546, -546, -546, -546, -297, 87, 160, -395, 87, 160, -539, 86, 102, -527, @@ -9743,8 +9870,8 @@ var yyDef = [...]int{ 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, 0, 316, 317, 318, 319, - 320, 321, 983, 984, 985, 986, 987, 988, 989, 990, - 991, 0, 0, 0, 0, 0, 720, 721, 0, 684, + 320, 321, 986, 987, 988, 989, 990, 991, 992, 993, + 994, 0, 0, 0, 0, 0, 720, 721, 0, 684, 0, 0, 0, 0, 0, 0, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, @@ -9752,405 +9879,407 @@ var yyDef = [...]int{ 590, 591, 592, 593, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 0, 350, 346, 258, 259, 260, 261, 262, 263, 264, 357, 358, 533, 0, 0, 0, - 0, 803, -2, 102, 0, 0, 0, 0, 339, 0, - 330, 330, 0, 0, 992, 993, 994, 995, 996, 997, - 998, 999, 1000, 1001, 1002, 1003, 1004, -2, 733, 0, + 0, 806, -2, 102, 0, 0, 0, 0, 339, 0, + 330, 330, 0, 0, 995, 996, 997, 998, 999, 1000, + 1001, 1002, 1003, 1004, 1005, 1006, 1007, -2, 734, 0, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 414, 415, 416, - 410, 411, 413, 412, -2, 0, 0, 733, 0, 0, - 0, 811, 0, 0, 0, 854, 872, 23, 0, 7, + 410, 411, 413, 412, -2, 0, 0, 734, 0, 0, + 0, 814, 0, 0, 0, 857, 875, 23, 0, 7, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, - 0, 0, 19, 0, 19, 0, 0, 0, 1414, 1415, - 1416, 1417, 2220, 2190, -2, 1952, 1926, 2114, 2115, 2009, - 2022, 2257, 2258, 2259, 2260, 2261, 2262, 2263, 2264, 2265, - 2266, 2267, 2268, 2269, 2270, 2271, 2272, 2273, 2274, 2275, - 2276, 2277, 2278, 2279, 2280, 2281, 2282, 2283, 2284, 2285, - 2286, 2287, 2288, 2289, 2290, 2291, 2292, 2293, 2294, 2295, - 2296, 2297, 2298, 2299, 2300, 2301, 2302, 2303, 2304, 2305, - 2306, 1883, 1884, 1885, 1886, 1887, 1888, 1889, 1890, 1891, - 1892, 1893, 1894, 1895, 1896, 1897, 1898, 1899, 1900, 1901, - 1902, 1903, 1904, 1905, 1906, 1907, 1908, 1909, 1910, 1911, - 1912, 1913, 1914, 1915, 1916, 1917, 1918, 1919, 1920, 1921, - 1922, 1923, 1924, 1925, 1927, 1928, 1929, 1930, 1931, 1932, - 1933, 1934, 1935, 1936, 1937, 1938, 1939, 1940, 1941, 1942, - 1943, 1944, 1945, 1946, 1947, 1948, 1949, 1950, 1951, 1953, - 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, - 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, - 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, - 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, - 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, - 2004, 2005, 2006, 2007, 2008, 2010, 2011, 2012, 2013, 2014, - 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2024, 2025, 2026, - 2027, 2028, 2029, 2030, 2031, 2032, 2033, 2034, 2035, 2036, - 2037, 2038, 2039, 2040, 2041, 2042, 2043, 2044, 2045, 2046, - 2047, 2048, 2049, 2050, 2051, 2052, 2053, 2054, 2055, 2056, - 2057, 2058, 2059, 2060, 2061, 2062, 2063, 2064, 2065, 2066, - 2067, 2068, 2069, 2070, 2071, 2072, 2073, 2074, 2075, 2076, - 2077, 2078, 2079, 2080, 2081, 2082, 2083, 2084, 2085, 2086, - 2087, 2088, 2089, 2090, 2091, 2092, 2093, 2094, 2095, 2096, - 2097, 2098, 2099, 2100, 2101, 2102, 2103, 2104, 2105, 2106, - 2107, 2108, 2109, 2110, 2111, 2112, 2113, 2116, 2117, 2118, - 2119, 2120, 2121, 2122, 2123, 2124, 2125, 2126, 2127, 2128, - 2129, 2130, 2131, 2132, 2133, 2134, 2135, 2136, 2137, 2138, - 2139, 2140, 2141, 2142, 2143, 2144, 2145, 2146, -2, 2148, - 2149, 2150, 2151, 2152, 2153, 2154, 2155, 2156, 2157, 2158, - 2159, 2160, 2161, 2162, 2163, 2164, 2165, 2166, 2167, 2168, - 2169, 2170, 2171, 2172, 2173, 2174, 2175, 2176, 2177, 2178, - 2179, 2180, 2181, 2182, 2183, 2184, 2185, 2186, 2187, 2188, - 2189, 2191, 2192, 2193, 2194, 2195, 2196, 2197, 2198, 2199, - 2200, 2201, 2202, 2203, 2204, 2205, -2, -2, -2, 2209, - 2210, 2211, 2212, 2213, 2214, 2215, 2216, 2217, 2218, 2219, - 2221, 2222, 2223, 2224, 2225, 2226, 2227, 2228, 2229, 2230, - 2231, 2232, 2233, 2234, 2235, 2236, 2237, 2238, 2239, 2240, - 2241, 2242, 2243, 2244, 2245, 2246, 0, 314, 312, 1896, - 1926, 1952, 2009, 2022, 2023, 2062, 2114, 2115, 2147, 2190, - 2206, 2207, 2208, 2220, 0, 0, 1009, 0, 781, 0, - 0, 786, 1361, 781, 351, 722, 723, 811, 837, 682, - 0, 388, 0, 1942, 392, 2197, 0, 0, 0, 0, - 679, 382, 383, 384, 385, 386, 387, 0, 0, 982, - 0, 0, 378, 0, 345, 2012, 2219, 1418, 0, 0, - 0, 0, 0, 201, 1133, 203, 1135, 207, 215, 0, - 0, 0, 220, 221, 224, 225, 226, 227, 228, 0, - 232, 0, 234, 237, 0, 239, 240, 0, 243, 244, - 245, 0, 255, 256, 257, 1136, 1137, 1138, -2, 130, - 1007, 1854, 1740, 0, 1747, 1760, 1771, 1500, 1501, 1502, - 1503, 0, 0, 0, 0, 0, 0, 1511, 1512, 0, - 1542, 2261, 2302, 2303, 0, 1520, 1521, 1522, 1523, 1524, - 1525, 0, 141, 153, 154, 1793, 1794, 1795, 1796, 1797, - 1798, 1799, 0, 1801, 1802, 1803, 1711, 1487, 1414, 0, - 2270, 0, 2292, 2297, 2298, 2299, 2300, 2291, 0, 0, - 1695, 0, 1685, 0, 0, -2, -2, 0, 0, 2087, - -2, 2304, 2305, 2306, 2267, 2288, 2296, 2271, 2272, 2295, - 2263, 2264, 2265, 2258, 2259, 2260, 2262, 2274, 2276, 2287, - 0, 2283, 2293, 2294, 2195, 0, 0, 2242, 0, 0, - 0, 2237, 155, 156, -2, -2, -2, -2, -2, -2, + 0, 0, 19, 0, 19, 0, 0, 0, 1417, 1418, + 1419, 1420, 2223, 2193, -2, 1955, 1929, 2117, 2118, 2012, + 2025, 2260, 2261, 2262, 2263, 2264, 2265, 2266, 2267, 2268, + 2269, 2270, 2271, 2272, 2273, 2274, 2275, 2276, 2277, 2278, + 2279, 2280, 2281, 2282, 2283, 2284, 2285, 2286, 2287, 2288, + 2289, 2290, 2291, 2292, 2293, 2294, 2295, 2296, 2297, 2298, + 2299, 2300, 2301, 2302, 2303, 2304, 2305, 2306, 2307, 2308, + 2309, 1886, 1887, 1888, 1889, 1890, 1891, 1892, 1893, 1894, + 1895, 1896, 1897, 1898, 1899, 1900, 1901, 1902, 1903, 1904, + 1905, 1906, 1907, 1908, 1909, 1910, 1911, 1912, 1913, 1914, + 1915, 1916, 1917, 1918, 1919, 1920, 1921, 1922, 1923, 1924, + 1925, 1926, 1927, 1928, 1930, 1931, 1932, 1933, 1934, 1935, + 1936, 1937, 1938, 1939, 1940, 1941, 1942, 1943, 1944, 1945, + 1946, 1947, 1948, 1949, 1950, 1951, 1952, 1953, 1954, 1956, + 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, + 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, + 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, + 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, + 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, + 2007, 2008, 2009, 2010, 2011, 2013, 2014, 2015, 2016, 2017, + 2018, 2019, 2020, 2021, 2022, 2023, 2024, 2027, 2028, 2029, + 2030, 2031, 2032, 2033, 2034, 2035, 2036, 2037, 2038, 2039, + 2040, 2041, 2042, 2043, 2044, 2045, 2046, 2047, 2048, 2049, + 2050, 2051, 2052, 2053, 2054, 2055, 2056, 2057, 2058, 2059, + 2060, 2061, 2062, 2063, 2064, 2065, 2066, 2067, 2068, 2069, + 2070, 2071, 2072, 2073, 2074, 2075, 2076, 2077, 2078, 2079, + 2080, 2081, 2082, 2083, 2084, 2085, 2086, 2087, 2088, 2089, + 2090, 2091, 2092, 2093, 2094, 2095, 2096, 2097, 2098, 2099, + 2100, 2101, 2102, 2103, 2104, 2105, 2106, 2107, 2108, 2109, + 2110, 2111, 2112, 2113, 2114, 2115, 2116, 2119, 2120, 2121, + 2122, 2123, 2124, 2125, 2126, 2127, 2128, 2129, 2130, 2131, + 2132, 2133, 2134, 2135, 2136, 2137, 2138, 2139, 2140, 2141, + 2142, 2143, 2144, 2145, 2146, 2147, 2148, 2149, -2, 2151, + 2152, 2153, 2154, 2155, 2156, 2157, 2158, 2159, 2160, 2161, + 2162, 2163, 2164, 2165, 2166, 2167, 2168, 2169, 2170, 2171, + 2172, 2173, 2174, 2175, 2176, 2177, 2178, 2179, 2180, 2181, + 2182, 2183, 2184, 2185, 2186, 2187, 2188, 2189, 2190, 2191, + 2192, 2194, 2195, 2196, 2197, 2198, 2199, 2200, 2201, 2202, + 2203, 2204, 2205, 2206, 2207, 2208, -2, -2, -2, 2212, + 2213, 2214, 2215, 2216, 2217, 2218, 2219, 2220, 2221, 2222, + 2224, 2225, 2226, 2227, 2228, 2229, 2230, 2231, 2232, 2233, + 2234, 2235, 2236, 2237, 2238, 2239, 2240, 2241, 2242, 2243, + 2244, 2245, 2246, 2247, 2248, 2249, 0, 314, 312, 1899, + 1929, 1955, 2012, 2025, 2026, 2065, 2117, 2118, 2150, 2193, + 2209, 2210, 2211, 2223, 0, 0, 1012, 0, 784, 0, + 0, 0, 789, 1364, 784, 0, 351, 722, 723, 814, + 840, 682, 0, 388, 0, 1945, 392, 2200, 0, 0, + 0, 0, 679, 382, 383, 384, 385, 386, 387, 0, + 0, 985, 0, 0, 378, 0, 345, 2015, 2222, 1421, + 0, 0, 0, 0, 0, 201, 1136, 203, 1138, 207, + 215, 0, 0, 0, 220, 221, 224, 225, 226, 227, + 228, 0, 232, 0, 234, 237, 0, 239, 240, 0, + 243, 244, 245, 0, 255, 256, 257, 1139, 1140, 1141, + -2, 130, 1010, 1857, 1743, 0, 1750, 1763, 1774, 1503, + 1504, 1505, 1506, 0, 0, 0, 0, 0, 0, 1514, + 1515, 0, 1545, 2264, 2305, 2306, 0, 1523, 1524, 1525, + 1526, 1527, 1528, 0, 141, 153, 154, 1796, 1797, 1798, + 1799, 1800, 1801, 1802, 0, 1804, 1805, 1806, 1714, 1490, + 1417, 0, 2273, 0, 2295, 2300, 2301, 2302, 2303, 2294, + 0, 0, 1698, 0, 1688, 0, 0, -2, -2, 0, + 0, 2090, -2, 2307, 2308, 2309, 2270, 2291, 2299, 2274, + 2275, 2298, 2266, 2267, 2268, 2261, 2262, 2263, 2265, 2277, + 2279, 2290, 0, 2286, 2296, 2297, 2198, 0, 0, 2245, + 0, 0, 0, 2240, 155, 156, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, - -2, 1706, -2, 1708, -2, 1710, -2, 1713, -2, -2, - -2, -2, 1718, 1719, -2, 1721, -2, -2, -2, -2, - -2, -2, -2, 1697, 1698, 1699, 1700, 1689, 1690, 1691, - 1692, 1693, 1694, -2, -2, -2, 837, 930, 0, 837, - 0, 812, 859, 862, 865, 868, 815, 0, 0, 103, - 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 340, 341, 329, 331, 0, 335, 0, 0, 331, 328, - 322, 0, 1174, 1174, 1174, 0, 0, 0, 0, 1174, - 1174, 1174, 1174, 1174, 0, 1174, 0, 0, 0, 0, - 0, 1174, 0, 1042, 1140, 1141, 1142, 1172, 1173, 1246, - 0, 0, 0, 738, 734, 735, 736, 737, 825, 0, - 827, 830, 0, 0, 659, 659, 897, 897, 0, 605, - 0, 0, 0, 659, 0, 619, 611, 0, 0, 0, - 659, 0, 0, 832, 832, 0, 662, 669, 659, 659, - -2, 659, 659, 656, 659, 0, 0, 1186, 625, 626, - 627, 611, 611, 630, 631, 632, 642, 643, 670, 1878, - 0, 0, 533, 533, 0, 533, 533, 0, 533, 533, - 533, 0, 740, 1968, 2057, 1949, 2028, 1906, 2012, 2219, - 0, 287, 2087, 292, 0, 1951, 1971, 0, 0, 1990, - 0, -2, 0, 367, 837, 0, 0, 811, 0, 0, - 0, 0, 533, 533, 533, 533, 533, 1245, 533, 533, - 533, 533, 533, 0, 0, 0, 533, 533, 533, 533, - 0, 873, 874, 876, 877, 878, 879, 880, 881, 882, - 883, 884, 885, 5, 6, 19, 0, 0, 0, 0, - 0, 0, 109, 108, 0, 1855, 1873, 1806, 1807, 1808, - 1860, 1810, 1864, 1864, 1864, 1864, 1839, 1840, 1841, 1842, - 1843, 1844, 1845, 1846, 1847, 1848, 1864, 1864, 0, 0, - 1853, 1830, 1862, 1862, 1862, 1860, 1857, 1811, 1812, 1813, + -2, -2, -2, 1709, -2, 1711, -2, 1713, -2, 1716, + -2, -2, -2, -2, 1721, 1722, -2, 1724, -2, -2, + -2, -2, -2, -2, -2, 1700, 1701, 1702, 1703, 1692, + 1693, 1694, 1695, 1696, 1697, -2, -2, -2, 840, 933, + 0, 840, 0, 815, 862, 865, 868, 871, 818, 0, + 0, 103, 104, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 340, 341, 329, 331, 0, 335, 0, 0, + 331, 328, 322, 0, 1177, 1177, 1177, 0, 0, 0, + 0, 1177, 1177, 1177, 1177, 1177, 0, 1177, 0, 0, + 0, 0, 0, 1177, 0, 1045, 1143, 1144, 1145, 1175, + 1176, 1249, 0, 0, 0, 739, 734, 735, 736, 737, + 738, 828, 0, 830, 833, 0, 0, 659, 659, 900, + 900, 0, 605, 0, 0, 0, 659, 0, 619, 611, + 0, 0, 0, 659, 0, 0, 835, 835, 0, 662, + 669, 659, 659, -2, 659, 659, 656, 659, 0, 0, + 1189, 625, 626, 627, 611, 611, 630, 631, 632, 642, + 643, 670, 1881, 0, 0, 533, 533, 0, 533, 533, + 0, 533, 533, 533, 0, 741, 1971, 2060, 1952, 2031, + 1909, 2015, 2222, 0, 287, 2090, 292, 0, 1954, 1974, + 0, 0, 1993, 0, -2, 0, 367, 840, 0, 0, + 814, 0, 0, 0, 0, 533, 533, 533, 533, 533, + 1248, 533, 533, 533, 533, 533, 0, 0, 0, 533, + 533, 533, 533, 0, 876, 877, 879, 880, 881, 882, + 883, 884, 885, 886, 887, 888, 5, 6, 19, 0, + 0, 0, 0, 0, 0, 109, 108, 0, 1858, 1876, + 1809, 1810, 1811, 1863, 1813, 1867, 1867, 1867, 1867, 1842, + 1843, 1844, 1845, 1846, 1847, 1848, 1849, 1850, 1851, 1867, + 1867, 0, 0, 1856, 1833, 1865, 1865, 1865, 1863, 1860, 1814, 1815, 1816, 1817, 1818, 1819, 1820, 1821, 1822, 1823, - 1824, 1867, 1867, 1870, 1870, 1867, 0, 428, 426, 427, - 1736, 0, 0, 0, 0, 781, 785, 1359, 0, 0, - 0, 837, -2, 0, 0, 683, 389, 1419, 0, 0, - 393, 0, 394, 0, 0, 396, 0, 0, 0, 417, - 0, 420, 404, 405, 406, 407, 400, 0, 181, 0, - 380, 381, 0, 0, 347, 0, 0, 0, 534, 0, - 0, 0, 0, 0, 0, 212, 208, 216, 219, 229, - 236, 0, 248, 250, 253, 209, 217, 222, 223, 230, - 251, 210, 213, 214, 218, 252, 254, 211, 231, 235, - 249, 233, 238, 241, 242, 247, 0, 182, 0, 0, - 0, 0, 0, 1746, 0, 0, 1779, 1780, 1781, 1782, - 1783, 1784, 1785, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, -2, 1740, 0, 0, 1506, 1507, 1508, 1509, - 0, 1513, 0, 1543, 0, 0, 0, 0, 0, 0, - 1800, 1804, 0, 1736, 1736, 0, 1736, 1732, 0, 0, - 0, 0, 0, 0, 1736, 1668, 0, 0, 1670, 1686, - 0, 0, 1672, 1673, 0, 1676, 1677, 1736, 0, 1736, - 1681, 1736, 1736, 1736, 1664, 1665, 0, 1732, 1732, 1732, - 1732, 0, 0, 1732, 1732, 1732, 1732, 1732, 1732, 1732, - 1732, 1732, 1732, 1732, 1732, 1732, 1732, 1732, 0, 0, - 0, 0, 832, 0, 838, 0, -2, 0, 856, 858, - 860, 861, 863, 864, 866, 867, 869, 870, 817, 0, - 0, 105, 0, 0, 0, 0, 0, 0, 71, 73, - 0, 0, 0, 0, 0, 0, 333, 0, 338, 324, - 2049, 0, 323, 0, 0, 0, 0, 0, 1006, 0, - 0, 1174, 1174, 1174, 1043, 0, 0, 0, 0, 0, - 0, 0, 0, 1174, 1174, 1174, 1174, 0, 1192, 0, - 0, 0, 740, 739, 0, 826, 0, 0, 70, 594, - 595, 596, 897, 0, 0, 598, 599, 0, 600, 0, - 0, 611, 659, 659, 617, 618, 613, 612, 665, 666, - 662, 0, 662, 662, 897, 0, 636, 637, 638, 659, - 659, 644, 833, 0, 645, 646, 662, 0, 667, 668, - 897, 0, 0, 897, 897, 0, 654, 655, 657, 659, - 0, 0, 1174, 0, 675, 613, 613, 1879, 1880, 0, - 0, 1183, 0, 0, 0, 0, 678, 0, 0, 0, - 444, 445, 0, 0, 741, 0, 266, 270, 0, 273, - 0, 2057, 0, 2057, 0, 0, 280, 0, 0, 0, - 0, 0, 0, 310, 311, 0, 0, 0, 0, 301, - 304, 1353, 1354, 1130, 1131, 305, 306, 359, 360, 0, - 832, 855, 857, 851, 852, 853, 0, 72, 0, 0, - 0, 0, 0, 533, 0, 0, 0, 0, 0, 716, - 0, 1022, 718, 0, 0, 0, 0, 0, 905, 899, - 901, 977, 141, 875, 8, 126, 123, 0, 19, 0, - 0, 19, 19, 0, 19, 315, 0, 1876, 1874, 1875, - 1809, 1861, 0, 1835, 0, 1836, 1837, 1838, 1849, 1850, - 0, 0, 1831, 0, 1832, 1833, 1834, 1825, 0, 1826, - 1827, 0, 1828, 1829, 313, 425, 0, 0, 1737, 1010, - 0, 759, 773, 754, 0, 762, 0, 0, 1361, 0, - 0, 0, 0, 742, 773, 744, 0, 762, 832, 809, - 0, 787, 0, 0, 390, 0, 401, 395, 0, 402, - 397, 398, 0, 0, 419, 421, 422, 423, 408, 409, - 680, 376, 377, 368, 369, 370, 371, 372, 373, 374, - 375, 0, 0, 379, 151, 0, 348, 349, 0, 0, - 0, 195, 196, 197, 198, 199, 200, 202, 186, 705, - 707, 1122, 1134, 0, 1125, 0, 205, 246, 178, 0, - 0, 0, 1741, 1742, 1743, 1744, 1745, 1750, 0, 1752, - 1754, 1756, 1758, 0, 1776, -2, -2, 1488, 1489, 1490, - 1491, 1492, 1493, 1494, 1495, 1496, 1497, 1498, 1499, 1761, - 1774, 1775, 0, 0, 0, 0, 0, 0, 1772, 1772, - 1767, 0, 1526, 1355, 1356, 1504, 0, 0, 1540, 1544, - 0, 0, 0, 0, 0, 0, 1157, 1860, 0, 142, - 1731, 1635, 1636, 1637, 1638, 1639, 1640, 1641, 1642, 1643, - 1644, 1645, 1646, 1647, 1648, 1649, 1650, 1651, 1652, 1653, - 1654, 1655, 1656, 1657, 1658, 1659, 1660, 1661, 1662, 1663, - 0, 0, 1740, 0, 0, 0, 1733, 1734, 0, 0, - 0, 1623, 0, 0, 1629, 1630, 1631, 0, 768, 0, - 1696, 1669, 1687, 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, 929, 931, 0, 777, 779, 780, 806, 787, 813, - 0, 0, 0, 101, 106, 0, 1213, 0, 0, 0, - 0, 0, 0, 0, 74, 1187, 75, 1189, 342, 343, - 0, 0, 337, 325, 2049, 327, 0, 0, 0, 0, - 0, -2, 0, 0, 0, 0, 0, 1058, 1059, 531, - 1116, 0, 0, 0, 1132, 1161, 1170, 0, 0, 0, - 0, 0, 1219, 1044, 1049, 1050, 1051, 1045, 1046, 1052, - 1053, 0, 828, 0, 0, 946, 597, 660, 661, 898, - 601, 0, 0, 608, 2012, 613, 897, 897, 620, 614, - 621, 664, 622, 623, 624, 662, 897, 897, 834, 659, - 662, 647, 663, 662, 1361, 651, 0, 658, 1361, 676, - 1361, 0, 674, 628, 629, 1221, 830, 442, 443, 448, - 450, 0, 499, 499, 499, 482, 499, 0, 0, 470, - 1881, 0, 0, 0, 0, 479, 1881, 0, 0, 1881, - 1881, 1881, 1881, 1881, 1881, 1881, 0, 0, 1881, 1881, - 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 0, - 1881, 1881, 1881, 1881, 1881, 1338, 1881, 0, 498, 1184, - 489, 490, 491, 492, 497, 0, 0, 527, 0, 0, - 1057, 0, 531, 0, 0, 1099, 0, 0, 910, 0, - 911, 912, 913, 908, 948, 972, 972, 0, 972, 952, - 1361, 0, 0, 0, 278, 279, 267, 0, 268, 0, - 0, 281, 282, 0, 284, 285, 286, 293, 1949, 2028, - 288, 290, 0, 0, 294, 307, 308, 309, 0, 0, - 299, 300, 0, 0, 362, 363, 365, 0, 787, 1188, - 702, 1357, 703, 704, 708, 0, 0, 711, 712, 713, - 714, 715, 1024, 0, 0, 1108, 1109, 1110, 1111, 897, - 0, 906, 0, 902, 978, 0, 980, 0, 0, 124, - 19, 0, 117, 114, 0, 0, 0, 0, 0, 1856, - 1805, 1877, 0, 0, 0, 1858, 0, 0, 0, 0, - 0, 107, 789, 749, 0, 753, 770, 0, 774, 0, - 0, 766, 758, 763, 0, 0, 783, 750, 1360, 0, - 0, 0, 0, 743, 0, 0, 748, 787, 0, 810, - 839, 840, 843, 1420, 0, 403, 399, 418, 0, 0, - 0, 0, 189, 1119, 0, 190, 194, 184, 0, 0, - 0, 1124, 0, 1121, 1126, 0, 204, 0, 0, 179, - 180, 1204, 1213, 0, 0, 0, 1751, 1753, 1755, 1757, - 1759, 0, 1762, 1772, 1772, 1768, 0, 1763, 0, 1765, - 0, 1741, 1510, 0, 1545, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 843, 0, 0, 1613, 1614, 0, - 0, 1618, 0, 1620, 1621, 1622, 1624, 0, 0, 0, - 1628, 0, 1667, 1688, 1671, 1674, 0, 1678, 0, 1680, - 1682, 1683, 1684, 0, 837, 837, 0, 0, 1584, 1584, - 1584, 0, 0, 0, 0, 1584, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1529, 0, 1530, - 1531, 0, 0, 0, 932, 807, 0, 0, 0, 0, - 0, 1211, 0, 91, 0, 0, 0, 0, 96, 0, - 0, 76, 344, 332, 334, 0, 326, 0, 1175, 0, - 0, 0, 0, 0, 1012, 1013, 1015, 0, 1018, 1019, - 1020, 1024, 830, 0, 830, 1069, 1881, 535, 0, 0, - 1118, 0, 1088, 0, 0, 0, -2, 0, 0, 1170, - 0, 0, 0, 1223, 0, 0, 0, 727, 731, 23, - 831, 0, 604, 602, 0, 606, 0, 607, 659, 615, - 616, 897, 639, 640, 0, 0, 897, 659, 659, 650, - 662, 671, 0, 672, 1361, 1223, 0, 0, 1183, 1289, - 1257, 460, 0, 1374, 1375, 500, 0, 1381, 1390, 1174, - 1452, 0, 1390, 0, 0, 1392, 1393, 0, 0, 0, - 0, 483, 484, 0, 469, 0, 0, 0, 0, 0, - 0, 468, 0, 0, 510, 0, 0, 0, 0, 0, - 1882, 1881, 1881, 0, 477, 478, 0, 481, 0, 0, - 0, 0, 0, 0, 0, 0, 1881, 1881, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1329, - 0, 0, 0, 0, 0, 0, 0, 0, 1345, 1346, - 0, 1069, 1881, 0, 0, 0, 0, 535, 1113, 1086, - 1104, 0, 446, 447, 507, 0, 0, 0, 0, 0, - 0, 0, 938, 0, 0, 0, 937, 0, 0, 0, - 0, 0, 0, 0, 830, 973, 0, 975, 976, 950, - -2, 0, 910, 955, 1736, 0, 271, 272, 0, 0, - 277, 295, 297, 269, 0, 0, 0, 296, 298, 302, - 303, 361, 364, 366, 849, 0, 0, 1247, 0, 1025, - 1026, 1028, 1029, 0, -2, -2, -2, -2, -2, -2, - -2, -2, -2, -2, -2, -2, -2, 1933, -2, -2, + 1824, 1825, 1826, 1827, 1870, 1870, 1873, 1873, 1870, 0, + 428, 426, 427, 1739, 0, 0, 0, 0, 784, 784, + 788, 1362, 0, 0, 0, 784, 840, -2, 0, 0, + 683, 389, 1422, 0, 0, 393, 0, 394, 0, 0, + 396, 0, 0, 0, 417, 0, 420, 404, 405, 406, + 407, 400, 0, 181, 0, 380, 381, 0, 0, 347, + 0, 0, 0, 534, 0, 0, 0, 0, 0, 0, + 212, 208, 216, 219, 229, 236, 0, 248, 250, 253, + 209, 217, 222, 223, 230, 251, 210, 213, 214, 218, + 252, 254, 211, 231, 235, 249, 233, 238, 241, 242, + 247, 0, 182, 0, 0, 0, 0, 0, 1749, 0, + 0, 1782, 1783, 1784, 1785, 1786, 1787, 1788, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, -2, 1743, 0, + 0, 1509, 1510, 1511, 1512, 0, 1516, 0, 1546, 0, + 0, 0, 0, 0, 0, 1803, 1807, 0, 1739, 1739, + 0, 1739, 1735, 0, 0, 0, 0, 0, 0, 1739, + 1671, 0, 0, 1673, 1689, 0, 0, 1675, 1676, 0, + 1679, 1680, 1739, 0, 1739, 1684, 1739, 1739, 1739, 1667, + 1668, 0, 1735, 1735, 1735, 1735, 0, 0, 1735, 1735, + 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, 1735, + 1735, 1735, 1735, 0, 0, 0, 0, 835, 0, 841, + 0, -2, 0, 859, 861, 863, 864, 866, 867, 869, + 870, 872, 873, 820, 0, 0, 105, 0, 0, 0, + 0, 0, 0, 71, 73, 0, 0, 0, 0, 0, + 0, 333, 0, 338, 324, 2052, 0, 323, 0, 0, + 0, 0, 0, 1009, 0, 0, 1177, 1177, 1177, 1046, + 0, 0, 0, 0, 0, 0, 0, 0, 1177, 1177, + 1177, 1177, 0, 1195, 0, 0, 0, 741, 740, 739, + 0, 829, 0, 0, 70, 594, 595, 596, 900, 0, + 0, 598, 599, 0, 600, 0, 0, 611, 659, 659, + 617, 618, 613, 612, 665, 666, 662, 0, 662, 662, + 900, 0, 636, 637, 638, 659, 659, 644, 836, 0, + 645, 646, 662, 0, 667, 668, 900, 0, 0, 900, + 900, 0, 654, 655, 657, 659, 0, 0, 1177, 0, + 675, 613, 613, 1882, 1883, 0, 0, 1186, 0, 0, + 0, 0, 678, 0, 0, 0, 444, 445, 0, 0, + 742, 0, 266, 270, 0, 273, 0, 2060, 0, 2060, + 0, 0, 280, 0, 0, 0, 0, 0, 0, 310, + 311, 0, 0, 0, 0, 301, 304, 1356, 1357, 1133, + 1134, 305, 306, 359, 360, 0, 835, 858, 860, 854, + 855, 856, 0, 72, 0, 0, 0, 0, 0, 533, + 0, 0, 0, 0, 0, 716, 0, 1025, 718, 0, + 0, 0, 0, 0, 908, 902, 904, 980, 141, 878, + 8, 126, 123, 0, 19, 0, 0, 19, 19, 0, + 19, 315, 0, 1879, 1877, 1878, 1812, 1864, 0, 1838, + 0, 1839, 1840, 1841, 1852, 1853, 0, 0, 1834, 0, + 1835, 1836, 1837, 1828, 0, 1829, 1830, 0, 1831, 1832, + 313, 425, 0, 0, 1740, 1013, 0, 762, 776, 757, + 0, 765, 0, 0, 0, 1364, 0, 0, 0, 0, + 743, 776, 746, 0, 765, 0, 835, 812, 0, 790, + 0, 0, 390, 0, 401, 395, 0, 402, 397, 398, + 0, 0, 419, 421, 422, 423, 408, 409, 680, 376, + 377, 368, 369, 370, 371, 372, 373, 374, 375, 0, + 0, 379, 151, 0, 348, 349, 0, 0, 0, 195, + 196, 197, 198, 199, 200, 202, 186, 705, 707, 1125, + 1137, 0, 1128, 0, 205, 246, 178, 0, 0, 0, + 1744, 1745, 1746, 1747, 1748, 1753, 0, 1755, 1757, 1759, + 1761, 0, 1779, -2, -2, 1491, 1492, 1493, 1494, 1495, + 1496, 1497, 1498, 1499, 1500, 1501, 1502, 1764, 1777, 1778, + 0, 0, 0, 0, 0, 0, 1775, 1775, 1770, 0, + 1529, 1358, 1359, 1507, 0, 0, 1543, 1547, 0, 0, + 0, 0, 0, 0, 1160, 1863, 0, 142, 1734, 1638, + 1639, 1640, 1641, 1642, 1643, 1644, 1645, 1646, 1647, 1648, + 1649, 1650, 1651, 1652, 1653, 1654, 1655, 1656, 1657, 1658, + 1659, 1660, 1661, 1662, 1663, 1664, 1665, 1666, 0, 0, + 1743, 0, 0, 0, 1736, 1737, 0, 0, 0, 1626, + 0, 0, 1632, 1633, 1634, 0, 771, 0, 1699, 1672, + 1690, 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, 932, + 934, 0, 780, 782, 783, 809, 790, 816, 0, 0, + 0, 101, 106, 0, 1216, 0, 0, 0, 0, 0, + 0, 0, 74, 1190, 75, 1192, 342, 343, 0, 0, + 337, 325, 2052, 327, 0, 0, 0, 0, 0, -2, + 0, 0, 0, 0, 0, 1061, 1062, 531, 1119, 0, + 0, 0, 1135, 1164, 1173, 0, 0, 0, 0, 0, + 1222, 1047, 1052, 1053, 1054, 1048, 1049, 1055, 1056, 0, + 741, 831, 0, 0, 949, 597, 660, 661, 901, 601, + 0, 0, 608, 2015, 613, 900, 900, 620, 614, 621, + 664, 622, 623, 624, 662, 900, 900, 837, 659, 662, + 647, 663, 662, 1364, 651, 0, 658, 1364, 676, 1364, + 0, 674, 628, 629, 1224, 833, 442, 443, 448, 450, + 0, 499, 499, 499, 482, 499, 0, 0, 470, 1884, + 0, 0, 0, 0, 479, 1884, 0, 0, 1884, 1884, + 1884, 1884, 1884, 1884, 1884, 0, 0, 1884, 1884, 1884, + 1884, 1884, 1884, 1884, 1884, 1884, 1884, 1884, 0, 1884, + 1884, 1884, 1884, 1884, 1341, 1884, 0, 498, 1187, 489, + 490, 491, 492, 497, 0, 0, 527, 0, 0, 1060, + 0, 531, 0, 0, 1102, 0, 0, 913, 0, 914, + 915, 916, 911, 951, 975, 975, 0, 975, 955, 1364, + 0, 0, 0, 278, 279, 267, 0, 268, 0, 0, + 281, 282, 0, 284, 285, 286, 293, 1952, 2031, 288, + 290, 0, 0, 294, 307, 308, 309, 0, 0, 299, + 300, 0, 0, 362, 363, 365, 0, 790, 1191, 702, + 1360, 703, 704, 708, 0, 0, 711, 712, 713, 714, + 715, 1027, 0, 0, 1111, 1112, 1113, 1114, 900, 0, + 909, 0, 905, 981, 0, 983, 0, 0, 124, 19, + 0, 117, 114, 0, 0, 0, 0, 0, 1859, 1808, + 1880, 0, 0, 0, 1861, 0, 0, 0, 0, 0, + 107, 792, 751, 0, 756, 773, 0, 777, 0, 0, + 769, 761, 766, 0, 0, 786, 752, 762, 1363, 0, + 0, 0, 0, 745, 0, 0, 750, 744, 790, 0, + 813, 842, 843, 846, 1423, 0, 403, 399, 418, 0, + 0, 0, 0, 189, 1122, 0, 190, 194, 184, 0, + 0, 0, 1127, 0, 1124, 1129, 0, 204, 0, 0, + 179, 180, 1207, 1216, 0, 0, 0, 1754, 1756, 1758, + 1760, 1762, 0, 1765, 1775, 1775, 1771, 0, 1766, 0, + 1768, 0, 1744, 1513, 0, 1548, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 846, 0, 0, 1616, 1617, + 0, 0, 1621, 0, 1623, 1624, 1625, 1627, 0, 0, + 0, 1631, 0, 1670, 1691, 1674, 1677, 0, 1681, 0, + 1683, 1685, 1686, 1687, 0, 840, 840, 0, 0, 1587, + 1587, 1587, 0, 0, 0, 0, 1587, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1532, 0, + 1533, 1534, 0, 0, 0, 935, 810, 0, 0, 0, + 0, 0, 1214, 0, 91, 0, 0, 0, 0, 96, + 0, 0, 76, 344, 332, 334, 0, 326, 0, 1178, + 0, 0, 0, 0, 0, 1015, 1016, 1018, 0, 1021, + 1022, 1023, 1027, 833, 0, 833, 1072, 1884, 535, 0, + 0, 1121, 0, 1091, 0, 0, 0, -2, 0, 0, + 1173, 0, 0, 0, 1226, 0, 0, 0, 728, 732, + 0, 23, 834, 0, 604, 602, 0, 606, 0, 607, + 659, 615, 616, 900, 639, 640, 0, 0, 900, 659, + 659, 650, 662, 671, 0, 672, 1364, 1226, 0, 0, + 1186, 1292, 1260, 460, 0, 1377, 1378, 500, 0, 1384, + 1393, 1177, 1455, 0, 1393, 0, 0, 1395, 1396, 0, + 0, 0, 0, 483, 484, 0, 469, 0, 0, 0, + 0, 0, 0, 468, 0, 0, 510, 0, 0, 0, + 0, 0, 1885, 1884, 1884, 0, 477, 478, 0, 481, + 0, 0, 0, 0, 0, 0, 0, 0, 1884, 1884, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1332, 0, 0, 0, 0, 0, 0, 0, 0, + 1348, 1349, 0, 1072, 1884, 0, 0, 0, 0, 535, + 1116, 1089, 1107, 0, 446, 447, 507, 0, 0, 0, + 0, 0, 0, 0, 941, 0, 0, 0, 940, 0, + 0, 0, 0, 0, 0, 0, 833, 976, 0, 978, + 979, 953, -2, 0, 913, 958, 1739, 0, 271, 272, + 0, 0, 277, 295, 297, 269, 0, 0, 0, 296, + 298, 302, 303, 361, 364, 366, 852, 0, 0, 1250, + 0, 1028, 1029, 1031, 1032, 0, -2, -2, -2, -2, + -2, -2, -2, -2, -2, -2, -2, -2, -2, 1936, + -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, - -2, -2, -2, -2, -2, -2, -2, -2, -2, 1023, - 719, 888, 900, 907, 979, 981, 142, 903, 0, 127, - 19, 126, 118, 119, 0, 19, 0, 0, 0, 0, - 1866, 1865, 1851, 0, 1852, 1863, 1868, 0, 1871, 0, - 429, 793, 0, 0, 773, 775, 0, 0, 773, 0, - 0, 782, 0, 0, 0, 0, 0, 0, 0, 773, - 849, 789, 0, 846, 844, 845, 0, 0, 681, 152, - 424, 0, 0, 0, 0, 0, 706, 0, 1123, 186, - 0, 0, 206, 0, 0, 0, 1213, 1208, 1735, 1764, - 1766, 0, 1773, 1769, 1505, 1514, 1541, 0, 0, 1547, - 1559, 1559, 0, 0, 0, 1550, 1864, 1864, 1553, 1860, - 1862, 1860, 1559, 1559, 0, 1158, 0, 1159, 843, 143, - 0, 0, 1619, 0, 0, 0, 769, 0, 0, 0, - 1580, 1582, 1584, 1584, 1591, 1585, 1592, 1593, 1584, 1584, - 1584, 1584, 1598, 1584, 1584, 1584, 1584, 1584, 1584, 1584, - 1584, 1584, 1584, 1584, 1578, 0, 0, 1794, 1795, 778, - 0, 0, 820, 821, 822, 823, 824, 0, 0, 61, - 61, 1213, 0, 100, 92, 0, 0, 0, 0, 0, - 336, 0, 77, 78, 80, 0, 0, 0, 0, 0, - 0, 0, 90, 0, 0, 1017, 0, 0, 0, 1367, - 0, 1073, 1070, 1071, 1072, 0, 1113, 536, 537, 538, - 539, 0, 0, 0, 1117, 0, 0, 1081, 0, 0, - 0, 1162, 1163, 1164, 1165, 1166, 1167, 1168, 1169, -2, - 1178, 0, 0, 0, 1367, 1197, 0, 0, 1202, 1367, - 1367, 0, 1231, 0, 1220, 781, 0, -2, 0, 0, - 729, 0, 0, 947, 603, 609, 897, 633, 835, 836, - 1361, 897, 897, 659, 677, 673, 1231, 1222, 0, 449, - 499, 0, 1277, 0, 0, 1283, 0, 1290, 453, 0, - 501, 0, 1380, 1408, 1391, 1408, 1453, 1408, 1408, 1174, - 0, 501, 0, 0, 471, 0, 0, 0, 0, 0, - 467, 504, 843, 454, 456, 457, 458, 508, 509, 511, - 0, 513, 514, 473, 485, 486, 487, 488, 0, 0, - 0, 480, 493, 494, 495, 496, 455, 1306, 1307, 1308, - 1311, 1312, 1313, 1314, 0, 0, 1317, 1318, 1319, 1320, - 1321, 1405, 1406, 1407, 1322, 1323, 1324, 1325, 1326, 1327, - 1328, 1347, 1348, 1349, 1350, 1351, 1352, 1330, 1331, 1332, - 1333, 1334, 1335, 1336, 1337, 0, 0, 1342, 0, 0, - 0, 1073, 0, 0, 0, 0, 0, 1113, 530, 0, - 0, 1088, 0, 1106, 0, 1100, 1101, 0, 0, 751, - 897, 354, 0, 942, 933, 0, 917, 0, 919, 939, - 920, 940, 0, 0, 924, 0, 926, 0, 922, 923, - 928, 921, 897, 909, 949, 974, 951, 954, 956, 957, - 963, 0, 0, 0, 0, 265, 274, 275, 276, 283, - 0, 555, 289, 805, 0, 1358, 709, 710, 1248, 1249, - 717, 0, 1030, 886, 0, 0, 122, 125, 0, 120, - 0, 0, 0, 0, 112, 110, 1859, 0, 0, 795, - 166, 0, 0, 0, 771, 0, 776, 773, 757, 767, - 756, 764, 765, 784, 1362, 1363, 1364, 1365, 0, 773, - 747, 746, 808, 793, 841, 842, 0, 1421, 391, 0, - 1120, 186, 191, 192, 193, 187, 185, 1127, 0, 1129, - 0, 1206, 0, 0, 1770, 1546, 1515, 1548, 1560, 1561, - 1549, 0, 1517, 1518, 1551, 1552, 1554, 1555, 1556, 1557, - 1558, 1519, 0, 1160, 1615, 0, 1617, 1625, 1626, 0, - 1675, 1679, 0, 0, 0, 0, 0, 1589, 1590, 1594, - 1595, 1596, 1597, 1599, 1600, 1601, 1602, 1603, 1604, 1605, - 1606, 1607, 1608, 1609, 837, 1579, 0, 0, 0, 0, - 0, 0, 0, 818, 0, 0, 0, 63, 0, 63, - 1212, 1214, 0, 977, 0, 0, 97, 0, 0, 79, - 81, 0, 2013, 0, 0, 0, 0, 88, 1005, 1008, - 1014, 1016, 0, 0, 0, 1368, 1369, 1371, 1372, 1373, - 0, 1041, 0, 0, 1061, 1062, 1063, 1075, 0, 541, - 542, 0, 0, 0, 554, 550, 551, 552, 532, 1112, - 1095, 0, 0, 1084, 0, 0, 1094, 0, 1179, 1881, - 1881, 1881, 0, 0, 1291, 1881, 1881, 0, 1199, 1201, - 0, 0, 1295, 1234, 0, 0, 1225, 0, 972, 0, - 0, 897, 728, 731, 732, 829, 610, 648, 652, 649, - 897, 1234, 441, 1255, 0, 0, 0, 0, 0, 1287, - 0, 0, 1259, 0, 472, 502, 0, -2, 0, 1409, - 0, 1394, 1409, 0, 0, 1408, 0, 461, 501, 0, - 0, 0, 515, 520, 521, 0, 517, 518, 1448, 0, - 519, 0, 506, 0, 512, 1309, 1310, 0, 1315, 1316, - 0, 1340, 0, 0, 0, 452, 522, 0, 0, 0, - 523, 524, 529, 1114, 1115, 1081, 0, 1095, 0, 1105, - 0, 1102, 1103, 837, 0, 0, 914, 943, 0, 0, - 915, 0, 916, 918, 941, 0, 935, 925, 927, 353, - 958, 0, 0, 960, 961, 962, 953, 291, 850, 1027, - 0, 871, 0, 0, 904, 0, 19, 0, 0, 115, - 1869, 1872, 797, 0, 794, 167, 0, 0, 0, 0, - 761, 772, 755, 1366, 745, 795, 847, 848, 188, 183, - 1128, 1216, 0, 1207, 0, 1472, 1528, 0, 1627, 0, - 1584, 1581, 1584, 1583, 1575, 0, 1532, 0, 1534, 1535, - 1536, 0, 1538, 1539, 0, 816, 0, 59, 0, 62, - 60, 0, 99, 93, 0, 0, 0, 82, 0, 0, - 0, 0, 0, 0, 0, 1047, 1295, 0, 1047, 1074, - 1060, 0, 0, 543, 544, 0, 547, 553, 1076, 0, - 0, 1078, 1079, 1080, 0, 0, 1092, 0, 0, 0, - 0, 1171, 1185, 0, 0, 0, -2, 0, -2, 1196, - 0, 1240, 0, 1232, 0, 1224, 0, 1227, 897, 897, - -2, 725, 730, 0, 653, 1240, 1257, 0, 1278, 0, - 0, 0, 0, 0, 0, 0, 1258, 0, 1271, 503, - 1410, -2, 1424, 1426, 0, 1184, 1429, 1430, 0, 0, - 0, 0, 0, 0, 1479, 1438, 0, 0, 1442, 1443, - 1444, 0, 0, 1447, 0, 1788, 1789, 0, 1451, 0, - 0, 0, 0, 0, 0, 0, 1388, 462, 463, 0, - 465, 466, 1881, 1449, 505, 459, 1881, 475, 1339, 1343, - 1344, 1341, 528, 525, 526, 1084, 1087, 1098, 1107, 752, - 832, 355, 356, 944, 0, 934, 936, 967, 964, 0, - 0, 1031, 887, 895, 2242, 2244, 2241, 116, 121, 0, - 0, 799, 0, 796, 0, 790, 792, 177, 760, 797, - 137, 169, 0, 0, 1516, 0, 0, 0, 1616, 1666, - 1587, 1588, 0, 1576, 0, 1570, 1571, 1572, 1577, 0, - 0, 819, 814, 64, 95, 0, 98, 68, 83, 0, - 84, 0, 0, 0, 0, 1033, 1040, 1054, 1190, 1370, - 1039, 0, 0, 540, 545, 0, 548, 549, 1096, 1095, - 0, 1082, 1083, 0, 1090, 0, 0, 1180, 1181, 1182, - 1292, 1293, 1294, 1250, 1198, 0, -2, 1303, 0, 0, - 1194, 1216, 1250, 0, 0, 1228, 0, 1235, 0, 1233, - 1226, 837, 726, 1237, 451, 1289, 1279, 0, 1281, 0, - 0, 0, 0, 1260, -2, 0, 1425, 1427, 1428, 1431, - 1432, 1433, 1484, 1485, 1486, 0, 0, 1436, 1481, 1482, - 1483, 1437, 0, 0, 0, 0, 0, 1786, 1787, 1477, - 0, 0, 1395, 1397, 1398, 1399, 1400, 1401, 1402, 1403, - 1404, 1396, 0, 0, 0, 1387, 1389, 464, 0, 0, - 1881, 1097, 352, 0, 0, 968, 970, 965, 966, 889, - 0, 0, 0, 0, 111, 113, 128, 0, 798, 168, - 0, 799, 139, 0, 160, 0, 1217, 0, 1527, 0, - 0, 0, 1586, 1573, 0, 0, 0, 0, 0, 1790, - 1791, 1792, 0, 1533, 1537, 94, 0, 66, 0, 85, - 86, 0, 0, 0, 0, 1055, 1056, 1064, 1065, 0, - 1067, 1068, 546, 1077, 1085, 1089, 1092, 0, 1144, 1252, - 0, 1200, 1183, 1305, 1881, 1203, 1252, 0, 1297, 1881, - 1881, 1218, 0, 1230, 0, 1242, 0, 1236, 832, 440, - 0, 1239, 1275, 1280, 1282, 1284, 0, 1288, 1286, 1261, - -2, 0, 1269, 0, 0, 1434, 1435, 0, 0, 1685, - 1881, 0, 1467, 0, 1144, 1144, 1144, 1144, 0, 516, - 474, 0, 945, 959, 0, 896, 0, 0, 0, 0, - 0, 788, 129, 0, 138, 157, 0, 170, 171, 0, - 0, 0, 0, 1209, 0, 1475, 1476, 0, 1562, 0, - 0, 0, 1566, 1567, 1568, 1569, 65, 68, 0, 0, - 87, 0, 1032, 0, 1066, 1091, 1093, 1143, 1193, 0, - 1289, 1304, 0, 1195, 1296, 0, 0, 0, 1229, 1241, - 0, 1244, 724, 1238, 1256, 0, 1285, 1262, 1270, 0, - 1265, 0, 0, 0, 1480, 0, 1441, 0, 1446, 1455, - 1468, 0, 0, 1376, 0, 1378, 0, 1382, 0, 1384, - 0, 0, 476, 969, 971, 0, 1736, 891, 892, 0, - 801, 791, 140, 144, 0, 166, 163, 0, 172, 0, - 0, 0, 0, 1205, 0, 1473, 0, 1563, 1564, 1565, - 67, 69, 89, 0, 1034, 1035, 1048, 1145, 1881, 1881, - 0, 0, 0, 1151, 1152, 1881, 1881, 1881, 1881, 0, - 1277, 1309, 1298, 1299, 1300, 1243, 1276, 1264, 0, -2, - 1272, 0, 0, 1738, 1748, 1749, 1439, 1445, 1454, 1456, - 1457, 0, 1469, 1470, 1471, 1478, 1144, 1144, 1144, 1144, - 1386, 890, 0, 0, 800, 0, 131, 0, 0, 161, - 162, 164, 0, 173, 0, 175, 176, 0, 0, 1574, - 1036, 0, 0, 1148, 1149, 0, 0, 0, 0, 0, - 1253, 0, 1255, 1266, -2, 0, 1274, 0, 1440, 1458, - 0, 1459, 0, 0, 0, 1377, 1379, 1383, 1385, 1736, - 893, 802, 1215, 0, 145, 0, 147, 149, 150, 1411, - 158, 159, 165, 174, 0, 0, 1021, 1037, 0, 1146, - 1147, 1150, 1153, 1154, 1155, 1156, 0, 1257, 1273, 1739, - 1460, 1462, 1463, 0, 0, 1461, 0, 132, 133, 0, - 146, 0, 0, 1210, 1474, 1038, 1254, 1251, 1464, 1466, - 1465, 894, 0, 0, 148, 1412, 134, 135, 136, 0, - 1413, + -2, 1026, 719, 891, 903, 910, 982, 984, 142, 906, + 0, 127, 19, 126, 118, 119, 0, 19, 0, 0, + 0, 0, 1869, 1868, 1854, 0, 1855, 1866, 1871, 0, + 1874, 0, 429, 796, 0, 0, 776, 778, 0, 0, + 776, 0, 0, 785, 0, 753, 0, 0, 0, 0, + 0, 0, 776, 852, 792, 0, 849, 847, 848, 0, + 0, 681, 152, 424, 0, 0, 0, 0, 0, 706, + 0, 1126, 186, 0, 0, 206, 0, 0, 0, 1216, + 1211, 1738, 1767, 1769, 0, 1776, 1772, 1508, 1517, 1544, + 0, 0, 1550, 1562, 1562, 0, 0, 0, 1553, 1867, + 1867, 1556, 1863, 1865, 1863, 1562, 1562, 0, 1161, 0, + 1162, 846, 143, 0, 0, 1622, 0, 0, 0, 772, + 0, 0, 0, 1583, 1585, 1587, 1587, 1594, 1588, 1595, + 1596, 1587, 1587, 1587, 1587, 1601, 1587, 1587, 1587, 1587, + 1587, 1587, 1587, 1587, 1587, 1587, 1587, 1581, 0, 0, + 1797, 1798, 781, 0, 0, 823, 824, 825, 826, 827, + 0, 0, 61, 61, 1216, 0, 100, 92, 0, 0, + 0, 0, 0, 336, 0, 77, 78, 80, 0, 0, + 0, 0, 0, 0, 0, 90, 0, 0, 1020, 0, + 0, 0, 1370, 0, 1076, 1073, 1074, 1075, 0, 1116, + 536, 537, 538, 539, 0, 0, 0, 1120, 0, 0, + 1084, 0, 0, 0, 1165, 1166, 1167, 1168, 1169, 1170, + 1171, 1172, -2, 1181, 0, 0, 0, 1370, 1200, 0, + 0, 1205, 1370, 1370, 0, 1234, 0, 1223, 784, 0, + -2, 0, 0, 730, 0, 0, 0, 950, 603, 609, + 900, 633, 838, 839, 1364, 900, 900, 659, 677, 673, + 1234, 1225, 0, 449, 499, 0, 1280, 0, 0, 1286, + 0, 1293, 453, 0, 501, 0, 1383, 1411, 1394, 1411, + 1456, 1411, 1411, 1177, 0, 501, 0, 0, 471, 0, + 0, 0, 0, 0, 467, 504, 846, 454, 456, 457, + 458, 508, 509, 511, 0, 513, 514, 473, 485, 486, + 487, 488, 0, 0, 0, 480, 493, 494, 495, 496, + 455, 1309, 1310, 1311, 1314, 1315, 1316, 1317, 0, 0, + 1320, 1321, 1322, 1323, 1324, 1408, 1409, 1410, 1325, 1326, + 1327, 1328, 1329, 1330, 1331, 1350, 1351, 1352, 1353, 1354, + 1355, 1333, 1334, 1335, 1336, 1337, 1338, 1339, 1340, 0, + 0, 1345, 0, 0, 0, 1076, 0, 0, 0, 0, + 0, 1116, 530, 0, 0, 1091, 0, 1109, 0, 1103, + 1104, 0, 0, 754, 900, 354, 0, 945, 936, 0, + 920, 0, 922, 942, 923, 943, 0, 0, 927, 0, + 929, 0, 925, 926, 931, 924, 900, 912, 952, 977, + 954, 957, 959, 960, 966, 0, 0, 0, 0, 265, + 274, 275, 276, 283, 0, 555, 289, 808, 0, 1361, + 709, 710, 1251, 1252, 717, 0, 1033, 889, 0, 0, + 122, 125, 0, 120, 0, 0, 0, 0, 112, 110, + 1862, 0, 0, 798, 166, 0, 0, 0, 774, 0, + 779, 776, 760, 770, 759, 767, 768, 787, 1365, 1366, + 1367, 1368, 0, 776, 749, 748, 811, 796, 844, 845, + 0, 1424, 391, 0, 1123, 186, 191, 192, 193, 187, + 185, 1130, 0, 1132, 0, 1209, 0, 0, 1773, 1549, + 1518, 1551, 1563, 1564, 1552, 0, 1520, 1521, 1554, 1555, + 1557, 1558, 1559, 1560, 1561, 1522, 0, 1163, 1618, 0, + 1620, 1628, 1629, 0, 1678, 1682, 0, 0, 0, 0, + 0, 1592, 1593, 1597, 1598, 1599, 1600, 1602, 1603, 1604, + 1605, 1606, 1607, 1608, 1609, 1610, 1611, 1612, 840, 1582, + 0, 0, 0, 0, 0, 0, 0, 821, 0, 0, + 0, 63, 0, 63, 1215, 1217, 0, 980, 0, 0, + 97, 0, 0, 79, 81, 0, 2016, 0, 0, 0, + 0, 88, 1008, 1011, 1017, 1019, 0, 0, 0, 1371, + 1372, 1374, 1375, 1376, 0, 1044, 0, 0, 1064, 1065, + 1066, 1078, 0, 541, 542, 0, 0, 0, 554, 550, + 551, 552, 532, 1115, 1098, 0, 0, 1087, 0, 0, + 1097, 0, 1182, 1884, 1884, 1884, 0, 0, 1294, 1884, + 1884, 0, 1202, 1204, 0, 0, 1298, 1237, 0, 0, + 1228, 0, 975, 0, 0, 900, 729, 732, 733, 784, + 832, 610, 648, 652, 649, 900, 1237, 441, 1258, 0, + 0, 0, 0, 0, 1290, 0, 0, 1262, 0, 472, + 502, 0, -2, 0, 1412, 0, 1397, 1412, 0, 0, + 1411, 0, 461, 501, 0, 0, 0, 515, 520, 521, + 0, 517, 518, 1451, 0, 519, 0, 506, 0, 512, + 1312, 1313, 0, 1318, 1319, 0, 1343, 0, 0, 0, + 452, 522, 0, 0, 0, 523, 524, 529, 1117, 1118, + 1084, 0, 1098, 0, 1108, 0, 1105, 1106, 840, 0, + 0, 917, 946, 0, 0, 918, 0, 919, 921, 944, + 0, 938, 928, 930, 353, 961, 0, 0, 963, 964, + 965, 956, 291, 853, 1030, 0, 874, 0, 0, 907, + 0, 19, 0, 0, 115, 1872, 1875, 800, 0, 797, + 167, 0, 0, 0, 0, 764, 775, 758, 1369, 747, + 798, 850, 851, 188, 183, 1131, 1219, 0, 1210, 0, + 1475, 1531, 0, 1630, 0, 1587, 1584, 1587, 1586, 1578, + 0, 1535, 0, 1537, 1538, 1539, 0, 1541, 1542, 0, + 819, 0, 59, 0, 62, 60, 0, 99, 93, 0, + 0, 0, 82, 0, 0, 0, 0, 0, 0, 0, + 1050, 1298, 0, 1050, 1077, 1063, 0, 0, 543, 544, + 0, 547, 553, 1079, 0, 0, 1081, 1082, 1083, 0, + 0, 1095, 0, 0, 0, 0, 1174, 1188, 0, 0, + 0, -2, 0, -2, 1199, 0, 1243, 0, 1235, 0, + 1227, 0, 1230, 900, 900, -2, 726, 731, 0, 975, + 653, 1243, 1260, 0, 1281, 0, 0, 0, 0, 0, + 0, 0, 1261, 0, 1274, 503, 1413, -2, 1427, 1429, + 0, 1187, 1432, 1433, 0, 0, 0, 0, 0, 0, + 1482, 1441, 0, 0, 1445, 1446, 1447, 0, 0, 1450, + 0, 1791, 1792, 0, 1454, 0, 0, 0, 0, 0, + 0, 0, 1391, 462, 463, 0, 465, 466, 1884, 1452, + 505, 459, 1884, 475, 1342, 1346, 1347, 1344, 528, 525, + 526, 1087, 1090, 1101, 1110, 755, 835, 355, 356, 947, + 0, 937, 939, 970, 967, 0, 0, 1034, 890, 898, + 2245, 2247, 2244, 116, 121, 0, 0, 802, 0, 799, + 0, 793, 795, 177, 763, 800, 137, 169, 0, 0, + 1519, 0, 0, 0, 1619, 1669, 1590, 1591, 0, 1579, + 0, 1573, 1574, 1575, 1580, 0, 0, 822, 817, 64, + 95, 0, 98, 68, 83, 0, 84, 0, 0, 0, + 0, 1036, 1043, 1057, 1193, 1373, 1042, 0, 0, 540, + 545, 0, 548, 549, 1099, 1098, 0, 1085, 1086, 0, + 1093, 0, 0, 1183, 1184, 1185, 1295, 1296, 1297, 1253, + 1201, 0, -2, 1306, 0, 0, 1197, 1219, 1253, 0, + 0, 1231, 0, 1238, 0, 1236, 1229, 840, 727, 900, + 1240, 451, 1292, 1282, 0, 1284, 0, 0, 0, 0, + 1263, -2, 0, 1428, 1430, 1431, 1434, 1435, 1436, 1487, + 1488, 1489, 0, 0, 1439, 1484, 1485, 1486, 1440, 0, + 0, 0, 0, 0, 1789, 1790, 1480, 0, 0, 1398, + 1400, 1401, 1402, 1403, 1404, 1405, 1406, 1407, 1399, 0, + 0, 0, 1390, 1392, 464, 0, 0, 1884, 1100, 352, + 0, 0, 971, 973, 968, 969, 892, 0, 0, 0, + 0, 111, 113, 128, 0, 801, 168, 0, 802, 139, + 0, 160, 0, 1220, 0, 1530, 0, 0, 0, 1589, + 1576, 0, 0, 0, 0, 0, 1793, 1794, 1795, 0, + 1536, 1540, 94, 0, 66, 0, 85, 86, 0, 0, + 0, 0, 1058, 1059, 1067, 1068, 0, 1070, 1071, 546, + 1080, 1088, 1092, 1095, 0, 1147, 1255, 0, 1203, 1186, + 1308, 1884, 1206, 1255, 0, 1300, 1884, 1884, 1221, 0, + 1233, 0, 1245, 0, 1239, 835, 840, 440, 0, 1242, + 1278, 1283, 1285, 1287, 0, 1291, 1289, 1264, -2, 0, + 1272, 0, 0, 1437, 1438, 0, 0, 1688, 1884, 0, + 1470, 0, 1147, 1147, 1147, 1147, 0, 516, 474, 0, + 948, 962, 0, 899, 0, 0, 0, 0, 0, 791, + 129, 0, 138, 157, 0, 170, 171, 0, 0, 0, + 0, 1212, 0, 1478, 1479, 0, 1565, 0, 0, 0, + 1569, 1570, 1571, 1572, 65, 68, 0, 0, 87, 0, + 1035, 0, 1069, 1094, 1096, 1146, 1196, 0, 1292, 1307, + 0, 1198, 1299, 0, 0, 0, 1232, 1244, 0, 1247, + 724, 835, 1241, 1259, 0, 1288, 1265, 1273, 0, 1268, + 0, 0, 0, 1483, 0, 1444, 0, 1449, 1458, 1471, + 0, 0, 1379, 0, 1381, 0, 1385, 0, 1387, 0, + 0, 476, 972, 974, 0, 1739, 894, 895, 0, 804, + 794, 140, 144, 0, 166, 163, 0, 172, 0, 0, + 0, 0, 1208, 0, 1476, 0, 1566, 1567, 1568, 67, + 69, 89, 0, 1037, 1038, 1051, 1148, 1884, 1884, 0, + 0, 0, 1154, 1155, 1884, 1884, 1884, 1884, 0, 1280, + 1312, 1301, 1302, 1303, 1246, 725, 1279, 1267, 0, -2, + 1275, 0, 0, 1741, 1751, 1752, 1442, 1448, 1457, 1459, + 1460, 0, 1472, 1473, 1474, 1481, 1147, 1147, 1147, 1147, + 1389, 893, 0, 0, 803, 0, 131, 0, 0, 161, + 162, 164, 0, 173, 0, 175, 176, 0, 0, 1577, + 1039, 0, 0, 1151, 1152, 0, 0, 0, 0, 0, + 1256, 0, 1258, 1269, -2, 0, 1277, 0, 1443, 1461, + 0, 1462, 0, 0, 0, 1380, 1382, 1386, 1388, 1739, + 896, 805, 1218, 0, 145, 0, 147, 149, 150, 1414, + 158, 159, 165, 174, 0, 0, 1024, 1040, 0, 1149, + 1150, 1153, 1156, 1157, 1158, 1159, 0, 1260, 1276, 1742, + 1463, 1465, 1466, 0, 0, 1464, 0, 132, 133, 0, + 146, 0, 0, 1213, 1477, 1041, 1257, 1254, 1467, 1469, + 1468, 897, 0, 0, 148, 1415, 134, 135, 136, 0, + 1416, } var yyTok1 = [...]int{ @@ -16004,9 +16133,30 @@ yydefault: } yyVAL.union = yyLOCAL case 725: - yyDollar = yyS[yypt-8 : yypt+1] + yyDollar = yyS[yypt-12 : yypt+1] var yyLOCAL tree.Statement //line mysql_sql.y:4828 + { + // Single-Table Syntax + t := &tree.AliasedTableExpr{ + Expr: yyDollar[7].tableNameUnion(), + As: tree.AliasClause{ + Alias: tree.Identifier(yyDollar[9].str), + }, + } + yyLOCAL = &tree.Delete{ + Tables: tree.TableExprs{t}, + Where: yyDollar[10].whereUnion(), + OrderBy: yyDollar[11].orderByUnion(), + Limit: yyDollar[12].limitUnion(), + IsCdc: true, + } + } + yyVAL.union = yyLOCAL + case 726: + yyDollar = yyS[yypt-8 : yypt+1] + var yyLOCAL tree.Statement +//line mysql_sql.y:4845 { // Multiple-Table Syntax yyLOCAL = &tree.Delete{ @@ -16016,10 +16166,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 726: + case 727: yyDollar = yyS[yypt-9 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4841 +//line mysql_sql.y:4858 { // Multiple-Table Syntax yyLOCAL = &tree.Delete{ @@ -16029,36 +16179,36 @@ yydefault: } } yyVAL.union = yyLOCAL - case 727: + case 728: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.TableExprs -//line mysql_sql.y:4852 +//line mysql_sql.y:4869 { yyLOCAL = tree.TableExprs{yyDollar[1].tableNameUnion()} } yyVAL.union = yyLOCAL - case 728: + case 729: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableExprs -//line mysql_sql.y:4856 +//line mysql_sql.y:4873 { yyLOCAL = append(yyDollar[1].tableExprsUnion(), yyDollar[3].tableNameUnion()) } yyVAL.union = yyLOCAL - case 729: + case 730: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.TableName -//line mysql_sql.y:4862 +//line mysql_sql.y:4879 { tblName := yylex.(*Lexer).GetDbOrTblName(yyDollar[1].cstrUnion().Origin()) prefix := tree.ObjectNamePrefix{ExplicitSchema: false} yyLOCAL = tree.NewTableName(tree.Identifier(tblName), prefix, nil) } yyVAL.union = yyLOCAL - case 730: + case 731: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.TableName -//line mysql_sql.y:4868 +//line mysql_sql.y:4885 { dbName := yylex.(*Lexer).GetDbOrTblName(yyDollar[1].cstrUnion().Origin()) tblName := yylex.(*Lexer).GetDbOrTblName(yyDollar[3].cstrUnion().Origin()) @@ -16066,35 +16216,35 @@ yydefault: yyLOCAL = tree.NewTableName(tree.Identifier(tblName), prefix, nil) } yyVAL.union = yyLOCAL - case 731: + case 732: yyDollar = yyS[yypt-0 : yypt+1] -//line mysql_sql.y:4877 +//line mysql_sql.y:4894 { } - case 732: + case 733: yyDollar = yyS[yypt-2 : yypt+1] -//line mysql_sql.y:4879 +//line mysql_sql.y:4896 { } - case 733: + case 734: yyDollar = yyS[yypt-0 : yypt+1] -//line mysql_sql.y:4882 +//line mysql_sql.y:4899 { } - case 738: + case 739: yyDollar = yyS[yypt-0 : yypt+1] -//line mysql_sql.y:4891 +//line mysql_sql.y:4908 { } - case 740: + case 741: yyDollar = yyS[yypt-0 : yypt+1] -//line mysql_sql.y:4895 +//line mysql_sql.y:4912 { } - case 742: + case 743: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4900 +//line mysql_sql.y:4917 { rep := yyDollar[4].replaceUnion() rep.Table = yyDollar[2].tableExprUnion() @@ -16102,10 +16252,22 @@ yydefault: yyLOCAL = rep } yyVAL.union = yyLOCAL - case 743: + case 744: + yyDollar = yyS[yypt-5 : yypt+1] + var yyLOCAL tree.Statement +//line mysql_sql.y:4924 + { + rep := yyDollar[5].replaceUnion() + rep.Table = yyDollar[3].tableExprUnion() + rep.PartitionNames = yyDollar[4].identifierListUnion() + rep.IsCdc = true + yyLOCAL = rep + } + yyVAL.union = yyLOCAL + case 745: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.Replace -//line mysql_sql.y:4909 +//line mysql_sql.y:4934 { vc := tree.NewValuesClause(yyDollar[2].rowsExprsUnion()) yyLOCAL = &tree.Replace{ @@ -16113,20 +16275,20 @@ yydefault: } } yyVAL.union = yyLOCAL - case 744: + case 746: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.Replace -//line mysql_sql.y:4916 +//line mysql_sql.y:4941 { yyLOCAL = &tree.Replace{ Rows: yyDollar[1].selectUnion(), } } yyVAL.union = yyLOCAL - case 745: + case 747: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *tree.Replace -//line mysql_sql.y:4922 +//line mysql_sql.y:4947 { vc := tree.NewValuesClause(yyDollar[5].rowsExprsUnion()) yyLOCAL = &tree.Replace{ @@ -16135,10 +16297,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 746: + case 748: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.Replace -//line mysql_sql.y:4930 +//line mysql_sql.y:4955 { vc := tree.NewValuesClause(yyDollar[4].rowsExprsUnion()) yyLOCAL = &tree.Replace{ @@ -16146,10 +16308,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 747: + case 749: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.Replace -//line mysql_sql.y:4937 +//line mysql_sql.y:4962 { yyLOCAL = &tree.Replace{ Columns: yyDollar[2].identifierListUnion(), @@ -16157,10 +16319,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 748: + case 750: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.Replace -//line mysql_sql.y:4944 +//line mysql_sql.y:4969 { if yyDollar[2].assignmentsUnion() == nil { yylex.Error("the set list of replace can not be empty") @@ -16179,10 +16341,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 749: + case 751: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4964 +//line mysql_sql.y:4989 { ins := yyDollar[4].insertUnion() ins.Table = yyDollar[2].tableExprUnion() @@ -16191,10 +16353,10 @@ yydefault: yyLOCAL = ins } yyVAL.union = yyLOCAL - case 750: + case 752: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4972 +//line mysql_sql.y:4997 { ins := yyDollar[5].insertUnion() ins.Table = yyDollar[3].tableExprUnion() @@ -16203,26 +16365,39 @@ yydefault: yyLOCAL = ins } yyVAL.union = yyLOCAL - case 751: + case 753: + yyDollar = yyS[yypt-6 : yypt+1] + var yyLOCAL tree.Statement +//line mysql_sql.y:5005 + { + ins := yyDollar[5].insertUnion() + ins.Table = yyDollar[3].tableExprUnion() + ins.PartitionNames = yyDollar[4].identifierListUnion() + ins.OnDuplicateUpdate = yyDollar[6].updateExprsUnion() + ins.IsCdc = true + yyLOCAL = ins + } + yyVAL.union = yyLOCAL + case 754: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.IdentifierList -//line mysql_sql.y:4982 +//line mysql_sql.y:5016 { yyLOCAL = tree.IdentifierList{tree.Identifier(yyDollar[1].str)} } yyVAL.union = yyLOCAL - case 752: + case 755: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.IdentifierList -//line mysql_sql.y:4986 +//line mysql_sql.y:5020 { yyLOCAL = append(yyDollar[1].identifierListUnion(), tree.Identifier(yyDollar[3].str)) } yyVAL.union = yyLOCAL - case 753: + case 756: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.Insert -//line mysql_sql.y:4992 +//line mysql_sql.y:5026 { vc := tree.NewValuesClause(yyDollar[2].rowsExprsUnion()) yyLOCAL = &tree.Insert{ @@ -16230,20 +16405,20 @@ yydefault: } } yyVAL.union = yyLOCAL - case 754: + case 757: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.Insert -//line mysql_sql.y:4999 +//line mysql_sql.y:5033 { yyLOCAL = &tree.Insert{ Rows: yyDollar[1].selectUnion(), } } yyVAL.union = yyLOCAL - case 755: + case 758: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *tree.Insert -//line mysql_sql.y:5005 +//line mysql_sql.y:5039 { vc := tree.NewValuesClause(yyDollar[5].rowsExprsUnion()) yyLOCAL = &tree.Insert{ @@ -16252,10 +16427,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 756: + case 759: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.Insert -//line mysql_sql.y:5013 +//line mysql_sql.y:5047 { vc := tree.NewValuesClause(yyDollar[4].rowsExprsUnion()) yyLOCAL = &tree.Insert{ @@ -16263,10 +16438,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 757: + case 760: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.Insert -//line mysql_sql.y:5020 +//line mysql_sql.y:5054 { yyLOCAL = &tree.Insert{ Columns: yyDollar[2].identifierListUnion(), @@ -16274,10 +16449,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 758: + case 761: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.Insert -//line mysql_sql.y:5027 +//line mysql_sql.y:5061 { if yyDollar[2].assignmentsUnion() == nil { yylex.Error("the set list of insert can not be empty") @@ -16296,58 +16471,58 @@ yydefault: } } yyVAL.union = yyLOCAL - case 759: + case 762: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.UpdateExprs -//line mysql_sql.y:5046 +//line mysql_sql.y:5080 { yyLOCAL = []*tree.UpdateExpr{} } yyVAL.union = yyLOCAL - case 760: + case 763: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.UpdateExprs -//line mysql_sql.y:5050 +//line mysql_sql.y:5084 { yyLOCAL = yyDollar[5].updateExprsUnion() } yyVAL.union = yyLOCAL - case 761: + case 764: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.UpdateExprs -//line mysql_sql.y:5054 +//line mysql_sql.y:5088 { yyLOCAL = []*tree.UpdateExpr{nil} } yyVAL.union = yyLOCAL - case 762: + case 765: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL []*tree.Assignment -//line mysql_sql.y:5059 +//line mysql_sql.y:5093 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 763: + case 766: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []*tree.Assignment -//line mysql_sql.y:5063 +//line mysql_sql.y:5097 { yyLOCAL = []*tree.Assignment{yyDollar[1].assignmentUnion()} } yyVAL.union = yyLOCAL - case 764: + case 767: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []*tree.Assignment -//line mysql_sql.y:5067 +//line mysql_sql.y:5101 { yyLOCAL = append(yyDollar[1].assignmentsUnion(), yyDollar[3].assignmentUnion()) } yyVAL.union = yyLOCAL - case 765: + case 768: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.Assignment -//line mysql_sql.y:5073 +//line mysql_sql.y:5107 { yyLOCAL = &tree.Assignment{ Column: tree.Identifier(yyDollar[1].str), @@ -16355,155 +16530,155 @@ yydefault: } } yyVAL.union = yyLOCAL - case 766: + case 769: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.IdentifierList -//line mysql_sql.y:5082 +//line mysql_sql.y:5116 { yyLOCAL = tree.IdentifierList{tree.Identifier(yyDollar[1].str)} } yyVAL.union = yyLOCAL - case 767: + case 770: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.IdentifierList -//line mysql_sql.y:5086 +//line mysql_sql.y:5120 { yyLOCAL = append(yyDollar[1].identifierListUnion(), tree.Identifier(yyDollar[3].str)) } yyVAL.union = yyLOCAL - case 768: + case 771: yyDollar = yyS[yypt-1 : yypt+1] -//line mysql_sql.y:5092 +//line mysql_sql.y:5126 { yyVAL.str = yylex.(*Lexer).GetDbOrTblName(yyDollar[1].cstrUnion().Origin()) } - case 769: + case 772: yyDollar = yyS[yypt-3 : yypt+1] -//line mysql_sql.y:5096 +//line mysql_sql.y:5130 { yyVAL.str = yylex.(*Lexer).GetDbOrTblName(yyDollar[3].cstrUnion().Origin()) } - case 770: + case 773: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []tree.Exprs -//line mysql_sql.y:5102 +//line mysql_sql.y:5136 { yyLOCAL = []tree.Exprs{yyDollar[1].exprsUnion()} } yyVAL.union = yyLOCAL - case 771: + case 774: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []tree.Exprs -//line mysql_sql.y:5106 +//line mysql_sql.y:5140 { yyLOCAL = append(yyDollar[1].rowsExprsUnion(), yyDollar[3].exprsUnion()) } yyVAL.union = yyLOCAL - case 772: + case 775: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Exprs -//line mysql_sql.y:5112 +//line mysql_sql.y:5146 { yyLOCAL = yyDollar[3].exprsUnion() } yyVAL.union = yyLOCAL - case 773: + case 776: yyDollar = yyS[yypt-0 : yypt+1] -//line mysql_sql.y:5117 +//line mysql_sql.y:5151 { } - case 775: + case 778: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.Exprs -//line mysql_sql.y:5121 +//line mysql_sql.y:5155 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 777: + case 780: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Exprs -//line mysql_sql.y:5128 +//line mysql_sql.y:5162 { yyLOCAL = tree.Exprs{yyDollar[1].exprUnion()} } yyVAL.union = yyLOCAL - case 778: + case 781: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Exprs -//line mysql_sql.y:5132 +//line mysql_sql.y:5166 { yyLOCAL = append(yyDollar[1].exprsUnion(), yyDollar[3].exprUnion()) } yyVAL.union = yyLOCAL - case 780: + case 783: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:5139 +//line mysql_sql.y:5173 { yyLOCAL = &tree.DefaultVal{} } yyVAL.union = yyLOCAL - case 781: + case 784: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.IdentifierList -//line mysql_sql.y:5144 +//line mysql_sql.y:5178 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 782: + case 785: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.IdentifierList -//line mysql_sql.y:5148 +//line mysql_sql.y:5182 { yyLOCAL = yyDollar[3].identifierListUnion() } yyVAL.union = yyLOCAL - case 783: + case 786: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.IdentifierList -//line mysql_sql.y:5154 +//line mysql_sql.y:5188 { yyLOCAL = tree.IdentifierList{tree.Identifier(yyDollar[1].cstrUnion().Compare())} } yyVAL.union = yyLOCAL - case 784: + case 787: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.IdentifierList -//line mysql_sql.y:5158 +//line mysql_sql.y:5192 { yyLOCAL = append(yyDollar[1].identifierListUnion(), tree.Identifier(yyDollar[3].cstrUnion().Compare())) } yyVAL.union = yyLOCAL - case 785: + case 788: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.TableExpr -//line mysql_sql.y:5164 +//line mysql_sql.y:5198 { yyLOCAL = yyDollar[2].tableNameUnion() } yyVAL.union = yyLOCAL - case 786: + case 789: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.TableExpr -//line mysql_sql.y:5168 +//line mysql_sql.y:5202 { yyLOCAL = yyDollar[1].tableNameUnion() } yyVAL.union = yyLOCAL - case 787: + case 790: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.ExportParam -//line mysql_sql.y:5173 +//line mysql_sql.y:5207 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 788: + case 791: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL *tree.ExportParam -//line mysql_sql.y:5177 +//line mysql_sql.y:5211 { yyLOCAL = &tree.ExportParam{ Outfile: true, @@ -16516,10 +16691,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 789: + case 792: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.Fields -//line mysql_sql.y:5190 +//line mysql_sql.y:5224 { yyLOCAL = &tree.Fields{ Terminated: &tree.Terminated{ @@ -16531,10 +16706,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 790: + case 793: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.Fields -//line mysql_sql.y:5201 +//line mysql_sql.y:5235 { yyLOCAL = &tree.Fields{ Terminated: &tree.Terminated{ @@ -16546,10 +16721,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 791: + case 794: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL *tree.Fields -//line mysql_sql.y:5212 +//line mysql_sql.y:5246 { str := yyDollar[7].str if str != "\\" && len(str) > 1 { @@ -16572,10 +16747,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 792: + case 795: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.Fields -//line mysql_sql.y:5234 +//line mysql_sql.y:5268 { str := yyDollar[4].str if str != "\\" && len(str) > 1 { @@ -16598,10 +16773,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 793: + case 796: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.Lines -//line mysql_sql.y:5257 +//line mysql_sql.y:5291 { yyLOCAL = &tree.Lines{ TerminatedBy: &tree.Terminated{ @@ -16610,10 +16785,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 794: + case 797: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.Lines -//line mysql_sql.y:5265 +//line mysql_sql.y:5299 { yyLOCAL = &tree.Lines{ TerminatedBy: &tree.Terminated{ @@ -16622,18 +16797,18 @@ yydefault: } } yyVAL.union = yyLOCAL - case 795: + case 798: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:5274 +//line mysql_sql.y:5308 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 796: + case 799: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:5278 +//line mysql_sql.y:5312 { str := strings.ToLower(yyDollar[2].str) if str == "true" { @@ -16646,131 +16821,131 @@ yydefault: } } yyVAL.union = yyLOCAL - case 797: + case 800: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL int64 -//line mysql_sql.y:5291 +//line mysql_sql.y:5325 { yyLOCAL = 0 } yyVAL.union = yyLOCAL - case 798: + case 801: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL int64 -//line mysql_sql.y:5295 +//line mysql_sql.y:5329 { yyLOCAL = yyDollar[2].item.(int64) } yyVAL.union = yyLOCAL - case 799: + case 802: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL []string -//line mysql_sql.y:5300 +//line mysql_sql.y:5334 { yyLOCAL = []string{} } yyVAL.union = yyLOCAL - case 800: + case 803: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL []string -//line mysql_sql.y:5304 +//line mysql_sql.y:5338 { yyLOCAL = yyDollar[3].strsUnion() } yyVAL.union = yyLOCAL - case 801: + case 804: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []string -//line mysql_sql.y:5311 +//line mysql_sql.y:5345 { yyLOCAL = make([]string, 0, 4) yyLOCAL = append(yyLOCAL, yyDollar[1].cstrUnion().Compare()) } yyVAL.union = yyLOCAL - case 802: + case 805: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []string -//line mysql_sql.y:5316 +//line mysql_sql.y:5350 { yyLOCAL = append(yyDollar[1].strsUnion(), yyDollar[3].cstrUnion().Compare()) } yyVAL.union = yyLOCAL - case 804: + case 807: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.Select -//line mysql_sql.y:5323 +//line mysql_sql.y:5357 { yyLOCAL = &tree.Select{Select: yyDollar[1].selectStatementUnion()} } yyVAL.union = yyLOCAL - case 805: + case 808: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.Select -//line mysql_sql.y:5329 +//line mysql_sql.y:5363 { yyLOCAL = &tree.Select{Select: yyDollar[1].selectStatementUnion(), TimeWindow: yyDollar[2].timeWindowUnion(), OrderBy: yyDollar[3].orderByUnion(), Limit: yyDollar[4].limitUnion(), Ep: yyDollar[5].exportParmUnion(), SelectLockInfo: yyDollar[6].selectLockInfoUnion()} } yyVAL.union = yyLOCAL - case 806: + case 809: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.Select -//line mysql_sql.y:5333 +//line mysql_sql.y:5367 { yyLOCAL = &tree.Select{Select: yyDollar[1].selectStatementUnion(), TimeWindow: yyDollar[2].timeWindowUnion(), OrderBy: yyDollar[3].orderByUnion(), Ep: yyDollar[4].exportParmUnion()} } yyVAL.union = yyLOCAL - case 807: + case 810: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *tree.Select -//line mysql_sql.y:5337 +//line mysql_sql.y:5371 { yyLOCAL = &tree.Select{Select: yyDollar[1].selectStatementUnion(), TimeWindow: yyDollar[2].timeWindowUnion(), OrderBy: yyDollar[3].orderByUnion(), Limit: yyDollar[4].limitUnion(), Ep: yyDollar[5].exportParmUnion()} } yyVAL.union = yyLOCAL - case 808: + case 811: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL *tree.Select -//line mysql_sql.y:5341 +//line mysql_sql.y:5375 { yyLOCAL = &tree.Select{Select: yyDollar[2].selectStatementUnion(), TimeWindow: yyDollar[3].timeWindowUnion(), OrderBy: yyDollar[4].orderByUnion(), Limit: yyDollar[5].limitUnion(), Ep: yyDollar[6].exportParmUnion(), SelectLockInfo: yyDollar[7].selectLockInfoUnion(), With: yyDollar[1].withClauseUnion()} } yyVAL.union = yyLOCAL - case 809: + case 812: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.Select -//line mysql_sql.y:5345 +//line mysql_sql.y:5379 { yyLOCAL = &tree.Select{Select: yyDollar[2].selectStatementUnion(), OrderBy: yyDollar[3].orderByUnion(), Ep: yyDollar[4].exportParmUnion(), With: yyDollar[1].withClauseUnion()} } yyVAL.union = yyLOCAL - case 810: + case 813: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *tree.Select -//line mysql_sql.y:5349 +//line mysql_sql.y:5383 { yyLOCAL = &tree.Select{Select: yyDollar[2].selectStatementUnion(), OrderBy: yyDollar[3].orderByUnion(), Limit: yyDollar[4].limitUnion(), Ep: yyDollar[5].exportParmUnion(), With: yyDollar[1].withClauseUnion()} } yyVAL.union = yyLOCAL - case 811: + case 814: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.TimeWindow -//line mysql_sql.y:5354 +//line mysql_sql.y:5388 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 812: + case 815: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.TimeWindow -//line mysql_sql.y:5358 +//line mysql_sql.y:5392 { yyLOCAL = yyDollar[1].timeWindowUnion() } yyVAL.union = yyLOCAL - case 813: + case 816: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.TimeWindow -//line mysql_sql.y:5364 +//line mysql_sql.y:5398 { yyLOCAL = &tree.TimeWindow{ Interval: yyDollar[1].timeIntervalUnion(), @@ -16779,10 +16954,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 814: + case 817: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL *tree.Interval -//line mysql_sql.y:5374 +//line mysql_sql.y:5408 { str := fmt.Sprintf("%v", yyDollar[5].item) v, errStr := util.GetInt64(yyDollar[5].item) @@ -16797,18 +16972,18 @@ yydefault: } } yyVAL.union = yyLOCAL - case 815: + case 818: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.Sliding -//line mysql_sql.y:5389 +//line mysql_sql.y:5423 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 816: + case 819: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.Sliding -//line mysql_sql.y:5393 +//line mysql_sql.y:5427 { str := fmt.Sprintf("%v", yyDollar[3].item) v, errStr := util.GetInt64(yyDollar[3].item) @@ -16822,28 +16997,28 @@ yydefault: } } yyVAL.union = yyLOCAL - case 817: + case 820: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.Fill -//line mysql_sql.y:5407 +//line mysql_sql.y:5441 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 818: + case 821: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.Fill -//line mysql_sql.y:5411 +//line mysql_sql.y:5445 { yyLOCAL = &tree.Fill{ Mode: yyDollar[3].fillModeUnion(), } } yyVAL.union = yyLOCAL - case 819: + case 822: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.Fill -//line mysql_sql.y:5417 +//line mysql_sql.y:5451 { yyLOCAL = &tree.Fill{ Mode: tree.FillValue, @@ -16851,50 +17026,50 @@ yydefault: } } yyVAL.union = yyLOCAL - case 820: + case 823: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.FillMode -//line mysql_sql.y:5426 +//line mysql_sql.y:5460 { yyLOCAL = tree.FillPrev } yyVAL.union = yyLOCAL - case 821: + case 824: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.FillMode -//line mysql_sql.y:5430 +//line mysql_sql.y:5464 { yyLOCAL = tree.FillNext } yyVAL.union = yyLOCAL - case 822: + case 825: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.FillMode -//line mysql_sql.y:5434 +//line mysql_sql.y:5468 { yyLOCAL = tree.FillNone } yyVAL.union = yyLOCAL - case 823: + case 826: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.FillMode -//line mysql_sql.y:5438 +//line mysql_sql.y:5472 { yyLOCAL = tree.FillNull } yyVAL.union = yyLOCAL - case 824: + case 827: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.FillMode -//line mysql_sql.y:5442 +//line mysql_sql.y:5476 { yyLOCAL = tree.FillLinear } yyVAL.union = yyLOCAL - case 825: + case 828: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.With -//line mysql_sql.y:5448 +//line mysql_sql.y:5482 { yyLOCAL = &tree.With{ IsRecursive: false, @@ -16902,10 +17077,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 826: + case 829: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.With -//line mysql_sql.y:5455 +//line mysql_sql.y:5489 { yyLOCAL = &tree.With{ IsRecursive: true, @@ -16913,26 +17088,26 @@ yydefault: } } yyVAL.union = yyLOCAL - case 827: + case 830: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []*tree.CTE -//line mysql_sql.y:5464 +//line mysql_sql.y:5498 { yyLOCAL = []*tree.CTE{yyDollar[1].cteUnion()} } yyVAL.union = yyLOCAL - case 828: + case 831: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []*tree.CTE -//line mysql_sql.y:5468 +//line mysql_sql.y:5502 { yyLOCAL = append(yyDollar[1].cteListUnion(), yyDollar[3].cteUnion()) } yyVAL.union = yyLOCAL - case 829: + case 832: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.CTE -//line mysql_sql.y:5474 +//line mysql_sql.y:5508 { yyLOCAL = &tree.CTE{ Name: &tree.AliasClause{Alias: tree.Identifier(yyDollar[1].cstrUnion().Compare()), Cols: yyDollar[2].identifierListUnion()}, @@ -16940,196 +17115,196 @@ yydefault: } } yyVAL.union = yyLOCAL - case 830: + case 833: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.IdentifierList -//line mysql_sql.y:5482 +//line mysql_sql.y:5516 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 831: + case 834: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.IdentifierList -//line mysql_sql.y:5486 +//line mysql_sql.y:5520 { yyLOCAL = yyDollar[2].identifierListUnion() } yyVAL.union = yyLOCAL - case 832: + case 835: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.Limit -//line mysql_sql.y:5491 +//line mysql_sql.y:5525 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 833: + case 836: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.Limit -//line mysql_sql.y:5495 +//line mysql_sql.y:5529 { yyLOCAL = yyDollar[1].limitUnion() } yyVAL.union = yyLOCAL - case 834: + case 837: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.Limit -//line mysql_sql.y:5501 +//line mysql_sql.y:5535 { yyLOCAL = &tree.Limit{Count: yyDollar[2].exprUnion()} } yyVAL.union = yyLOCAL - case 835: + case 838: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.Limit -//line mysql_sql.y:5505 +//line mysql_sql.y:5539 { yyLOCAL = &tree.Limit{Offset: yyDollar[2].exprUnion(), Count: yyDollar[4].exprUnion()} } yyVAL.union = yyLOCAL - case 836: + case 839: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.Limit -//line mysql_sql.y:5509 +//line mysql_sql.y:5543 { yyLOCAL = &tree.Limit{Offset: yyDollar[4].exprUnion(), Count: yyDollar[2].exprUnion()} } yyVAL.union = yyLOCAL - case 837: + case 840: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.OrderBy -//line mysql_sql.y:5514 +//line mysql_sql.y:5548 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 838: + case 841: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.OrderBy -//line mysql_sql.y:5518 +//line mysql_sql.y:5552 { yyLOCAL = yyDollar[1].orderByUnion() } yyVAL.union = yyLOCAL - case 839: + case 842: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.OrderBy -//line mysql_sql.y:5524 +//line mysql_sql.y:5558 { yyLOCAL = yyDollar[3].orderByUnion() } yyVAL.union = yyLOCAL - case 840: + case 843: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.OrderBy -//line mysql_sql.y:5530 +//line mysql_sql.y:5564 { yyLOCAL = tree.OrderBy{yyDollar[1].orderUnion()} } yyVAL.union = yyLOCAL - case 841: + case 844: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.OrderBy -//line mysql_sql.y:5534 +//line mysql_sql.y:5568 { yyLOCAL = append(yyDollar[1].orderByUnion(), yyDollar[3].orderUnion()) } yyVAL.union = yyLOCAL - case 842: + case 845: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.Order -//line mysql_sql.y:5540 +//line mysql_sql.y:5574 { yyLOCAL = &tree.Order{Expr: yyDollar[1].exprUnion(), Direction: yyDollar[2].directionUnion(), NullsPosition: yyDollar[3].nullsPositionUnion()} } yyVAL.union = yyLOCAL - case 843: + case 846: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.Direction -//line mysql_sql.y:5545 +//line mysql_sql.y:5579 { yyLOCAL = tree.DefaultDirection } yyVAL.union = yyLOCAL - case 844: + case 847: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Direction -//line mysql_sql.y:5549 +//line mysql_sql.y:5583 { yyLOCAL = tree.Ascending } yyVAL.union = yyLOCAL - case 845: + case 848: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Direction -//line mysql_sql.y:5553 +//line mysql_sql.y:5587 { yyLOCAL = tree.Descending } yyVAL.union = yyLOCAL - case 846: + case 849: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.NullsPosition -//line mysql_sql.y:5558 +//line mysql_sql.y:5592 { yyLOCAL = tree.DefaultNullsPosition } yyVAL.union = yyLOCAL - case 847: + case 850: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.NullsPosition -//line mysql_sql.y:5562 +//line mysql_sql.y:5596 { yyLOCAL = tree.NullsFirst } yyVAL.union = yyLOCAL - case 848: + case 851: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.NullsPosition -//line mysql_sql.y:5566 +//line mysql_sql.y:5600 { yyLOCAL = tree.NullsLast } yyVAL.union = yyLOCAL - case 849: + case 852: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.SelectLockInfo -//line mysql_sql.y:5571 +//line mysql_sql.y:5605 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 850: + case 853: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.SelectLockInfo -//line mysql_sql.y:5575 +//line mysql_sql.y:5609 { yyLOCAL = &tree.SelectLockInfo{ LockType: tree.SelectLockForUpdate, } } yyVAL.union = yyLOCAL - case 851: + case 854: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.SelectStatement -//line mysql_sql.y:5583 +//line mysql_sql.y:5617 { yyLOCAL = &tree.ParenSelect{Select: yyDollar[2].selectUnion()} } yyVAL.union = yyLOCAL - case 852: + case 855: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.SelectStatement -//line mysql_sql.y:5587 +//line mysql_sql.y:5621 { yyLOCAL = &tree.ParenSelect{Select: &tree.Select{Select: yyDollar[2].selectStatementUnion()}} } yyVAL.union = yyLOCAL - case 853: + case 856: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.SelectStatement -//line mysql_sql.y:5591 +//line mysql_sql.y:5625 { valuesStmt := yyDollar[2].statementUnion().(*tree.ValuesStatement) yyLOCAL = &tree.ParenSelect{Select: &tree.Select{ @@ -17142,18 +17317,18 @@ yydefault: }} } yyVAL.union = yyLOCAL - case 854: + case 857: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.SelectStatement -//line mysql_sql.y:5605 +//line mysql_sql.y:5639 { yyLOCAL = yyDollar[1].selectStatementUnion() } yyVAL.union = yyLOCAL - case 855: + case 858: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.SelectStatement -//line mysql_sql.y:5609 +//line mysql_sql.y:5643 { yyLOCAL = &tree.UnionClause{ Type: yyDollar[2].unionTypeRecordUnion().Type, @@ -17164,10 +17339,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 856: + case 859: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.SelectStatement -//line mysql_sql.y:5619 +//line mysql_sql.y:5653 { yyLOCAL = &tree.UnionClause{ Type: yyDollar[2].unionTypeRecordUnion().Type, @@ -17178,10 +17353,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 857: + case 860: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.SelectStatement -//line mysql_sql.y:5629 +//line mysql_sql.y:5663 { yyLOCAL = &tree.UnionClause{ Type: yyDollar[2].unionTypeRecordUnion().Type, @@ -17192,10 +17367,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 858: + case 861: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.SelectStatement -//line mysql_sql.y:5639 +//line mysql_sql.y:5673 { yyLOCAL = &tree.UnionClause{ Type: yyDollar[2].unionTypeRecordUnion().Type, @@ -17206,10 +17381,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 859: + case 862: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.UnionTypeRecord -//line mysql_sql.y:5651 +//line mysql_sql.y:5685 { yyLOCAL = &tree.UnionTypeRecord{ Type: tree.UNION, @@ -17218,10 +17393,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 860: + case 863: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.UnionTypeRecord -//line mysql_sql.y:5659 +//line mysql_sql.y:5693 { yyLOCAL = &tree.UnionTypeRecord{ Type: tree.UNION, @@ -17230,10 +17405,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 861: + case 864: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.UnionTypeRecord -//line mysql_sql.y:5667 +//line mysql_sql.y:5701 { yyLOCAL = &tree.UnionTypeRecord{ Type: tree.UNION, @@ -17242,10 +17417,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 862: + case 865: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.UnionTypeRecord -//line mysql_sql.y:5676 +//line mysql_sql.y:5710 { yyLOCAL = &tree.UnionTypeRecord{ Type: tree.EXCEPT, @@ -17254,10 +17429,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 863: + case 866: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.UnionTypeRecord -//line mysql_sql.y:5684 +//line mysql_sql.y:5718 { yyLOCAL = &tree.UnionTypeRecord{ Type: tree.EXCEPT, @@ -17266,10 +17441,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 864: + case 867: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.UnionTypeRecord -//line mysql_sql.y:5692 +//line mysql_sql.y:5726 { yyLOCAL = &tree.UnionTypeRecord{ Type: tree.EXCEPT, @@ -17278,10 +17453,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 865: + case 868: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.UnionTypeRecord -//line mysql_sql.y:5700 +//line mysql_sql.y:5734 { yyLOCAL = &tree.UnionTypeRecord{ Type: tree.INTERSECT, @@ -17290,10 +17465,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 866: + case 869: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.UnionTypeRecord -//line mysql_sql.y:5708 +//line mysql_sql.y:5742 { yyLOCAL = &tree.UnionTypeRecord{ Type: tree.INTERSECT, @@ -17302,10 +17477,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 867: + case 870: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.UnionTypeRecord -//line mysql_sql.y:5716 +//line mysql_sql.y:5750 { yyLOCAL = &tree.UnionTypeRecord{ Type: tree.INTERSECT, @@ -17314,10 +17489,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 868: + case 871: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.UnionTypeRecord -//line mysql_sql.y:5724 +//line mysql_sql.y:5758 { yyLOCAL = &tree.UnionTypeRecord{ Type: tree.UT_MINUS, @@ -17326,10 +17501,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 869: + case 872: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.UnionTypeRecord -//line mysql_sql.y:5732 +//line mysql_sql.y:5766 { yyLOCAL = &tree.UnionTypeRecord{ Type: tree.UT_MINUS, @@ -17338,10 +17513,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 870: + case 873: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.UnionTypeRecord -//line mysql_sql.y:5740 +//line mysql_sql.y:5774 { yyLOCAL = &tree.UnionTypeRecord{ Type: tree.UT_MINUS, @@ -17350,10 +17525,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 871: + case 874: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL tree.SelectStatement -//line mysql_sql.y:5750 +//line mysql_sql.y:5784 { yyLOCAL = &tree.SelectClause{ Distinct: tree.QuerySpecOptionDistinct&yyDollar[2].selectOptionsUnion() != 0, @@ -17366,146 +17541,146 @@ yydefault: } } yyVAL.union = yyLOCAL - case 872: + case 875: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL uint64 -//line mysql_sql.y:5763 +//line mysql_sql.y:5797 { yyLOCAL = tree.QuerySpecOptionNone } yyVAL.union = yyLOCAL - case 873: + case 876: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL uint64 -//line mysql_sql.y:5767 +//line mysql_sql.y:5801 { yyLOCAL = yyDollar[1].selectOptionsUnion() } yyVAL.union = yyLOCAL - case 874: + case 877: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL uint64 -//line mysql_sql.y:5773 +//line mysql_sql.y:5807 { yyLOCAL = yyDollar[1].selectOptionUnion() } yyVAL.union = yyLOCAL - case 875: + case 878: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL uint64 -//line mysql_sql.y:5777 +//line mysql_sql.y:5811 { yyLOCAL = yyDollar[1].selectOptionsUnion() | yyDollar[2].selectOptionUnion() } yyVAL.union = yyLOCAL - case 876: + case 879: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL uint64 -//line mysql_sql.y:5783 +//line mysql_sql.y:5817 { yyLOCAL = tree.QuerySpecOptionSqlSmallResult } yyVAL.union = yyLOCAL - case 877: + case 880: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL uint64 -//line mysql_sql.y:5787 +//line mysql_sql.y:5821 { yyLOCAL = tree.QuerySpecOptionSqlBigResult } yyVAL.union = yyLOCAL - case 878: + case 881: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL uint64 -//line mysql_sql.y:5791 +//line mysql_sql.y:5825 { yyLOCAL = tree.QuerySpecOptionSqlBufferResult } yyVAL.union = yyLOCAL - case 879: + case 882: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL uint64 -//line mysql_sql.y:5795 +//line mysql_sql.y:5829 { yyLOCAL = tree.QuerySpecOptionStraightJoin } yyVAL.union = yyLOCAL - case 880: + case 883: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL uint64 -//line mysql_sql.y:5799 +//line mysql_sql.y:5833 { yyLOCAL = tree.QuerySpecOptionHighPriority } yyVAL.union = yyLOCAL - case 881: + case 884: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL uint64 -//line mysql_sql.y:5803 +//line mysql_sql.y:5837 { yyLOCAL = tree.QuerySpecOptionSqlCalcFoundRows } yyVAL.union = yyLOCAL - case 882: + case 885: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL uint64 -//line mysql_sql.y:5807 +//line mysql_sql.y:5841 { yyLOCAL = tree.QuerySpecOptionSqlNoCache } yyVAL.union = yyLOCAL - case 883: + case 886: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL uint64 -//line mysql_sql.y:5811 +//line mysql_sql.y:5845 { yyLOCAL = tree.QuerySpecOptionAll } yyVAL.union = yyLOCAL - case 884: + case 887: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL uint64 -//line mysql_sql.y:5815 +//line mysql_sql.y:5849 { yyLOCAL = tree.QuerySpecOptionDistinct } yyVAL.union = yyLOCAL - case 885: + case 888: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL uint64 -//line mysql_sql.y:5819 +//line mysql_sql.y:5853 { yyLOCAL = tree.QuerySpecOptionDistinctRow } yyVAL.union = yyLOCAL - case 886: + case 889: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.Where -//line mysql_sql.y:5841 +//line mysql_sql.y:5875 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 887: + case 890: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.Where -//line mysql_sql.y:5845 +//line mysql_sql.y:5879 { yyLOCAL = &tree.Where{Type: tree.AstHaving, Expr: yyDollar[2].exprUnion()} } yyVAL.union = yyLOCAL - case 888: + case 891: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.GroupByClause -//line mysql_sql.y:5850 +//line mysql_sql.y:5884 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 889: + case 892: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.GroupByClause -//line mysql_sql.y:5854 +//line mysql_sql.y:5888 { exprsList := []tree.Exprs{yyDollar[3].exprsUnion()} yyLOCAL = &tree.GroupByClause{ @@ -17516,10 +17691,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 890: + case 893: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL *tree.GroupByClause -//line mysql_sql.y:5864 +//line mysql_sql.y:5898 { yyLOCAL = &tree.GroupByClause{ GroupByExprsList: yyDollar[6].rowsExprsUnion(), @@ -17529,10 +17704,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 891: + case 894: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.GroupByClause -//line mysql_sql.y:5873 +//line mysql_sql.y:5907 { yyLOCAL = &tree.GroupByClause{ GroupByExprsList: []tree.Exprs{yyDollar[5].exprsUnion()}, @@ -17542,10 +17717,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 892: + case 895: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.GroupByClause -//line mysql_sql.y:5882 +//line mysql_sql.y:5916 { yyLOCAL = &tree.GroupByClause{ GroupByExprsList: []tree.Exprs{yyDollar[5].exprsUnion()}, @@ -17555,106 +17730,106 @@ yydefault: } } yyVAL.union = yyLOCAL - case 893: + case 896: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []tree.Exprs -//line mysql_sql.y:5893 +//line mysql_sql.y:5927 { yyLOCAL = []tree.Exprs{yyDollar[2].exprsUnion()} } yyVAL.union = yyLOCAL - case 894: + case 897: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL []tree.Exprs -//line mysql_sql.y:5897 +//line mysql_sql.y:5931 { yyLOCAL = append(yyDollar[1].rowsExprsUnion(), yyDollar[4].exprsUnion()) } yyVAL.union = yyLOCAL - case 895: + case 898: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:5902 +//line mysql_sql.y:5936 { yyLOCAL = false } yyVAL.union = yyLOCAL - case 896: + case 899: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:5906 +//line mysql_sql.y:5940 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 897: + case 900: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.Where -//line mysql_sql.y:5911 +//line mysql_sql.y:5945 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 898: + case 901: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.Where -//line mysql_sql.y:5915 +//line mysql_sql.y:5949 { yyLOCAL = &tree.Where{Type: tree.AstWhere, Expr: yyDollar[2].exprUnion()} } yyVAL.union = yyLOCAL - case 899: + case 902: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.SelectExprs -//line mysql_sql.y:5921 +//line mysql_sql.y:5955 { yyLOCAL = tree.SelectExprs{yyDollar[1].selectExprUnion()} } yyVAL.union = yyLOCAL - case 900: + case 903: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.SelectExprs -//line mysql_sql.y:5925 +//line mysql_sql.y:5959 { yyLOCAL = append(yyDollar[1].selectExprsUnion(), yyDollar[3].selectExprUnion()) } yyVAL.union = yyLOCAL - case 901: + case 904: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.SelectExpr -//line mysql_sql.y:5931 +//line mysql_sql.y:5965 { yyLOCAL = tree.SelectExpr{Expr: tree.StarExpr()} } yyVAL.union = yyLOCAL - case 902: + case 905: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.SelectExpr -//line mysql_sql.y:5935 +//line mysql_sql.y:5969 { yyLOCAL = tree.SelectExpr{Expr: yyDollar[1].exprUnion(), As: yyDollar[2].cstrUnion()} } yyVAL.union = yyLOCAL - case 903: + case 906: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.SelectExpr -//line mysql_sql.y:5939 +//line mysql_sql.y:5973 { yyLOCAL = tree.SelectExpr{Expr: tree.NewUnresolvedNameWithStar(yyDollar[1].cstrUnion())} } yyVAL.union = yyLOCAL - case 904: + case 907: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.SelectExpr -//line mysql_sql.y:5943 +//line mysql_sql.y:5977 { yyLOCAL = tree.SelectExpr{Expr: tree.NewUnresolvedNameWithStar(yyDollar[1].cstrUnion(), yyDollar[3].cstrUnion())} } yyVAL.union = yyLOCAL - case 905: + case 908: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.From -//line mysql_sql.y:5948 +//line mysql_sql.y:5982 { prefix := tree.ObjectNamePrefix{ExplicitSchema: false} tn := tree.NewTableName(tree.Identifier(""), prefix, nil) @@ -17663,28 +17838,28 @@ yydefault: } } yyVAL.union = yyLOCAL - case 906: + case 909: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.From -//line mysql_sql.y:5956 +//line mysql_sql.y:5990 { yyLOCAL = yyDollar[1].fromUnion() } yyVAL.union = yyLOCAL - case 907: + case 910: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.From -//line mysql_sql.y:5962 +//line mysql_sql.y:5996 { yyLOCAL = &tree.From{ Tables: tree.TableExprs{yyDollar[2].tableExprUnion()}, } } yyVAL.union = yyLOCAL - case 908: + case 911: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.TableExpr -//line mysql_sql.y:5970 +//line mysql_sql.y:6004 { if t, ok := yyDollar[1].tableExprUnion().(*tree.JoinTableExpr); ok { yyLOCAL = t @@ -17695,34 +17870,34 @@ yydefault: } } yyVAL.union = yyLOCAL - case 909: + case 912: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableExpr -//line mysql_sql.y:5980 +//line mysql_sql.y:6014 { yyLOCAL = &tree.JoinTableExpr{Left: yyDollar[1].tableExprUnion(), Right: yyDollar[3].tableExprUnion(), JoinType: tree.JOIN_TYPE_CROSS} } yyVAL.union = yyLOCAL - case 912: + case 915: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.TableExpr -//line mysql_sql.y:5990 +//line mysql_sql.y:6024 { yyLOCAL = yyDollar[1].joinTableExprUnion() } yyVAL.union = yyLOCAL - case 913: + case 916: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.TableExpr -//line mysql_sql.y:5994 +//line mysql_sql.y:6028 { yyLOCAL = yyDollar[1].applyTableExprUnion() } yyVAL.union = yyLOCAL - case 914: + case 917: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.JoinTableExpr -//line mysql_sql.y:6000 +//line mysql_sql.y:6034 { if strings.Contains(yyDollar[2].str, ":") { ss := strings.SplitN(yyDollar[2].str, ":", 2) @@ -17743,10 +17918,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 915: + case 918: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.JoinTableExpr -//line mysql_sql.y:6020 +//line mysql_sql.y:6054 { yyLOCAL = &tree.JoinTableExpr{ Left: yyDollar[1].tableExprUnion(), @@ -17756,10 +17931,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 916: + case 919: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.JoinTableExpr -//line mysql_sql.y:6029 +//line mysql_sql.y:6063 { yyLOCAL = &tree.JoinTableExpr{ Left: yyDollar[1].tableExprUnion(), @@ -17769,10 +17944,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 917: + case 920: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.JoinTableExpr -//line mysql_sql.y:6038 +//line mysql_sql.y:6072 { yyLOCAL = &tree.JoinTableExpr{ Left: yyDollar[1].tableExprUnion(), @@ -17781,10 +17956,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 918: + case 921: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.JoinTableExpr -//line mysql_sql.y:6046 +//line mysql_sql.y:6080 { yyLOCAL = &tree.JoinTableExpr{ Left: yyDollar[1].tableExprUnion(), @@ -17794,10 +17969,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 919: + case 922: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.ApplyTableExpr -//line mysql_sql.y:6057 +//line mysql_sql.y:6091 { yyLOCAL = &tree.ApplyTableExpr{ Left: yyDollar[1].tableExprUnion(), @@ -17806,27 +17981,27 @@ yydefault: } } yyVAL.union = yyLOCAL - case 920: + case 923: yyDollar = yyS[yypt-2 : yypt+1] -//line mysql_sql.y:6067 +//line mysql_sql.y:6101 { yyVAL.str = tree.APPLY_TYPE_CROSS } - case 921: + case 924: yyDollar = yyS[yypt-2 : yypt+1] -//line mysql_sql.y:6071 +//line mysql_sql.y:6105 { yyVAL.str = tree.APPLY_TYPE_OUTER } - case 922: + case 925: yyDollar = yyS[yypt-2 : yypt+1] -//line mysql_sql.y:6077 +//line mysql_sql.y:6111 { yyVAL.str = tree.JOIN_TYPE_NATURAL } - case 923: + case 926: yyDollar = yyS[yypt-2 : yypt+1] -//line mysql_sql.y:6081 +//line mysql_sql.y:6115 { if yyDollar[2].str == tree.JOIN_TYPE_LEFT { yyVAL.str = tree.JOIN_TYPE_NATURAL_LEFT @@ -17834,40 +18009,40 @@ yydefault: yyVAL.str = tree.JOIN_TYPE_NATURAL_RIGHT } } - case 924: + case 927: yyDollar = yyS[yypt-2 : yypt+1] -//line mysql_sql.y:6091 +//line mysql_sql.y:6125 { yyVAL.str = tree.JOIN_TYPE_LEFT } - case 925: + case 928: yyDollar = yyS[yypt-3 : yypt+1] -//line mysql_sql.y:6095 +//line mysql_sql.y:6129 { yyVAL.str = tree.JOIN_TYPE_LEFT } - case 926: + case 929: yyDollar = yyS[yypt-2 : yypt+1] -//line mysql_sql.y:6099 +//line mysql_sql.y:6133 { yyVAL.str = tree.JOIN_TYPE_RIGHT } - case 927: + case 930: yyDollar = yyS[yypt-3 : yypt+1] -//line mysql_sql.y:6103 +//line mysql_sql.y:6137 { yyVAL.str = tree.JOIN_TYPE_RIGHT } - case 928: + case 931: yyDollar = yyS[yypt-2 : yypt+1] -//line mysql_sql.y:6109 +//line mysql_sql.y:6143 { yyVAL.str = tree.JOIN_TYPE_DEDUP } - case 929: + case 932: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:6115 +//line mysql_sql.y:6149 { yyLOCAL = &tree.ValuesStatement{ Rows: yyDollar[2].rowsExprsUnion(), @@ -17876,148 +18051,148 @@ yydefault: } } yyVAL.union = yyLOCAL - case 930: + case 933: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []tree.Exprs -//line mysql_sql.y:6126 +//line mysql_sql.y:6160 { yyLOCAL = []tree.Exprs{yyDollar[1].exprsUnion()} } yyVAL.union = yyLOCAL - case 931: + case 934: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []tree.Exprs -//line mysql_sql.y:6130 +//line mysql_sql.y:6164 { yyLOCAL = append(yyDollar[1].rowsExprsUnion(), yyDollar[3].exprsUnion()) } yyVAL.union = yyLOCAL - case 932: + case 935: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Exprs -//line mysql_sql.y:6136 +//line mysql_sql.y:6170 { yyLOCAL = yyDollar[3].exprsUnion() } yyVAL.union = yyLOCAL - case 933: + case 936: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.JoinCond -//line mysql_sql.y:6142 +//line mysql_sql.y:6176 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 934: + case 937: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.JoinCond -//line mysql_sql.y:6146 +//line mysql_sql.y:6180 { yyLOCAL = &tree.OnJoinCond{Expr: yyDollar[2].exprUnion()} } yyVAL.union = yyLOCAL - case 935: + case 938: yyDollar = yyS[yypt-1 : yypt+1] -//line mysql_sql.y:6152 +//line mysql_sql.y:6186 { yyVAL.str = yyDollar[1].str } - case 936: + case 939: yyDollar = yyS[yypt-3 : yypt+1] -//line mysql_sql.y:6159 +//line mysql_sql.y:6193 { yyVAL.str = yyDollar[2].str } - case 937: + case 940: yyDollar = yyS[yypt-1 : yypt+1] -//line mysql_sql.y:6165 +//line mysql_sql.y:6199 { yyVAL.str = tree.JOIN_TYPE_STRAIGHT } - case 938: + case 941: yyDollar = yyS[yypt-1 : yypt+1] -//line mysql_sql.y:6171 +//line mysql_sql.y:6205 { yyVAL.str = tree.JOIN_TYPE_INNER } - case 939: + case 942: yyDollar = yyS[yypt-2 : yypt+1] -//line mysql_sql.y:6175 +//line mysql_sql.y:6209 { yyVAL.str = tree.JOIN_TYPE_INNER } - case 940: + case 943: yyDollar = yyS[yypt-2 : yypt+1] -//line mysql_sql.y:6179 +//line mysql_sql.y:6213 { yyVAL.str = tree.JOIN_TYPE_CROSS } - case 941: + case 944: yyDollar = yyS[yypt-3 : yypt+1] -//line mysql_sql.y:6183 +//line mysql_sql.y:6217 { yyVAL.str = tree.JOIN_TYPE_CENTROIDX + ":" + yyDollar[2].str } - case 942: + case 945: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.JoinCond -//line mysql_sql.y:6189 +//line mysql_sql.y:6223 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 943: + case 946: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.JoinCond -//line mysql_sql.y:6193 +//line mysql_sql.y:6227 { yyLOCAL = yyDollar[1].joinCondUnion() } yyVAL.union = yyLOCAL - case 944: + case 947: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.JoinCond -//line mysql_sql.y:6199 +//line mysql_sql.y:6233 { yyLOCAL = &tree.OnJoinCond{Expr: yyDollar[2].exprUnion()} } yyVAL.union = yyLOCAL - case 945: + case 948: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.JoinCond -//line mysql_sql.y:6203 +//line mysql_sql.y:6237 { yyLOCAL = &tree.UsingJoinCond{Cols: yyDollar[3].identifierListUnion()} } yyVAL.union = yyLOCAL - case 946: + case 949: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.IdentifierList -//line mysql_sql.y:6209 +//line mysql_sql.y:6243 { yyLOCAL = tree.IdentifierList{tree.Identifier(yyDollar[1].cstrUnion().Compare())} } yyVAL.union = yyLOCAL - case 947: + case 950: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.IdentifierList -//line mysql_sql.y:6213 +//line mysql_sql.y:6247 { yyLOCAL = append(yyDollar[1].identifierListUnion(), tree.Identifier(yyDollar[3].cstrUnion().Compare())) } yyVAL.union = yyLOCAL - case 948: + case 951: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.TableExpr -//line mysql_sql.y:6219 +//line mysql_sql.y:6253 { yyLOCAL = yyDollar[1].aliasedTableExprUnion() } yyVAL.union = yyLOCAL - case 949: + case 952: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableExpr -//line mysql_sql.y:6223 +//line mysql_sql.y:6257 { yyLOCAL = &tree.AliasedTableExpr{ Expr: yyDollar[1].parenTableExprUnion(), @@ -18028,10 +18203,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 950: + case 953: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.TableExpr -//line mysql_sql.y:6233 +//line mysql_sql.y:6267 { if yyDollar[2].str != "" { yyLOCAL = &tree.AliasedTableExpr{ @@ -18045,26 +18220,26 @@ yydefault: } } yyVAL.union = yyLOCAL - case 951: + case 954: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableExpr -//line mysql_sql.y:6246 +//line mysql_sql.y:6280 { yyLOCAL = yyDollar[2].tableExprUnion() } yyVAL.union = yyLOCAL - case 952: + case 955: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.ParenTableExpr -//line mysql_sql.y:6252 +//line mysql_sql.y:6286 { yyLOCAL = &tree.ParenTableExpr{Expr: yyDollar[1].selectStatementUnion().(*tree.ParenSelect).Select} } yyVAL.union = yyLOCAL - case 953: + case 956: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.TableExpr -//line mysql_sql.y:6258 +//line mysql_sql.y:6292 { name := tree.NewUnresolvedName(yyDollar[1].cstrUnion()) yyLOCAL = &tree.TableFunction{ @@ -18077,10 +18252,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 954: + case 957: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.AliasedTableExpr -//line mysql_sql.y:6272 +//line mysql_sql.y:6306 { yyLOCAL = &tree.AliasedTableExpr{ Expr: yyDollar[1].tableNameUnion(), @@ -18091,34 +18266,34 @@ yydefault: } } yyVAL.union = yyLOCAL - case 955: + case 958: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL []*tree.IndexHint -//line mysql_sql.y:6283 +//line mysql_sql.y:6317 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 957: + case 960: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []*tree.IndexHint -//line mysql_sql.y:6290 +//line mysql_sql.y:6324 { yyLOCAL = []*tree.IndexHint{yyDollar[1].indexHintUnion()} } yyVAL.union = yyLOCAL - case 958: + case 961: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL []*tree.IndexHint -//line mysql_sql.y:6294 +//line mysql_sql.y:6328 { yyLOCAL = append(yyDollar[1].indexHintListUnion(), yyDollar[2].indexHintUnion()) } yyVAL.union = yyLOCAL - case 959: + case 962: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *tree.IndexHint -//line mysql_sql.y:6300 +//line mysql_sql.y:6334 { yyLOCAL = &tree.IndexHint{ IndexNames: yyDollar[4].strsUnion(), @@ -18127,182 +18302,182 @@ yydefault: } } yyVAL.union = yyLOCAL - case 960: + case 963: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.IndexHintType -//line mysql_sql.y:6310 +//line mysql_sql.y:6344 { yyLOCAL = tree.HintUse } yyVAL.union = yyLOCAL - case 961: + case 964: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.IndexHintType -//line mysql_sql.y:6314 +//line mysql_sql.y:6348 { yyLOCAL = tree.HintIgnore } yyVAL.union = yyLOCAL - case 962: + case 965: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.IndexHintType -//line mysql_sql.y:6318 +//line mysql_sql.y:6352 { yyLOCAL = tree.HintForce } yyVAL.union = yyLOCAL - case 963: + case 966: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.IndexHintScope -//line mysql_sql.y:6323 +//line mysql_sql.y:6357 { yyLOCAL = tree.HintForScan } yyVAL.union = yyLOCAL - case 964: + case 967: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.IndexHintScope -//line mysql_sql.y:6327 +//line mysql_sql.y:6361 { yyLOCAL = tree.HintForJoin } yyVAL.union = yyLOCAL - case 965: + case 968: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.IndexHintScope -//line mysql_sql.y:6331 +//line mysql_sql.y:6365 { yyLOCAL = tree.HintForOrderBy } yyVAL.union = yyLOCAL - case 966: + case 969: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.IndexHintScope -//line mysql_sql.y:6335 +//line mysql_sql.y:6369 { yyLOCAL = tree.HintForGroupBy } yyVAL.union = yyLOCAL - case 967: + case 970: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL []string -//line mysql_sql.y:6340 +//line mysql_sql.y:6374 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 968: + case 971: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []string -//line mysql_sql.y:6344 +//line mysql_sql.y:6378 { yyLOCAL = []string{yyDollar[1].cstrUnion().Compare()} } yyVAL.union = yyLOCAL - case 969: + case 972: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []string -//line mysql_sql.y:6348 +//line mysql_sql.y:6382 { yyLOCAL = append(yyDollar[1].strsUnion(), yyDollar[3].cstrUnion().Compare()) } yyVAL.union = yyLOCAL - case 970: + case 973: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []string -//line mysql_sql.y:6352 +//line mysql_sql.y:6386 { yyLOCAL = []string{yyDollar[1].str} } yyVAL.union = yyLOCAL - case 971: + case 974: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []string -//line mysql_sql.y:6356 +//line mysql_sql.y:6390 { yyLOCAL = append(yyDollar[1].strsUnion(), yyDollar[3].str) } yyVAL.union = yyLOCAL - case 972: + case 975: yyDollar = yyS[yypt-0 : yypt+1] -//line mysql_sql.y:6361 +//line mysql_sql.y:6395 { yyVAL.str = "" } - case 973: + case 976: yyDollar = yyS[yypt-1 : yypt+1] -//line mysql_sql.y:6365 +//line mysql_sql.y:6399 { yyVAL.str = yyDollar[1].str } - case 974: + case 977: yyDollar = yyS[yypt-2 : yypt+1] -//line mysql_sql.y:6369 +//line mysql_sql.y:6403 { yyVAL.str = yyDollar[2].str } - case 975: + case 978: yyDollar = yyS[yypt-1 : yypt+1] -//line mysql_sql.y:6375 +//line mysql_sql.y:6409 { yyVAL.str = yylex.(*Lexer).GetDbOrTblName(yyDollar[1].cstrUnion().Origin()) } - case 976: + case 979: yyDollar = yyS[yypt-1 : yypt+1] -//line mysql_sql.y:6379 +//line mysql_sql.y:6413 { yyVAL.str = yylex.(*Lexer).GetDbOrTblName(yyDollar[1].str) } - case 977: + case 980: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.CStr -//line mysql_sql.y:6384 +//line mysql_sql.y:6418 { yyLOCAL = tree.NewCStr("", 1) } yyVAL.union = yyLOCAL - case 978: + case 981: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.CStr -//line mysql_sql.y:6388 +//line mysql_sql.y:6422 { yyLOCAL = yyDollar[1].cstrUnion() } yyVAL.union = yyLOCAL - case 979: + case 982: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.CStr -//line mysql_sql.y:6392 +//line mysql_sql.y:6426 { yyLOCAL = yyDollar[2].cstrUnion() } yyVAL.union = yyLOCAL - case 980: + case 983: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.CStr -//line mysql_sql.y:6396 +//line mysql_sql.y:6430 { yyLOCAL = tree.NewCStr(yyDollar[1].str, 1) } yyVAL.union = yyLOCAL - case 981: + case 984: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.CStr -//line mysql_sql.y:6400 +//line mysql_sql.y:6434 { yyLOCAL = tree.NewCStr(yyDollar[2].str, 1) } yyVAL.union = yyLOCAL - case 982: + case 985: yyDollar = yyS[yypt-1 : yypt+1] -//line mysql_sql.y:6406 +//line mysql_sql.y:6440 { yyVAL.str = yyDollar[1].cstrUnion().Compare() } - case 1005: + case 1008: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:6448 +//line mysql_sql.y:6482 { var Language = yyDollar[3].str var Name = tree.Identifier(yyDollar[5].str) @@ -18314,22 +18489,22 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1006: + case 1009: yyDollar = yyS[yypt-1 : yypt+1] -//line mysql_sql.y:6461 +//line mysql_sql.y:6495 { yyVAL.str = yyDollar[1].cstrUnion().Compare() } - case 1007: + case 1010: yyDollar = yyS[yypt-1 : yypt+1] -//line mysql_sql.y:6467 +//line mysql_sql.y:6501 { yyVAL.str = yyDollar[1].cstrUnion().Compare() } - case 1008: + case 1011: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:6473 +//line mysql_sql.y:6507 { var Name = yyDollar[3].procNameUnion() var Args = yyDollar[5].procArgsUnion() @@ -18341,101 +18516,101 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1009: + case 1012: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.ProcedureName -//line mysql_sql.y:6486 +//line mysql_sql.y:6520 { prefix := tree.ObjectNamePrefix{ExplicitSchema: false} yyLOCAL = tree.NewProcedureName(tree.Identifier(yyDollar[1].cstrUnion().Compare()), prefix) } yyVAL.union = yyLOCAL - case 1010: + case 1013: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.ProcedureName -//line mysql_sql.y:6491 +//line mysql_sql.y:6525 { dbName := yylex.(*Lexer).GetDbOrTblName(yyDollar[1].cstrUnion().Origin()) prefix := tree.ObjectNamePrefix{SchemaName: tree.Identifier(dbName), ExplicitSchema: true} yyLOCAL = tree.NewProcedureName(tree.Identifier(yyDollar[3].cstrUnion().Compare()), prefix) } yyVAL.union = yyLOCAL - case 1011: + case 1014: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.ProcedureArgs -//line mysql_sql.y:6498 +//line mysql_sql.y:6532 { yyLOCAL = tree.ProcedureArgs(nil) } yyVAL.union = yyLOCAL - case 1013: + case 1016: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.ProcedureArgs -//line mysql_sql.y:6505 +//line mysql_sql.y:6539 { yyLOCAL = tree.ProcedureArgs{yyDollar[1].procArgUnion()} } yyVAL.union = yyLOCAL - case 1014: + case 1017: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.ProcedureArgs -//line mysql_sql.y:6509 +//line mysql_sql.y:6543 { yyLOCAL = append(yyDollar[1].procArgsUnion(), yyDollar[3].procArgUnion()) } yyVAL.union = yyLOCAL - case 1015: + case 1018: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.ProcedureArg -//line mysql_sql.y:6515 +//line mysql_sql.y:6549 { yyLOCAL = tree.ProcedureArg(yyDollar[1].procArgDeclUnion()) } yyVAL.union = yyLOCAL - case 1016: + case 1019: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.ProcedureArgDecl -//line mysql_sql.y:6521 +//line mysql_sql.y:6555 { yyLOCAL = tree.NewProcedureArgDecl(yyDollar[1].procArgTypeUnion(), yyDollar[2].unresolvedNameUnion(), yyDollar[3].columnTypeUnion()) } yyVAL.union = yyLOCAL - case 1017: + case 1020: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.InOutArgType -//line mysql_sql.y:6526 +//line mysql_sql.y:6560 { yyLOCAL = tree.TYPE_IN } yyVAL.union = yyLOCAL - case 1018: + case 1021: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.InOutArgType -//line mysql_sql.y:6530 +//line mysql_sql.y:6564 { yyLOCAL = tree.TYPE_IN } yyVAL.union = yyLOCAL - case 1019: + case 1022: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.InOutArgType -//line mysql_sql.y:6534 +//line mysql_sql.y:6568 { yyLOCAL = tree.TYPE_OUT } yyVAL.union = yyLOCAL - case 1020: + case 1023: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.InOutArgType -//line mysql_sql.y:6538 +//line mysql_sql.y:6572 { yyLOCAL = tree.TYPE_INOUT } yyVAL.union = yyLOCAL - case 1021: + case 1024: yyDollar = yyS[yypt-14 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:6545 +//line mysql_sql.y:6579 { if yyDollar[13].str == "" { yylex.Error("no function body error") @@ -18467,127 +18642,127 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1022: + case 1025: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.FunctionName -//line mysql_sql.y:6578 +//line mysql_sql.y:6612 { prefix := tree.ObjectNamePrefix{ExplicitSchema: false} yyLOCAL = tree.NewFuncName(tree.Identifier(yyDollar[1].cstrUnion().Compare()), prefix) } yyVAL.union = yyLOCAL - case 1023: + case 1026: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.FunctionName -//line mysql_sql.y:6583 +//line mysql_sql.y:6617 { dbName := yylex.(*Lexer).GetDbOrTblName(yyDollar[1].cstrUnion().Origin()) prefix := tree.ObjectNamePrefix{SchemaName: tree.Identifier(dbName), ExplicitSchema: true} yyLOCAL = tree.NewFuncName(tree.Identifier(yyDollar[3].cstrUnion().Compare()), prefix) } yyVAL.union = yyLOCAL - case 1024: + case 1027: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.FunctionArgs -//line mysql_sql.y:6590 +//line mysql_sql.y:6624 { yyLOCAL = tree.FunctionArgs(nil) } yyVAL.union = yyLOCAL - case 1026: + case 1029: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.FunctionArgs -//line mysql_sql.y:6597 +//line mysql_sql.y:6631 { yyLOCAL = tree.FunctionArgs{yyDollar[1].funcArgUnion()} } yyVAL.union = yyLOCAL - case 1027: + case 1030: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.FunctionArgs -//line mysql_sql.y:6601 +//line mysql_sql.y:6635 { yyLOCAL = append(yyDollar[1].funcArgsUnion(), yyDollar[3].funcArgUnion()) } yyVAL.union = yyLOCAL - case 1028: + case 1031: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.FunctionArg -//line mysql_sql.y:6607 +//line mysql_sql.y:6641 { yyLOCAL = tree.FunctionArg(yyDollar[1].funcArgDeclUnion()) } yyVAL.union = yyLOCAL - case 1029: + case 1032: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.FunctionArgDecl -//line mysql_sql.y:6613 +//line mysql_sql.y:6647 { yyLOCAL = tree.NewFunctionArgDecl(nil, yyDollar[1].columnTypeUnion(), nil) } yyVAL.union = yyLOCAL - case 1030: + case 1033: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.FunctionArgDecl -//line mysql_sql.y:6617 +//line mysql_sql.y:6651 { yyLOCAL = tree.NewFunctionArgDecl(yyDollar[1].unresolvedNameUnion(), yyDollar[2].columnTypeUnion(), nil) } yyVAL.union = yyLOCAL - case 1031: + case 1034: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.FunctionArgDecl -//line mysql_sql.y:6621 +//line mysql_sql.y:6655 { yyLOCAL = tree.NewFunctionArgDecl(yyDollar[1].unresolvedNameUnion(), yyDollar[2].columnTypeUnion(), yyDollar[4].exprUnion()) } yyVAL.union = yyLOCAL - case 1032: + case 1035: yyDollar = yyS[yypt-1 : yypt+1] -//line mysql_sql.y:6627 +//line mysql_sql.y:6661 { yyVAL.str = yyDollar[1].cstrUnion().Compare() } - case 1033: + case 1036: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.ReturnType -//line mysql_sql.y:6633 +//line mysql_sql.y:6667 { yyLOCAL = tree.NewReturnType(yyDollar[1].columnTypeUnion()) } yyVAL.union = yyLOCAL - case 1034: + case 1037: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:6639 +//line mysql_sql.y:6673 { yyLOCAL = false } yyVAL.union = yyLOCAL - case 1035: + case 1038: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:6643 +//line mysql_sql.y:6677 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 1036: + case 1039: yyDollar = yyS[yypt-0 : yypt+1] -//line mysql_sql.y:6649 +//line mysql_sql.y:6683 { yyVAL.str = "" } - case 1038: + case 1041: yyDollar = yyS[yypt-2 : yypt+1] -//line mysql_sql.y:6656 +//line mysql_sql.y:6690 { yyVAL.str = yyDollar[2].str } - case 1039: + case 1042: yyDollar = yyS[yypt-9 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:6662 +//line mysql_sql.y:6696 { var Replace bool var Name = yyDollar[5].tableNameUnion() @@ -18603,10 +18778,10 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1040: + case 1043: yyDollar = yyS[yypt-9 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:6677 +//line mysql_sql.y:6711 { var Replace = yyDollar[2].sourceOptionalUnion() var Name = yyDollar[5].tableNameUnion() @@ -18622,10 +18797,10 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1041: + case 1044: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:6694 +//line mysql_sql.y:6728 { var IfNotExists = yyDollar[3].ifNotExistsUnion() var Name = yyDollar[4].exprUnion() @@ -18641,81 +18816,81 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1042: + case 1045: yyDollar = yyS[yypt-1 : yypt+1] -//line mysql_sql.y:6711 +//line mysql_sql.y:6745 { yyVAL.str = yyDollar[1].str } - case 1043: + case 1046: yyDollar = yyS[yypt-2 : yypt+1] -//line mysql_sql.y:6715 +//line mysql_sql.y:6749 { yyVAL.str = yyVAL.str + yyDollar[2].str } - case 1044: + case 1047: yyDollar = yyS[yypt-3 : yypt+1] -//line mysql_sql.y:6721 +//line mysql_sql.y:6755 { yyVAL.str = "ALGORITHM = " + yyDollar[3].str } - case 1045: + case 1048: yyDollar = yyS[yypt-3 : yypt+1] -//line mysql_sql.y:6725 +//line mysql_sql.y:6759 { yyVAL.str = "DEFINER = " } - case 1046: + case 1049: yyDollar = yyS[yypt-3 : yypt+1] -//line mysql_sql.y:6729 +//line mysql_sql.y:6763 { yyVAL.str = "SQL SECURITY " + yyDollar[3].str } - case 1047: + case 1050: yyDollar = yyS[yypt-0 : yypt+1] -//line mysql_sql.y:6734 +//line mysql_sql.y:6768 { yyVAL.str = "" } - case 1048: + case 1051: yyDollar = yyS[yypt-4 : yypt+1] -//line mysql_sql.y:6738 +//line mysql_sql.y:6772 { yyVAL.str = "WITH " + yyDollar[2].str + " CHECK OPTION" } - case 1054: + case 1057: yyDollar = yyS[yypt-0 : yypt+1] -//line mysql_sql.y:6752 +//line mysql_sql.y:6786 { yyVAL.str = "" } - case 1057: + case 1060: yyDollar = yyS[yypt-1 : yypt+1] -//line mysql_sql.y:6760 +//line mysql_sql.y:6794 { yyVAL.str = yyDollar[1].cstrUnion().Compare() } - case 1058: + case 1061: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:6766 +//line mysql_sql.y:6800 { var str = yyDollar[1].cstrUnion().Compare() yyLOCAL = tree.NewNumVal(str, str, false, tree.P_char) } yyVAL.union = yyLOCAL - case 1059: + case 1062: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:6771 +//line mysql_sql.y:6805 { yyLOCAL = tree.NewParamExpr(yylex.(*Lexer).GetParamIndex()) } yyVAL.union = yyLOCAL - case 1060: + case 1063: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.AccountAuthOption -//line mysql_sql.y:6777 +//line mysql_sql.y:6811 { var Equal = yyDollar[2].str var AdminName = yyDollar[3].exprUnion() @@ -18727,36 +18902,36 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1061: + case 1064: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:6790 +//line mysql_sql.y:6824 { var str = yyDollar[1].str yyLOCAL = tree.NewNumVal(str, str, false, tree.P_char) } yyVAL.union = yyLOCAL - case 1062: + case 1065: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:6795 +//line mysql_sql.y:6829 { var str = yyDollar[1].cstrUnion().Compare() yyLOCAL = tree.NewNumVal(str, str, false, tree.P_char) } yyVAL.union = yyLOCAL - case 1063: + case 1066: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:6800 +//line mysql_sql.y:6834 { yyLOCAL = tree.NewParamExpr(yylex.(*Lexer).GetParamIndex()) } yyVAL.union = yyLOCAL - case 1064: + case 1067: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.AccountIdentified -//line mysql_sql.y:6806 +//line mysql_sql.y:6840 { yyLOCAL = *tree.NewAccountIdentified( tree.AccountIdentifiedByPassword, @@ -18764,10 +18939,10 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1065: + case 1068: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.AccountIdentified -//line mysql_sql.y:6813 +//line mysql_sql.y:6847 { yyLOCAL = *tree.NewAccountIdentified( tree.AccountIdentifiedByPassword, @@ -18775,10 +18950,10 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1066: + case 1069: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.AccountIdentified -//line mysql_sql.y:6820 +//line mysql_sql.y:6854 { yyLOCAL = *tree.NewAccountIdentified( tree.AccountIdentifiedByRandomPassword, @@ -18786,10 +18961,10 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1067: + case 1070: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.AccountIdentified -//line mysql_sql.y:6827 +//line mysql_sql.y:6861 { yyLOCAL = *tree.NewAccountIdentified( tree.AccountIdentifiedWithSSL, @@ -18797,10 +18972,10 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1068: + case 1071: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.AccountIdentified -//line mysql_sql.y:6834 +//line mysql_sql.y:6868 { yyLOCAL = *tree.NewAccountIdentified( tree.AccountIdentifiedWithSSL, @@ -18808,20 +18983,20 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1069: + case 1072: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.AccountStatus -//line mysql_sql.y:6842 +//line mysql_sql.y:6876 { as := tree.NewAccountStatus() as.Exist = false yyLOCAL = *as } yyVAL.union = yyLOCAL - case 1070: + case 1073: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.AccountStatus -//line mysql_sql.y:6848 +//line mysql_sql.y:6882 { as := tree.NewAccountStatus() as.Exist = true @@ -18829,10 +19004,10 @@ yydefault: yyLOCAL = *as } yyVAL.union = yyLOCAL - case 1071: + case 1074: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.AccountStatus -//line mysql_sql.y:6855 +//line mysql_sql.y:6889 { as := tree.NewAccountStatus() as.Exist = true @@ -18840,10 +19015,10 @@ yydefault: yyLOCAL = *as } yyVAL.union = yyLOCAL - case 1072: + case 1075: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.AccountStatus -//line mysql_sql.y:6862 +//line mysql_sql.y:6896 { as := tree.NewAccountStatus() as.Exist = true @@ -18851,20 +19026,20 @@ yydefault: yyLOCAL = *as } yyVAL.union = yyLOCAL - case 1073: + case 1076: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.AccountComment -//line mysql_sql.y:6870 +//line mysql_sql.y:6904 { ac := tree.NewAccountComment() ac.Exist = false yyLOCAL = *ac } yyVAL.union = yyLOCAL - case 1074: + case 1077: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.AccountComment -//line mysql_sql.y:6876 +//line mysql_sql.y:6910 { ac := tree.NewAccountComment() ac.Exist = true @@ -18872,10 +19047,10 @@ yydefault: yyLOCAL = *ac } yyVAL.union = yyLOCAL - case 1075: + case 1078: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:6885 +//line mysql_sql.y:6919 { var IfNotExists = yyDollar[3].ifNotExistsUnion() var Users = yyDollar[4].usersUnion() @@ -18891,10 +19066,10 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1076: + case 1079: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:6902 +//line mysql_sql.y:6936 { var IfNotExists = yyDollar[3].ifNotExistsUnion() var Name = tree.Identifier(yyDollar[4].cstrUnion().Compare()) @@ -18911,10 +19086,10 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1077: + case 1080: yyDollar = yyS[yypt-10 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:6918 +//line mysql_sql.y:6952 { var IfNotExists = yyDollar[3].ifNotExistsUnion() var Name = tree.Identifier(yyDollar[4].cstrUnion().Compare()) @@ -18932,30 +19107,30 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1078: + case 1081: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.AccountsSetOption -//line mysql_sql.y:6937 +//line mysql_sql.y:6971 { yyLOCAL = &tree.AccountsSetOption{ All: true, } } yyVAL.union = yyLOCAL - case 1079: + case 1082: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.AccountsSetOption -//line mysql_sql.y:6943 +//line mysql_sql.y:6977 { yyLOCAL = &tree.AccountsSetOption{ SetAccounts: yyDollar[2].identifierListUnion(), } } yyVAL.union = yyLOCAL - case 1080: + case 1083: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:6952 +//line mysql_sql.y:6986 { var IfNotExists = yyDollar[3].ifNotExistsUnion() var Name = tree.Identifier(yyDollar[4].cstrUnion().Compare()) @@ -18973,20 +19148,20 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1081: + case 1084: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.StageStatus -//line mysql_sql.y:6970 +//line mysql_sql.y:7004 { yyLOCAL = tree.StageStatus{ Exist: false, } } yyVAL.union = yyLOCAL - case 1082: + case 1085: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.StageStatus -//line mysql_sql.y:6976 +//line mysql_sql.y:7010 { yyLOCAL = tree.StageStatus{ Exist: true, @@ -18994,10 +19169,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1083: + case 1086: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.StageStatus -//line mysql_sql.y:6983 +//line mysql_sql.y:7017 { yyLOCAL = tree.StageStatus{ Exist: true, @@ -19005,20 +19180,20 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1084: + case 1087: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.StageComment -//line mysql_sql.y:6991 +//line mysql_sql.y:7025 { yyLOCAL = tree.StageComment{ Exist: false, } } yyVAL.union = yyLOCAL - case 1085: + case 1088: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.StageComment -//line mysql_sql.y:6997 +//line mysql_sql.y:7031 { yyLOCAL = tree.StageComment{ Exist: true, @@ -19026,20 +19201,20 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1086: + case 1089: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.StageUrl -//line mysql_sql.y:7005 +//line mysql_sql.y:7039 { yyLOCAL = tree.StageUrl{ Exist: false, } } yyVAL.union = yyLOCAL - case 1087: + case 1090: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.StageUrl -//line mysql_sql.y:7011 +//line mysql_sql.y:7045 { yyLOCAL = tree.StageUrl{ Exist: true, @@ -19047,20 +19222,20 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1088: + case 1091: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.StageCredentials -//line mysql_sql.y:7019 +//line mysql_sql.y:7053 { yyLOCAL = tree.StageCredentials{ Exist: false, } } yyVAL.union = yyLOCAL - case 1089: + case 1092: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.StageCredentials -//line mysql_sql.y:7025 +//line mysql_sql.y:7059 { yyLOCAL = tree.StageCredentials{ Exist: true, @@ -19068,61 +19243,61 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1090: + case 1093: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []string -//line mysql_sql.y:7034 +//line mysql_sql.y:7068 { yyLOCAL = yyDollar[1].strsUnion() } yyVAL.union = yyLOCAL - case 1091: + case 1094: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []string -//line mysql_sql.y:7038 +//line mysql_sql.y:7072 { yyLOCAL = append(yyDollar[1].strsUnion(), yyDollar[3].strsUnion()...) } yyVAL.union = yyLOCAL - case 1092: + case 1095: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL []string -//line mysql_sql.y:7043 +//line mysql_sql.y:7077 { yyLOCAL = []string{} } yyVAL.union = yyLOCAL - case 1093: + case 1096: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []string -//line mysql_sql.y:7047 +//line mysql_sql.y:7081 { yyLOCAL = append(yyLOCAL, yyDollar[1].str) yyLOCAL = append(yyLOCAL, yyDollar[3].str) } yyVAL.union = yyLOCAL - case 1094: + case 1097: yyDollar = yyS[yypt-3 : yypt+1] -//line mysql_sql.y:7054 +//line mysql_sql.y:7088 { yyVAL.str = yyDollar[3].str } - case 1095: + case 1098: yyDollar = yyS[yypt-0 : yypt+1] -//line mysql_sql.y:7059 +//line mysql_sql.y:7093 { yyVAL.str = "" } - case 1096: + case 1099: yyDollar = yyS[yypt-2 : yypt+1] -//line mysql_sql.y:7063 +//line mysql_sql.y:7097 { yyVAL.str = yyDollar[2].str } - case 1097: + case 1100: yyDollar = yyS[yypt-9 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:7069 +//line mysql_sql.y:7103 { var ifNotExists = yyDollar[3].boolValUnion() var name = tree.Identifier(yyDollar[4].cstrUnion().Compare()) @@ -19133,10 +19308,10 @@ yydefault: yyLOCAL = tree.NewAlterStage(ifNotExists, name, urlOption, credentialsOption, statusOption, comment) } yyVAL.union = yyLOCAL - case 1098: + case 1101: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:7082 +//line mysql_sql.y:7116 { var ifExists = yyDollar[3].boolValUnion() var name = tree.Identifier(yyDollar[4].cstrUnion().Compare()) @@ -19147,132 +19322,132 @@ yydefault: yyLOCAL = tree.NewAlterPublication(ifExists, name, accountsSet, dbName, table, comment) } yyVAL.union = yyLOCAL - case 1099: + case 1102: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.AccountsSetOption -//line mysql_sql.y:7093 +//line mysql_sql.y:7127 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1100: + case 1103: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.AccountsSetOption -//line mysql_sql.y:7097 +//line mysql_sql.y:7131 { yyLOCAL = &tree.AccountsSetOption{ All: true, } } yyVAL.union = yyLOCAL - case 1101: + case 1104: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.AccountsSetOption -//line mysql_sql.y:7103 +//line mysql_sql.y:7137 { yyLOCAL = &tree.AccountsSetOption{ SetAccounts: yyDollar[2].identifierListUnion(), } } yyVAL.union = yyLOCAL - case 1102: + case 1105: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.AccountsSetOption -//line mysql_sql.y:7109 +//line mysql_sql.y:7143 { yyLOCAL = &tree.AccountsSetOption{ AddAccounts: yyDollar[3].identifierListUnion(), } } yyVAL.union = yyLOCAL - case 1103: + case 1106: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.AccountsSetOption -//line mysql_sql.y:7115 +//line mysql_sql.y:7149 { yyLOCAL = &tree.AccountsSetOption{ DropAccounts: yyDollar[3].identifierListUnion(), } } yyVAL.union = yyLOCAL - case 1104: + case 1107: yyDollar = yyS[yypt-0 : yypt+1] -//line mysql_sql.y:7122 +//line mysql_sql.y:7156 { yyVAL.str = "" } - case 1105: + case 1108: yyDollar = yyS[yypt-2 : yypt+1] -//line mysql_sql.y:7126 +//line mysql_sql.y:7160 { yyVAL.str = yyDollar[2].str } - case 1106: + case 1109: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.TableNames -//line mysql_sql.y:7131 +//line mysql_sql.y:7165 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1107: + case 1110: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.TableNames -//line mysql_sql.y:7135 +//line mysql_sql.y:7169 { yyLOCAL = yyDollar[2].tableNamesUnion() } yyVAL.union = yyLOCAL - case 1108: + case 1111: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:7141 +//line mysql_sql.y:7175 { var ifExists = yyDollar[3].boolValUnion() var name = tree.Identifier(yyDollar[4].cstrUnion().Compare()) yyLOCAL = tree.NewDropPublication(ifExists, name) } yyVAL.union = yyLOCAL - case 1109: + case 1112: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:7149 +//line mysql_sql.y:7183 { var ifNotExists = yyDollar[3].boolValUnion() var name = tree.Identifier(yyDollar[4].cstrUnion().Compare()) yyLOCAL = tree.NewDropStage(ifNotExists, name) } yyVAL.union = yyLOCAL - case 1110: + case 1113: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:7157 +//line mysql_sql.y:7191 { var ifExists = yyDollar[3].boolValUnion() var name = tree.Identifier(yyDollar[4].cstrUnion().Compare()) yyLOCAL = tree.NewDropSnapShot(ifExists, name) } yyVAL.union = yyLOCAL - case 1111: + case 1114: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:7165 +//line mysql_sql.y:7199 { var ifExists = yyDollar[3].boolValUnion() var name = tree.Identifier(yyDollar[4].cstrUnion().Compare()) yyLOCAL = tree.NewDropPitr(ifExists, name) } yyVAL.union = yyLOCAL - case 1112: + case 1115: yyDollar = yyS[yypt-1 : yypt+1] -//line mysql_sql.y:7173 +//line mysql_sql.y:7207 { yyVAL.str = yyDollar[1].cstrUnion().Compare() } - case 1113: + case 1116: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.AccountCommentOrAttribute -//line mysql_sql.y:7178 +//line mysql_sql.y:7212 { var Exist = false var IsComment bool @@ -19285,10 +19460,10 @@ yydefault: } yyVAL.union = yyLOCAL - case 1114: + case 1117: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.AccountCommentOrAttribute -//line mysql_sql.y:7190 +//line mysql_sql.y:7224 { var Exist = true var IsComment = true @@ -19300,10 +19475,10 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1115: + case 1118: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.AccountCommentOrAttribute -//line mysql_sql.y:7201 +//line mysql_sql.y:7235 { var Exist = true var IsComment = false @@ -19315,26 +19490,26 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1116: + case 1119: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []*tree.User -//line mysql_sql.y:7310 +//line mysql_sql.y:7344 { yyLOCAL = []*tree.User{yyDollar[1].userUnion()} } yyVAL.union = yyLOCAL - case 1117: + case 1120: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []*tree.User -//line mysql_sql.y:7314 +//line mysql_sql.y:7348 { yyLOCAL = append(yyDollar[1].usersUnion(), yyDollar[3].userUnion()) } yyVAL.union = yyLOCAL - case 1118: + case 1121: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.User -//line mysql_sql.y:7320 +//line mysql_sql.y:7354 { var Username = yyDollar[1].usernameRecordUnion().Username var Hostname = yyDollar[1].usernameRecordUnion().Hostname @@ -19346,26 +19521,26 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1119: + case 1122: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []*tree.User -//line mysql_sql.y:7333 +//line mysql_sql.y:7367 { yyLOCAL = []*tree.User{yyDollar[1].userUnion()} } yyVAL.union = yyLOCAL - case 1120: + case 1123: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []*tree.User -//line mysql_sql.y:7337 +//line mysql_sql.y:7371 { yyLOCAL = append(yyDollar[1].usersUnion(), yyDollar[3].userUnion()) } yyVAL.union = yyLOCAL - case 1121: + case 1124: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.User -//line mysql_sql.y:7343 +//line mysql_sql.y:7377 { var Username = yyDollar[1].usernameRecordUnion().Username var Hostname = yyDollar[1].usernameRecordUnion().Hostname @@ -19377,50 +19552,50 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1122: + case 1125: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.UsernameRecord -//line mysql_sql.y:7356 +//line mysql_sql.y:7390 { yyLOCAL = &tree.UsernameRecord{Username: yyDollar[1].str, Hostname: "%"} } yyVAL.union = yyLOCAL - case 1123: + case 1126: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.UsernameRecord -//line mysql_sql.y:7360 +//line mysql_sql.y:7394 { yyLOCAL = &tree.UsernameRecord{Username: yyDollar[1].str, Hostname: yyDollar[3].str} } yyVAL.union = yyLOCAL - case 1124: + case 1127: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.UsernameRecord -//line mysql_sql.y:7364 +//line mysql_sql.y:7398 { yyLOCAL = &tree.UsernameRecord{Username: yyDollar[1].str, Hostname: yyDollar[2].str} } yyVAL.union = yyLOCAL - case 1125: + case 1128: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.AccountIdentified -//line mysql_sql.y:7369 +//line mysql_sql.y:7403 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1126: + case 1129: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.AccountIdentified -//line mysql_sql.y:7373 +//line mysql_sql.y:7407 { yyLOCAL = yyDollar[1].userIdentifiedUnion() } yyVAL.union = yyLOCAL - case 1127: + case 1130: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.AccountIdentified -//line mysql_sql.y:7379 +//line mysql_sql.y:7413 { yyLOCAL = &tree.AccountIdentified{ Typ: tree.AccountIdentifiedByPassword, @@ -19428,20 +19603,20 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1128: + case 1131: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.AccountIdentified -//line mysql_sql.y:7386 +//line mysql_sql.y:7420 { yyLOCAL = &tree.AccountIdentified{ Typ: tree.AccountIdentifiedByRandomPassword, } } yyVAL.union = yyLOCAL - case 1129: + case 1132: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.AccountIdentified -//line mysql_sql.y:7392 +//line mysql_sql.y:7426 { yyLOCAL = &tree.AccountIdentified{ Typ: tree.AccountIdentifiedWithSSL, @@ -19449,16 +19624,16 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1130: + case 1133: yyDollar = yyS[yypt-1 : yypt+1] -//line mysql_sql.y:7401 +//line mysql_sql.y:7435 { yyVAL.str = yyDollar[1].cstrUnion().Compare() } - case 1132: + case 1135: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:7408 +//line mysql_sql.y:7442 { var IfNotExists = yyDollar[3].ifNotExistsUnion() var Roles = yyDollar[4].rolesUnion() @@ -19468,26 +19643,26 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1133: + case 1136: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []*tree.Role -//line mysql_sql.y:7419 +//line mysql_sql.y:7453 { yyLOCAL = []*tree.Role{yyDollar[1].roleUnion()} } yyVAL.union = yyLOCAL - case 1134: + case 1137: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []*tree.Role -//line mysql_sql.y:7423 +//line mysql_sql.y:7457 { yyLOCAL = append(yyDollar[1].rolesUnion(), yyDollar[3].roleUnion()) } yyVAL.union = yyLOCAL - case 1135: + case 1138: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.Role -//line mysql_sql.y:7429 +//line mysql_sql.y:7463 { var UserName = yyDollar[1].cstrUnion().Compare() yyLOCAL = tree.NewRole( @@ -19495,66 +19670,66 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1136: + case 1139: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.CStr -//line mysql_sql.y:7438 +//line mysql_sql.y:7472 { yyLOCAL = tree.NewCStr(yyDollar[1].str, 1) } yyVAL.union = yyLOCAL - case 1137: + case 1140: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.CStr -//line mysql_sql.y:7442 +//line mysql_sql.y:7476 { yyLOCAL = tree.NewCStr(yyDollar[1].str, 1) } yyVAL.union = yyLOCAL - case 1138: + case 1141: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.CStr -//line mysql_sql.y:7446 +//line mysql_sql.y:7480 { yyLOCAL = tree.NewCStr(yyDollar[1].str, 1) } yyVAL.union = yyLOCAL - case 1139: + case 1142: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.IndexCategory -//line mysql_sql.y:7451 +//line mysql_sql.y:7485 { yyLOCAL = tree.INDEX_CATEGORY_NONE } yyVAL.union = yyLOCAL - case 1140: + case 1143: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.IndexCategory -//line mysql_sql.y:7455 +//line mysql_sql.y:7489 { yyLOCAL = tree.INDEX_CATEGORY_FULLTEXT } yyVAL.union = yyLOCAL - case 1141: + case 1144: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.IndexCategory -//line mysql_sql.y:7459 +//line mysql_sql.y:7493 { yyLOCAL = tree.INDEX_CATEGORY_SPATIAL } yyVAL.union = yyLOCAL - case 1142: + case 1145: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.IndexCategory -//line mysql_sql.y:7463 +//line mysql_sql.y:7497 { yyLOCAL = tree.INDEX_CATEGORY_UNIQUE } yyVAL.union = yyLOCAL - case 1143: + case 1146: yyDollar = yyS[yypt-11 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:7469 +//line mysql_sql.y:7503 { var io *tree.IndexOption = nil if yyDollar[11].indexOptionUnion() == nil && yyDollar[5].indexTypeUnion() != tree.INDEX_TYPE_INVALID { @@ -19585,18 +19760,18 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1144: + case 1147: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.IndexOption -//line mysql_sql.y:7500 +//line mysql_sql.y:7534 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1145: + case 1148: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.IndexOption -//line mysql_sql.y:7504 +//line mysql_sql.y:7538 { // Merge the options if yyDollar[1].indexOptionUnion() == nil { @@ -19629,20 +19804,20 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1146: + case 1149: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.IndexOption -//line mysql_sql.y:7538 +//line mysql_sql.y:7572 { io := tree.NewIndexOption() io.KeyBlockSize = uint64(yyDollar[3].item.(int64)) yyLOCAL = io } yyVAL.union = yyLOCAL - case 1147: + case 1150: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.IndexOption -//line mysql_sql.y:7544 +//line mysql_sql.y:7578 { val := int64(yyDollar[3].item.(int64)) if val <= 0 { @@ -19655,60 +19830,60 @@ yydefault: yyLOCAL = io } yyVAL.union = yyLOCAL - case 1148: + case 1151: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.IndexOption -//line mysql_sql.y:7556 +//line mysql_sql.y:7590 { io := tree.NewIndexOption() io.AlgoParamVectorOpType = yyDollar[2].str yyLOCAL = io } yyVAL.union = yyLOCAL - case 1149: + case 1152: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.IndexOption -//line mysql_sql.y:7562 +//line mysql_sql.y:7596 { io := tree.NewIndexOption() io.Comment = yyDollar[2].str yyLOCAL = io } yyVAL.union = yyLOCAL - case 1150: + case 1153: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.IndexOption -//line mysql_sql.y:7568 +//line mysql_sql.y:7602 { io := tree.NewIndexOption() io.ParserName = yyDollar[3].cstrUnion().Compare() yyLOCAL = io } yyVAL.union = yyLOCAL - case 1151: + case 1154: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.IndexOption -//line mysql_sql.y:7574 +//line mysql_sql.y:7608 { io := tree.NewIndexOption() io.Visible = tree.VISIBLE_TYPE_VISIBLE yyLOCAL = io } yyVAL.union = yyLOCAL - case 1152: + case 1155: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.IndexOption -//line mysql_sql.y:7580 +//line mysql_sql.y:7614 { io := tree.NewIndexOption() io.Visible = tree.VISIBLE_TYPE_INVISIBLE yyLOCAL = io } yyVAL.union = yyLOCAL - case 1153: + case 1156: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.IndexOption -//line mysql_sql.y:7586 +//line mysql_sql.y:7620 { val := int64(yyDollar[3].item.(int64)) if val <= 0 { @@ -19720,10 +19895,10 @@ yydefault: yyLOCAL = io } yyVAL.union = yyLOCAL - case 1154: + case 1157: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.IndexOption -//line mysql_sql.y:7597 +//line mysql_sql.y:7631 { val := int64(yyDollar[3].item.(int64)) if val <= 0 { @@ -19735,10 +19910,10 @@ yydefault: yyLOCAL = io } yyVAL.union = yyLOCAL - case 1155: + case 1158: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.IndexOption -//line mysql_sql.y:7608 +//line mysql_sql.y:7642 { val := int64(yyDollar[3].item.(int64)) if val <= 0 { @@ -19750,36 +19925,36 @@ yydefault: yyLOCAL = io } yyVAL.union = yyLOCAL - case 1156: + case 1159: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.IndexOption -//line mysql_sql.y:7619 +//line mysql_sql.y:7653 { io := tree.NewIndexOption() io.HnswQuantization = yyDollar[3].str yyLOCAL = io } yyVAL.union = yyLOCAL - case 1157: + case 1160: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []*tree.KeyPart -//line mysql_sql.y:7628 +//line mysql_sql.y:7662 { yyLOCAL = []*tree.KeyPart{yyDollar[1].keyPartUnion()} } yyVAL.union = yyLOCAL - case 1158: + case 1161: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []*tree.KeyPart -//line mysql_sql.y:7632 +//line mysql_sql.y:7666 { yyLOCAL = append(yyDollar[1].keyPartsUnion(), yyDollar[3].keyPartUnion()) } yyVAL.union = yyLOCAL - case 1159: + case 1162: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.KeyPart -//line mysql_sql.y:7638 +//line mysql_sql.y:7672 { // Order is parsed but just ignored as MySQL dtree. var ColName = yyDollar[1].unresolvedNameUnion() @@ -19794,10 +19969,10 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1160: + case 1163: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.KeyPart -//line mysql_sql.y:7652 +//line mysql_sql.y:7686 { var ColName *tree.UnresolvedName var Length int @@ -19811,74 +19986,74 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1161: + case 1164: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.IndexType -//line mysql_sql.y:7666 +//line mysql_sql.y:7700 { yyLOCAL = tree.INDEX_TYPE_INVALID } yyVAL.union = yyLOCAL - case 1162: + case 1165: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.IndexType -//line mysql_sql.y:7670 +//line mysql_sql.y:7704 { yyLOCAL = tree.INDEX_TYPE_BTREE } yyVAL.union = yyLOCAL - case 1163: + case 1166: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.IndexType -//line mysql_sql.y:7674 +//line mysql_sql.y:7708 { yyLOCAL = tree.INDEX_TYPE_IVFFLAT } yyVAL.union = yyLOCAL - case 1164: + case 1167: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.IndexType -//line mysql_sql.y:7678 +//line mysql_sql.y:7712 { yyLOCAL = tree.INDEX_TYPE_HNSW } yyVAL.union = yyLOCAL - case 1165: + case 1168: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.IndexType -//line mysql_sql.y:7682 +//line mysql_sql.y:7716 { yyLOCAL = tree.INDEX_TYPE_MASTER } yyVAL.union = yyLOCAL - case 1166: + case 1169: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.IndexType -//line mysql_sql.y:7686 +//line mysql_sql.y:7720 { yyLOCAL = tree.INDEX_TYPE_HASH } yyVAL.union = yyLOCAL - case 1167: + case 1170: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.IndexType -//line mysql_sql.y:7690 +//line mysql_sql.y:7724 { yyLOCAL = tree.INDEX_TYPE_RTREE } yyVAL.union = yyLOCAL - case 1168: + case 1171: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.IndexType -//line mysql_sql.y:7694 +//line mysql_sql.y:7728 { yyLOCAL = tree.INDEX_TYPE_BSI } yyVAL.union = yyLOCAL - case 1169: + case 1172: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:7700 +//line mysql_sql.y:7734 { var IfNotExists = yyDollar[3].ifNotExistsUnion() var Name = tree.Identifier(yyDollar[4].str) @@ -19892,76 +20067,76 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1170: + case 1173: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.SubscriptionOption -//line mysql_sql.y:7715 +//line mysql_sql.y:7749 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1171: + case 1174: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.SubscriptionOption -//line mysql_sql.y:7719 +//line mysql_sql.y:7753 { var From = tree.Identifier(yyDollar[2].str) var Publication = tree.Identifier(yyDollar[4].cstrUnion().Compare()) yyLOCAL = tree.NewSubscriptionOption(From, Publication) } yyVAL.union = yyLOCAL - case 1174: + case 1177: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:7730 +//line mysql_sql.y:7764 { yyLOCAL = false } yyVAL.union = yyLOCAL - case 1175: + case 1178: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:7734 +//line mysql_sql.y:7768 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 1176: + case 1179: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL []tree.CreateOption -//line mysql_sql.y:7739 +//line mysql_sql.y:7773 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1177: + case 1180: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []tree.CreateOption -//line mysql_sql.y:7743 +//line mysql_sql.y:7777 { yyLOCAL = yyDollar[1].createOptionsUnion() } yyVAL.union = yyLOCAL - case 1178: + case 1181: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []tree.CreateOption -//line mysql_sql.y:7749 +//line mysql_sql.y:7783 { yyLOCAL = []tree.CreateOption{yyDollar[1].createOptionUnion()} } yyVAL.union = yyLOCAL - case 1179: + case 1182: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL []tree.CreateOption -//line mysql_sql.y:7753 +//line mysql_sql.y:7787 { yyLOCAL = append(yyDollar[1].createOptionsUnion(), yyDollar[2].createOptionUnion()) } yyVAL.union = yyLOCAL - case 1180: + case 1183: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.CreateOption -//line mysql_sql.y:7759 +//line mysql_sql.y:7793 { var IsDefault = yyDollar[1].defaultOptionalUnion() var Charset = yyDollar[4].str @@ -19971,10 +20146,10 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1181: + case 1184: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.CreateOption -//line mysql_sql.y:7768 +//line mysql_sql.y:7802 { var IsDefault = yyDollar[1].defaultOptionalUnion() var Collate = yyDollar[4].str @@ -19984,35 +20159,35 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1182: + case 1185: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.CreateOption -//line mysql_sql.y:7777 +//line mysql_sql.y:7811 { var Encrypt = yyDollar[4].str yyLOCAL = tree.NewCreateOptionEncryption(Encrypt) } yyVAL.union = yyLOCAL - case 1183: + case 1186: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:7783 +//line mysql_sql.y:7817 { yyLOCAL = false } yyVAL.union = yyLOCAL - case 1184: + case 1187: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:7787 +//line mysql_sql.y:7821 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 1185: + case 1188: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:7793 +//line mysql_sql.y:7827 { var TableName = yyDollar[4].tableNameUnion() var Options = yyDollar[7].connectorOptionsUnion() @@ -20022,18 +20197,18 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1186: + case 1189: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:7804 +//line mysql_sql.y:7838 { yyLOCAL = &tree.ShowConnectors{} } yyVAL.union = yyLOCAL - case 1187: + case 1190: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:7810 +//line mysql_sql.y:7844 { var taskID uint64 switch v := yyDollar[4].item.(type) { @@ -20050,10 +20225,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1188: + case 1191: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:7828 +//line mysql_sql.y:7862 { var taskID uint64 switch v := yyDollar[4].item.(type) { @@ -20070,10 +20245,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1189: + case 1192: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:7846 +//line mysql_sql.y:7880 { var taskID uint64 switch v := yyDollar[4].item.(type) { @@ -20090,10 +20265,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1190: + case 1193: yyDollar = yyS[yypt-9 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:7864 +//line mysql_sql.y:7898 { var Replace = yyDollar[2].sourceOptionalUnion() var IfNotExists = yyDollar[4].ifNotExistsUnion() @@ -20109,26 +20284,26 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1191: + case 1194: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:7880 +//line mysql_sql.y:7914 { yyLOCAL = false } yyVAL.union = yyLOCAL - case 1192: + case 1195: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:7884 +//line mysql_sql.y:7918 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 1193: + case 1196: yyDollar = yyS[yypt-11 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:7893 +//line mysql_sql.y:7927 { t := tree.NewCreateTable() t.Temporary = yyDollar[2].boolValUnion() @@ -20141,10 +20316,10 @@ yydefault: yyLOCAL = t } yyVAL.union = yyLOCAL - case 1194: + case 1197: yyDollar = yyS[yypt-9 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:7905 +//line mysql_sql.y:7939 { t := tree.NewCreateTable() t.IfNotExists = yyDollar[4].ifNotExistsUnion() @@ -20154,10 +20329,10 @@ yydefault: yyLOCAL = t } yyVAL.union = yyLOCAL - case 1195: + case 1198: yyDollar = yyS[yypt-11 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:7914 +//line mysql_sql.y:7948 { t := tree.NewCreateTable() t.IsClusterTable = true @@ -20170,10 +20345,10 @@ yydefault: yyLOCAL = t } yyVAL.union = yyLOCAL - case 1196: + case 1199: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:7926 +//line mysql_sql.y:7960 { t := tree.NewCreateTable() t.IsDynamicTable = true @@ -20184,10 +20359,10 @@ yydefault: yyLOCAL = t } yyVAL.union = yyLOCAL - case 1197: + case 1200: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:7936 +//line mysql_sql.y:7970 { t := tree.NewCreateTable() t.IsAsSelect = true @@ -20198,10 +20373,10 @@ yydefault: yyLOCAL = t } yyVAL.union = yyLOCAL - case 1198: + case 1201: yyDollar = yyS[yypt-9 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:7946 +//line mysql_sql.y:7980 { t := tree.NewCreateTable() t.IsAsSelect = true @@ -20213,10 +20388,10 @@ yydefault: yyLOCAL = t } yyVAL.union = yyLOCAL - case 1199: + case 1202: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:7957 +//line mysql_sql.y:7991 { t := tree.NewCreateTable() t.IsAsSelect = true @@ -20227,10 +20402,10 @@ yydefault: yyLOCAL = t } yyVAL.union = yyLOCAL - case 1200: + case 1203: yyDollar = yyS[yypt-10 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:7967 +//line mysql_sql.y:8001 { t := tree.NewCreateTable() t.IsAsSelect = true @@ -20242,10 +20417,10 @@ yydefault: yyLOCAL = t } yyVAL.union = yyLOCAL - case 1201: + case 1204: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:7978 +//line mysql_sql.y:8012 { t := tree.NewCreateTable() t.IsAsLike = true @@ -20254,10 +20429,10 @@ yydefault: yyLOCAL = t } yyVAL.union = yyLOCAL - case 1202: + case 1205: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:7986 +//line mysql_sql.y:8020 { t := tree.NewCreateTable() t.Temporary = yyDollar[2].boolValUnion() @@ -20267,19 +20442,19 @@ yydefault: yyLOCAL = t } yyVAL.union = yyLOCAL - case 1203: + case 1206: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.ExternParam -//line mysql_sql.y:7997 +//line mysql_sql.y:8031 { yyLOCAL = yyDollar[1].loadParamUnion() yyLOCAL.Tail = yyDollar[2].tailParamUnion() } yyVAL.union = yyLOCAL - case 1204: + case 1207: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.ExternParam -//line mysql_sql.y:8004 +//line mysql_sql.y:8038 { yyLOCAL = &tree.ExternParam{ ExParamConst: tree.ExParamConst{ @@ -20290,10 +20465,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1205: + case 1208: yyDollar = yyS[yypt-9 : yypt+1] var yyLOCAL *tree.ExternParam -//line mysql_sql.y:8014 +//line mysql_sql.y:8048 { yyLOCAL = &tree.ExternParam{ ExParamConst: tree.ExParamConst{ @@ -20307,10 +20482,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1206: + case 1209: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.ExternParam -//line mysql_sql.y:8027 +//line mysql_sql.y:8061 { yyLOCAL = &tree.ExternParam{ ExParamConst: tree.ExParamConst{ @@ -20319,10 +20494,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1207: + case 1210: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *tree.ExternParam -//line mysql_sql.y:8035 +//line mysql_sql.y:8069 { yyLOCAL = &tree.ExternParam{ ExParamConst: tree.ExParamConst{ @@ -20332,10 +20507,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1208: + case 1211: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.ExternParam -//line mysql_sql.y:8044 +//line mysql_sql.y:8078 { yyLOCAL = &tree.ExternParam{ ExParamConst: tree.ExParamConst{ @@ -20344,55 +20519,55 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1209: + case 1212: yyDollar = yyS[yypt-0 : yypt+1] -//line mysql_sql.y:8053 +//line mysql_sql.y:8087 { yyVAL.str = "" } - case 1210: + case 1213: yyDollar = yyS[yypt-4 : yypt+1] -//line mysql_sql.y:8057 +//line mysql_sql.y:8091 { yyVAL.str = yyDollar[4].str } - case 1211: + case 1214: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []string -//line mysql_sql.y:8063 +//line mysql_sql.y:8097 { yyLOCAL = yyDollar[1].strsUnion() } yyVAL.union = yyLOCAL - case 1212: + case 1215: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []string -//line mysql_sql.y:8067 +//line mysql_sql.y:8101 { yyLOCAL = append(yyDollar[1].strsUnion(), yyDollar[3].strsUnion()...) } yyVAL.union = yyLOCAL - case 1213: + case 1216: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL []string -//line mysql_sql.y:8072 +//line mysql_sql.y:8106 { yyLOCAL = []string{} } yyVAL.union = yyLOCAL - case 1214: + case 1217: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []string -//line mysql_sql.y:8076 +//line mysql_sql.y:8110 { yyLOCAL = append(yyLOCAL, yyDollar[1].str) yyLOCAL = append(yyLOCAL, yyDollar[3].str) } yyVAL.union = yyLOCAL - case 1215: + case 1218: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.TailParameter -//line mysql_sql.y:8083 +//line mysql_sql.y:8117 { yyLOCAL = &tree.TailParameter{ Charset: yyDollar[1].str, @@ -20404,22 +20579,22 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1216: + case 1219: yyDollar = yyS[yypt-0 : yypt+1] -//line mysql_sql.y:8095 +//line mysql_sql.y:8129 { yyVAL.str = "" } - case 1217: + case 1220: yyDollar = yyS[yypt-2 : yypt+1] -//line mysql_sql.y:8099 +//line mysql_sql.y:8133 { yyVAL.str = yyDollar[2].str } - case 1218: + case 1221: yyDollar = yyS[yypt-10 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:8105 +//line mysql_sql.y:8139 { var Name = yyDollar[4].tableNameUnion() var Type = yyDollar[5].columnTypeUnion() @@ -20441,10 +20616,10 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1219: + case 1222: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:8126 +//line mysql_sql.y:8160 { locale := "" fstr := "bigint" @@ -20459,44 +20634,44 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1220: + case 1223: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:8140 +//line mysql_sql.y:8174 { yyLOCAL = yyDollar[2].columnTypeUnion() } yyVAL.union = yyLOCAL - case 1221: + case 1224: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.TypeOption -//line mysql_sql.y:8144 +//line mysql_sql.y:8178 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1222: + case 1225: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.TypeOption -//line mysql_sql.y:8148 +//line mysql_sql.y:8182 { yyLOCAL = &tree.TypeOption{ Type: yyDollar[2].columnTypeUnion(), } } yyVAL.union = yyLOCAL - case 1223: + case 1226: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.IncrementByOption -//line mysql_sql.y:8154 +//line mysql_sql.y:8188 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1224: + case 1227: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.IncrementByOption -//line mysql_sql.y:8158 +//line mysql_sql.y:8192 { yyLOCAL = &tree.IncrementByOption{ Minus: false, @@ -20504,10 +20679,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1225: + case 1228: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.IncrementByOption -//line mysql_sql.y:8165 +//line mysql_sql.y:8199 { yyLOCAL = &tree.IncrementByOption{ Minus: false, @@ -20515,10 +20690,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1226: + case 1229: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.IncrementByOption -//line mysql_sql.y:8172 +//line mysql_sql.y:8206 { yyLOCAL = &tree.IncrementByOption{ Minus: true, @@ -20526,10 +20701,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1227: + case 1230: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.IncrementByOption -//line mysql_sql.y:8179 +//line mysql_sql.y:8213 { yyLOCAL = &tree.IncrementByOption{ Minus: true, @@ -20537,42 +20712,42 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1228: + case 1231: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:8186 +//line mysql_sql.y:8220 { yyLOCAL = false } yyVAL.union = yyLOCAL - case 1229: + case 1232: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:8190 +//line mysql_sql.y:8224 { yyLOCAL = false } yyVAL.union = yyLOCAL - case 1230: + case 1233: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:8194 +//line mysql_sql.y:8228 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 1231: + case 1234: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.MinValueOption -//line mysql_sql.y:8198 +//line mysql_sql.y:8232 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1232: + case 1235: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.MinValueOption -//line mysql_sql.y:8202 +//line mysql_sql.y:8236 { yyLOCAL = &tree.MinValueOption{ Minus: false, @@ -20580,10 +20755,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1233: + case 1236: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.MinValueOption -//line mysql_sql.y:8209 +//line mysql_sql.y:8243 { yyLOCAL = &tree.MinValueOption{ Minus: true, @@ -20591,18 +20766,18 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1234: + case 1237: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.MaxValueOption -//line mysql_sql.y:8216 +//line mysql_sql.y:8250 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1235: + case 1238: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.MaxValueOption -//line mysql_sql.y:8220 +//line mysql_sql.y:8254 { yyLOCAL = &tree.MaxValueOption{ Minus: false, @@ -20610,10 +20785,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1236: + case 1239: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.MaxValueOption -//line mysql_sql.y:8227 +//line mysql_sql.y:8261 { yyLOCAL = &tree.MaxValueOption{ Minus: true, @@ -20621,46 +20796,46 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1237: + case 1240: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.CycleOption -//line mysql_sql.y:8234 +//line mysql_sql.y:8268 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1238: + case 1241: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.CycleOption -//line mysql_sql.y:8238 +//line mysql_sql.y:8272 { yyLOCAL = &tree.CycleOption{ Cycle: false, } } yyVAL.union = yyLOCAL - case 1239: + case 1242: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.CycleOption -//line mysql_sql.y:8244 +//line mysql_sql.y:8278 { yyLOCAL = &tree.CycleOption{ Cycle: true, } } yyVAL.union = yyLOCAL - case 1240: + case 1243: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.StartWithOption -//line mysql_sql.y:8250 +//line mysql_sql.y:8284 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1241: + case 1244: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.StartWithOption -//line mysql_sql.y:8254 +//line mysql_sql.y:8288 { yyLOCAL = &tree.StartWithOption{ Minus: false, @@ -20668,10 +20843,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1242: + case 1245: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.StartWithOption -//line mysql_sql.y:8261 +//line mysql_sql.y:8295 { yyLOCAL = &tree.StartWithOption{ Minus: false, @@ -20679,10 +20854,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1243: + case 1246: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.StartWithOption -//line mysql_sql.y:8268 +//line mysql_sql.y:8302 { yyLOCAL = &tree.StartWithOption{ Minus: true, @@ -20690,10 +20865,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1244: + case 1247: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.StartWithOption -//line mysql_sql.y:8275 +//line mysql_sql.y:8309 { yyLOCAL = &tree.StartWithOption{ Minus: true, @@ -20701,58 +20876,58 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1245: + case 1248: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:8282 +//line mysql_sql.y:8316 { yyLOCAL = false } yyVAL.union = yyLOCAL - case 1246: + case 1249: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:8286 +//line mysql_sql.y:8320 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 1247: + case 1250: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:8291 +//line mysql_sql.y:8325 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 1248: + case 1251: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:8295 +//line mysql_sql.y:8329 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 1249: + case 1252: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:8299 +//line mysql_sql.y:8333 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 1250: + case 1253: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.PartitionOption -//line mysql_sql.y:8304 +//line mysql_sql.y:8338 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1251: + case 1254: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.PartitionOption -//line mysql_sql.y:8308 +//line mysql_sql.y:8342 { yyDollar[3].partitionByUnion().Num = uint64(yyDollar[4].int64ValUnion()) var PartBy = yyDollar[3].partitionByUnion() @@ -20765,18 +20940,18 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1252: + case 1255: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.ClusterByOption -//line mysql_sql.y:8321 +//line mysql_sql.y:8355 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1253: + case 1256: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.ClusterByOption -//line mysql_sql.y:8325 +//line mysql_sql.y:8359 { var ColumnList = []*tree.UnresolvedName{yyDollar[3].unresolvedNameUnion()} yyLOCAL = tree.NewClusterByOption( @@ -20785,10 +20960,10 @@ yydefault: } yyVAL.union = yyLOCAL - case 1254: + case 1257: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *tree.ClusterByOption -//line mysql_sql.y:8333 +//line mysql_sql.y:8367 { var ColumnList = yyDollar[4].unresolveNamesUnion() yyLOCAL = tree.NewClusterByOption( @@ -20796,18 +20971,18 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1255: + case 1258: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.PartitionBy -//line mysql_sql.y:8341 +//line mysql_sql.y:8375 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1256: + case 1259: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.PartitionBy -//line mysql_sql.y:8345 +//line mysql_sql.y:8379 { var IsSubPartition = true var PType = yyDollar[3].partitionByUnion() @@ -20819,42 +20994,42 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1257: + case 1260: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL []*tree.Partition -//line mysql_sql.y:8357 +//line mysql_sql.y:8391 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1258: + case 1261: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []*tree.Partition -//line mysql_sql.y:8361 +//line mysql_sql.y:8395 { yyLOCAL = yyDollar[2].partitionsUnion() } yyVAL.union = yyLOCAL - case 1259: + case 1262: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []*tree.Partition -//line mysql_sql.y:8367 +//line mysql_sql.y:8401 { yyLOCAL = []*tree.Partition{yyDollar[1].partitionUnion()} } yyVAL.union = yyLOCAL - case 1260: + case 1263: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []*tree.Partition -//line mysql_sql.y:8371 +//line mysql_sql.y:8405 { yyLOCAL = append(yyDollar[1].partitionsUnion(), yyDollar[3].partitionUnion()) } yyVAL.union = yyLOCAL - case 1261: + case 1264: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.Partition -//line mysql_sql.y:8377 +//line mysql_sql.y:8411 { var Name = tree.Identifier(yyDollar[2].cstrUnion().Compare()) var Values = yyDollar[3].valuesUnion() @@ -20868,10 +21043,10 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1262: + case 1265: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *tree.Partition -//line mysql_sql.y:8390 +//line mysql_sql.y:8424 { var Name = tree.Identifier(yyDollar[2].cstrUnion().Compare()) var Values = yyDollar[3].valuesUnion() @@ -20885,42 +21060,42 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1263: + case 1266: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL []*tree.SubPartition -//line mysql_sql.y:8404 +//line mysql_sql.y:8438 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1264: + case 1267: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []*tree.SubPartition -//line mysql_sql.y:8408 +//line mysql_sql.y:8442 { yyLOCAL = yyDollar[2].subPartitionsUnion() } yyVAL.union = yyLOCAL - case 1265: + case 1268: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []*tree.SubPartition -//line mysql_sql.y:8414 +//line mysql_sql.y:8448 { yyLOCAL = []*tree.SubPartition{yyDollar[1].subPartitionUnion()} } yyVAL.union = yyLOCAL - case 1266: + case 1269: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []*tree.SubPartition -//line mysql_sql.y:8418 +//line mysql_sql.y:8452 { yyLOCAL = append(yyDollar[1].subPartitionsUnion(), yyDollar[3].subPartitionUnion()) } yyVAL.union = yyLOCAL - case 1267: + case 1270: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.SubPartition -//line mysql_sql.y:8424 +//line mysql_sql.y:8458 { var Name = tree.Identifier(yyDollar[2].cstrUnion().Compare()) var Options []tree.TableOption @@ -20930,10 +21105,10 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1268: + case 1271: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.SubPartition -//line mysql_sql.y:8433 +//line mysql_sql.y:8467 { var Name = tree.Identifier(yyDollar[2].cstrUnion().Compare()) var Options = yyDollar[3].tableOptionsUnion() @@ -20943,53 +21118,53 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1269: + case 1272: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []tree.TableOption -//line mysql_sql.y:8444 +//line mysql_sql.y:8478 { yyLOCAL = []tree.TableOption{yyDollar[1].tableOptionUnion()} } yyVAL.union = yyLOCAL - case 1270: + case 1273: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL []tree.TableOption -//line mysql_sql.y:8448 +//line mysql_sql.y:8482 { yyLOCAL = append(yyDollar[1].tableOptionsUnion(), yyDollar[2].tableOptionUnion()) } yyVAL.union = yyLOCAL - case 1271: + case 1274: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.Values -//line mysql_sql.y:8453 +//line mysql_sql.y:8487 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1272: + case 1275: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Values -//line mysql_sql.y:8457 +//line mysql_sql.y:8491 { expr := tree.NewMaxValue() var valueList = tree.Exprs{expr} yyLOCAL = tree.NewValuesLessThan(valueList) } yyVAL.union = yyLOCAL - case 1273: + case 1276: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL tree.Values -//line mysql_sql.y:8463 +//line mysql_sql.y:8497 { var valueList = yyDollar[5].exprsUnion() yyLOCAL = tree.NewValuesLessThan(valueList) } yyVAL.union = yyLOCAL - case 1274: + case 1277: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.Values -//line mysql_sql.y:8468 +//line mysql_sql.y:8502 { var valueList = yyDollar[4].exprsUnion() yyLOCAL = tree.NewValuesIn( @@ -20997,18 +21172,18 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1275: + case 1278: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL int64 -//line mysql_sql.y:8476 +//line mysql_sql.y:8510 { yyLOCAL = 0 } yyVAL.union = yyLOCAL - case 1276: + case 1279: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL int64 -//line mysql_sql.y:8480 +//line mysql_sql.y:8514 { res := yyDollar[2].item.(int64) if res == 0 { @@ -21018,18 +21193,18 @@ yydefault: yyLOCAL = res } yyVAL.union = yyLOCAL - case 1277: + case 1280: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL int64 -//line mysql_sql.y:8490 +//line mysql_sql.y:8524 { yyLOCAL = 0 } yyVAL.union = yyLOCAL - case 1278: + case 1281: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL int64 -//line mysql_sql.y:8494 +//line mysql_sql.y:8528 { res := yyDollar[2].item.(int64) if res == 0 { @@ -21039,10 +21214,10 @@ yydefault: yyLOCAL = res } yyVAL.union = yyLOCAL - case 1279: + case 1282: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.PartitionBy -//line mysql_sql.y:8505 +//line mysql_sql.y:8539 { rangeTyp := tree.NewRangeType() rangeTyp.Expr = yyDollar[3].exprUnion() @@ -21051,10 +21226,10 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1280: + case 1283: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *tree.PartitionBy -//line mysql_sql.y:8513 +//line mysql_sql.y:8547 { rangeTyp := tree.NewRangeType() rangeTyp.ColumnList = yyDollar[4].unresolveNamesUnion() @@ -21063,10 +21238,10 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1281: + case 1284: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.PartitionBy -//line mysql_sql.y:8521 +//line mysql_sql.y:8555 { listTyp := tree.NewListType() listTyp.Expr = yyDollar[3].exprUnion() @@ -21075,10 +21250,10 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1282: + case 1285: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *tree.PartitionBy -//line mysql_sql.y:8529 +//line mysql_sql.y:8563 { listTyp := tree.NewListType() listTyp.ColumnList = yyDollar[4].unresolveNamesUnion() @@ -21087,10 +21262,10 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1284: + case 1287: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *tree.PartitionBy -//line mysql_sql.y:8540 +//line mysql_sql.y:8574 { keyTyp := tree.NewKeyType() keyTyp.Linear = yyDollar[1].boolValUnion() @@ -21100,10 +21275,10 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1285: + case 1288: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.PartitionBy -//line mysql_sql.y:8549 +//line mysql_sql.y:8583 { keyTyp := tree.NewKeyType() keyTyp.Linear = yyDollar[1].boolValUnion() @@ -21114,10 +21289,10 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1286: + case 1289: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *tree.PartitionBy -//line mysql_sql.y:8559 +//line mysql_sql.y:8593 { Linear := yyDollar[1].boolValUnion() Expr := yyDollar[4].exprUnion() @@ -21127,58 +21302,58 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1287: + case 1290: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL int64 -//line mysql_sql.y:8569 +//line mysql_sql.y:8603 { yyLOCAL = 2 } yyVAL.union = yyLOCAL - case 1288: + case 1291: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL int64 -//line mysql_sql.y:8573 +//line mysql_sql.y:8607 { yyLOCAL = yyDollar[3].item.(int64) } yyVAL.union = yyLOCAL - case 1289: + case 1292: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:8578 +//line mysql_sql.y:8612 { yyLOCAL = false } yyVAL.union = yyLOCAL - case 1290: + case 1293: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:8582 +//line mysql_sql.y:8616 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 1291: + case 1294: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []*tree.ConnectorOption -//line mysql_sql.y:8588 +//line mysql_sql.y:8622 { yyLOCAL = []*tree.ConnectorOption{yyDollar[1].connectorOptionUnion()} } yyVAL.union = yyLOCAL - case 1292: + case 1295: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []*tree.ConnectorOption -//line mysql_sql.y:8592 +//line mysql_sql.y:8626 { yyLOCAL = append(yyDollar[1].connectorOptionsUnion(), yyDollar[3].connectorOptionUnion()) } yyVAL.union = yyLOCAL - case 1293: + case 1296: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.ConnectorOption -//line mysql_sql.y:8598 +//line mysql_sql.y:8632 { var Key = tree.Identifier(yyDollar[1].cstrUnion().Compare()) var Val = yyDollar[3].exprUnion() @@ -21188,10 +21363,10 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1294: + case 1297: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.ConnectorOption -//line mysql_sql.y:8607 +//line mysql_sql.y:8641 { var Key = tree.Identifier(yyDollar[1].str) var Val = yyDollar[3].exprUnion() @@ -21201,42 +21376,42 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1295: + case 1298: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL []tree.TableOption -//line mysql_sql.y:8617 +//line mysql_sql.y:8651 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1296: + case 1299: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL []tree.TableOption -//line mysql_sql.y:8621 +//line mysql_sql.y:8655 { yyLOCAL = yyDollar[3].tableOptionsUnion() } yyVAL.union = yyLOCAL - case 1297: + case 1300: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []tree.TableOption -//line mysql_sql.y:8627 +//line mysql_sql.y:8661 { yyLOCAL = []tree.TableOption{yyDollar[1].tableOptionUnion()} } yyVAL.union = yyLOCAL - case 1298: + case 1301: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []tree.TableOption -//line mysql_sql.y:8631 +//line mysql_sql.y:8665 { yyLOCAL = append(yyDollar[1].tableOptionsUnion(), yyDollar[3].tableOptionUnion()) } yyVAL.union = yyLOCAL - case 1299: + case 1302: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:8637 +//line mysql_sql.y:8671 { var Key = tree.Identifier(yyDollar[1].cstrUnion().Compare()) var Val = yyDollar[3].exprUnion() @@ -21246,10 +21421,10 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1300: + case 1303: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:8646 +//line mysql_sql.y:8680 { var Key = tree.Identifier(yyDollar[1].str) var Val = yyDollar[3].exprUnion() @@ -21259,348 +21434,348 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1301: + case 1304: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL []tree.TableOption -//line mysql_sql.y:8656 +//line mysql_sql.y:8690 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1302: + case 1305: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []tree.TableOption -//line mysql_sql.y:8660 +//line mysql_sql.y:8694 { yyLOCAL = yyDollar[1].tableOptionsUnion() } yyVAL.union = yyLOCAL - case 1303: + case 1306: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []tree.TableOption -//line mysql_sql.y:8666 +//line mysql_sql.y:8700 { yyLOCAL = []tree.TableOption{yyDollar[1].tableOptionUnion()} } yyVAL.union = yyLOCAL - case 1304: + case 1307: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []tree.TableOption -//line mysql_sql.y:8670 +//line mysql_sql.y:8704 { yyLOCAL = append(yyDollar[1].tableOptionsUnion(), yyDollar[3].tableOptionUnion()) } yyVAL.union = yyLOCAL - case 1305: + case 1308: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL []tree.TableOption -//line mysql_sql.y:8674 +//line mysql_sql.y:8708 { yyLOCAL = append(yyDollar[1].tableOptionsUnion(), yyDollar[2].tableOptionUnion()) } yyVAL.union = yyLOCAL - case 1306: + case 1309: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:8680 +//line mysql_sql.y:8714 { yyLOCAL = tree.NewTableOptionAUTOEXTEND_SIZE(uint64(yyDollar[3].item.(int64))) } yyVAL.union = yyLOCAL - case 1307: + case 1310: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:8684 +//line mysql_sql.y:8718 { yyLOCAL = tree.NewTableOptionAutoIncrement(uint64(yyDollar[3].item.(int64))) } yyVAL.union = yyLOCAL - case 1308: + case 1311: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:8688 +//line mysql_sql.y:8722 { yyLOCAL = tree.NewTableOptionAvgRowLength(uint64(yyDollar[3].item.(int64))) } yyVAL.union = yyLOCAL - case 1309: + case 1312: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:8692 +//line mysql_sql.y:8726 { yyLOCAL = tree.NewTableOptionCharset(yyDollar[4].str) } yyVAL.union = yyLOCAL - case 1310: + case 1313: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:8696 +//line mysql_sql.y:8730 { yyLOCAL = tree.NewTableOptionCollate(yyDollar[4].str) } yyVAL.union = yyLOCAL - case 1311: + case 1314: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:8700 +//line mysql_sql.y:8734 { yyLOCAL = tree.NewTableOptionChecksum(uint64(yyDollar[3].item.(int64))) } yyVAL.union = yyLOCAL - case 1312: + case 1315: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:8704 +//line mysql_sql.y:8738 { str := util.DealCommentString(yyDollar[3].str) yyLOCAL = tree.NewTableOptionComment(str) } yyVAL.union = yyLOCAL - case 1313: + case 1316: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:8709 +//line mysql_sql.y:8743 { yyLOCAL = tree.NewTableOptionCompression(yyDollar[3].str) } yyVAL.union = yyLOCAL - case 1314: + case 1317: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:8713 +//line mysql_sql.y:8747 { yyLOCAL = tree.NewTableOptionConnection(yyDollar[3].str) } yyVAL.union = yyLOCAL - case 1315: + case 1318: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:8717 +//line mysql_sql.y:8751 { yyLOCAL = tree.NewTableOptionDataDirectory(yyDollar[4].str) } yyVAL.union = yyLOCAL - case 1316: + case 1319: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:8721 +//line mysql_sql.y:8755 { yyLOCAL = tree.NewTableOptionIndexDirectory(yyDollar[4].str) } yyVAL.union = yyLOCAL - case 1317: + case 1320: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:8725 +//line mysql_sql.y:8759 { yyLOCAL = tree.NewTableOptionDelayKeyWrite(uint64(yyDollar[3].item.(int64))) } yyVAL.union = yyLOCAL - case 1318: + case 1321: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:8729 +//line mysql_sql.y:8763 { yyLOCAL = tree.NewTableOptionEncryption(yyDollar[3].str) } yyVAL.union = yyLOCAL - case 1319: + case 1322: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:8733 +//line mysql_sql.y:8767 { yyLOCAL = tree.NewTableOptionEngine(yyDollar[3].str) } yyVAL.union = yyLOCAL - case 1320: + case 1323: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:8737 +//line mysql_sql.y:8771 { yyLOCAL = tree.NewTableOptionEngineAttr(yyDollar[3].str) } yyVAL.union = yyLOCAL - case 1321: + case 1324: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:8741 +//line mysql_sql.y:8775 { yyLOCAL = tree.NewTableOptionInsertMethod(yyDollar[3].str) } yyVAL.union = yyLOCAL - case 1322: + case 1325: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:8745 +//line mysql_sql.y:8779 { yyLOCAL = tree.NewTableOptionKeyBlockSize(uint64(yyDollar[3].item.(int64))) } yyVAL.union = yyLOCAL - case 1323: + case 1326: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:8749 +//line mysql_sql.y:8783 { yyLOCAL = tree.NewTableOptionMaxRows(uint64(yyDollar[3].item.(int64))) } yyVAL.union = yyLOCAL - case 1324: + case 1327: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:8753 +//line mysql_sql.y:8787 { yyLOCAL = tree.NewTableOptionMinRows(uint64(yyDollar[3].item.(int64))) } yyVAL.union = yyLOCAL - case 1325: + case 1328: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:8757 +//line mysql_sql.y:8791 { t := tree.NewTableOptionPackKeys() t.Value = yyDollar[3].item.(int64) yyLOCAL = t } yyVAL.union = yyLOCAL - case 1326: + case 1329: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:8763 +//line mysql_sql.y:8797 { t := tree.NewTableOptionPackKeys() t.Default = true yyLOCAL = t } yyVAL.union = yyLOCAL - case 1327: + case 1330: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:8769 +//line mysql_sql.y:8803 { yyLOCAL = tree.NewTableOptionPassword(yyDollar[3].str) } yyVAL.union = yyLOCAL - case 1328: + case 1331: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:8773 +//line mysql_sql.y:8807 { yyLOCAL = tree.NewTableOptionRowFormat(yyDollar[3].rowFormatTypeUnion()) } yyVAL.union = yyLOCAL - case 1329: + case 1332: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:8777 +//line mysql_sql.y:8811 { yyLOCAL = tree.NewTTableOptionStartTrans(true) } yyVAL.union = yyLOCAL - case 1330: + case 1333: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:8781 +//line mysql_sql.y:8815 { yyLOCAL = tree.NewTTableOptionSecondaryEngineAttr(yyDollar[3].str) } yyVAL.union = yyLOCAL - case 1331: + case 1334: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:8785 +//line mysql_sql.y:8819 { t := tree.NewTableOptionStatsAutoRecalc() t.Value = uint64(yyDollar[3].item.(int64)) yyLOCAL = t } yyVAL.union = yyLOCAL - case 1332: + case 1335: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:8791 +//line mysql_sql.y:8825 { t := tree.NewTableOptionStatsAutoRecalc() t.Default = true yyLOCAL = t } yyVAL.union = yyLOCAL - case 1333: + case 1336: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:8797 +//line mysql_sql.y:8831 { t := tree.NewTableOptionStatsPersistent() t.Value = uint64(yyDollar[3].item.(int64)) yyLOCAL = t } yyVAL.union = yyLOCAL - case 1334: + case 1337: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:8803 +//line mysql_sql.y:8837 { t := tree.NewTableOptionStatsPersistent() t.Default = true yyLOCAL = t } yyVAL.union = yyLOCAL - case 1335: + case 1338: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:8809 +//line mysql_sql.y:8843 { t := tree.NewTableOptionStatsSamplePages() t.Value = uint64(yyDollar[3].item.(int64)) yyLOCAL = t } yyVAL.union = yyLOCAL - case 1336: + case 1339: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:8815 +//line mysql_sql.y:8849 { t := tree.NewTableOptionStatsSamplePages() t.Default = true yyLOCAL = t } yyVAL.union = yyLOCAL - case 1337: + case 1340: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:8821 +//line mysql_sql.y:8855 { yyLOCAL = tree.NewTableOptionTablespace(yyDollar[3].cstrUnion().Compare(), "") } yyVAL.union = yyLOCAL - case 1338: + case 1341: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:8825 +//line mysql_sql.y:8859 { yyLOCAL = tree.NewTableOptionTablespace("", yyDollar[1].str) } yyVAL.union = yyLOCAL - case 1339: + case 1342: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:8829 +//line mysql_sql.y:8863 { yyLOCAL = tree.NewTableOptionUnion(yyDollar[4].tableNamesUnion()) } yyVAL.union = yyLOCAL - case 1340: + case 1343: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:8833 +//line mysql_sql.y:8867 { var Preperties = yyDollar[3].propertiesUnion() yyLOCAL = tree.NewTableOptionProperties(Preperties) } yyVAL.union = yyLOCAL - case 1341: + case 1344: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:8838 +//line mysql_sql.y:8872 { var retentionPeriod = uint64(yyDollar[4].item.(int64)) var retentionUnit = strings.ToLower(yyDollar[5].str) @@ -21610,26 +21785,26 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1342: + case 1345: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []tree.Property -//line mysql_sql.y:8849 +//line mysql_sql.y:8883 { yyLOCAL = []tree.Property{yyDollar[1].propertyUnion()} } yyVAL.union = yyLOCAL - case 1343: + case 1346: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []tree.Property -//line mysql_sql.y:8853 +//line mysql_sql.y:8887 { yyLOCAL = append(yyDollar[1].propertiesUnion(), yyDollar[3].propertyUnion()) } yyVAL.union = yyLOCAL - case 1344: + case 1347: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Property -//line mysql_sql.y:8859 +//line mysql_sql.y:8893 { var Key = yyDollar[1].str var Value = yyDollar[3].str @@ -21639,96 +21814,96 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1345: + case 1348: yyDollar = yyS[yypt-2 : yypt+1] -//line mysql_sql.y:8870 +//line mysql_sql.y:8904 { yyVAL.str = " " + yyDollar[1].str + " " + yyDollar[2].str } - case 1346: + case 1349: yyDollar = yyS[yypt-2 : yypt+1] -//line mysql_sql.y:8874 +//line mysql_sql.y:8908 { yyVAL.str = " " + yyDollar[1].str + " " + yyDollar[2].str } - case 1347: + case 1350: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.RowFormatType -//line mysql_sql.y:8880 +//line mysql_sql.y:8914 { yyLOCAL = tree.ROW_FORMAT_DEFAULT } yyVAL.union = yyLOCAL - case 1348: + case 1351: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.RowFormatType -//line mysql_sql.y:8884 +//line mysql_sql.y:8918 { yyLOCAL = tree.ROW_FORMAT_DYNAMIC } yyVAL.union = yyLOCAL - case 1349: + case 1352: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.RowFormatType -//line mysql_sql.y:8888 +//line mysql_sql.y:8922 { yyLOCAL = tree.ROW_FORMAT_FIXED } yyVAL.union = yyLOCAL - case 1350: + case 1353: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.RowFormatType -//line mysql_sql.y:8892 +//line mysql_sql.y:8926 { yyLOCAL = tree.ROW_FORMAT_COMPRESSED } yyVAL.union = yyLOCAL - case 1351: + case 1354: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.RowFormatType -//line mysql_sql.y:8896 +//line mysql_sql.y:8930 { yyLOCAL = tree.ROW_FORMAT_REDUNDANT } yyVAL.union = yyLOCAL - case 1352: + case 1355: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.RowFormatType -//line mysql_sql.y:8900 +//line mysql_sql.y:8934 { yyLOCAL = tree.ROW_FORMAT_COMPACT } yyVAL.union = yyLOCAL - case 1357: + case 1360: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.TableNames -//line mysql_sql.y:8914 +//line mysql_sql.y:8948 { yyLOCAL = tree.TableNames{yyDollar[1].tableNameUnion()} } yyVAL.union = yyLOCAL - case 1358: + case 1361: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableNames -//line mysql_sql.y:8918 +//line mysql_sql.y:8952 { yyLOCAL = append(yyDollar[1].tableNamesUnion(), yyDollar[3].tableNameUnion()) } yyVAL.union = yyLOCAL - case 1359: + case 1362: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.TableName -//line mysql_sql.y:8927 +//line mysql_sql.y:8961 { tblName := yylex.(*Lexer).GetDbOrTblName(yyDollar[1].cstrUnion().Origin()) prefix := tree.ObjectNamePrefix{ExplicitSchema: false} yyLOCAL = tree.NewTableName(tree.Identifier(tblName), prefix, yyDollar[2].atTimeStampUnion()) } yyVAL.union = yyLOCAL - case 1360: + case 1363: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.TableName -//line mysql_sql.y:8933 +//line mysql_sql.y:8967 { dbName := yylex.(*Lexer).GetDbOrTblName(yyDollar[1].cstrUnion().Origin()) tblName := yylex.(*Lexer).GetDbOrTblName(yyDollar[3].cstrUnion().Origin()) @@ -21736,18 +21911,18 @@ yydefault: yyLOCAL = tree.NewTableName(tree.Identifier(tblName), prefix, yyDollar[4].atTimeStampUnion()) } yyVAL.union = yyLOCAL - case 1361: + case 1364: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.AtTimeStamp -//line mysql_sql.y:8941 +//line mysql_sql.y:8975 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1362: + case 1365: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *tree.AtTimeStamp -//line mysql_sql.y:8945 +//line mysql_sql.y:8979 { yyLOCAL = &tree.AtTimeStamp{ Type: tree.ATTIMESTAMPTIME, @@ -21755,10 +21930,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1363: + case 1366: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *tree.AtTimeStamp -//line mysql_sql.y:8952 +//line mysql_sql.y:8986 { var str = yyDollar[4].cstrUnion().Compare() yyLOCAL = &tree.AtTimeStamp{ @@ -21768,10 +21943,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1364: + case 1367: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *tree.AtTimeStamp -//line mysql_sql.y:8961 +//line mysql_sql.y:8995 { yyLOCAL = &tree.AtTimeStamp{ Type: tree.ATTIMESTAMPSNAPSHOT, @@ -21780,10 +21955,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1365: + case 1368: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *tree.AtTimeStamp -//line mysql_sql.y:8969 +//line mysql_sql.y:9003 { yyLOCAL = &tree.AtTimeStamp{ Type: tree.ATMOTIMESTAMP, @@ -21791,10 +21966,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1366: + case 1369: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.AtTimeStamp -//line mysql_sql.y:8976 +//line mysql_sql.y:9010 { yyLOCAL = &tree.AtTimeStamp{ Type: tree.ASOFTIMESTAMP, @@ -21802,74 +21977,74 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1367: + case 1370: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.TableDefs -//line mysql_sql.y:8984 +//line mysql_sql.y:9018 { yyLOCAL = tree.TableDefs(nil) } yyVAL.union = yyLOCAL - case 1369: + case 1372: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.TableDefs -//line mysql_sql.y:8991 +//line mysql_sql.y:9025 { yyLOCAL = tree.TableDefs{yyDollar[1].tableDefUnion()} } yyVAL.union = yyLOCAL - case 1370: + case 1373: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableDefs -//line mysql_sql.y:8995 +//line mysql_sql.y:9029 { yyLOCAL = append(yyDollar[1].tableDefsUnion(), yyDollar[3].tableDefUnion()) } yyVAL.union = yyLOCAL - case 1371: + case 1374: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.TableDef -//line mysql_sql.y:9001 +//line mysql_sql.y:9035 { yyLOCAL = tree.TableDef(yyDollar[1].columnTableDefUnion()) } yyVAL.union = yyLOCAL - case 1372: + case 1375: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.TableDef -//line mysql_sql.y:9005 +//line mysql_sql.y:9039 { yyLOCAL = yyDollar[1].tableDefUnion() } yyVAL.union = yyLOCAL - case 1373: + case 1376: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.TableDef -//line mysql_sql.y:9009 +//line mysql_sql.y:9043 { yyLOCAL = yyDollar[1].tableDefUnion() } yyVAL.union = yyLOCAL - case 1374: + case 1377: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.TableDef -//line mysql_sql.y:9015 +//line mysql_sql.y:9049 { yyLOCAL = yyDollar[1].tableDefUnion() } yyVAL.union = yyLOCAL - case 1375: + case 1378: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.TableDef -//line mysql_sql.y:9019 +//line mysql_sql.y:9053 { yyLOCAL = yyDollar[1].tableDefUnion() } yyVAL.union = yyLOCAL - case 1376: + case 1379: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL tree.TableDef -//line mysql_sql.y:9025 +//line mysql_sql.y:9059 { var KeyParts = yyDollar[5].keyPartsUnion() var Name = yyDollar[3].str @@ -21883,10 +22058,10 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1377: + case 1380: yyDollar = yyS[yypt-9 : yypt+1] var yyLOCAL tree.TableDef -//line mysql_sql.y:9038 +//line mysql_sql.y:9072 { var KeyParts = yyDollar[5].keyPartsUnion() var Name = yyDollar[3].str @@ -21900,10 +22075,10 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1378: + case 1381: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL tree.TableDef -//line mysql_sql.y:9051 +//line mysql_sql.y:9085 { keyTyp := tree.INDEX_TYPE_INVALID if yyDollar[3].strsUnion()[1] != "" { @@ -21945,10 +22120,10 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1379: + case 1382: yyDollar = yyS[yypt-9 : yypt+1] var yyLOCAL tree.TableDef -//line mysql_sql.y:9092 +//line mysql_sql.y:9126 { keyTyp := tree.INDEX_TYPE_INVALID if yyDollar[3].strsUnion()[1] != "" { @@ -21989,10 +22164,10 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1380: + case 1383: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.TableDef -//line mysql_sql.y:9134 +//line mysql_sql.y:9168 { if yyDollar[1].str != "" { switch v := yyDollar[2].tableDefUnion().(type) { @@ -22007,18 +22182,18 @@ yydefault: yyLOCAL = yyDollar[2].tableDefUnion() } yyVAL.union = yyLOCAL - case 1381: + case 1384: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.TableDef -//line mysql_sql.y:9148 +//line mysql_sql.y:9182 { yyLOCAL = yyDollar[1].tableDefUnion() } yyVAL.union = yyLOCAL - case 1382: + case 1385: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL tree.TableDef -//line mysql_sql.y:9154 +//line mysql_sql.y:9188 { var KeyParts = yyDollar[5].keyPartsUnion() var Name = yyDollar[3].strsUnion()[0] @@ -22032,10 +22207,10 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1383: + case 1386: yyDollar = yyS[yypt-9 : yypt+1] var yyLOCAL tree.TableDef -//line mysql_sql.y:9167 +//line mysql_sql.y:9201 { var KeyParts = yyDollar[5].keyPartsUnion() var Name = yyDollar[3].strsUnion()[0] @@ -22049,10 +22224,10 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1384: + case 1387: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL tree.TableDef -//line mysql_sql.y:9180 +//line mysql_sql.y:9214 { var KeyParts = yyDollar[5].keyPartsUnion() var Name = yyDollar[3].strsUnion()[0] @@ -22066,10 +22241,10 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1385: + case 1388: yyDollar = yyS[yypt-9 : yypt+1] var yyLOCAL tree.TableDef -//line mysql_sql.y:9193 +//line mysql_sql.y:9227 { var KeyParts = yyDollar[5].keyPartsUnion() var Name = yyDollar[3].strsUnion()[0] @@ -22083,10 +22258,10 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1386: + case 1389: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL tree.TableDef -//line mysql_sql.y:9206 +//line mysql_sql.y:9240 { var IfNotExists = yyDollar[3].ifNotExistsUnion() var KeyParts = yyDollar[6].keyPartsUnion() @@ -22102,10 +22277,10 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1387: + case 1390: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.TableDef -//line mysql_sql.y:9221 +//line mysql_sql.y:9255 { var Expr = yyDollar[3].exprUnion() var Enforced = yyDollar[5].boolValUnion() @@ -22115,327 +22290,327 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1388: + case 1391: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:9231 +//line mysql_sql.y:9265 { yyLOCAL = false } yyVAL.union = yyLOCAL - case 1390: + case 1393: yyDollar = yyS[yypt-0 : yypt+1] -//line mysql_sql.y:9237 +//line mysql_sql.y:9271 { yyVAL.str = "" } - case 1391: + case 1394: yyDollar = yyS[yypt-1 : yypt+1] -//line mysql_sql.y:9241 +//line mysql_sql.y:9275 { yyVAL.str = yyDollar[1].str } - case 1394: + case 1397: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []string -//line mysql_sql.y:9251 +//line mysql_sql.y:9285 { yyLOCAL = make([]string, 2) yyLOCAL[0] = yyDollar[1].str yyLOCAL[1] = "" } yyVAL.union = yyLOCAL - case 1395: + case 1398: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []string -//line mysql_sql.y:9257 +//line mysql_sql.y:9291 { yyLOCAL = make([]string, 2) yyLOCAL[0] = yyDollar[1].str yyLOCAL[1] = yyDollar[3].str } yyVAL.union = yyLOCAL - case 1396: + case 1399: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []string -//line mysql_sql.y:9263 +//line mysql_sql.y:9297 { yyLOCAL = make([]string, 2) yyLOCAL[0] = yyDollar[1].cstrUnion().Compare() yyLOCAL[1] = yyDollar[3].str } yyVAL.union = yyLOCAL - case 1408: + case 1411: yyDollar = yyS[yypt-0 : yypt+1] -//line mysql_sql.y:9285 +//line mysql_sql.y:9319 { yyVAL.str = "" } - case 1409: + case 1412: yyDollar = yyS[yypt-1 : yypt+1] -//line mysql_sql.y:9289 +//line mysql_sql.y:9323 { yyVAL.str = yyDollar[1].cstrUnion().Compare() } - case 1410: + case 1413: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.ColumnTableDef -//line mysql_sql.y:9295 +//line mysql_sql.y:9329 { yyLOCAL = tree.NewColumnTableDef(yyDollar[1].unresolvedNameUnion(), yyDollar[2].columnTypeUnion(), yyDollar[3].columnAttributesUnion()) } yyVAL.union = yyLOCAL - case 1411: + case 1414: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.UnresolvedName -//line mysql_sql.y:9301 +//line mysql_sql.y:9335 { yyLOCAL = tree.NewUnresolvedName(yyDollar[1].cstrUnion()) } yyVAL.union = yyLOCAL - case 1412: + case 1415: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.UnresolvedName -//line mysql_sql.y:9305 +//line mysql_sql.y:9339 { tblNameCStr := yylex.(*Lexer).GetDbOrTblNameCStr(yyDollar[1].cstrUnion().Origin()) yyLOCAL = tree.NewUnresolvedName(tblNameCStr, yyDollar[3].cstrUnion()) } yyVAL.union = yyLOCAL - case 1413: + case 1416: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *tree.UnresolvedName -//line mysql_sql.y:9310 +//line mysql_sql.y:9344 { dbNameCStr := yylex.(*Lexer).GetDbOrTblNameCStr(yyDollar[1].cstrUnion().Origin()) tblNameCStr := yylex.(*Lexer).GetDbOrTblNameCStr(yyDollar[3].cstrUnion().Origin()) yyLOCAL = tree.NewUnresolvedName(dbNameCStr, tblNameCStr, yyDollar[5].cstrUnion()) } yyVAL.union = yyLOCAL - case 1414: + case 1417: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.CStr -//line mysql_sql.y:9318 +//line mysql_sql.y:9352 { yyLOCAL = tree.NewCStr(yyDollar[1].str, 1) } yyVAL.union = yyLOCAL - case 1415: + case 1418: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.CStr -//line mysql_sql.y:9322 +//line mysql_sql.y:9356 { yyLOCAL = tree.NewCStr(yyDollar[1].str, 1) } yyVAL.union = yyLOCAL - case 1416: + case 1419: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.CStr -//line mysql_sql.y:9326 +//line mysql_sql.y:9360 { yyLOCAL = tree.NewCStr(yyDollar[1].str, 1) } yyVAL.union = yyLOCAL - case 1417: + case 1420: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.CStr -//line mysql_sql.y:9330 +//line mysql_sql.y:9364 { yyLOCAL = tree.NewCStr(yyDollar[1].str, 1) } yyVAL.union = yyLOCAL - case 1418: + case 1421: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.CStr -//line mysql_sql.y:9336 +//line mysql_sql.y:9370 { yyLOCAL = yylex.(*Lexer).GetDbOrTblNameCStr(yyDollar[1].cstrUnion().Origin()) } yyVAL.union = yyLOCAL - case 1419: + case 1422: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.UnresolvedName -//line mysql_sql.y:9342 +//line mysql_sql.y:9376 { yyLOCAL = tree.NewUnresolvedName(yyDollar[1].cstrUnion()) } yyVAL.union = yyLOCAL - case 1420: + case 1423: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.UnresolvedName -//line mysql_sql.y:9346 +//line mysql_sql.y:9380 { tblNameCStr := yylex.(*Lexer).GetDbOrTblNameCStr(yyDollar[1].cstrUnion().Origin()) yyLOCAL = tree.NewUnresolvedName(tblNameCStr, yyDollar[3].cstrUnion()) } yyVAL.union = yyLOCAL - case 1421: + case 1424: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *tree.UnresolvedName -//line mysql_sql.y:9351 +//line mysql_sql.y:9385 { dbNameCStr := yylex.(*Lexer).GetDbOrTblNameCStr(yyDollar[1].cstrUnion().Origin()) tblNameCStr := yylex.(*Lexer).GetDbOrTblNameCStr(yyDollar[3].cstrUnion().Origin()) yyLOCAL = tree.NewUnresolvedName(dbNameCStr, tblNameCStr, yyDollar[5].cstrUnion()) } yyVAL.union = yyLOCAL - case 1422: + case 1425: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL []tree.ColumnAttribute -//line mysql_sql.y:9358 +//line mysql_sql.y:9392 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1423: + case 1426: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []tree.ColumnAttribute -//line mysql_sql.y:9362 +//line mysql_sql.y:9396 { yyLOCAL = yyDollar[1].columnAttributesUnion() } yyVAL.union = yyLOCAL - case 1424: + case 1427: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []tree.ColumnAttribute -//line mysql_sql.y:9368 +//line mysql_sql.y:9402 { yyLOCAL = []tree.ColumnAttribute{yyDollar[1].columnAttributeUnion()} } yyVAL.union = yyLOCAL - case 1425: + case 1428: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL []tree.ColumnAttribute -//line mysql_sql.y:9372 +//line mysql_sql.y:9406 { yyLOCAL = append(yyDollar[1].columnAttributesUnion(), yyDollar[2].columnAttributeUnion()) } yyVAL.union = yyLOCAL - case 1426: + case 1429: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.ColumnAttribute -//line mysql_sql.y:9378 +//line mysql_sql.y:9412 { yyLOCAL = tree.NewAttributeNull(true) } yyVAL.union = yyLOCAL - case 1427: + case 1430: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.ColumnAttribute -//line mysql_sql.y:9382 +//line mysql_sql.y:9416 { yyLOCAL = tree.NewAttributeNull(false) } yyVAL.union = yyLOCAL - case 1428: + case 1431: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.ColumnAttribute -//line mysql_sql.y:9386 +//line mysql_sql.y:9420 { yyLOCAL = tree.NewAttributeDefault(yyDollar[2].exprUnion()) } yyVAL.union = yyLOCAL - case 1429: + case 1432: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.ColumnAttribute -//line mysql_sql.y:9390 +//line mysql_sql.y:9424 { yyLOCAL = tree.NewAttributeAutoIncrement() } yyVAL.union = yyLOCAL - case 1430: + case 1433: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.ColumnAttribute -//line mysql_sql.y:9394 +//line mysql_sql.y:9428 { yyLOCAL = yyDollar[1].columnAttributeUnion() } yyVAL.union = yyLOCAL - case 1431: + case 1434: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.ColumnAttribute -//line mysql_sql.y:9398 +//line mysql_sql.y:9432 { str := util.DealCommentString(yyDollar[2].str) yyLOCAL = tree.NewAttributeComment(tree.NewNumVal(str, str, false, tree.P_char)) } yyVAL.union = yyLOCAL - case 1432: + case 1435: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.ColumnAttribute -//line mysql_sql.y:9403 +//line mysql_sql.y:9437 { yyLOCAL = tree.NewAttributeCollate(yyDollar[2].str) } yyVAL.union = yyLOCAL - case 1433: + case 1436: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.ColumnAttribute -//line mysql_sql.y:9407 +//line mysql_sql.y:9441 { yyLOCAL = tree.NewAttributeColumnFormat(yyDollar[2].str) } yyVAL.union = yyLOCAL - case 1434: + case 1437: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.ColumnAttribute -//line mysql_sql.y:9411 +//line mysql_sql.y:9445 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1435: + case 1438: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.ColumnAttribute -//line mysql_sql.y:9415 +//line mysql_sql.y:9449 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1436: + case 1439: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.ColumnAttribute -//line mysql_sql.y:9419 +//line mysql_sql.y:9453 { yyLOCAL = tree.NewAttributeStorage(yyDollar[2].str) } yyVAL.union = yyLOCAL - case 1437: + case 1440: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.ColumnAttribute -//line mysql_sql.y:9423 +//line mysql_sql.y:9457 { yyLOCAL = tree.NewAttributeAutoRandom(int(yyDollar[2].int64ValUnion())) } yyVAL.union = yyLOCAL - case 1438: + case 1441: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.ColumnAttribute -//line mysql_sql.y:9427 +//line mysql_sql.y:9461 { yyLOCAL = yyDollar[1].attributeReferenceUnion() } yyVAL.union = yyLOCAL - case 1439: + case 1442: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.ColumnAttribute -//line mysql_sql.y:9431 +//line mysql_sql.y:9465 { yyLOCAL = tree.NewAttributeCheckConstraint(yyDollar[4].exprUnion(), false, yyDollar[1].str) } yyVAL.union = yyLOCAL - case 1440: + case 1443: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL tree.ColumnAttribute -//line mysql_sql.y:9435 +//line mysql_sql.y:9469 { yyLOCAL = tree.NewAttributeCheckConstraint(yyDollar[4].exprUnion(), yyDollar[6].boolValUnion(), yyDollar[1].str) } yyVAL.union = yyLOCAL - case 1441: + case 1444: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.ColumnAttribute -//line mysql_sql.y:9439 +//line mysql_sql.y:9473 { name := tree.NewUnresolvedColName(yyDollar[3].str) var es tree.Exprs = nil @@ -22450,98 +22625,98 @@ yydefault: yyLOCAL = tree.NewAttributeOnUpdate(expr) } yyVAL.union = yyLOCAL - case 1442: + case 1445: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.ColumnAttribute -//line mysql_sql.y:9453 +//line mysql_sql.y:9487 { yyLOCAL = tree.NewAttributeLowCardinality() } yyVAL.union = yyLOCAL - case 1443: + case 1446: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.ColumnAttribute -//line mysql_sql.y:9457 +//line mysql_sql.y:9491 { yyLOCAL = tree.NewAttributeVisable(true) } yyVAL.union = yyLOCAL - case 1444: + case 1447: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.ColumnAttribute -//line mysql_sql.y:9461 +//line mysql_sql.y:9495 { yyLOCAL = tree.NewAttributeVisable(false) } yyVAL.union = yyLOCAL - case 1445: + case 1448: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.ColumnAttribute -//line mysql_sql.y:9465 +//line mysql_sql.y:9499 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1446: + case 1449: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.ColumnAttribute -//line mysql_sql.y:9469 +//line mysql_sql.y:9503 { yyLOCAL = tree.NewAttributeHeader(yyDollar[3].str) } yyVAL.union = yyLOCAL - case 1447: + case 1450: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.ColumnAttribute -//line mysql_sql.y:9473 +//line mysql_sql.y:9507 { yyLOCAL = tree.NewAttributeHeaders() } yyVAL.union = yyLOCAL - case 1448: + case 1451: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:9479 +//line mysql_sql.y:9513 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 1449: + case 1452: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:9483 +//line mysql_sql.y:9517 { yyLOCAL = false } yyVAL.union = yyLOCAL - case 1450: + case 1453: yyDollar = yyS[yypt-0 : yypt+1] -//line mysql_sql.y:9488 +//line mysql_sql.y:9522 { yyVAL.str = "" } - case 1451: + case 1454: yyDollar = yyS[yypt-1 : yypt+1] -//line mysql_sql.y:9492 +//line mysql_sql.y:9526 { yyVAL.str = yyDollar[1].str } - case 1452: + case 1455: yyDollar = yyS[yypt-1 : yypt+1] -//line mysql_sql.y:9498 +//line mysql_sql.y:9532 { yyVAL.str = "" } - case 1453: + case 1456: yyDollar = yyS[yypt-2 : yypt+1] -//line mysql_sql.y:9502 +//line mysql_sql.y:9536 { yyVAL.str = yyDollar[2].cstrUnion().Compare() } - case 1454: + case 1457: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *tree.AttributeReference -//line mysql_sql.y:9508 +//line mysql_sql.y:9542 { var TableName = yyDollar[2].tableNameUnion() var KeyParts = yyDollar[3].keyPartsUnion() @@ -22557,10 +22732,10 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1455: + case 1458: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.ReferenceOnRecord -//line mysql_sql.y:9525 +//line mysql_sql.y:9559 { yyLOCAL = &tree.ReferenceOnRecord{ OnDelete: tree.REFERENCE_OPTION_INVALID, @@ -22568,10 +22743,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1456: + case 1459: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.ReferenceOnRecord -//line mysql_sql.y:9532 +//line mysql_sql.y:9566 { yyLOCAL = &tree.ReferenceOnRecord{ OnDelete: yyDollar[1].referenceOptionTypeUnion(), @@ -22579,10 +22754,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1457: + case 1460: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.ReferenceOnRecord -//line mysql_sql.y:9539 +//line mysql_sql.y:9573 { yyLOCAL = &tree.ReferenceOnRecord{ OnDelete: tree.REFERENCE_OPTION_INVALID, @@ -22590,10 +22765,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1458: + case 1461: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.ReferenceOnRecord -//line mysql_sql.y:9546 +//line mysql_sql.y:9580 { yyLOCAL = &tree.ReferenceOnRecord{ OnDelete: yyDollar[1].referenceOptionTypeUnion(), @@ -22601,10 +22776,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1459: + case 1462: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.ReferenceOnRecord -//line mysql_sql.y:9553 +//line mysql_sql.y:9587 { yyLOCAL = &tree.ReferenceOnRecord{ OnDelete: yyDollar[2].referenceOptionTypeUnion(), @@ -22612,354 +22787,354 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1460: + case 1463: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.ReferenceOptionType -//line mysql_sql.y:9562 +//line mysql_sql.y:9596 { yyLOCAL = yyDollar[3].referenceOptionTypeUnion() } yyVAL.union = yyLOCAL - case 1461: + case 1464: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.ReferenceOptionType -//line mysql_sql.y:9568 +//line mysql_sql.y:9602 { yyLOCAL = yyDollar[3].referenceOptionTypeUnion() } yyVAL.union = yyLOCAL - case 1462: + case 1465: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.ReferenceOptionType -//line mysql_sql.y:9574 +//line mysql_sql.y:9608 { yyLOCAL = tree.REFERENCE_OPTION_RESTRICT } yyVAL.union = yyLOCAL - case 1463: + case 1466: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.ReferenceOptionType -//line mysql_sql.y:9578 +//line mysql_sql.y:9612 { yyLOCAL = tree.REFERENCE_OPTION_CASCADE } yyVAL.union = yyLOCAL - case 1464: + case 1467: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.ReferenceOptionType -//line mysql_sql.y:9582 +//line mysql_sql.y:9616 { yyLOCAL = tree.REFERENCE_OPTION_SET_NULL } yyVAL.union = yyLOCAL - case 1465: + case 1468: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.ReferenceOptionType -//line mysql_sql.y:9586 +//line mysql_sql.y:9620 { yyLOCAL = tree.REFERENCE_OPTION_NO_ACTION } yyVAL.union = yyLOCAL - case 1466: + case 1469: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.ReferenceOptionType -//line mysql_sql.y:9590 +//line mysql_sql.y:9624 { yyLOCAL = tree.REFERENCE_OPTION_SET_DEFAULT } yyVAL.union = yyLOCAL - case 1467: + case 1470: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.MatchType -//line mysql_sql.y:9595 +//line mysql_sql.y:9629 { yyLOCAL = tree.MATCH_INVALID } yyVAL.union = yyLOCAL - case 1469: + case 1472: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.MatchType -//line mysql_sql.y:9602 +//line mysql_sql.y:9636 { yyLOCAL = tree.MATCH_FULL } yyVAL.union = yyLOCAL - case 1470: + case 1473: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.MatchType -//line mysql_sql.y:9606 +//line mysql_sql.y:9640 { yyLOCAL = tree.MATCH_PARTIAL } yyVAL.union = yyLOCAL - case 1471: + case 1474: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.MatchType -//line mysql_sql.y:9610 +//line mysql_sql.y:9644 { yyLOCAL = tree.MATCH_SIMPLE } yyVAL.union = yyLOCAL - case 1472: + case 1475: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.FullTextSearchType -//line mysql_sql.y:9615 +//line mysql_sql.y:9649 { yyLOCAL = tree.FULLTEXT_DEFAULT } yyVAL.union = yyLOCAL - case 1473: + case 1476: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.FullTextSearchType -//line mysql_sql.y:9619 +//line mysql_sql.y:9653 { yyLOCAL = tree.FULLTEXT_NL } yyVAL.union = yyLOCAL - case 1474: + case 1477: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL tree.FullTextSearchType -//line mysql_sql.y:9623 +//line mysql_sql.y:9657 { yyLOCAL = tree.FULLTEXT_NL_QUERY_EXPANSION } yyVAL.union = yyLOCAL - case 1475: + case 1478: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.FullTextSearchType -//line mysql_sql.y:9627 +//line mysql_sql.y:9661 { yyLOCAL = tree.FULLTEXT_BOOLEAN } yyVAL.union = yyLOCAL - case 1476: + case 1479: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.FullTextSearchType -//line mysql_sql.y:9631 +//line mysql_sql.y:9665 { yyLOCAL = tree.FULLTEXT_QUERY_EXPANSION } yyVAL.union = yyLOCAL - case 1477: + case 1480: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL []*tree.KeyPart -//line mysql_sql.y:9636 +//line mysql_sql.y:9670 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1478: + case 1481: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []*tree.KeyPart -//line mysql_sql.y:9640 +//line mysql_sql.y:9674 { yyLOCAL = yyDollar[2].keyPartsUnion() } yyVAL.union = yyLOCAL - case 1479: + case 1482: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL int64 -//line mysql_sql.y:9645 +//line mysql_sql.y:9679 { yyLOCAL = -1 } yyVAL.union = yyLOCAL - case 1480: + case 1483: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL int64 -//line mysql_sql.y:9649 +//line mysql_sql.y:9683 { yyLOCAL = yyDollar[2].item.(int64) } yyVAL.union = yyLOCAL - case 1487: + case 1490: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.Subquery -//line mysql_sql.y:9665 +//line mysql_sql.y:9699 { yyLOCAL = &tree.Subquery{Select: yyDollar[1].selectStatementUnion(), Exists: false} } yyVAL.union = yyLOCAL - case 1488: + case 1491: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:9671 +//line mysql_sql.y:9705 { yyLOCAL = tree.NewBinaryExpr(tree.BIT_AND, yyDollar[1].exprUnion(), yyDollar[3].exprUnion()) } yyVAL.union = yyLOCAL - case 1489: + case 1492: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:9675 +//line mysql_sql.y:9709 { yyLOCAL = tree.NewBinaryExpr(tree.BIT_OR, yyDollar[1].exprUnion(), yyDollar[3].exprUnion()) } yyVAL.union = yyLOCAL - case 1490: + case 1493: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:9679 +//line mysql_sql.y:9713 { yyLOCAL = tree.NewBinaryExpr(tree.BIT_XOR, yyDollar[1].exprUnion(), yyDollar[3].exprUnion()) } yyVAL.union = yyLOCAL - case 1491: + case 1494: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:9683 +//line mysql_sql.y:9717 { yyLOCAL = tree.NewBinaryExpr(tree.PLUS, yyDollar[1].exprUnion(), yyDollar[3].exprUnion()) } yyVAL.union = yyLOCAL - case 1492: + case 1495: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:9687 +//line mysql_sql.y:9721 { yyLOCAL = tree.NewBinaryExpr(tree.MINUS, yyDollar[1].exprUnion(), yyDollar[3].exprUnion()) } yyVAL.union = yyLOCAL - case 1493: + case 1496: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:9691 +//line mysql_sql.y:9725 { yyLOCAL = tree.NewBinaryExpr(tree.MULTI, yyDollar[1].exprUnion(), yyDollar[3].exprUnion()) } yyVAL.union = yyLOCAL - case 1494: + case 1497: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:9695 +//line mysql_sql.y:9729 { yyLOCAL = tree.NewBinaryExpr(tree.DIV, yyDollar[1].exprUnion(), yyDollar[3].exprUnion()) } yyVAL.union = yyLOCAL - case 1495: + case 1498: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:9699 +//line mysql_sql.y:9733 { yyLOCAL = tree.NewBinaryExpr(tree.INTEGER_DIV, yyDollar[1].exprUnion(), yyDollar[3].exprUnion()) } yyVAL.union = yyLOCAL - case 1496: + case 1499: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:9703 +//line mysql_sql.y:9737 { yyLOCAL = tree.NewBinaryExpr(tree.MOD, yyDollar[1].exprUnion(), yyDollar[3].exprUnion()) } yyVAL.union = yyLOCAL - case 1497: + case 1500: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:9707 +//line mysql_sql.y:9741 { yyLOCAL = tree.NewBinaryExpr(tree.MOD, yyDollar[1].exprUnion(), yyDollar[3].exprUnion()) } yyVAL.union = yyLOCAL - case 1498: + case 1501: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:9711 +//line mysql_sql.y:9745 { yyLOCAL = tree.NewBinaryExpr(tree.LEFT_SHIFT, yyDollar[1].exprUnion(), yyDollar[3].exprUnion()) } yyVAL.union = yyLOCAL - case 1499: + case 1502: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:9715 +//line mysql_sql.y:9749 { yyLOCAL = tree.NewBinaryExpr(tree.RIGHT_SHIFT, yyDollar[1].exprUnion(), yyDollar[3].exprUnion()) } yyVAL.union = yyLOCAL - case 1500: + case 1503: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:9719 +//line mysql_sql.y:9753 { yyLOCAL = yyDollar[1].exprUnion() } yyVAL.union = yyLOCAL - case 1501: + case 1504: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:9725 +//line mysql_sql.y:9759 { yyLOCAL = yyDollar[1].unresolvedNameUnion() } yyVAL.union = yyLOCAL - case 1502: + case 1505: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:9729 +//line mysql_sql.y:9763 { yyLOCAL = yyDollar[1].varExprUnion() } yyVAL.union = yyLOCAL - case 1503: + case 1506: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:9733 +//line mysql_sql.y:9767 { yyLOCAL = yyDollar[1].exprUnion() } yyVAL.union = yyLOCAL - case 1504: + case 1507: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:9737 +//line mysql_sql.y:9771 { yyLOCAL = tree.NewParentExpr(yyDollar[2].exprUnion()) } yyVAL.union = yyLOCAL - case 1505: + case 1508: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:9741 +//line mysql_sql.y:9775 { yyLOCAL = tree.NewTuple(append(yyDollar[2].exprsUnion(), yyDollar[4].exprUnion())) } yyVAL.union = yyLOCAL - case 1506: + case 1509: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:9745 +//line mysql_sql.y:9779 { yyLOCAL = tree.NewUnaryExpr(tree.UNARY_PLUS, yyDollar[2].exprUnion()) } yyVAL.union = yyLOCAL - case 1507: + case 1510: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:9749 +//line mysql_sql.y:9783 { yyLOCAL = tree.NewUnaryExpr(tree.UNARY_MINUS, yyDollar[2].exprUnion()) } yyVAL.union = yyLOCAL - case 1508: + case 1511: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:9753 +//line mysql_sql.y:9787 { yyLOCAL = tree.NewUnaryExpr(tree.UNARY_TILDE, yyDollar[2].exprUnion()) } yyVAL.union = yyLOCAL - case 1509: + case 1512: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:9757 +//line mysql_sql.y:9791 { yyLOCAL = tree.NewUnaryExpr(tree.UNARY_MARK, yyDollar[2].exprUnion()) } yyVAL.union = yyLOCAL - case 1510: + case 1513: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:9761 +//line mysql_sql.y:9795 { hint := strings.ToLower(yyDollar[2].cstrUnion().Compare()) switch hint { @@ -23002,35 +23177,35 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1511: + case 1514: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:9803 +//line mysql_sql.y:9837 { yyLOCAL = yyDollar[1].exprUnion() } yyVAL.union = yyLOCAL - case 1512: + case 1515: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:9807 +//line mysql_sql.y:9841 { yyLOCAL = yyDollar[1].subqueryUnion() } yyVAL.union = yyLOCAL - case 1513: + case 1516: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:9811 +//line mysql_sql.y:9845 { yyDollar[2].subqueryUnion().Exists = true yyLOCAL = yyDollar[2].subqueryUnion() } yyVAL.union = yyLOCAL - case 1514: + case 1517: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:9816 +//line mysql_sql.y:9850 { yyLOCAL = &tree.CaseExpr{ Expr: yyDollar[2].exprUnion(), @@ -23039,42 +23214,42 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1515: + case 1518: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:9824 +//line mysql_sql.y:9858 { yyLOCAL = tree.NewCastExpr(yyDollar[3].exprUnion(), yyDollar[5].columnTypeUnion()) } yyVAL.union = yyLOCAL - case 1516: + case 1519: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:9828 +//line mysql_sql.y:9862 { yyLOCAL = tree.NewSerialExtractExpr(yyDollar[3].exprUnion(), yyDollar[5].exprUnion(), yyDollar[7].columnTypeUnion()) } yyVAL.union = yyLOCAL - case 1517: + case 1520: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:9832 +//line mysql_sql.y:9866 { yyLOCAL = tree.NewBitCastExpr(yyDollar[3].exprUnion(), yyDollar[5].columnTypeUnion()) } yyVAL.union = yyLOCAL - case 1518: + case 1521: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:9836 +//line mysql_sql.y:9870 { yyLOCAL = tree.NewCastExpr(yyDollar[3].exprUnion(), yyDollar[5].columnTypeUnion()) } yyVAL.union = yyLOCAL - case 1519: + case 1522: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:9840 +//line mysql_sql.y:9874 { name := tree.NewUnresolvedColName(yyDollar[1].str) es := tree.NewNumVal(yyDollar[5].str, yyDollar[5].str, false, tree.P_char) @@ -23085,66 +23260,66 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1520: + case 1523: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:9850 +//line mysql_sql.y:9884 { yyLOCAL = yyDollar[1].funcExprUnion() } yyVAL.union = yyLOCAL - case 1521: + case 1524: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:9854 +//line mysql_sql.y:9888 { yyLOCAL = yyDollar[1].funcExprUnion() } yyVAL.union = yyLOCAL - case 1522: + case 1525: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:9858 +//line mysql_sql.y:9892 { yyLOCAL = yyDollar[1].funcExprUnion() } yyVAL.union = yyLOCAL - case 1523: + case 1526: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:9862 +//line mysql_sql.y:9896 { yyLOCAL = yyDollar[1].funcExprUnion() } yyVAL.union = yyLOCAL - case 1524: + case 1527: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:9866 +//line mysql_sql.y:9900 { yyLOCAL = yyDollar[1].funcExprUnion() } yyVAL.union = yyLOCAL - case 1525: + case 1528: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:9870 +//line mysql_sql.y:9904 { yyLOCAL = yyDollar[1].exprUnion() } yyVAL.union = yyLOCAL - case 1526: + case 1529: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:9874 +//line mysql_sql.y:9908 { yyLOCAL = yyDollar[1].exprUnion() } yyVAL.union = yyLOCAL - case 1527: + case 1530: yyDollar = yyS[yypt-9 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:9878 +//line mysql_sql.y:9912 { val, err := tree.NewFullTextMatchFuncExpression(yyDollar[3].keyPartsUnion(), yyDollar[7].str, yyDollar[8].fullTextSearchTypeUnion()) if err != nil { @@ -23154,16 +23329,16 @@ yydefault: yyLOCAL = val } yyVAL.union = yyLOCAL - case 1528: + case 1531: yyDollar = yyS[yypt-1 : yypt+1] -//line mysql_sql.y:9891 +//line mysql_sql.y:9925 { yyVAL.str = yyDollar[1].str } - case 1529: + case 1532: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:9897 +//line mysql_sql.y:9931 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -23173,10 +23348,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1530: + case 1533: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:9906 +//line mysql_sql.y:9940 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -23186,10 +23361,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1531: + case 1534: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:9915 +//line mysql_sql.y:9949 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -23199,10 +23374,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1532: + case 1535: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:9926 +//line mysql_sql.y:9960 { v := int(yyDollar[5].item.(int64)) val, err := tree.NewSampleRowsFuncExpression(v, true, nil, "block") @@ -23213,10 +23388,10 @@ yydefault: yyLOCAL = val } yyVAL.union = yyLOCAL - case 1533: + case 1536: yyDollar = yyS[yypt-9 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:9936 +//line mysql_sql.y:9970 { v := int(yyDollar[5].item.(int64)) val, err := tree.NewSampleRowsFuncExpression(v, true, nil, yyDollar[8].str) @@ -23227,10 +23402,10 @@ yydefault: yyLOCAL = val } yyVAL.union = yyLOCAL - case 1534: + case 1537: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:9946 +//line mysql_sql.y:9980 { val, err := tree.NewSamplePercentFuncExpression1(yyDollar[5].item.(int64), true, nil) if err != nil { @@ -23240,10 +23415,10 @@ yydefault: yyLOCAL = val } yyVAL.union = yyLOCAL - case 1535: + case 1538: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:9955 +//line mysql_sql.y:9989 { val, err := tree.NewSamplePercentFuncExpression2(yyDollar[5].item.(float64), true, nil) if err != nil { @@ -23253,10 +23428,10 @@ yydefault: yyLOCAL = val } yyVAL.union = yyLOCAL - case 1536: + case 1539: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:9965 +//line mysql_sql.y:9999 { v := int(yyDollar[5].item.(int64)) val, err := tree.NewSampleRowsFuncExpression(v, false, yyDollar[3].exprsUnion(), "block") @@ -23267,10 +23442,10 @@ yydefault: yyLOCAL = val } yyVAL.union = yyLOCAL - case 1537: + case 1540: yyDollar = yyS[yypt-9 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:9975 +//line mysql_sql.y:10009 { v := int(yyDollar[5].item.(int64)) val, err := tree.NewSampleRowsFuncExpression(v, false, yyDollar[3].exprsUnion(), yyDollar[8].str) @@ -23281,10 +23456,10 @@ yydefault: yyLOCAL = val } yyVAL.union = yyLOCAL - case 1538: + case 1541: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:9985 +//line mysql_sql.y:10019 { val, err := tree.NewSamplePercentFuncExpression1(yyDollar[5].item.(int64), false, yyDollar[3].exprsUnion()) if err != nil { @@ -23294,10 +23469,10 @@ yydefault: yyLOCAL = val } yyVAL.union = yyLOCAL - case 1539: + case 1542: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:9994 +//line mysql_sql.y:10028 { val, err := tree.NewSamplePercentFuncExpression2(yyDollar[5].item.(float64), false, yyDollar[3].exprsUnion()) if err != nil { @@ -23307,58 +23482,58 @@ yydefault: yyLOCAL = val } yyVAL.union = yyLOCAL - case 1540: + case 1543: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:10004 +//line mysql_sql.y:10038 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1541: + case 1544: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:10008 +//line mysql_sql.y:10042 { yyLOCAL = yyDollar[2].exprUnion() } yyVAL.union = yyLOCAL - case 1542: + case 1545: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:10013 +//line mysql_sql.y:10047 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1543: + case 1546: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:10017 +//line mysql_sql.y:10051 { yyLOCAL = yyDollar[1].exprUnion() } yyVAL.union = yyLOCAL - case 1544: + case 1547: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []*tree.When -//line mysql_sql.y:10023 +//line mysql_sql.y:10057 { yyLOCAL = []*tree.When{yyDollar[1].whenClauseUnion()} } yyVAL.union = yyLOCAL - case 1545: + case 1548: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL []*tree.When -//line mysql_sql.y:10027 +//line mysql_sql.y:10061 { yyLOCAL = append(yyDollar[1].whenClauseListUnion(), yyDollar[2].whenClauseUnion()) } yyVAL.union = yyLOCAL - case 1546: + case 1549: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.When -//line mysql_sql.y:10033 +//line mysql_sql.y:10067 { yyLOCAL = &tree.When{ Cond: yyDollar[2].exprUnion(), @@ -23366,9 +23541,9 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1547: + case 1550: yyDollar = yyS[yypt-1 : yypt+1] -//line mysql_sql.y:10042 +//line mysql_sql.y:10076 { t := yyVAL.columnTypeUnion() str := strings.ToLower(t.InternalType.FamilyString) @@ -23381,10 +23556,10 @@ yydefault: } } } - case 1548: + case 1551: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:10054 +//line mysql_sql.y:10088 { name := yyDollar[1].str if yyDollar[2].str != "" { @@ -23402,10 +23577,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1549: + case 1552: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:10071 +//line mysql_sql.y:10105 { locale := "" yyLOCAL = &tree.T{ @@ -23420,10 +23595,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1551: + case 1554: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:10088 +//line mysql_sql.y:10122 { locale := "" yyLOCAL = &tree.T{ @@ -23437,10 +23612,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1552: + case 1555: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:10101 +//line mysql_sql.y:10135 { locale := "" yyLOCAL = &tree.T{ @@ -23454,10 +23629,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1553: + case 1556: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:10114 +//line mysql_sql.y:10148 { locale := "" yyLOCAL = &tree.T{ @@ -23470,10 +23645,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1554: + case 1557: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:10126 +//line mysql_sql.y:10160 { locale := "" yyLOCAL = &tree.T{ @@ -23488,10 +23663,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1555: + case 1558: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:10140 +//line mysql_sql.y:10174 { locale := "" yyLOCAL = &tree.T{ @@ -23507,10 +23682,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1556: + case 1559: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:10155 +//line mysql_sql.y:10189 { locale := "" yyLOCAL = &tree.T{ @@ -23526,10 +23701,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1557: + case 1560: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:10170 +//line mysql_sql.y:10204 { name := yyDollar[1].str if yyDollar[2].str != "" { @@ -23547,10 +23722,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1558: + case 1561: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:10187 +//line mysql_sql.y:10221 { locale := "" yyLOCAL = &tree.T{ @@ -23565,95 +23740,95 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1559: + case 1562: yyDollar = yyS[yypt-0 : yypt+1] -//line mysql_sql.y:10202 +//line mysql_sql.y:10236 { } - case 1563: + case 1566: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.FrameBound -//line mysql_sql.y:10209 +//line mysql_sql.y:10243 { yyLOCAL = &tree.FrameBound{Type: tree.Following, UnBounded: true} } yyVAL.union = yyLOCAL - case 1564: + case 1567: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.FrameBound -//line mysql_sql.y:10213 +//line mysql_sql.y:10247 { yyLOCAL = &tree.FrameBound{Type: tree.Following, Expr: yyDollar[1].exprUnion()} } yyVAL.union = yyLOCAL - case 1565: + case 1568: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.FrameBound -//line mysql_sql.y:10217 +//line mysql_sql.y:10251 { yyLOCAL = &tree.FrameBound{Type: tree.Following, Expr: yyDollar[1].exprUnion()} } yyVAL.union = yyLOCAL - case 1566: + case 1569: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.FrameBound -//line mysql_sql.y:10223 +//line mysql_sql.y:10257 { yyLOCAL = &tree.FrameBound{Type: tree.CurrentRow} } yyVAL.union = yyLOCAL - case 1567: + case 1570: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.FrameBound -//line mysql_sql.y:10227 +//line mysql_sql.y:10261 { yyLOCAL = &tree.FrameBound{Type: tree.Preceding, UnBounded: true} } yyVAL.union = yyLOCAL - case 1568: + case 1571: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.FrameBound -//line mysql_sql.y:10231 +//line mysql_sql.y:10265 { yyLOCAL = &tree.FrameBound{Type: tree.Preceding, Expr: yyDollar[1].exprUnion()} } yyVAL.union = yyLOCAL - case 1569: + case 1572: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.FrameBound -//line mysql_sql.y:10235 +//line mysql_sql.y:10269 { yyLOCAL = &tree.FrameBound{Type: tree.Preceding, Expr: yyDollar[1].exprUnion()} } yyVAL.union = yyLOCAL - case 1570: + case 1573: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.FrameType -//line mysql_sql.y:10241 +//line mysql_sql.y:10275 { yyLOCAL = tree.Rows } yyVAL.union = yyLOCAL - case 1571: + case 1574: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.FrameType -//line mysql_sql.y:10245 +//line mysql_sql.y:10279 { yyLOCAL = tree.Range } yyVAL.union = yyLOCAL - case 1572: + case 1575: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.FrameType -//line mysql_sql.y:10249 +//line mysql_sql.y:10283 { yyLOCAL = tree.Groups } yyVAL.union = yyLOCAL - case 1573: + case 1576: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.FrameClause -//line mysql_sql.y:10255 +//line mysql_sql.y:10289 { yyLOCAL = &tree.FrameClause{ Type: yyDollar[1].frameTypeUnion(), @@ -23662,10 +23837,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1574: + case 1577: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *tree.FrameClause -//line mysql_sql.y:10263 +//line mysql_sql.y:10297 { yyLOCAL = &tree.FrameClause{ Type: yyDollar[1].frameTypeUnion(), @@ -23675,82 +23850,82 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1575: + case 1578: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.FrameClause -//line mysql_sql.y:10273 +//line mysql_sql.y:10307 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1576: + case 1579: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.FrameClause -//line mysql_sql.y:10277 +//line mysql_sql.y:10311 { yyLOCAL = yyDollar[1].frameClauseUnion() } yyVAL.union = yyLOCAL - case 1577: + case 1580: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Exprs -//line mysql_sql.y:10284 +//line mysql_sql.y:10318 { yyLOCAL = yyDollar[3].exprsUnion() } yyVAL.union = yyLOCAL - case 1578: + case 1581: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.Exprs -//line mysql_sql.y:10289 +//line mysql_sql.y:10323 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1579: + case 1582: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Exprs -//line mysql_sql.y:10293 +//line mysql_sql.y:10327 { yyLOCAL = yyDollar[1].exprsUnion() } yyVAL.union = yyLOCAL - case 1580: + case 1583: yyDollar = yyS[yypt-0 : yypt+1] -//line mysql_sql.y:10298 +//line mysql_sql.y:10332 { yyVAL.str = "," } - case 1581: + case 1584: yyDollar = yyS[yypt-2 : yypt+1] -//line mysql_sql.y:10302 +//line mysql_sql.y:10336 { yyVAL.str = yyDollar[2].str } - case 1582: + case 1585: yyDollar = yyS[yypt-0 : yypt+1] -//line mysql_sql.y:10307 +//line mysql_sql.y:10341 { yyVAL.str = "1,vector_l2_ops,random,false" } - case 1583: + case 1586: yyDollar = yyS[yypt-2 : yypt+1] -//line mysql_sql.y:10311 +//line mysql_sql.y:10345 { yyVAL.str = yyDollar[2].str } - case 1584: + case 1587: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.WindowSpec -//line mysql_sql.y:10316 +//line mysql_sql.y:10350 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1586: + case 1589: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.WindowSpec -//line mysql_sql.y:10323 +//line mysql_sql.y:10357 { hasFrame := true var f *tree.FrameClause @@ -23775,10 +23950,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1587: + case 1590: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10349 +//line mysql_sql.y:10383 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -23791,10 +23966,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1588: + case 1591: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10361 +//line mysql_sql.y:10395 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -23807,10 +23982,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1589: + case 1592: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10373 +//line mysql_sql.y:10407 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -23822,10 +23997,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1590: + case 1593: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10384 +//line mysql_sql.y:10418 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -23837,10 +24012,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1591: + case 1594: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10395 +//line mysql_sql.y:10429 { name := tree.NewUnresolvedColName(yyDollar[1].str) es := tree.NewNumVal("*", "*", false, tree.P_char) @@ -23852,10 +24027,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1592: + case 1595: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10406 +//line mysql_sql.y:10440 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -23866,10 +24041,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1593: + case 1596: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10416 +//line mysql_sql.y:10450 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -23880,10 +24055,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1594: + case 1597: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10426 +//line mysql_sql.y:10460 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -23895,10 +24070,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1595: + case 1598: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10437 +//line mysql_sql.y:10471 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -23910,10 +24085,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1596: + case 1599: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10448 +//line mysql_sql.y:10482 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -23925,10 +24100,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1597: + case 1600: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10459 +//line mysql_sql.y:10493 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -23940,10 +24115,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1598: + case 1601: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10470 +//line mysql_sql.y:10504 { name := tree.NewUnresolvedColName(yyDollar[1].str) es := tree.NewNumVal("*", "*", false, tree.P_char) @@ -23955,10 +24130,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1599: + case 1602: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10481 +//line mysql_sql.y:10515 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -23970,10 +24145,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1600: + case 1603: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10492 +//line mysql_sql.y:10526 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -23985,10 +24160,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1601: + case 1604: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10503 +//line mysql_sql.y:10537 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -24000,10 +24175,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1602: + case 1605: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10514 +//line mysql_sql.y:10548 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -24015,10 +24190,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1603: + case 1606: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10525 +//line mysql_sql.y:10559 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -24030,10 +24205,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1604: + case 1607: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10536 +//line mysql_sql.y:10570 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -24045,10 +24220,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1605: + case 1608: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10547 +//line mysql_sql.y:10581 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -24060,10 +24235,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1606: + case 1609: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10558 +//line mysql_sql.y:10592 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -24075,10 +24250,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1607: + case 1610: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10569 +//line mysql_sql.y:10603 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -24090,10 +24265,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1608: + case 1611: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10580 +//line mysql_sql.y:10614 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -24105,10 +24280,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1609: + case 1612: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10591 +//line mysql_sql.y:10625 { name := tree.NewUnresolvedColName(yyDollar[1].str) var columnList tree.Exprs @@ -24126,10 +24301,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1613: + case 1616: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10615 +//line mysql_sql.y:10649 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -24139,10 +24314,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1614: + case 1617: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10624 +//line mysql_sql.y:10658 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -24152,10 +24327,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1615: + case 1618: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10633 +//line mysql_sql.y:10667 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -24165,10 +24340,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1616: + case 1619: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10642 +//line mysql_sql.y:10676 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -24178,10 +24353,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1617: + case 1620: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10651 +//line mysql_sql.y:10685 { name := tree.NewUnresolvedColName(yyDollar[1].str) str := strings.ToLower(yyDollar[3].str) @@ -24193,10 +24368,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1618: + case 1621: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10662 +//line mysql_sql.y:10696 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -24206,10 +24381,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1619: + case 1622: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10671 +//line mysql_sql.y:10705 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -24220,10 +24395,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1620: + case 1623: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10681 +//line mysql_sql.y:10715 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -24233,10 +24408,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1621: + case 1624: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10690 +//line mysql_sql.y:10724 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -24246,10 +24421,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1622: + case 1625: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10699 +//line mysql_sql.y:10733 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -24259,10 +24434,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1623: + case 1626: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10708 +//line mysql_sql.y:10742 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -24272,10 +24447,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1624: + case 1627: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10717 +//line mysql_sql.y:10751 { name := tree.NewUnresolvedColName(yyDollar[1].str) arg0 := tree.NewNumVal(int64(0), "0", false, tree.P_int64) @@ -24288,10 +24463,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1625: + case 1628: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10729 +//line mysql_sql.y:10763 { name := tree.NewUnresolvedColName(yyDollar[1].str) arg0 := tree.NewNumVal(int64(1), "1", false, tree.P_int64) @@ -24303,10 +24478,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1626: + case 1629: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10740 +//line mysql_sql.y:10774 { name := tree.NewUnresolvedColName(yyDollar[1].str) arg0 := tree.NewNumVal(int64(2), "2", false, tree.P_int64) @@ -24320,10 +24495,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1627: + case 1630: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10753 +//line mysql_sql.y:10787 { name := tree.NewUnresolvedColName(yyDollar[1].str) arg0 := tree.NewNumVal(int64(3), "3", false, tree.P_int64) @@ -24336,10 +24511,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1628: + case 1631: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10765 +//line mysql_sql.y:10799 { column := tree.NewUnresolvedColName(yyDollar[3].str) name := tree.NewUnresolvedColName(yyDollar[1].str) @@ -24350,16 +24525,16 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1635: + case 1638: yyDollar = yyS[yypt-1 : yypt+1] -//line mysql_sql.y:10788 +//line mysql_sql.y:10822 { yyVAL.str = yyDollar[1].str } - case 1664: + case 1667: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10824 +//line mysql_sql.y:10858 { name := tree.NewUnresolvedColName(yyDollar[1].str) var es tree.Exprs = nil @@ -24373,10 +24548,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1665: + case 1668: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10837 +//line mysql_sql.y:10871 { name := tree.NewUnresolvedColName(yyDollar[1].str) var es tree.Exprs = nil @@ -24390,10 +24565,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1666: + case 1669: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10850 +//line mysql_sql.y:10884 { name := tree.NewUnresolvedColName(yyDollar[1].str) str := strings.ToLower(yyDollar[3].str) @@ -24405,10 +24580,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1667: + case 1670: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10862 +//line mysql_sql.y:10896 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -24418,10 +24593,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1668: + case 1671: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10871 +//line mysql_sql.y:10905 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -24430,10 +24605,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1669: + case 1672: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10879 +//line mysql_sql.y:10913 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -24442,10 +24617,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1670: + case 1673: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10887 +//line mysql_sql.y:10921 { name := tree.NewUnresolvedColName(yyDollar[1].str) var es tree.Exprs = nil @@ -24459,10 +24634,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1671: + case 1674: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10900 +//line mysql_sql.y:10934 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -24472,10 +24647,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1672: + case 1675: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10909 +//line mysql_sql.y:10943 { name := tree.NewUnresolvedColName(yyDollar[1].str) exprs := make([]tree.Expr, 1) @@ -24487,10 +24662,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1673: + case 1676: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10920 +//line mysql_sql.y:10954 { name := tree.NewUnresolvedColName(yyDollar[1].str) exprs := make([]tree.Expr, 1) @@ -24502,10 +24677,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1674: + case 1677: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10931 +//line mysql_sql.y:10965 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -24515,10 +24690,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1675: + case 1678: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10940 +//line mysql_sql.y:10974 { cn := tree.NewNumVal(yyDollar[5].str, yyDollar[5].str, false, tree.P_char) es := yyDollar[3].exprsUnion() @@ -24531,10 +24706,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1676: + case 1679: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10952 +//line mysql_sql.y:10986 { val := tree.NewNumVal(yyDollar[2].str, yyDollar[2].str, false, tree.P_char) name := tree.NewUnresolvedColName(yyDollar[1].str) @@ -24545,10 +24720,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1677: + case 1680: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10962 +//line mysql_sql.y:10996 { val := tree.NewNumVal(yyDollar[2].str, yyDollar[2].str, false, tree.P_char) name := tree.NewUnresolvedColName(yyDollar[1].str) @@ -24559,10 +24734,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1678: + case 1681: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10972 +//line mysql_sql.y:11006 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -24572,10 +24747,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1679: + case 1682: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10981 +//line mysql_sql.y:11015 { es := tree.Exprs{yyDollar[3].exprUnion()} es = append(es, yyDollar[5].exprUnion()) @@ -24587,10 +24762,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1680: + case 1683: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10992 +//line mysql_sql.y:11026 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -24600,10 +24775,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1681: + case 1684: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:11001 +//line mysql_sql.y:11035 { val := tree.NewNumVal(yyDollar[2].str, yyDollar[2].str, false, tree.P_char) name := tree.NewUnresolvedColName(yyDollar[1].str) @@ -24614,10 +24789,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1682: + case 1685: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:11011 +//line mysql_sql.y:11045 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -24627,10 +24802,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1683: + case 1686: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:11020 +//line mysql_sql.y:11054 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -24640,10 +24815,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1684: + case 1687: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:11029 +//line mysql_sql.y:11063 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -24653,34 +24828,34 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1685: + case 1688: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11039 +//line mysql_sql.y:11073 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1686: + case 1689: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11043 +//line mysql_sql.y:11077 { yyLOCAL = yyDollar[1].exprUnion() } yyVAL.union = yyLOCAL - case 1687: + case 1690: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11049 +//line mysql_sql.y:11083 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1688: + case 1691: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11053 +//line mysql_sql.y:11087 { ival, errStr := util.GetInt64(yyDollar[2].item) if errStr != "" { @@ -24691,20 +24866,20 @@ yydefault: yyLOCAL = tree.NewNumVal(ival, str, false, tree.P_int64) } yyVAL.union = yyLOCAL - case 1695: + case 1698: yyDollar = yyS[yypt-0 : yypt+1] -//line mysql_sql.y:11072 +//line mysql_sql.y:11106 { } - case 1696: + case 1699: yyDollar = yyS[yypt-2 : yypt+1] -//line mysql_sql.y:11074 +//line mysql_sql.y:11108 { } - case 1731: + case 1734: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11116 +//line mysql_sql.y:11150 { name := tree.NewUnresolvedColName(yyDollar[1].str) str := strings.ToLower(yyDollar[3].str) @@ -24716,106 +24891,106 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1732: + case 1735: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.FuncType -//line mysql_sql.y:11128 +//line mysql_sql.y:11162 { yyLOCAL = tree.FUNC_TYPE_DEFAULT } yyVAL.union = yyLOCAL - case 1733: + case 1736: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.FuncType -//line mysql_sql.y:11132 +//line mysql_sql.y:11166 { yyLOCAL = tree.FUNC_TYPE_DISTINCT } yyVAL.union = yyLOCAL - case 1734: + case 1737: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.FuncType -//line mysql_sql.y:11136 +//line mysql_sql.y:11170 { yyLOCAL = tree.FUNC_TYPE_ALL } yyVAL.union = yyLOCAL - case 1735: + case 1738: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.Tuple -//line mysql_sql.y:11142 +//line mysql_sql.y:11176 { yyLOCAL = tree.NewTuple(yyDollar[2].exprsUnion()) } yyVAL.union = yyLOCAL - case 1736: + case 1739: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.Exprs -//line mysql_sql.y:11147 +//line mysql_sql.y:11181 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1737: + case 1740: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Exprs -//line mysql_sql.y:11151 +//line mysql_sql.y:11185 { yyLOCAL = yyDollar[1].exprsUnion() } yyVAL.union = yyLOCAL - case 1738: + case 1741: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Exprs -//line mysql_sql.y:11157 +//line mysql_sql.y:11191 { yyLOCAL = tree.Exprs{yyDollar[1].exprUnion()} } yyVAL.union = yyLOCAL - case 1739: + case 1742: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Exprs -//line mysql_sql.y:11161 +//line mysql_sql.y:11195 { yyLOCAL = append(yyDollar[1].exprsUnion(), yyDollar[3].exprUnion()) } yyVAL.union = yyLOCAL - case 1740: + case 1743: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Exprs -//line mysql_sql.y:11167 +//line mysql_sql.y:11201 { yyLOCAL = tree.Exprs{yyDollar[1].exprUnion()} } yyVAL.union = yyLOCAL - case 1741: + case 1744: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Exprs -//line mysql_sql.y:11171 +//line mysql_sql.y:11205 { yyLOCAL = append(yyDollar[1].exprsUnion(), yyDollar[3].exprUnion()) } yyVAL.union = yyLOCAL - case 1742: + case 1745: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11178 +//line mysql_sql.y:11212 { yyLOCAL = tree.NewAndExpr(yyDollar[1].exprUnion(), yyDollar[3].exprUnion()) } yyVAL.union = yyLOCAL - case 1743: + case 1746: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11182 +//line mysql_sql.y:11216 { yyLOCAL = tree.NewOrExpr(yyDollar[1].exprUnion(), yyDollar[3].exprUnion()) } yyVAL.union = yyLOCAL - case 1744: + case 1747: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11186 +//line mysql_sql.y:11220 { name := tree.NewUnresolvedColName("concat") yyLOCAL = &tree.FuncExpr{ @@ -24825,355 +25000,355 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1745: + case 1748: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11195 +//line mysql_sql.y:11229 { yyLOCAL = tree.NewXorExpr(yyDollar[1].exprUnion(), yyDollar[3].exprUnion()) } yyVAL.union = yyLOCAL - case 1746: + case 1749: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11199 +//line mysql_sql.y:11233 { yyLOCAL = tree.NewNotExpr(yyDollar[2].exprUnion()) } yyVAL.union = yyLOCAL - case 1747: + case 1750: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11203 +//line mysql_sql.y:11237 { yyLOCAL = yyDollar[1].exprUnion() } yyVAL.union = yyLOCAL - case 1748: + case 1751: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11208 +//line mysql_sql.y:11242 { yyLOCAL = yyDollar[1].exprUnion() } yyVAL.union = yyLOCAL - case 1749: + case 1752: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11212 +//line mysql_sql.y:11246 { yyLOCAL = tree.NewMaxValue() } yyVAL.union = yyLOCAL - case 1750: + case 1753: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11218 +//line mysql_sql.y:11252 { yyLOCAL = tree.NewIsNullExpr(yyDollar[1].exprUnion()) } yyVAL.union = yyLOCAL - case 1751: + case 1754: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11222 +//line mysql_sql.y:11256 { yyLOCAL = tree.NewIsNotNullExpr(yyDollar[1].exprUnion()) } yyVAL.union = yyLOCAL - case 1752: + case 1755: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11226 +//line mysql_sql.y:11260 { yyLOCAL = tree.NewIsUnknownExpr(yyDollar[1].exprUnion()) } yyVAL.union = yyLOCAL - case 1753: + case 1756: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11230 +//line mysql_sql.y:11264 { yyLOCAL = tree.NewIsNotUnknownExpr(yyDollar[1].exprUnion()) } yyVAL.union = yyLOCAL - case 1754: + case 1757: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11234 +//line mysql_sql.y:11268 { yyLOCAL = tree.NewIsTrueExpr(yyDollar[1].exprUnion()) } yyVAL.union = yyLOCAL - case 1755: + case 1758: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11238 +//line mysql_sql.y:11272 { yyLOCAL = tree.NewIsNotTrueExpr(yyDollar[1].exprUnion()) } yyVAL.union = yyLOCAL - case 1756: + case 1759: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11242 +//line mysql_sql.y:11276 { yyLOCAL = tree.NewIsFalseExpr(yyDollar[1].exprUnion()) } yyVAL.union = yyLOCAL - case 1757: + case 1760: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11246 +//line mysql_sql.y:11280 { yyLOCAL = tree.NewIsNotFalseExpr(yyDollar[1].exprUnion()) } yyVAL.union = yyLOCAL - case 1758: + case 1761: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11250 +//line mysql_sql.y:11284 { yyLOCAL = tree.NewComparisonExpr(yyDollar[2].comparisonOpUnion(), yyDollar[1].exprUnion(), yyDollar[3].exprUnion()) } yyVAL.union = yyLOCAL - case 1759: + case 1762: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11254 +//line mysql_sql.y:11288 { yyLOCAL = tree.NewSubqueryComparisonExpr(yyDollar[2].comparisonOpUnion(), yyDollar[3].comparisonOpUnion(), yyDollar[1].exprUnion(), yyDollar[4].subqueryUnion()) yyLOCAL = tree.NewSubqueryComparisonExpr(yyDollar[2].comparisonOpUnion(), yyDollar[3].comparisonOpUnion(), yyDollar[1].exprUnion(), yyDollar[4].subqueryUnion()) } yyVAL.union = yyLOCAL - case 1761: + case 1764: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11262 +//line mysql_sql.y:11296 { yyLOCAL = tree.NewComparisonExpr(tree.IN, yyDollar[1].exprUnion(), yyDollar[3].exprUnion()) } yyVAL.union = yyLOCAL - case 1762: + case 1765: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11266 +//line mysql_sql.y:11300 { yyLOCAL = tree.NewComparisonExpr(tree.NOT_IN, yyDollar[1].exprUnion(), yyDollar[4].exprUnion()) } yyVAL.union = yyLOCAL - case 1763: + case 1766: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11270 +//line mysql_sql.y:11304 { yyLOCAL = tree.NewComparisonExprWithEscape(tree.LIKE, yyDollar[1].exprUnion(), yyDollar[3].exprUnion(), yyDollar[4].exprUnion()) } yyVAL.union = yyLOCAL - case 1764: + case 1767: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11274 +//line mysql_sql.y:11308 { yyLOCAL = tree.NewComparisonExprWithEscape(tree.NOT_LIKE, yyDollar[1].exprUnion(), yyDollar[4].exprUnion(), yyDollar[5].exprUnion()) } yyVAL.union = yyLOCAL - case 1765: + case 1768: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11278 +//line mysql_sql.y:11312 { yyLOCAL = tree.NewComparisonExprWithEscape(tree.ILIKE, yyDollar[1].exprUnion(), yyDollar[3].exprUnion(), yyDollar[4].exprUnion()) } yyVAL.union = yyLOCAL - case 1766: + case 1769: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11282 +//line mysql_sql.y:11316 { yyLOCAL = tree.NewComparisonExprWithEscape(tree.NOT_ILIKE, yyDollar[1].exprUnion(), yyDollar[4].exprUnion(), yyDollar[5].exprUnion()) } yyVAL.union = yyLOCAL - case 1767: + case 1770: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11286 +//line mysql_sql.y:11320 { yyLOCAL = tree.NewComparisonExpr(tree.REG_MATCH, yyDollar[1].exprUnion(), yyDollar[3].exprUnion()) } yyVAL.union = yyLOCAL - case 1768: + case 1771: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11290 +//line mysql_sql.y:11324 { yyLOCAL = tree.NewComparisonExpr(tree.NOT_REG_MATCH, yyDollar[1].exprUnion(), yyDollar[4].exprUnion()) } yyVAL.union = yyLOCAL - case 1769: + case 1772: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11294 +//line mysql_sql.y:11328 { yyLOCAL = tree.NewRangeCond(false, yyDollar[1].exprUnion(), yyDollar[3].exprUnion(), yyDollar[5].exprUnion()) } yyVAL.union = yyLOCAL - case 1770: + case 1773: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11298 +//line mysql_sql.y:11332 { yyLOCAL = tree.NewRangeCond(true, yyDollar[1].exprUnion(), yyDollar[4].exprUnion(), yyDollar[6].exprUnion()) } yyVAL.union = yyLOCAL - case 1772: + case 1775: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11304 +//line mysql_sql.y:11338 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1773: + case 1776: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11308 +//line mysql_sql.y:11342 { yyLOCAL = yyDollar[2].exprUnion() } yyVAL.union = yyLOCAL - case 1774: + case 1777: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11314 +//line mysql_sql.y:11348 { yyLOCAL = yyDollar[1].tupleUnion() } yyVAL.union = yyLOCAL - case 1775: + case 1778: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11318 +//line mysql_sql.y:11352 { yyLOCAL = yyDollar[1].subqueryUnion() } yyVAL.union = yyLOCAL - case 1776: + case 1779: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.ComparisonOp -//line mysql_sql.y:11325 +//line mysql_sql.y:11359 { yyLOCAL = tree.ALL } yyVAL.union = yyLOCAL - case 1777: + case 1780: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.ComparisonOp -//line mysql_sql.y:11329 +//line mysql_sql.y:11363 { yyLOCAL = tree.ANY } yyVAL.union = yyLOCAL - case 1778: + case 1781: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.ComparisonOp -//line mysql_sql.y:11333 +//line mysql_sql.y:11367 { yyLOCAL = tree.SOME } yyVAL.union = yyLOCAL - case 1779: + case 1782: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.ComparisonOp -//line mysql_sql.y:11339 +//line mysql_sql.y:11373 { yyLOCAL = tree.EQUAL } yyVAL.union = yyLOCAL - case 1780: + case 1783: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.ComparisonOp -//line mysql_sql.y:11343 +//line mysql_sql.y:11377 { yyLOCAL = tree.LESS_THAN } yyVAL.union = yyLOCAL - case 1781: + case 1784: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.ComparisonOp -//line mysql_sql.y:11347 +//line mysql_sql.y:11381 { yyLOCAL = tree.GREAT_THAN } yyVAL.union = yyLOCAL - case 1782: + case 1785: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.ComparisonOp -//line mysql_sql.y:11351 +//line mysql_sql.y:11385 { yyLOCAL = tree.LESS_THAN_EQUAL } yyVAL.union = yyLOCAL - case 1783: + case 1786: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.ComparisonOp -//line mysql_sql.y:11355 +//line mysql_sql.y:11389 { yyLOCAL = tree.GREAT_THAN_EQUAL } yyVAL.union = yyLOCAL - case 1784: + case 1787: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.ComparisonOp -//line mysql_sql.y:11359 +//line mysql_sql.y:11393 { yyLOCAL = tree.NOT_EQUAL } yyVAL.union = yyLOCAL - case 1785: + case 1788: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.ComparisonOp -//line mysql_sql.y:11363 +//line mysql_sql.y:11397 { yyLOCAL = tree.NULL_SAFE_EQUAL } yyVAL.union = yyLOCAL - case 1786: + case 1789: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.ColumnAttribute -//line mysql_sql.y:11369 +//line mysql_sql.y:11403 { yyLOCAL = tree.NewAttributePrimaryKey() } yyVAL.union = yyLOCAL - case 1787: + case 1790: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.ColumnAttribute -//line mysql_sql.y:11373 +//line mysql_sql.y:11407 { yyLOCAL = tree.NewAttributeUniqueKey() } yyVAL.union = yyLOCAL - case 1788: + case 1791: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.ColumnAttribute -//line mysql_sql.y:11377 +//line mysql_sql.y:11411 { yyLOCAL = tree.NewAttributeUnique() } yyVAL.union = yyLOCAL - case 1789: + case 1792: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.ColumnAttribute -//line mysql_sql.y:11381 +//line mysql_sql.y:11415 { yyLOCAL = tree.NewAttributeKey() } yyVAL.union = yyLOCAL - case 1790: + case 1793: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11387 +//line mysql_sql.y:11421 { str := fmt.Sprintf("%v", yyDollar[1].item) switch v := yyDollar[1].item.(type) { @@ -25187,35 +25362,35 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1791: + case 1794: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11400 +//line mysql_sql.y:11434 { fval := yyDollar[1].item.(float64) yyLOCAL = tree.NewNumVal(fval, yylex.(*Lexer).scanner.LastToken, false, tree.P_float64) } yyVAL.union = yyLOCAL - case 1792: + case 1795: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11405 +//line mysql_sql.y:11439 { yyLOCAL = tree.NewNumVal(yyDollar[1].str, yyDollar[1].str, false, tree.P_decimal) } yyVAL.union = yyLOCAL - case 1793: + case 1796: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11411 +//line mysql_sql.y:11445 { yyLOCAL = tree.NewNumVal(yyDollar[1].str, yyDollar[1].str, false, tree.P_char) } yyVAL.union = yyLOCAL - case 1794: + case 1797: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11415 +//line mysql_sql.y:11449 { str := fmt.Sprintf("%v", yyDollar[1].item) switch v := yyDollar[1].item.(type) { @@ -25229,51 +25404,51 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1795: + case 1798: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11428 +//line mysql_sql.y:11462 { fval := yyDollar[1].item.(float64) yyLOCAL = tree.NewNumVal(fval, yylex.(*Lexer).scanner.LastToken, false, tree.P_float64) } yyVAL.union = yyLOCAL - case 1796: + case 1799: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11433 +//line mysql_sql.y:11467 { yyLOCAL = tree.NewNumVal(true, "true", false, tree.P_bool) } yyVAL.union = yyLOCAL - case 1797: + case 1800: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11437 +//line mysql_sql.y:11471 { yyLOCAL = tree.NewNumVal(false, "false", false, tree.P_bool) } yyVAL.union = yyLOCAL - case 1798: + case 1801: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11441 +//line mysql_sql.y:11475 { yyLOCAL = tree.NewNumVal("null", "null", false, tree.P_null) } yyVAL.union = yyLOCAL - case 1799: + case 1802: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11445 +//line mysql_sql.y:11479 { yyLOCAL = tree.NewNumVal(yyDollar[1].str, yyDollar[1].str, false, tree.P_hexnum) } yyVAL.union = yyLOCAL - case 1800: + case 1803: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11449 +//line mysql_sql.y:11483 { if strings.HasPrefix(yyDollar[2].str, "0x") { yyDollar[2].str = yyDollar[2].str[2:] @@ -25281,69 +25456,69 @@ yydefault: yyLOCAL = tree.NewNumVal(yyDollar[2].str, yyDollar[2].str, false, tree.P_bit) } yyVAL.union = yyLOCAL - case 1801: + case 1804: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11456 +//line mysql_sql.y:11490 { yyLOCAL = tree.NewNumVal(yyDollar[1].str, yyDollar[1].str, false, tree.P_decimal) } yyVAL.union = yyLOCAL - case 1802: + case 1805: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11460 +//line mysql_sql.y:11494 { yyLOCAL = tree.NewNumVal(yyDollar[1].str, yyDollar[1].str, false, tree.P_bit) } yyVAL.union = yyLOCAL - case 1803: + case 1806: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11464 +//line mysql_sql.y:11498 { yyLOCAL = tree.NewParamExpr(yylex.(*Lexer).GetParamIndex()) } yyVAL.union = yyLOCAL - case 1804: + case 1807: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11468 +//line mysql_sql.y:11502 { yyLOCAL = tree.NewNumVal(yyDollar[2].str, yyDollar[2].str, false, tree.P_ScoreBinary) } yyVAL.union = yyLOCAL - case 1805: + case 1808: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:11475 +//line mysql_sql.y:11509 { yyLOCAL = yyDollar[1].columnTypeUnion() yyLOCAL.InternalType.Unsigned = yyDollar[2].unsignedOptUnion() yyLOCAL.InternalType.Zerofill = yyDollar[3].zeroFillOptUnion() } yyVAL.union = yyLOCAL - case 1809: + case 1812: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:11486 +//line mysql_sql.y:11520 { yyLOCAL = yyDollar[1].columnTypeUnion() yyLOCAL.InternalType.DisplayWith = yyDollar[2].lengthOptUnion() } yyVAL.union = yyLOCAL - case 1810: + case 1813: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:11491 +//line mysql_sql.y:11525 { yyLOCAL = yyDollar[1].columnTypeUnion() } yyVAL.union = yyLOCAL - case 1811: + case 1814: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:11497 +//line mysql_sql.y:11531 { locale := "" yyLOCAL = &tree.T{ @@ -25356,10 +25531,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1812: + case 1815: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:11509 +//line mysql_sql.y:11543 { locale := "" yyLOCAL = &tree.T{ @@ -25372,10 +25547,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1813: + case 1816: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:11521 +//line mysql_sql.y:11555 { locale := "" yyLOCAL = &tree.T{ @@ -25388,10 +25563,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1814: + case 1817: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:11533 +//line mysql_sql.y:11567 { locale := "" yyLOCAL = &tree.T{ @@ -25405,10 +25580,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1815: + case 1818: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:11546 +//line mysql_sql.y:11580 { locale := "" yyLOCAL = &tree.T{ @@ -25422,10 +25597,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1816: + case 1819: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:11559 +//line mysql_sql.y:11593 { locale := "" yyLOCAL = &tree.T{ @@ -25439,10 +25614,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1817: + case 1820: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:11572 +//line mysql_sql.y:11606 { locale := "" yyLOCAL = &tree.T{ @@ -25456,10 +25631,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1818: + case 1821: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:11585 +//line mysql_sql.y:11619 { locale := "" yyLOCAL = &tree.T{ @@ -25473,10 +25648,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1819: + case 1822: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:11598 +//line mysql_sql.y:11632 { locale := "" yyLOCAL = &tree.T{ @@ -25490,10 +25665,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1820: + case 1823: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:11611 +//line mysql_sql.y:11645 { locale := "" yyLOCAL = &tree.T{ @@ -25507,10 +25682,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1821: + case 1824: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:11624 +//line mysql_sql.y:11658 { locale := "" yyLOCAL = &tree.T{ @@ -25524,10 +25699,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1822: + case 1825: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:11637 +//line mysql_sql.y:11671 { locale := "" yyLOCAL = &tree.T{ @@ -25541,10 +25716,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1823: + case 1826: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:11650 +//line mysql_sql.y:11684 { locale := "" yyLOCAL = &tree.T{ @@ -25558,10 +25733,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1824: + case 1827: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:11663 +//line mysql_sql.y:11697 { locale := "" yyLOCAL = &tree.T{ @@ -25575,10 +25750,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1825: + case 1828: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:11678 +//line mysql_sql.y:11712 { locale := "" if yyDollar[2].lengthScaleOptUnion().DisplayWith > 255 { @@ -25606,10 +25781,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1826: + case 1829: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:11705 +//line mysql_sql.y:11739 { locale := "" if yyDollar[2].lengthScaleOptUnion().DisplayWith > 255 { @@ -25651,10 +25826,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1827: + case 1830: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:11747 +//line mysql_sql.y:11781 { locale := "" if yyDollar[2].lengthScaleOptUnion().Scale != tree.NotDefineDec && yyDollar[2].lengthScaleOptUnion().Scale > yyDollar[2].lengthScaleOptUnion().DisplayWith { @@ -25691,10 +25866,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1828: + case 1831: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:11783 +//line mysql_sql.y:11817 { locale := "" if yyDollar[2].lengthScaleOptUnion().Scale != tree.NotDefineDec && yyDollar[2].lengthScaleOptUnion().Scale > yyDollar[2].lengthScaleOptUnion().DisplayWith { @@ -25731,10 +25906,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1829: + case 1832: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:11819 +//line mysql_sql.y:11853 { locale := "" yyLOCAL = &tree.T{ @@ -25750,10 +25925,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1830: + case 1833: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:11836 +//line mysql_sql.y:11870 { locale := "" yyLOCAL = &tree.T{ @@ -25766,10 +25941,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1831: + case 1834: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:11848 +//line mysql_sql.y:11882 { locale := "" if yyDollar[2].lengthOptUnion() < 0 || yyDollar[2].lengthOptUnion() > 6 { @@ -25790,10 +25965,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1832: + case 1835: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:11868 +//line mysql_sql.y:11902 { locale := "" if yyDollar[2].lengthOptUnion() < 0 || yyDollar[2].lengthOptUnion() > 6 { @@ -25814,10 +25989,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1833: + case 1836: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:11888 +//line mysql_sql.y:11922 { locale := "" if yyDollar[2].lengthOptUnion() < 0 || yyDollar[2].lengthOptUnion() > 6 { @@ -25838,10 +26013,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1834: + case 1837: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:11908 +//line mysql_sql.y:11942 { locale := "" yyLOCAL = &tree.T{ @@ -25856,10 +26031,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1835: + case 1838: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:11924 +//line mysql_sql.y:11958 { locale := "" yyLOCAL = &tree.T{ @@ -25873,10 +26048,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1836: + case 1839: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:11937 +//line mysql_sql.y:11971 { locale := "" yyLOCAL = &tree.T{ @@ -25890,10 +26065,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1837: + case 1840: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:11950 +//line mysql_sql.y:11984 { locale := "" yyLOCAL = &tree.T{ @@ -25907,10 +26082,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1838: + case 1841: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:11963 +//line mysql_sql.y:11997 { locale := "" yyLOCAL = &tree.T{ @@ -25924,10 +26099,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1839: + case 1842: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:11976 +//line mysql_sql.y:12010 { locale := "" yyLOCAL = &tree.T{ @@ -25940,10 +26115,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1840: + case 1843: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:11988 +//line mysql_sql.y:12022 { locale := "" yyLOCAL = &tree.T{ @@ -25956,10 +26131,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1841: + case 1844: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:12000 +//line mysql_sql.y:12034 { locale := "" yyLOCAL = &tree.T{ @@ -25972,10 +26147,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1842: + case 1845: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:12012 +//line mysql_sql.y:12046 { locale := "" yyLOCAL = &tree.T{ @@ -25988,10 +26163,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1843: + case 1846: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:12024 +//line mysql_sql.y:12058 { locale := "" yyLOCAL = &tree.T{ @@ -26004,10 +26179,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1844: + case 1847: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:12036 +//line mysql_sql.y:12070 { locale := "" yyLOCAL = &tree.T{ @@ -26020,10 +26195,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1845: + case 1848: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:12048 +//line mysql_sql.y:12082 { locale := "" yyLOCAL = &tree.T{ @@ -26036,10 +26211,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1846: + case 1849: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:12060 +//line mysql_sql.y:12094 { locale := "" yyLOCAL = &tree.T{ @@ -26052,10 +26227,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1847: + case 1850: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:12072 +//line mysql_sql.y:12106 { locale := "" yyLOCAL = &tree.T{ @@ -26068,10 +26243,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1848: + case 1851: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:12084 +//line mysql_sql.y:12118 { locale := "" yyLOCAL = &tree.T{ @@ -26084,10 +26259,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1849: + case 1852: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:12096 +//line mysql_sql.y:12130 { locale := "" yyLOCAL = &tree.T{ @@ -26101,10 +26276,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1850: + case 1853: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:12109 +//line mysql_sql.y:12143 { locale := "" yyLOCAL = &tree.T{ @@ -26118,10 +26293,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1851: + case 1854: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:12122 +//line mysql_sql.y:12156 { locale := "" yyLOCAL = &tree.T{ @@ -26135,10 +26310,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1852: + case 1855: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:12135 +//line mysql_sql.y:12169 { locale := "" yyLOCAL = &tree.T{ @@ -26152,10 +26327,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1853: + case 1856: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:12148 +//line mysql_sql.y:12182 { locale := "" yyLOCAL = &tree.T{ @@ -26169,20 +26344,20 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1854: + case 1857: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:12163 +//line mysql_sql.y:12197 { yyLOCAL = &tree.Do{ Exprs: yyDollar[2].exprsUnion(), } } yyVAL.union = yyLOCAL - case 1855: + case 1858: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:12171 +//line mysql_sql.y:12205 { yyLOCAL = &tree.Declare{ Variables: yyDollar[2].strsUnion(), @@ -26191,10 +26366,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1856: + case 1859: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:12180 +//line mysql_sql.y:12214 { yyLOCAL = &tree.Declare{ Variables: yyDollar[2].strsUnion(), @@ -26203,10 +26378,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1857: + case 1860: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:12190 +//line mysql_sql.y:12224 { locale := "" yyLOCAL = &tree.T{ @@ -26219,75 +26394,75 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1858: + case 1861: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []string -//line mysql_sql.y:12213 +//line mysql_sql.y:12247 { yyLOCAL = make([]string, 0, 4) yyLOCAL = append(yyLOCAL, yyDollar[1].str) } yyVAL.union = yyLOCAL - case 1859: + case 1862: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []string -//line mysql_sql.y:12218 +//line mysql_sql.y:12252 { yyLOCAL = append(yyDollar[1].strsUnion(), yyDollar[3].str) } yyVAL.union = yyLOCAL - case 1860: + case 1863: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL int32 -//line mysql_sql.y:12224 +//line mysql_sql.y:12258 { yyLOCAL = 0 } yyVAL.union = yyLOCAL - case 1862: + case 1865: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL int32 -//line mysql_sql.y:12231 +//line mysql_sql.y:12265 { yyLOCAL = 0 } yyVAL.union = yyLOCAL - case 1863: + case 1866: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL int32 -//line mysql_sql.y:12235 +//line mysql_sql.y:12269 { yyLOCAL = int32(yyDollar[2].item.(int64)) } yyVAL.union = yyLOCAL - case 1864: + case 1867: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL int32 -//line mysql_sql.y:12240 +//line mysql_sql.y:12274 { yyLOCAL = int32(-1) } yyVAL.union = yyLOCAL - case 1865: + case 1868: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL int32 -//line mysql_sql.y:12244 +//line mysql_sql.y:12278 { yyLOCAL = int32(yyDollar[2].item.(int64)) } yyVAL.union = yyLOCAL - case 1866: + case 1869: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL int32 -//line mysql_sql.y:12250 +//line mysql_sql.y:12284 { yyLOCAL = tree.GetDisplayWith(int32(yyDollar[2].item.(int64))) } yyVAL.union = yyLOCAL - case 1867: + case 1870: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.LengthScaleOpt -//line mysql_sql.y:12256 +//line mysql_sql.y:12290 { yyLOCAL = tree.LengthScaleOpt{ DisplayWith: tree.NotDefineDisplayWidth, @@ -26295,10 +26470,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1868: + case 1871: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.LengthScaleOpt -//line mysql_sql.y:12263 +//line mysql_sql.y:12297 { yyLOCAL = tree.LengthScaleOpt{ DisplayWith: tree.GetDisplayWith(int32(yyDollar[2].item.(int64))), @@ -26306,10 +26481,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1869: + case 1872: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.LengthScaleOpt -//line mysql_sql.y:12270 +//line mysql_sql.y:12304 { yyLOCAL = tree.LengthScaleOpt{ DisplayWith: tree.GetDisplayWith(int32(yyDollar[2].item.(int64))), @@ -26317,10 +26492,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1870: + case 1873: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.LengthScaleOpt -//line mysql_sql.y:12279 +//line mysql_sql.y:12313 { yyLOCAL = tree.LengthScaleOpt{ DisplayWith: 38, // this is the default precision for decimal @@ -26328,10 +26503,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1871: + case 1874: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.LengthScaleOpt -//line mysql_sql.y:12286 +//line mysql_sql.y:12320 { yyLOCAL = tree.LengthScaleOpt{ DisplayWith: tree.GetDisplayWith(int32(yyDollar[2].item.(int64))), @@ -26339,10 +26514,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1872: + case 1875: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.LengthScaleOpt -//line mysql_sql.y:12293 +//line mysql_sql.y:12327 { yyLOCAL = tree.LengthScaleOpt{ DisplayWith: tree.GetDisplayWith(int32(yyDollar[2].item.(int64))), @@ -26350,52 +26525,52 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1873: + case 1876: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:12302 +//line mysql_sql.y:12336 { yyLOCAL = false } yyVAL.union = yyLOCAL - case 1874: + case 1877: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:12306 +//line mysql_sql.y:12340 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 1875: + case 1878: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:12310 +//line mysql_sql.y:12344 { yyLOCAL = false } yyVAL.union = yyLOCAL - case 1876: + case 1879: yyDollar = yyS[yypt-0 : yypt+1] -//line mysql_sql.y:12316 +//line mysql_sql.y:12350 { } - case 1877: + case 1880: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:12318 +//line mysql_sql.y:12352 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 1881: + case 1884: yyDollar = yyS[yypt-0 : yypt+1] -//line mysql_sql.y:12328 +//line mysql_sql.y:12362 { yyVAL.str = "" } - case 1882: + case 1885: yyDollar = yyS[yypt-1 : yypt+1] -//line mysql_sql.y:12332 +//line mysql_sql.y:12366 { yyVAL.str = string(yyDollar[1].str) } diff --git a/pkg/sql/parsers/dialect/mysql/mysql_sql.y b/pkg/sql/parsers/dialect/mysql/mysql_sql.y index 6ed240ca60344..75f26c72f461f 100644 --- a/pkg/sql/parsers/dialect/mysql/mysql_sql.y +++ b/pkg/sql/parsers/dialect/mysql/mysql_sql.y @@ -4824,6 +4824,23 @@ delete_without_using_stmt: Limit: $11, } } +| DELETE CDC priority_opt quick_opt ignore_opt FROM table_name partition_clause_opt as_opt_id where_expression_opt order_by_opt limit_opt + { + // Single-Table Syntax + t := &tree.AliasedTableExpr { + Expr: $7, + As: tree.AliasClause{ + Alias: tree.Identifier($9), + }, + } + $$ = &tree.Delete{ + Tables: tree.TableExprs{t}, + Where: $10, + OrderBy: $11, + Limit: $12, + IsCdc: true, + } + } | DELETE priority_opt quick_opt ignore_opt table_name_wild_list FROM table_references where_expression_opt { // Multiple-Table Syntax @@ -4903,6 +4920,14 @@ replace_stmt: rep.PartitionNames = $3 $$ = rep } +| REPLACE CDC into_table_name partition_clause_opt replace_data + { + rep := $5 + rep.Table = $3 + rep.PartitionNames = $4 + rep.IsCdc = true + $$ = rep + } replace_data: VALUES values_list @@ -4976,6 +5001,15 @@ insert_stmt: ins.OnDuplicateUpdate = []*tree.UpdateExpr{nil} $$ = ins } +| INSERT CDC into_table_name partition_clause_opt insert_data on_duplicate_key_update_opt + { + ins := $5 + ins.Table = $3 + ins.PartitionNames = $4 + ins.OnDuplicateUpdate = $6 + ins.IsCdc = true + $$ = ins + } accounts_list: account_name diff --git a/pkg/sql/parsers/dialect/mysql/mysql_sql_test.go b/pkg/sql/parsers/dialect/mysql/mysql_sql_test.go index 861fbdbc170d7..28449b2e8aa1e 100644 --- a/pkg/sql/parsers/dialect/mysql/mysql_sql_test.go +++ b/pkg/sql/parsers/dialect/mysql/mysql_sql_test.go @@ -3221,6 +3221,18 @@ var ( input: "select t.a from sa.t centroidx ('Vector_ip_ops') join u", output: "select t.a from sa.t centroidx ('vector_ip_ops') join u", }, + { + input: "insert cdc into t values (0, 1)", + output: "insert cdc into t values (0, 1)", + }, + { + input: "replace cdc into t values (0, 1)", + output: "replace cdc into t values (0, 1)", + }, + { + input: "delete cdc from t where a in (0, 1)", + output: "delete cdc from t where a in (0, 1)", + }, } ) diff --git a/pkg/sql/parsers/tree/delete.go b/pkg/sql/parsers/tree/delete.go index 4c65cdd8ea2f7..fa971e52d5f43 100644 --- a/pkg/sql/parsers/tree/delete.go +++ b/pkg/sql/parsers/tree/delete.go @@ -24,6 +24,7 @@ type Delete struct { OrderBy OrderBy Limit *Limit With *With + IsCdc bool } func (node *Delete) Format(ctx *FmtCtx) { @@ -31,7 +32,11 @@ func (node *Delete) Format(ctx *FmtCtx) { node.With.Format(ctx) ctx.WriteByte(' ') } - ctx.WriteString("delete from ") + ctx.WriteString("delete ") + if node.IsCdc { + ctx.WriteString("cdc ") + } + ctx.WriteString("from ") prefix := "" for _, a := range node.Tables { diff --git a/pkg/sql/parsers/tree/insert.go b/pkg/sql/parsers/tree/insert.go index 8dfcdf9815f00..05795965f2906 100644 --- a/pkg/sql/parsers/tree/insert.go +++ b/pkg/sql/parsers/tree/insert.go @@ -27,10 +27,15 @@ type Insert struct { IsRestore bool IsRestoreByTs bool FromDataTenantID uint32 + IsCdc bool } func (node *Insert) Format(ctx *FmtCtx) { - ctx.WriteString("insert into ") + ctx.WriteString("insert ") + if node.IsCdc { + ctx.WriteString("cdc ") + } + ctx.WriteString("into ") node.Table.Format(ctx) if node.PartitionNames != nil { diff --git a/pkg/sql/parsers/tree/replace.go b/pkg/sql/parsers/tree/replace.go index 68935d181bd94..bc2c3386d7b0a 100644 --- a/pkg/sql/parsers/tree/replace.go +++ b/pkg/sql/parsers/tree/replace.go @@ -31,10 +31,15 @@ type Replace struct { PartitionNames IdentifierList Columns IdentifierList Rows *Select + IsCdc bool } func (node *Replace) Format(ctx *FmtCtx) { - ctx.WriteString("replace into ") + ctx.WriteString("replace ") + if node.IsCdc { + ctx.WriteString("cdc ") + } + ctx.WriteString("into ") node.Table.Format(ctx) if node.PartitionNames != nil { From 8ada8bd904ed19d33e320d848d2ffc47a61608e3 Mon Sep 17 00:00:00 2001 From: cpegeric Date: Fri, 25 Apr 2025 11:38:50 +0100 Subject: [PATCH 002/223] add hnswsync --- pkg/cdc/hnsw_sinker.go | 444 +++++++++++++++++++++++++++++++++++++++++ pkg/cdc/sinker.go | 4 + pkg/cdc/types.go | 1 + 3 files changed, 449 insertions(+) create mode 100644 pkg/cdc/hnsw_sinker.go diff --git a/pkg/cdc/hnsw_sinker.go b/pkg/cdc/hnsw_sinker.go new file mode 100644 index 0000000000000..9ad2d8845592f --- /dev/null +++ b/pkg/cdc/hnsw_sinker.go @@ -0,0 +1,444 @@ +// Copyright 2024 Matrix Origin +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package cdc + +import ( + "bytes" + "context" + "encoding/json" + "fmt" + "strings" + "sync/atomic" + "time" + + "github.com/matrixorigin/matrixone/pkg/catalog" + "github.com/matrixorigin/matrixone/pkg/common/moerr" + "github.com/matrixorigin/matrixone/pkg/container/batch" + "github.com/matrixorigin/matrixone/pkg/container/types" + "github.com/matrixorigin/matrixone/pkg/logutil" + "github.com/matrixorigin/matrixone/pkg/pb/plan" + v2 "github.com/matrixorigin/matrixone/pkg/util/metric/v2" +) + +const ( + CDC_INSERT = "I" + CDC_UPSERT = "U" + CDC_DELETE = "D" +) + +var _ Sinker = &hnswSyncSinker[float32]{} + +type HnswCdc[T types.RealNumbers] struct { + Start string `json:"start"` + End string `json:"end"` + Data []HnswCdcEntry[T] `json:"cdc"` +} + +type HnswCdcEntry[T types.RealNumbers] struct { + Type string `json:"t"` // I - INSERT, D - DELETE, U - UPSERT + PKey int64 `json:"pk"` + Vec []T `json:"v,omitempty"` +} + +type HnswCdcParam struct { +} + +func NewHnswCdc[T types.RealNumbers]() *HnswCdc[T] { + return &HnswCdc[T]{ + Data: make([]HnswCdcEntry[T], 0, 100), + } +} + +func (h *HnswCdc[T]) Reset() { + h.Data = h.Data[:0] +} + +func (h *HnswCdc[T]) Empty() bool { + return len(h.Data) == 0 +} + +func (h *HnswCdc[T]) Full() bool { + return len(h.Data) >= cap(h.Data) +} + +func (h *HnswCdc[T]) Insert(key int64, v []T) { + e := HnswCdcEntry[T]{ + Type: CDC_INSERT, + PKey: key, + Vec: v, + } + + h.Data = append(h.Data, e) +} + +func (h *HnswCdc[T]) Upsert(key int64, v []T) { + e := HnswCdcEntry[T]{ + Type: CDC_UPSERT, + PKey: key, + Vec: v, + } + + h.Data = append(h.Data, e) +} + +func (h *HnswCdc[T]) Delete(key int64) { + e := HnswCdcEntry[T]{ + Type: CDC_DELETE, + PKey: key, + } + + h.Data = append(h.Data, e) +} + +func (h *HnswCdc[T]) ToJson() (string, error) { + + b, err := json.Marshal(h) + if err != nil { + return "", err + } + return string(b), nil +} + +type hnswSyncSinker[T types.RealNumbers] struct { + mysql Sink + dbTblInfo *DbTableInfo + watermarkUpdater IWatermarkUpdater + ar *ActiveRoutine + tableDef *plan.TableDef + cdc *HnswCdc[T] + param HnswCdcParam + err atomic.Value + + sqlBufSendCh chan []byte + // only contains user defined column types, no mo meta cols + upsertTypes []*types.Type + // only contains pk columns + deleteTypes []*types.Type + pkColNames []string +} + +var NewHnswSyncSinker = func( + sinkUri UriInfo, + dbTblInfo *DbTableInfo, + watermarkUpdater IWatermarkUpdater, + tableDef *plan.TableDef, + retryTimes int, + retryDuration time.Duration, + ar *ActiveRoutine, + maxSqlLength uint64, + sendSqlTimeout string, +) (Sinker, error) { + + sink, err := NewMysqlSink(sinkUri.User, sinkUri.Password, sinkUri.Ip, sinkUri.Port, retryTimes, retryDuration, sendSqlTimeout) + if err != nil { + return nil, err + } + + ctx := context.Background() + padding := strings.Repeat(" ", sqlBufReserved) + // use db + err = sink.Send(ctx, ar, []byte(padding+fmt.Sprintf("use `%s`", dbTblInfo.SinkDbName)), false) + if err != nil { + return nil, err + } + + // TODO: check the tabledef and indexdef + + s := &hnswSyncSinker[float32]{ + mysql: sink, + dbTblInfo: dbTblInfo, + watermarkUpdater: watermarkUpdater, + ar: ar, + tableDef: tableDef, + cdc: NewHnswCdc[float32](), + } + + var maxAllowedPacket uint64 + _ = sink.(*mysqlSink).conn.QueryRow("SELECT @@max_allowed_packet").Scan(&maxAllowedPacket) + maxAllowedPacket = min(maxAllowedPacket, maxSqlLength) + logutil.Infof("cdc hnswSyncSinker(%v) maxAllowedPacket = %d", s.dbTblInfo, maxAllowedPacket) + + s.sqlBufSendCh = make(chan []byte) + + // TODO: check indexdef and we only need pk and vector index part + + // types + for _, col := range tableDef.Cols { + // skip internal columns + if _, ok := catalog.InternalColumns[col.Name]; ok { + continue + } + + s.upsertTypes = append(s.upsertTypes, &types.Type{ + Oid: types.T(col.Typ.Id), + Width: col.Typ.Width, + Scale: col.Typ.Scale, + }) + } + for _, name := range tableDef.Pkey.Names { + s.pkColNames = append(s.pkColNames, name) + col := tableDef.Cols[tableDef.Name2ColIndex[name]] + s.deleteTypes = append(s.deleteTypes, &types.Type{ + Oid: types.T(col.Typ.Id), + Width: col.Typ.Width, + Scale: col.Typ.Scale, + }) + } + + // err + s.err = atomic.Value{} + + return s, nil +} + +func (s *hnswSyncSinker[T]) Run(ctx context.Context, ar *ActiveRoutine) { + logutil.Infof("cdc hnswSyncSinker(%v).Run: start", s.dbTblInfo) + defer func() { + logutil.Infof("cdc hnswSyncSinker(%v).Run: end", s.dbTblInfo) + }() + + for sqlBuf := range s.sqlBufSendCh { + // have error, skip + if s.err.Load() != nil { + continue + } + + if bytes.Equal(sqlBuf, dummy) { + // dummy sql, do nothing + } else if bytes.Equal(sqlBuf, begin) { + if err := s.mysql.SendBegin(ctx); err != nil { + logutil.Errorf("cdc hnswSyncSinker(%v) SendBegin, err: %v", s.dbTblInfo, err) + // record error + s.err.Store(err) + } + } else if bytes.Equal(sqlBuf, commit) { + if err := s.mysql.SendCommit(ctx); err != nil { + logutil.Errorf("cdc hnswSyncSinker(%v) SendCommit, err: %v", s.dbTblInfo, err) + // record error + s.err.Store(err) + } + } else if bytes.Equal(sqlBuf, rollback) { + if err := s.mysql.SendRollback(ctx); err != nil { + logutil.Errorf("cdc hnswSyncSinker(%v) SendRollback, err: %v", s.dbTblInfo, err) + // record error + s.err.Store(err) + } + } else { + if err := s.mysql.Send(ctx, ar, sqlBuf, true); err != nil { + logutil.Errorf("cdc hnswSyncSinker(%v) send sql failed, err: %v, sql: %s", s.dbTblInfo, err, sqlBuf[sqlBufReserved:]) + // record error + s.err.Store(err) + } + } + } +} + +func (s *hnswSyncSinker[T]) Sink(ctx context.Context, data *DecoderOutput) { + watermark := s.watermarkUpdater.GetFromMem(s.dbTblInfo.SourceDbName, s.dbTblInfo.SourceTblName) + if data.toTs.LE(&watermark) { + logutil.Errorf("cdc hnswSyncSinker(%v): unexpected watermark: %s, current watermark: %s", + s.dbTblInfo, data.toTs.ToString(), watermark.ToString()) + return + } + s.cdc.Start = data.fromTs.ToString() + s.cdc.End = data.toTs.ToString() + + if data.noMoreData { + // complete sql statement + err := s.sendSql() + if err != nil { + s.err.Store(err) + } + return + } + + start := time.Now() + defer func() { + v2.CdcSinkDurationHistogram.Observe(time.Since(start).Seconds()) + }() + + if data.outputTyp == OutputTypeSnapshot { + s.sinkSnapshot(ctx, data.checkpointBat) + } else if data.outputTyp == OutputTypeTail { + s.sinkTail(ctx, data.insertAtmBatch, data.deleteAtmBatch) + } else { + s.err.Store(moerr.NewInternalError(ctx, fmt.Sprintf("cdc hnswSyncSinker unexpected output type: %v", data.outputTyp))) + } +} + +func (s *hnswSyncSinker[T]) SendBegin() { + s.sqlBufSendCh <- begin +} + +func (s *hnswSyncSinker[T]) SendCommit() { + s.sqlBufSendCh <- commit +} + +func (s *hnswSyncSinker[T]) SendRollback() { + s.sqlBufSendCh <- rollback +} + +func (s *hnswSyncSinker[T]) SendDummy() { + s.sqlBufSendCh <- dummy +} + +func (s *hnswSyncSinker[T]) Error() error { + if val := s.err.Load(); val == nil { + return nil + } else { + return val.(error) + } +} + +func (s *hnswSyncSinker[T]) Reset() { + s.cdc.Reset() + s.err = atomic.Value{} +} + +func (s *hnswSyncSinker[T]) Close() { + // stop Run goroutine + close(s.sqlBufSendCh) + s.mysql.Close() +} + +func (s *hnswSyncSinker[T]) sinkSnapshot(ctx context.Context, bat *batch.Batch) { + for i := 0; i < batchRowCount(bat); i++ { + + // get pk and vector + pk := int64(0) + v := []T(nil) + + s.cdc.Upsert(pk, v) + + // check full + if s.cdc.Full() { + // send sql + err := s.sendSql() + if err != nil { + s.err.Store(err) + return + } + } + } +} + +// upsertBatch and deleteBatch is sorted by ts +// for the same ts, delete first, then upsert +func (s *hnswSyncSinker[T]) sinkTail(ctx context.Context, upsertBatch, deleteBatch *AtomicBatch) { + var err error + + upsertIter := upsertBatch.GetRowIterator().(*atomicBatchRowIter) + deleteIter := deleteBatch.GetRowIterator().(*atomicBatchRowIter) + defer func() { + upsertIter.Close() + deleteIter.Close() + }() + + // output sql until one iterator reach the end + upsertIterHasNext, deleteIterHasNext := upsertIter.Next(), deleteIter.Next() + for upsertIterHasNext && deleteIterHasNext { + upsertItem, deleteItem := upsertIter.Item(), deleteIter.Item() + // compare ts, ignore pk + if upsertItem.Ts.LT(&deleteItem.Ts) { + if err = s.sinkUpsert(ctx, upsertIter); err != nil { + s.err.Store(err) + return + } + // get next item + upsertIterHasNext = upsertIter.Next() + } else { + if err = s.sinkDelete(ctx, deleteIter); err != nil { + s.err.Store(err) + return + } + // get next item + deleteIterHasNext = deleteIter.Next() + } + } + + // output the rest of upsert iterator + for upsertIterHasNext { + if err = s.sinkUpsert(ctx, upsertIter); err != nil { + s.err.Store(err) + return + } + // get next item + upsertIterHasNext = upsertIter.Next() + } + + // output the rest of delete iterator + for deleteIterHasNext { + if err = s.sinkDelete(ctx, deleteIter); err != nil { + s.err.Store(err) + return + } + // get next item + deleteIterHasNext = deleteIter.Next() + } + s.flushCdc() +} + +func (s *hnswSyncSinker[T]) sinkUpsert(ctx context.Context, upsertIter *atomicBatchRowIter) (err error) { + + // get row from the batch + pk := int64(0) + v := []T(nil) + s.cdc.Upsert(pk, v) + + if s.cdc.Full() { + // send SQL + return s.sendSql() + } + + return nil +} + +func (s *hnswSyncSinker[T]) sinkDelete(ctx context.Context, deleteIter *atomicBatchRowIter) (err error) { + + // get row from the batch + pk := int64(0) + s.cdc.Delete(pk) + if s.cdc.Full() { + return s.sendSql() + } + + return nil +} + +func (s *hnswSyncSinker[T]) flushCdc() (err error) { + return s.sendSql() +} + +func (s *hnswSyncSinker[T]) sendSql() error { + if s.cdc.Empty() { + return nil + } + + // generate sql from cdc + js, err := s.cdc.ToJson() + if err != nil { + return err + } + // pad extra space at the front and send SQL + padding := strings.Repeat(" ", sqlBufReserved) + sql := fmt.Sprintf("%s SELECT hnsw_cdc_update('%s', '%s', '%s');", padding, "db", "table", js) + + s.sqlBufSendCh <- []byte(sql) + + // reset + s.cdc.Reset() + + return nil +} diff --git a/pkg/cdc/sinker.go b/pkg/cdc/sinker.go index 9c8ac94e1b83f..336ad344fbaa4 100644 --- a/pkg/cdc/sinker.go +++ b/pkg/cdc/sinker.go @@ -65,6 +65,10 @@ var NewSinker = func( return NewConsoleSinker(dbTblInfo, watermarkUpdater), nil } + if sinkUri.SinkTyp == HnswSyncSink { + return NewHnswSyncSinker(sinkUri, dbTblInfo, watermarkUpdater, tableDef, retryTimes, retryDuration, ar, maxSqlLength, sendSqlTimeout) + } + sink, err := NewMysqlSink(sinkUri.User, sinkUri.Password, sinkUri.Ip, sinkUri.Port, retryTimes, retryDuration, sendSqlTimeout) if err != nil { return nil, err diff --git a/pkg/cdc/types.go b/pkg/cdc/types.go index 7de3e8d58a8c5..7d3bcf535db05 100644 --- a/pkg/cdc/types.go +++ b/pkg/cdc/types.go @@ -44,6 +44,7 @@ const ( MysqlSink = "mysql" MatrixoneSink = "matrixone" ConsoleSink = "console" + HnswSyncSink = "hnswsync" SourceUriPrefix = "mysql://" SinkUriPrefix = "mysql://" ConsolePrefix = "console://" //only used in testing stage From 2d8527713c053af268bc5ccb07f27441cc745391 Mon Sep 17 00:00:00 2001 From: cpegeric Date: Fri, 25 Apr 2025 13:09:15 +0100 Subject: [PATCH 003/223] get batch --- pkg/cdc/hnsw_sinker.go | 34 +++++++++++++++++++++++++++------- 1 file changed, 27 insertions(+), 7 deletions(-) diff --git a/pkg/cdc/hnsw_sinker.go b/pkg/cdc/hnsw_sinker.go index 9ad2d8845592f..67ce60f289bc7 100644 --- a/pkg/cdc/hnsw_sinker.go +++ b/pkg/cdc/hnsw_sinker.go @@ -27,6 +27,7 @@ import ( "github.com/matrixorigin/matrixone/pkg/common/moerr" "github.com/matrixorigin/matrixone/pkg/container/batch" "github.com/matrixorigin/matrixone/pkg/container/types" + "github.com/matrixorigin/matrixone/pkg/container/vector" "github.com/matrixorigin/matrixone/pkg/logutil" "github.com/matrixorigin/matrixone/pkg/pb/plan" v2 "github.com/matrixorigin/matrixone/pkg/util/metric/v2" @@ -127,6 +128,8 @@ type hnswSyncSinker[T types.RealNumbers] struct { // only contains pk columns deleteTypes []*types.Type pkColNames []string + pkcol int + veccol int } var NewHnswSyncSinker = func( @@ -314,11 +317,12 @@ func (s *hnswSyncSinker[T]) Close() { } func (s *hnswSyncSinker[T]) sinkSnapshot(ctx context.Context, bat *batch.Batch) { + pkvec := bat.Vecs[s.pkcol] + vecvec := bat.Vecs[s.veccol] for i := 0; i < batchRowCount(bat); i++ { - - // get pk and vector - pk := int64(0) - v := []T(nil) + pk := vector.GetFixedAtWithTypeCheck[int64](pkvec, i) + v := vector.GetArrayAt[T](vecvec, i) + // TODO: check null s.cdc.Upsert(pk, v) @@ -393,8 +397,17 @@ func (s *hnswSyncSinker[T]) sinkTail(ctx context.Context, upsertBatch, deleteBat func (s *hnswSyncSinker[T]) sinkUpsert(ctx context.Context, upsertIter *atomicBatchRowIter) (err error) { // get row from the batch - pk := int64(0) - v := []T(nil) + row := upsertIter.Item() + bat := row.Src + if err != nil { + return err + } + + pkvec := bat.Vecs[s.pkcol] + vecvec := bat.Vecs[s.veccol] + pk := vector.GetFixedAtWithTypeCheck[int64](pkvec, row.Offset) + v := vector.GetArrayAt[T](vecvec, row.Offset) + s.cdc.Upsert(pk, v) if s.cdc.Full() { @@ -408,7 +421,14 @@ func (s *hnswSyncSinker[T]) sinkUpsert(ctx context.Context, upsertIter *atomicBa func (s *hnswSyncSinker[T]) sinkDelete(ctx context.Context, deleteIter *atomicBatchRowIter) (err error) { // get row from the batch - pk := int64(0) + row := deleteIter.Item() + bat := row.Src + if err != nil { + return err + } + pkvec := bat.Vecs[s.pkcol] + pk := vector.GetFixedAtWithTypeCheck[int64](pkvec, row.Offset) + s.cdc.Delete(pk) if s.cdc.Full() { return s.sendSql() From 30db2463aa88beb0aff7f246d649a8a8f4f9f22b Mon Sep 17 00:00:00 2001 From: cpegeric Date: Fri, 25 Apr 2025 14:06:41 +0100 Subject: [PATCH 004/223] tabledef --- pkg/cdc/hnsw_sinker.go | 105 ++++++++++++++++++++++++++--------------- 1 file changed, 68 insertions(+), 37 deletions(-) diff --git a/pkg/cdc/hnsw_sinker.go b/pkg/cdc/hnsw_sinker.go index 67ce60f289bc7..147b654e08bd3 100644 --- a/pkg/cdc/hnsw_sinker.go +++ b/pkg/cdc/hnsw_sinker.go @@ -128,8 +128,8 @@ type hnswSyncSinker[T types.RealNumbers] struct { // only contains pk columns deleteTypes []*types.Type pkColNames []string - pkcol int - veccol int + pkcol int32 + veccol int32 } var NewHnswSyncSinker = func( @@ -158,52 +158,83 @@ var NewHnswSyncSinker = func( } // TODO: check the tabledef and indexdef + if len(tableDef.Pkey.Names) != 1 { + return nil, moerr.NewInternalErrorNoCtx("hnsw index table only have one primary key") + } + + pkColName := tableDef.Pkey.PkeyColName + + hnswindexes := make([]*plan.IndexDef, 0, 2) + + for _, idx := range tableDef.Indexes { + if idx.TableExist && catalog.IsHnswIndexAlgo(idx.IndexAlgo) { + hnswindexes = append(hnswindexes, idx) + } - s := &hnswSyncSinker[float32]{ - mysql: sink, - dbTblInfo: dbTblInfo, - watermarkUpdater: watermarkUpdater, - ar: ar, - tableDef: tableDef, - cdc: NewHnswCdc[float32](), } - var maxAllowedPacket uint64 - _ = sink.(*mysqlSink).conn.QueryRow("SELECT @@max_allowed_packet").Scan(&maxAllowedPacket) - maxAllowedPacket = min(maxAllowedPacket, maxSqlLength) - logutil.Infof("cdc hnswSyncSinker(%v) maxAllowedPacket = %d", s.dbTblInfo, maxAllowedPacket) + if len(hnswindexes) != 2 { + return nil, moerr.NewInternalErrorNoCtx("hnsw index table without index definition") + } - s.sqlBufSendCh = make(chan []byte) + indexdef := hnswindexes[0] - // TODO: check indexdef and we only need pk and vector index part + if len(indexdef.Parts) != 1 { + return nil, moerr.NewInternalErrorNoCtx("hnsw index table only have one vector part") + } - // types - for _, col := range tableDef.Cols { - // skip internal columns - if _, ok := catalog.InternalColumns[col.Name]; ok { - continue - } + pkcol := tableDef.Name2ColIndex[pkColName] + veccol := tableDef.Name2ColIndex[indexdef.Parts[0]] + + if tableDef.Cols[pkcol].Typ.Id != int32(types.T_int64) { + return nil, moerr.NewInternalErrorNoCtx("hnsw index table primary key is not int64") - s.upsertTypes = append(s.upsertTypes, &types.Type{ - Oid: types.T(col.Typ.Id), - Width: col.Typ.Width, - Scale: col.Typ.Scale, - }) } - for _, name := range tableDef.Pkey.Names { - s.pkColNames = append(s.pkColNames, name) - col := tableDef.Cols[tableDef.Name2ColIndex[name]] - s.deleteTypes = append(s.deleteTypes, &types.Type{ - Oid: types.T(col.Typ.Id), - Width: col.Typ.Width, - Scale: col.Typ.Scale, - }) + if tableDef.Cols[veccol].Typ.Id != int32(types.T_array_float32) && tableDef.Cols[veccol].Typ.Id != int32(types.T_array_float64) { + return nil, moerr.NewInternalErrorNoCtx("hnsw index table part is not []float32 or []float64") + } - // err - s.err = atomic.Value{} + var maxAllowedPacket uint64 + _ = sink.(*mysqlSink).conn.QueryRow("SELECT @@max_allowed_packet").Scan(&maxAllowedPacket) + maxAllowedPacket = min(maxAllowedPacket, maxSqlLength) + + if tableDef.Cols[veccol].Typ.Id == int32(types.T_array_float32) { + s := &hnswSyncSinker[float32]{ + mysql: sink, + dbTblInfo: dbTblInfo, + watermarkUpdater: watermarkUpdater, + ar: ar, + tableDef: tableDef, + cdc: NewHnswCdc[float32](), + sqlBufSendCh: make(chan []byte), + pkcol: pkcol, + veccol: veccol, + err: atomic.Value{}, + } + logutil.Infof("cdc hnswSyncSinker(%v) maxAllowedPacket = %d", s.dbTblInfo, maxAllowedPacket) + return s, nil + + } else if tableDef.Cols[veccol].Typ.Id == int32(types.T_array_float64) { + s := &hnswSyncSinker[float64]{ + mysql: sink, + dbTblInfo: dbTblInfo, + watermarkUpdater: watermarkUpdater, + ar: ar, + tableDef: tableDef, + cdc: NewHnswCdc[float64](), + sqlBufSendCh: make(chan []byte), + pkcol: pkcol, + veccol: veccol, + err: atomic.Value{}, + } + logutil.Infof("cdc hnswSyncSinker(%v) maxAllowedPacket = %d", s.dbTblInfo, maxAllowedPacket) + return s, nil + + } else { + return nil, moerr.NewInternalErrorNoCtx("hnsw index table part is not []float32 or []float64") + } - return s, nil } func (s *hnswSyncSinker[T]) Run(ctx context.Context, ar *ActiveRoutine) { From 1cfebd237a7cf8095eb3b05918d701ae2368f4ff Mon Sep 17 00:00:00 2001 From: cpegeric Date: Fri, 25 Apr 2025 14:35:12 +0100 Subject: [PATCH 005/223] add param --- pkg/cdc/hnsw_sinker.go | 40 ++++++++++++++++++++++++++++++++++++++-- 1 file changed, 38 insertions(+), 2 deletions(-) diff --git a/pkg/cdc/hnsw_sinker.go b/pkg/cdc/hnsw_sinker.go index 147b654e08bd3..fd03be3ecb4be 100644 --- a/pkg/cdc/hnsw_sinker.go +++ b/pkg/cdc/hnsw_sinker.go @@ -31,6 +31,7 @@ import ( "github.com/matrixorigin/matrixone/pkg/logutil" "github.com/matrixorigin/matrixone/pkg/pb/plan" v2 "github.com/matrixorigin/matrixone/pkg/util/metric/v2" + "github.com/matrixorigin/matrixone/pkg/vectorindex" ) const ( @@ -54,6 +55,11 @@ type HnswCdcEntry[T types.RealNumbers] struct { } type HnswCdcParam struct { + DbName string `json:"db"` + Table string `json:"table"` + MetaTbl string `json:"meta"` + IndexTbl string `json:"index"` + Params vectorindex.HnswParam `json:"params"` } func NewHnswCdc[T types.RealNumbers]() *HnswCdc[T] { @@ -190,11 +196,40 @@ var NewHnswSyncSinker = func( return nil, moerr.NewInternalErrorNoCtx("hnsw index table primary key is not int64") } - if tableDef.Cols[veccol].Typ.Id != int32(types.T_array_float32) && tableDef.Cols[veccol].Typ.Id != int32(types.T_array_float64) { - return nil, moerr.NewInternalErrorNoCtx("hnsw index table part is not []float32 or []float64") + // get param and index table name + paramstr := indexdef.IndexAlgoParams + var meta, storage string + for _, idx := range hnswindexes { + if idx.IndexAlgoTableType == catalog.Hnsw_TblType_Metadata { + meta = idx.IndexTableName + } + if idx.IndexAlgoTableType == catalog.Hnsw_TblType_Storage { + storage = idx.IndexTableName + } + } + + if len(meta) == 0 || len(storage) == 0 { + return nil, moerr.NewInternalErrorNoCtx("hnsw index table either meta or storage hidden index table not exist") + } + + var hnswparam vectorindex.HnswParam + if len(paramstr) > 0 { + err := json.Unmarshal([]byte(paramstr), &hnswparam) + if err != nil { + return nil, moerr.NewInternalErrorNoCtx("hnsw sync sinker. failed to convert hnsw param json") + } + } + + param := HnswCdcParam{ + MetaTbl: meta, + IndexTbl: storage, + DbName: dbTblInfo.SinkDbName, + Table: dbTblInfo.SinkTblName, + Params: hnswparam, } + // create sinker var maxAllowedPacket uint64 _ = sink.(*mysqlSink).conn.QueryRow("SELECT @@max_allowed_packet").Scan(&maxAllowedPacket) maxAllowedPacket = min(maxAllowedPacket, maxSqlLength) @@ -211,6 +246,7 @@ var NewHnswSyncSinker = func( pkcol: pkcol, veccol: veccol, err: atomic.Value{}, + param: param, } logutil.Infof("cdc hnswSyncSinker(%v) maxAllowedPacket = %d", s.dbTblInfo, maxAllowedPacket) return s, nil From 4165d423d17b72066a3cbf93fa55cb203d6c0378 Mon Sep 17 00:00:00 2001 From: cpegeric Date: Fri, 25 Apr 2025 14:52:34 +0100 Subject: [PATCH 006/223] add param and comments --- pkg/cdc/hnsw_sinker.go | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/pkg/cdc/hnsw_sinker.go b/pkg/cdc/hnsw_sinker.go index fd03be3ecb4be..644dd8988fd44 100644 --- a/pkg/cdc/hnsw_sinker.go +++ b/pkg/cdc/hnsw_sinker.go @@ -14,6 +14,9 @@ package cdc +// to retrieve the index table from mo_catalog +// select * from mo_catalog.mo_indexes where table_id = (select rel_id from mo_tables where relname = "tbl" and reldatabase = "db"); + import ( "bytes" "context" @@ -246,7 +249,6 @@ var NewHnswSyncSinker = func( pkcol: pkcol, veccol: veccol, err: atomic.Value{}, - param: param, } logutil.Infof("cdc hnswSyncSinker(%v) maxAllowedPacket = %d", s.dbTblInfo, maxAllowedPacket) return s, nil @@ -263,6 +265,7 @@ var NewHnswSyncSinker = func( pkcol: pkcol, veccol: veccol, err: atomic.Value{}, + param: param, } logutil.Infof("cdc hnswSyncSinker(%v) maxAllowedPacket = %d", s.dbTblInfo, maxAllowedPacket) return s, nil From a25bf32c6e29a610d386884ddfe2ee335d88faa5 Mon Sep 17 00:00:00 2001 From: cpegeric Date: Mon, 28 Apr 2025 11:53:42 +0100 Subject: [PATCH 007/223] add cdc delete --- pkg/sql/plan/build_delete.go | 1 + pkg/sql/plan/build_insert.go | 2 ++ pkg/sql/plan/hnsw.go | 10 ++++++---- pkg/sql/plan/types.go | 1 + 4 files changed, 10 insertions(+), 4 deletions(-) diff --git a/pkg/sql/plan/build_delete.go b/pkg/sql/plan/build_delete.go index f00246a831ffb..6162489e4467c 100644 --- a/pkg/sql/plan/build_delete.go +++ b/pkg/sql/plan/build_delete.go @@ -36,6 +36,7 @@ func buildDelete(stmt *tree.Delete, ctx CompilerContext, isPrepareStmt bool) (*P return nil, err } builder := NewQueryBuilder(plan.Query_SELECT, ctx, isPrepareStmt, false) + builder.isCdc = stmt.IsCdc queryBindCtx := NewBindContext(builder, nil) lastNodeId, err := deleteToSelect(builder, queryBindCtx, stmt, true, tblInfo) diff --git a/pkg/sql/plan/build_insert.go b/pkg/sql/plan/build_insert.go index 8601c1d1b6fb5..ae92d61eb56dc 100644 --- a/pkg/sql/plan/build_insert.go +++ b/pkg/sql/plan/build_insert.go @@ -74,6 +74,7 @@ func buildInsert(stmt *tree.Insert, ctx CompilerContext, isReplace bool, isPrepa builder := NewQueryBuilder(plan.Query_SELECT, ctx, isPrepareStmt, false) builder.haveOnDuplicateKey = len(stmt.OnDuplicateUpdate) > 0 + builder.isCdc = stmt.IsCdc if stmt.IsRestore { builder.isRestore = true if stmt.IsRestoreByTs { @@ -738,6 +739,7 @@ func getRewriteToReplaceStmt(tableDef *TableDef, stmt *tree.Insert, info *dmlSel PartitionNames: stmt.PartitionNames, Columns: stmt.Columns, Rows: stmt.Rows, + IsCdc: stmt.IsCdc, } return replaceStmt } diff --git a/pkg/sql/plan/hnsw.go b/pkg/sql/plan/hnsw.go index 587b7dbb5ce84..2053026e4fa3a 100644 --- a/pkg/sql/plan/hnsw.go +++ b/pkg/sql/plan/hnsw.go @@ -69,10 +69,12 @@ func (builder *QueryBuilder) buildHnswCreate(tbl *tree.TableFunction, ctx *BindC return 0, err } - scanNode := builder.qry.Nodes[children[0]] - if scanNode.NodeType != plan.Node_TABLE_SCAN { - return 0, moerr.NewNoConfig(builder.GetContext(), "child node is not a TABLE SCAN") - } + /* + scanNode := builder.qry.Nodes[children[0]] + if scanNode.NodeType != plan.Node_TABLE_SCAN { + return 0, moerr.NewNoConfig(builder.GetContext(), "child node is not a TABLE SCAN") + } + */ // remove the first argment and put the first argument to Param exprs = exprs[1:] diff --git a/pkg/sql/plan/types.go b/pkg/sql/plan/types.go index 7e9a9bdd85097..9a3826de4c5a2 100644 --- a/pkg/sql/plan/types.go +++ b/pkg/sql/plan/types.go @@ -185,6 +185,7 @@ type QueryBuilder struct { isRestoreByTs bool isSkipResolveTableDef bool skipStats bool + isCdc bool // if it's a query from CDC or index update deleteNode map[uint64]int32 //delete node in this query. key is tableId, value is the nodeId of sinkScan node in the delete plan From a91f1654c8446c9c1691d30d0ea1fd3b408ece5b Mon Sep 17 00:00:00 2001 From: cpegeric Date: Mon, 28 Apr 2025 14:09:51 +0100 Subject: [PATCH 008/223] function --- pkg/cdc/hnsw_sinker.go | 80 +-------------------------- pkg/sql/plan/function/function_id.go | 6 ++ pkg/sql/plan/function/list_builtIn.go | 21 +++++++ pkg/vectorindex/types.go | 76 +++++++++++++++++++++++++ 4 files changed, 106 insertions(+), 77 deletions(-) diff --git a/pkg/cdc/hnsw_sinker.go b/pkg/cdc/hnsw_sinker.go index 644dd8988fd44..bdc9d8518c496 100644 --- a/pkg/cdc/hnsw_sinker.go +++ b/pkg/cdc/hnsw_sinker.go @@ -37,26 +37,8 @@ import ( "github.com/matrixorigin/matrixone/pkg/vectorindex" ) -const ( - CDC_INSERT = "I" - CDC_UPSERT = "U" - CDC_DELETE = "D" -) - var _ Sinker = &hnswSyncSinker[float32]{} -type HnswCdc[T types.RealNumbers] struct { - Start string `json:"start"` - End string `json:"end"` - Data []HnswCdcEntry[T] `json:"cdc"` -} - -type HnswCdcEntry[T types.RealNumbers] struct { - Type string `json:"t"` // I - INSERT, D - DELETE, U - UPSERT - PKey int64 `json:"pk"` - Vec []T `json:"v,omitempty"` -} - type HnswCdcParam struct { DbName string `json:"db"` Table string `json:"table"` @@ -65,69 +47,13 @@ type HnswCdcParam struct { Params vectorindex.HnswParam `json:"params"` } -func NewHnswCdc[T types.RealNumbers]() *HnswCdc[T] { - return &HnswCdc[T]{ - Data: make([]HnswCdcEntry[T], 0, 100), - } -} - -func (h *HnswCdc[T]) Reset() { - h.Data = h.Data[:0] -} - -func (h *HnswCdc[T]) Empty() bool { - return len(h.Data) == 0 -} - -func (h *HnswCdc[T]) Full() bool { - return len(h.Data) >= cap(h.Data) -} - -func (h *HnswCdc[T]) Insert(key int64, v []T) { - e := HnswCdcEntry[T]{ - Type: CDC_INSERT, - PKey: key, - Vec: v, - } - - h.Data = append(h.Data, e) -} - -func (h *HnswCdc[T]) Upsert(key int64, v []T) { - e := HnswCdcEntry[T]{ - Type: CDC_UPSERT, - PKey: key, - Vec: v, - } - - h.Data = append(h.Data, e) -} - -func (h *HnswCdc[T]) Delete(key int64) { - e := HnswCdcEntry[T]{ - Type: CDC_DELETE, - PKey: key, - } - - h.Data = append(h.Data, e) -} - -func (h *HnswCdc[T]) ToJson() (string, error) { - - b, err := json.Marshal(h) - if err != nil { - return "", err - } - return string(b), nil -} - type hnswSyncSinker[T types.RealNumbers] struct { mysql Sink dbTblInfo *DbTableInfo watermarkUpdater IWatermarkUpdater ar *ActiveRoutine tableDef *plan.TableDef - cdc *HnswCdc[T] + cdc *vectorindex.HnswCdc[T] param HnswCdcParam err atomic.Value @@ -244,7 +170,7 @@ var NewHnswSyncSinker = func( watermarkUpdater: watermarkUpdater, ar: ar, tableDef: tableDef, - cdc: NewHnswCdc[float32](), + cdc: vectorindex.NewHnswCdc[float32](), sqlBufSendCh: make(chan []byte), pkcol: pkcol, veccol: veccol, @@ -260,7 +186,7 @@ var NewHnswSyncSinker = func( watermarkUpdater: watermarkUpdater, ar: ar, tableDef: tableDef, - cdc: NewHnswCdc[float64](), + cdc: vectorindex.NewHnswCdc[float64](), sqlBufSendCh: make(chan []byte), pkcol: pkcol, veccol: veccol, diff --git a/pkg/sql/plan/function/function_id.go b/pkg/sql/plan/function/function_id.go index d7da9a7b4ebf9..8a63d2ade222a 100644 --- a/pkg/sql/plan/function/function_id.go +++ b/pkg/sql/plan/function/function_id.go @@ -405,6 +405,9 @@ const ( // fault inject function FAULT_INJECT = 340 + // hnsw function + HNSW_CDC_UPDATE = 341 + // FUNCTION_END_NUMBER is not a function, just a flag to record the max number of function. // TODO: every one should put the new function id in front of this one if you want to make a new function. FUNCTION_END_NUMBER = 341 @@ -737,4 +740,7 @@ var functionIdRegister = map[string]int32{ // fault inject function "fault_inject": FAULT_INJECT, + + // hnsw function + "hnsw_cdc_update": HNSW_CDC_UPDATE, } diff --git a/pkg/sql/plan/function/list_builtIn.go b/pkg/sql/plan/function/list_builtIn.go index 30823fc0ffa2d..319079903d62a 100644 --- a/pkg/sql/plan/function/list_builtIn.go +++ b/pkg/sql/plan/function/list_builtIn.go @@ -6821,6 +6821,27 @@ var supportedOthersBuiltIns = []FuncNew{ Overloads: fulltext_expand_overload(types.T_float32), }, + + // function `HNSW_CDC_UPDATE` + { + functionId: HNSW_CDC_UPDATE, + class: plan.Function_STRICT, + layout: STANDARD_FUNCTION, + checkFn: fixedTypeMatch, + + Overloads: []overload{ + { + overloadId: 0, + args: []types.T{types.T_varchar, types.T_varchar, types.T_varchar}, + retType: func(parameters []types.Type) types.Type { + return types.T_uint64.ToType() + }, + newOp: func() executeLogicOfOverload { + return hnswCdcUpdate + }, + }, + }, + }, } // fulltext_match supports varchar, char and text. Expand the function signature to all possible combination of input types diff --git a/pkg/vectorindex/types.go b/pkg/vectorindex/types.go index 3cbe815417ec0..cfb3ee8e75709 100644 --- a/pkg/vectorindex/types.go +++ b/pkg/vectorindex/types.go @@ -15,8 +15,10 @@ package vectorindex import ( + "encoding/json" "runtime" + "github.com/matrixorigin/matrixone/pkg/container/types" usearch "github.com/unum-cloud/usearch/golang" ) @@ -31,6 +33,12 @@ const ( MaxChunkSize = 65536 ) +const ( + CDC_INSERT = "I" + CDC_UPSERT = "U" + CDC_DELETE = "D" +) + // HNSW have two secondary index tables, metadata and index storage. For new vector index algorithm that share the same secondary tables, // can use the same IndexTableConfig struct type IndexTableConfig struct { @@ -91,6 +99,74 @@ type RuntimeConfig struct { Probe uint } +type HnswCdc[T types.RealNumbers] struct { + Start string `json:"start"` + End string `json:"end"` + Data []HnswCdcEntry[T] `json:"cdc"` +} + +func NewHnswCdc[T types.RealNumbers]() *HnswCdc[T] { + return &HnswCdc[T]{ + Data: make([]HnswCdcEntry[T], 0, 100), + } +} + +func (h *HnswCdc[T]) Reset() { + h.Data = h.Data[:0] +} + +func (h *HnswCdc[T]) Empty() bool { + return len(h.Data) == 0 +} + +func (h *HnswCdc[T]) Full() bool { + return len(h.Data) >= cap(h.Data) +} + +func (h *HnswCdc[T]) Insert(key int64, v []T) { + e := HnswCdcEntry[T]{ + Type: CDC_INSERT, + PKey: key, + Vec: v, + } + + h.Data = append(h.Data, e) +} + +func (h *HnswCdc[T]) Upsert(key int64, v []T) { + e := HnswCdcEntry[T]{ + Type: CDC_UPSERT, + PKey: key, + Vec: v, + } + + h.Data = append(h.Data, e) +} + +func (h *HnswCdc[T]) Delete(key int64) { + e := HnswCdcEntry[T]{ + Type: CDC_DELETE, + PKey: key, + } + + h.Data = append(h.Data, e) +} + +func (h *HnswCdc[T]) ToJson() (string, error) { + + b, err := json.Marshal(h) + if err != nil { + return "", err + } + return string(b), nil +} + +type HnswCdcEntry[T types.RealNumbers] struct { + Type string `json:"t"` // I - INSERT, D - DELETE, U - UPSERT + PKey int64 `json:"pk"` + Vec []T `json:"v,omitempty"` +} + // nthread == 0, result will return NumCPU - 1 func GetConcurrency(nthread int64) int64 { if nthread > 0 { From a1ce79c0e934ef3292acd431b5f0d4b3a58855e8 Mon Sep 17 00:00:00 2001 From: cpegeric Date: Mon, 28 Apr 2025 17:58:41 +0100 Subject: [PATCH 009/223] add hnsw function --- pkg/sql/plan/function/func_hnsw.go | 104 +++++++++++++++++++++++++++++ 1 file changed, 104 insertions(+) create mode 100644 pkg/sql/plan/function/func_hnsw.go diff --git a/pkg/sql/plan/function/func_hnsw.go b/pkg/sql/plan/function/func_hnsw.go new file mode 100644 index 0000000000000..7005a853e46d3 --- /dev/null +++ b/pkg/sql/plan/function/func_hnsw.go @@ -0,0 +1,104 @@ +// Copyright 2021 - 2022 Matrix Origin +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package function + +import ( + "encoding/json" + "fmt" + "os" + + "github.com/matrixorigin/matrixone/pkg/common/moerr" + "github.com/matrixorigin/matrixone/pkg/container/vector" + "github.com/matrixorigin/matrixone/pkg/vectorindex" + "github.com/matrixorigin/matrixone/pkg/vectorindex/sqlexec" + "github.com/matrixorigin/matrixone/pkg/vm/process" +) + +var hnswsync_runsql = sqlexec.RunSql + +func hnswsync(proc *process.Process, db string, tbl string, cdc *vectorindex.HnswCdc[float32]) error { + + b, err := json.Marshal(cdc) + if err != nil { + return err + } + os.Stderr.WriteString(string(b)) + + sql := fmt.Sprintf("select index_table_name, algo_table_type, algo_params, column_name from mo_catalog.mo_indexes where table_id = (select rel_id from mo_catalog.mo_tables where relname = '%s' and reldatabase = '%s') and algo='hnsw';", + tbl, db) + + res, err := hnswsync_runsql(proc, sql) + if err != nil { + return err + } + defer res.Close() + + bat := res.Batches[0] + + idxtblvec := bat.Vecs[0] + algotypevec := bat.Vecs[1] + paramvec := bat.Vecs[2] + colvec := bat.Vecs[3] + + for i := 0; i < bat.RowCount(); i++ { + + idxtbl := idxtblvec.UnsafeGetStringAt(i) + algotyp := algotypevec.UnsafeGetStringAt(i) + param := paramvec.UnsafeGetStringAt(i) + cname := colvec.UnsafeGetStringAt(i) + os.Stderr.WriteString(fmt.Sprintf("idxtbl %s, type %s, param %s, cname %s\n", idxtbl, algotyp, param, cname)) + } + + return nil +} + +func hnswCdcUpdate(ivecs []*vector.Vector, result vector.FunctionResultWrapper, proc *process.Process, length int, selectList *FunctionSelectList) error { + + if len(ivecs) != 3 { + return moerr.NewInvalidInput(proc.Ctx, "number of arguments != 3") + } + + dbVec := vector.GenerateFunctionStrParameter(ivecs[0]) + tblVec := vector.GenerateFunctionStrParameter(ivecs[1]) + cdcVec := vector.GenerateFunctionStrParameter(ivecs[2]) + + for i := uint64(0); i < uint64(length); i++ { + dbname, isnull := dbVec.GetStrValue(i) + if isnull { + return moerr.NewInvalidInput(proc.Ctx, "dbname is null") + } + + tblname, isnull := tblVec.GetStrValue(i) + if isnull { + return moerr.NewInvalidInput(proc.Ctx, "table name is null") + + } + cdcstr, isnull := cdcVec.GetStrValue(i) + if isnull { + return moerr.NewInvalidInput(proc.Ctx, "cdc is null") + } + + var cdc vectorindex.HnswCdc[float32] + err := json.Unmarshal([]byte(cdcstr), &cdc) + if err != nil { + return moerr.NewInvalidInput(proc.Ctx, "cdc is not json object") + } + // hnsw sync + os.Stderr.WriteString(fmt.Sprintf("db=%s, table=%s, json=%s\n", dbname, tblname, cdcstr)) + hnswsync(proc, string(dbname), string(tblname), &cdc) + } + + return nil +} From 035ba59f740bab922cbdec27635fa1beeeb99f2c Mon Sep 17 00:00:00 2001 From: cpegeric Date: Tue, 29 Apr 2025 14:54:28 +0100 Subject: [PATCH 010/223] cdc param --- pkg/vectorindex/types.go | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/pkg/vectorindex/types.go b/pkg/vectorindex/types.go index cfb3ee8e75709..089642b22adbb 100644 --- a/pkg/vectorindex/types.go +++ b/pkg/vectorindex/types.go @@ -167,6 +167,14 @@ type HnswCdcEntry[T types.RealNumbers] struct { Vec []T `json:"v,omitempty"` } +type HnswCdcParam struct { + DbName string `json:"db"` + Table string `json:"table"` + MetaTbl string `json:"meta"` + IndexTbl string `json:"index"` + Params HnswParam `json:"params"` +} + // nthread == 0, result will return NumCPU - 1 func GetConcurrency(nthread int64) int64 { if nthread > 0 { From 4bf9ed9b98d1bb25e6b11cb3d78ff0dc9706679c Mon Sep 17 00:00:00 2001 From: cpegeric Date: Tue, 29 Apr 2025 14:54:40 +0100 Subject: [PATCH 011/223] cdc param --- pkg/cdc/hnsw_sinker.go | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/pkg/cdc/hnsw_sinker.go b/pkg/cdc/hnsw_sinker.go index bdc9d8518c496..a75b3dcc05d8d 100644 --- a/pkg/cdc/hnsw_sinker.go +++ b/pkg/cdc/hnsw_sinker.go @@ -39,14 +39,6 @@ import ( var _ Sinker = &hnswSyncSinker[float32]{} -type HnswCdcParam struct { - DbName string `json:"db"` - Table string `json:"table"` - MetaTbl string `json:"meta"` - IndexTbl string `json:"index"` - Params vectorindex.HnswParam `json:"params"` -} - type hnswSyncSinker[T types.RealNumbers] struct { mysql Sink dbTblInfo *DbTableInfo @@ -54,7 +46,7 @@ type hnswSyncSinker[T types.RealNumbers] struct { ar *ActiveRoutine tableDef *plan.TableDef cdc *vectorindex.HnswCdc[T] - param HnswCdcParam + param vectorindex.HnswCdcParam err atomic.Value sqlBufSendCh chan []byte @@ -150,7 +142,7 @@ var NewHnswSyncSinker = func( } } - param := HnswCdcParam{ + param := vectorindex.HnswCdcParam{ MetaTbl: meta, IndexTbl: storage, DbName: dbTblInfo.SinkDbName, From 5a412a2e0ee144fe3eab0d89cd08dde02510fbd9 Mon Sep 17 00:00:00 2001 From: cpegeric Date: Tue, 29 Apr 2025 17:22:18 +0100 Subject: [PATCH 012/223] bug fix --- pkg/cdc/hnsw_sinker.go | 6 ++++-- pkg/cdc/sinker.go | 3 ++- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/pkg/cdc/hnsw_sinker.go b/pkg/cdc/hnsw_sinker.go index 1d3a9f934af69..0b87e6d4b8229 100644 --- a/pkg/cdc/hnsw_sinker.go +++ b/pkg/cdc/hnsw_sinker.go @@ -167,6 +167,7 @@ var NewHnswSyncSinker = func( pkcol: pkcol, veccol: veccol, err: atomic.Value{}, + param: param, } logutil.Infof("cdc hnswSyncSinker(%v) maxAllowedPacket = %d", s.dbTblInfo, maxAllowedPacket) return s, nil @@ -286,7 +287,8 @@ func (s *hnswSyncSinker[T]) SendDummy() { } func (s *hnswSyncSinker[T]) Error() error { - if errPtr := s.err.Load().(*error); *errPtr != nil { + if ptr := s.err.Load(); ptr != nil { + errPtr := ptr.(*error) if moErr, ok := (*errPtr).(*moerr.Error); !ok { return moerr.ConvertGoError(context.Background(), *errPtr) } else { @@ -456,7 +458,7 @@ func (s *hnswSyncSinker[T]) sendSql() error { } // pad extra space at the front and send SQL padding := strings.Repeat(" ", sqlBufReserved) - sql := fmt.Sprintf("%s SELECT hnsw_cdc_update('%s', '%s', '%s');", padding, "db", "table", js) + sql := fmt.Sprintf("%s SELECT hnsw_cdc_update('%s', '%s', '%s');", padding, s.param.DbName, s.param.Table, js) s.sqlBufSendCh <- []byte(sql) diff --git a/pkg/cdc/sinker.go b/pkg/cdc/sinker.go index 3dced573b09ea..3ebd1c432dee7 100644 --- a/pkg/cdc/sinker.go +++ b/pkg/cdc/sinker.go @@ -434,7 +434,8 @@ func (s *mysqlSinker) SendDummy() { } func (s *mysqlSinker) Error() error { - if errPtr := s.err.Load().(*error); *errPtr != nil { + if ptr := s.err.Load(); ptr != nil { + errPtr := ptr.(*error) if moErr, ok := (*errPtr).(*moerr.Error); !ok { return moerr.ConvertGoError(context.Background(), *errPtr) } else { From 1b9b50a3c4952ca3a90be289cdd6f066b3c8b879 Mon Sep 17 00:00:00 2001 From: cpegeric Date: Tue, 29 Apr 2025 17:28:14 +0100 Subject: [PATCH 013/223] support hnswsync --- pkg/frontend/cdc_options.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/frontend/cdc_options.go b/pkg/frontend/cdc_options.go index 256c51481d9cf..1b3c52b16137c 100644 --- a/pkg/frontend/cdc_options.go +++ b/pkg/frontend/cdc_options.go @@ -123,7 +123,7 @@ func (opts *CDCCreateTaskOptions) ValidateAndFill( if cdc.EnableConsoleSink && opts.SinkType == cdc.CDCSinkType_Console { opts.UseConsole = true } - if !opts.UseConsole && opts.SinkType != cdc.CDCSinkType_MySQL && opts.SinkType != cdc.CDCSinkType_MO { + if !opts.UseConsole && opts.SinkType != cdc.CDCSinkType_MySQL && opts.SinkType != cdc.CDCSinkType_MO && opts.SinkType != cdc.CDCSinkType_HnswSync { err = moerr.NewInternalErrorf(ctx, "unsupported sink type: %s", req.SinkType) return } From 78d842ff0c805c99e16547efe09a2217ef25762a Mon Sep 17 00:00:00 2001 From: cpegeric Date: Wed, 30 Apr 2025 17:06:16 +0100 Subject: [PATCH 014/223] add sqlexecutor --- pkg/cdc/hnsw_sinker.go | 128 +++++++++++++++++++++++++---- pkg/cdc/sinker.go | 3 +- pkg/frontend/cdc_exector.go | 1 + pkg/sql/plan/function/func_hnsw.go | 7 ++ 4 files changed, 121 insertions(+), 18 deletions(-) diff --git a/pkg/cdc/hnsw_sinker.go b/pkg/cdc/hnsw_sinker.go index 0b87e6d4b8229..deb6f8ce4ff6a 100644 --- a/pkg/cdc/hnsw_sinker.go +++ b/pkg/cdc/hnsw_sinker.go @@ -22,17 +22,20 @@ import ( "context" "encoding/json" "fmt" + "os" "strings" "sync/atomic" "time" "github.com/matrixorigin/matrixone/pkg/catalog" "github.com/matrixorigin/matrixone/pkg/common/moerr" + "github.com/matrixorigin/matrixone/pkg/common/runtime" "github.com/matrixorigin/matrixone/pkg/container/batch" "github.com/matrixorigin/matrixone/pkg/container/types" "github.com/matrixorigin/matrixone/pkg/container/vector" "github.com/matrixorigin/matrixone/pkg/logutil" "github.com/matrixorigin/matrixone/pkg/pb/plan" + "github.com/matrixorigin/matrixone/pkg/util/executor" v2 "github.com/matrixorigin/matrixone/pkg/util/metric/v2" "github.com/matrixorigin/matrixone/pkg/vectorindex" ) @@ -40,6 +43,7 @@ import ( var _ Sinker = &hnswSyncSinker[float32]{} type hnswSyncSinker[T types.RealNumbers] struct { + cnUUID string mysql Sink dbTblInfo *DbTableInfo watermarkUpdater IWatermarkUpdater @@ -57,9 +61,11 @@ type hnswSyncSinker[T types.RealNumbers] struct { pkColNames []string pkcol int32 veccol int32 + exec executor.SQLExecutor } var NewHnswSyncSinker = func( + cnUUID string, sinkUri UriInfo, dbTblInfo *DbTableInfo, watermarkUpdater IWatermarkUpdater, @@ -71,6 +77,15 @@ var NewHnswSyncSinker = func( sendSqlTimeout string, ) (Sinker, error) { + // sql executor + v, ok := runtime.ServiceRuntime(cnUUID).GetGlobalVariables(runtime.InternalSQLExecutor) + if !ok { + os.Stderr.WriteString(fmt.Sprintf("sql executor create failed. cnUUID = %s\n", cnUUID)) + return nil, moerr.NewNotSupportedNoCtx("no implement sqlExecutor") + } + exec := v.(executor.SQLExecutor) + + // sink sink, err := NewMysqlSink(sinkUri.User, sinkUri.Password, sinkUri.Ip, sinkUri.Port, retryTimes, retryDuration, sendSqlTimeout) if err != nil { return nil, err @@ -157,6 +172,7 @@ var NewHnswSyncSinker = func( if tableDef.Cols[veccol].Typ.Id == int32(types.T_array_float32) { s := &hnswSyncSinker[float32]{ + cnUUID: cnUUID, mysql: sink, dbTblInfo: dbTblInfo, watermarkUpdater: watermarkUpdater, @@ -168,6 +184,7 @@ var NewHnswSyncSinker = func( veccol: veccol, err: atomic.Value{}, param: param, + exec: exec, } logutil.Infof("cdc hnswSyncSinker(%v) maxAllowedPacket = %d", s.dbTblInfo, maxAllowedPacket) return s, nil @@ -185,6 +202,7 @@ var NewHnswSyncSinker = func( veccol: veccol, err: atomic.Value{}, param: param, + exec: exec, } logutil.Infof("cdc hnswSyncSinker(%v) maxAllowedPacket = %d", s.dbTblInfo, maxAllowedPacket) return s, nil @@ -210,29 +228,105 @@ func (s *hnswSyncSinker[T]) Run(ctx context.Context, ar *ActiveRoutine) { if bytes.Equal(sqlBuf, dummy) { // dummy sql, do nothing } else if bytes.Equal(sqlBuf, begin) { - if err := s.mysql.SendBegin(ctx); err != nil { - logutil.Errorf("cdc hnswSyncSinker(%v) SendBegin, err: %v", s.dbTblInfo, err) - // record error - s.SetError(err) - } + os.Stderr.WriteString("BEGIN\n") + /* + res, err := s.exec.Exec(newctx, "BEGIN;", opts) + if err != nil { + logutil.Errorf("cdc hnswSyncSinker(%v) SendBegin, err: %v", s.dbTblInfo, err) + // record error + s.SetError(err) + } + res.Close() + */ + + /* + if err := s.mysql.SendBegin(ctx); err != nil { + logutil.Errorf("cdc hnswSyncSinker(%v) SendBegin, err: %v", s.dbTblInfo, err) + // record error + s.SetError(err) + } + */ } else if bytes.Equal(sqlBuf, commit) { - if err := s.mysql.SendCommit(ctx); err != nil { - logutil.Errorf("cdc hnswSyncSinker(%v) SendCommit, err: %v", s.dbTblInfo, err) - // record error - s.SetError(err) - } + os.Stderr.WriteString("COMMIT\n") + /* + res, err := s.exec.Exec(newctx, "COMMIT;", opts) + if err != nil { + logutil.Errorf("cdc hnswSyncSinker(%v) SendCommit, err: %v", s.dbTblInfo, err) + // record error + s.SetError(err) + } + res.Close() + */ + /* + if err := s.mysql.SendCommit(ctx); err != nil { + logutil.Errorf("cdc hnswSyncSinker(%v) SendCommit, err: %v", s.dbTblInfo, err) + // record error + s.SetError(err) + } + */ } else if bytes.Equal(sqlBuf, rollback) { - if err := s.mysql.SendRollback(ctx); err != nil { - logutil.Errorf("cdc hnswSyncSinker(%v) SendRollback, err: %v", s.dbTblInfo, err) - // record error - s.SetError(err) - } + os.Stderr.WriteString("ROLLBACK\n") + /* + res, err := s.exec.Exec(newctx, "ROLLBACK;", opts) + if err != nil { + logutil.Errorf("cdc hnswSyncSinker(%v) SendRollback, err: %v", s.dbTblInfo, err) + // record error + s.SetError(err) + } + res.Close() + */ + /* + if err := s.mysql.SendRollback(ctx); err != nil { + logutil.Errorf("cdc hnswSyncSinker(%v) SendRollback, err: %v", s.dbTblInfo, err) + // record error + s.SetError(err) + } + */ } else { - if err := s.mysql.Send(ctx, ar, sqlBuf, true); err != nil { + // sql executor + /* + v, ok := runtime.ServiceRuntime(s.cnUUID).GetGlobalVariables(runtime.InternalSQLExecutor) + if !ok { + os.Stderr.WriteString(fmt.Sprintf("sql executor create failed. cnUUID = %s\n", s.cnUUID)) + s.SetError(moerr.NewNotSupported(ctx, "no implement sqlExecutor")) + continue + } + exec := v.(executor.SQLExecutor) + opts := executor.Options{} + opts = opts.WithDisableCommit().WithDisableRollback() + + os.Stderr.WriteString(fmt.Sprintf("running SQL... cnUUID = %s\n", s.cnUUID)) + */ + + newctx, cancel := context.WithTimeout(context.Background(), 5*time.Second) + defer cancel() + opts := executor.Options{} + //opts = opts.WithDisableCommit().WithDisableRollback() + //res, err := s.exec.Exec(newctx, string(sqlBuf), opts) + + var res executor.Result + err := s.exec.ExecTxn(newctx, + func(exec executor.TxnExecutor) error { + v, err := exec.Exec(string(sqlBuf), opts.StatementOption()) + res = v + return err + }, + opts) + if err != nil { logutil.Errorf("cdc hnswSyncSinker(%v) send sql failed, err: %v, sql: %s", s.dbTblInfo, err, sqlBuf[sqlBufReserved:]) - // record error + os.Stderr.WriteString(fmt.Sprintf("sql executor run failed. %s\n", string(sqlBuf))) + os.Stderr.WriteString(fmt.Sprintf("err :%v\n", err)) s.SetError(err) } + res.Close() + + /* + if err := s.mysql.Send(ctx, ar, sqlBuf, true); err != nil { + logutil.Errorf("cdc hnswSyncSinker(%v) send sql failed, err: %v, sql: %s", s.dbTblInfo, err, sqlBuf[sqlBufReserved:]) + // record error + s.SetError(err) + } + */ } } } diff --git a/pkg/cdc/sinker.go b/pkg/cdc/sinker.go index 3ebd1c432dee7..fddcc546235f5 100644 --- a/pkg/cdc/sinker.go +++ b/pkg/cdc/sinker.go @@ -50,6 +50,7 @@ var ( ) var NewSinker = func( + cnUUID string, sinkUri UriInfo, dbTblInfo *DbTableInfo, watermarkUpdater IWatermarkUpdater, @@ -66,7 +67,7 @@ var NewSinker = func( } if sinkUri.SinkTyp == CDCSinkType_HnswSync { - return NewHnswSyncSinker(sinkUri, dbTblInfo, watermarkUpdater, tableDef, retryTimes, retryDuration, ar, maxSqlLength, sendSqlTimeout) + return NewHnswSyncSinker(cnUUID, sinkUri, dbTblInfo, watermarkUpdater, tableDef, retryTimes, retryDuration, ar, maxSqlLength, sendSqlTimeout) } sink, err := NewMysqlSink(sinkUri.User, sinkUri.Password, sinkUri.Ip, sinkUri.Port, retryTimes, retryDuration, sendSqlTimeout) diff --git a/pkg/frontend/cdc_exector.go b/pkg/frontend/cdc_exector.go index c5792729a5c54..b946862c9e835 100644 --- a/pkg/frontend/cdc_exector.go +++ b/pkg/frontend/cdc_exector.go @@ -451,6 +451,7 @@ func (exec *CDCTaskExecutor) addExecPipelineForTable(ctx context.Context, info * // step 2. new sinker sinker, err := cdc.NewSinker( + exec.cnUUID, exec.sinkUri, info, exec.watermarkUpdater, diff --git a/pkg/sql/plan/function/func_hnsw.go b/pkg/sql/plan/function/func_hnsw.go index 7005a853e46d3..c0d604a79f6f3 100644 --- a/pkg/sql/plan/function/func_hnsw.go +++ b/pkg/sql/plan/function/func_hnsw.go @@ -45,6 +45,13 @@ func hnswsync(proc *process.Process, db string, tbl string, cdc *vectorindex.Hns } defer res.Close() + os.Stderr.WriteString(sql) + os.Stderr.WriteString(fmt.Sprintf("\nnumber of batch = %d\n", len(res.Batches))) + + if len(res.Batches) == 0 { + return nil + } + bat := res.Batches[0] idxtblvec := bat.Vecs[0] From fcb5ed29b8b62d5e763cca0c48530430ae955707 Mon Sep 17 00:00:00 2001 From: cpegeric Date: Thu, 1 May 2025 11:48:53 +0100 Subject: [PATCH 015/223] txn --- pkg/cdc/hnsw_sinker.go | 134 +++++++++++------------------------------ 1 file changed, 36 insertions(+), 98 deletions(-) diff --git a/pkg/cdc/hnsw_sinker.go b/pkg/cdc/hnsw_sinker.go index deb6f8ce4ff6a..faf44055a381b 100644 --- a/pkg/cdc/hnsw_sinker.go +++ b/pkg/cdc/hnsw_sinker.go @@ -219,115 +219,53 @@ func (s *hnswSyncSinker[T]) Run(ctx context.Context, ar *ActiveRoutine) { logutil.Infof("cdc hnswSyncSinker(%v).Run: end", s.dbTblInfo) }() - for sqlBuf := range s.sqlBufSendCh { - // have error, skip - if s.err.Load() != nil { - continue + for { + + // make sure there is a BEGIN before start transaction + for sqlBuf := range s.sqlBufSendCh { + if bytes.Equal(sqlBuf, begin) { + break + } } - if bytes.Equal(sqlBuf, dummy) { - // dummy sql, do nothing - } else if bytes.Equal(sqlBuf, begin) { - os.Stderr.WriteString("BEGIN\n") - /* - res, err := s.exec.Exec(newctx, "BEGIN;", opts) - if err != nil { - logutil.Errorf("cdc hnswSyncSinker(%v) SendBegin, err: %v", s.dbTblInfo, err) - // record error - s.SetError(err) - } - res.Close() - */ - - /* - if err := s.mysql.SendBegin(ctx); err != nil { - logutil.Errorf("cdc hnswSyncSinker(%v) SendBegin, err: %v", s.dbTblInfo, err) - // record error - s.SetError(err) - } - */ - } else if bytes.Equal(sqlBuf, commit) { - os.Stderr.WriteString("COMMIT\n") - /* - res, err := s.exec.Exec(newctx, "COMMIT;", opts) - if err != nil { - logutil.Errorf("cdc hnswSyncSinker(%v) SendCommit, err: %v", s.dbTblInfo, err) - // record error - s.SetError(err) - } - res.Close() - */ - /* - if err := s.mysql.SendCommit(ctx); err != nil { - logutil.Errorf("cdc hnswSyncSinker(%v) SendCommit, err: %v", s.dbTblInfo, err) - // record error - s.SetError(err) - } - */ - } else if bytes.Equal(sqlBuf, rollback) { - os.Stderr.WriteString("ROLLBACK\n") - /* - res, err := s.exec.Exec(newctx, "ROLLBACK;", opts) - if err != nil { - logutil.Errorf("cdc hnswSyncSinker(%v) SendRollback, err: %v", s.dbTblInfo, err) - // record error - s.SetError(err) - } - res.Close() - */ - /* - if err := s.mysql.SendRollback(ctx); err != nil { - logutil.Errorf("cdc hnswSyncSinker(%v) SendRollback, err: %v", s.dbTblInfo, err) - // record error - s.SetError(err) - } - */ - } else { - // sql executor - /* - v, ok := runtime.ServiceRuntime(s.cnUUID).GetGlobalVariables(runtime.InternalSQLExecutor) - if !ok { - os.Stderr.WriteString(fmt.Sprintf("sql executor create failed. cnUUID = %s\n", s.cnUUID)) - s.SetError(moerr.NewNotSupported(ctx, "no implement sqlExecutor")) - continue - } - exec := v.(executor.SQLExecutor) - opts := executor.Options{} - opts = opts.WithDisableCommit().WithDisableRollback() - - os.Stderr.WriteString(fmt.Sprintf("running SQL... cnUUID = %s\n", s.cnUUID)) - */ - - newctx, cancel := context.WithTimeout(context.Background(), 5*time.Second) + func() { + newctx, cancel := context.WithTimeout(context.Background(), 12*time.Hour) defer cancel() opts := executor.Options{} - //opts = opts.WithDisableCommit().WithDisableRollback() - //res, err := s.exec.Exec(newctx, string(sqlBuf), opts) - - var res executor.Result err := s.exec.ExecTxn(newctx, func(exec executor.TxnExecutor) error { - v, err := exec.Exec(string(sqlBuf), opts.StatementOption()) - res = v - return err + + for sqlBuf := range s.sqlBufSendCh { + if bytes.Equal(sqlBuf, dummy) { + + } else if bytes.Equal(sqlBuf, begin) { + // BEGIN + } else if bytes.Equal(sqlBuf, commit) { + // COMMIT - end of data + return nil + } else if bytes.Equal(sqlBuf, rollback) { + // ROLLBACK + return moerr.NewInternalError(ctx, "parent rollback") + } else { + res, err := exec.Exec(string(sqlBuf), opts.StatementOption()) + if err != nil { + logutil.Errorf("cdc hnswSyncSinker(%v) send sql failed, err: %v, sql: %s", s.dbTblInfo, err, sqlBuf[sqlBufReserved:]) + os.Stderr.WriteString(fmt.Sprintf("sql executor run failed. %s\n", string(sqlBuf))) + os.Stderr.WriteString(fmt.Sprintf("err :%v\n", err)) + return err + } + res.Close() + } + } + + return nil + }, opts) if err != nil { - logutil.Errorf("cdc hnswSyncSinker(%v) send sql failed, err: %v, sql: %s", s.dbTblInfo, err, sqlBuf[sqlBufReserved:]) - os.Stderr.WriteString(fmt.Sprintf("sql executor run failed. %s\n", string(sqlBuf))) - os.Stderr.WriteString(fmt.Sprintf("err :%v\n", err)) s.SetError(err) } - res.Close() - - /* - if err := s.mysql.Send(ctx, ar, sqlBuf, true); err != nil { - logutil.Errorf("cdc hnswSyncSinker(%v) send sql failed, err: %v, sql: %s", s.dbTblInfo, err, sqlBuf[sqlBufReserved:]) - // record error - s.SetError(err) - } - */ - } + }() } } From 64d5cb1ebcd4f48fc555439a87761843e703939b Mon Sep 17 00:00:00 2001 From: cpegeric Date: Thu, 1 May 2025 13:35:06 +0100 Subject: [PATCH 016/223] check rollback error and skip --- pkg/cdc/hnsw_sinker.go | 33 +++++++++++++++++++++++++++++++-- 1 file changed, 31 insertions(+), 2 deletions(-) diff --git a/pkg/cdc/hnsw_sinker.go b/pkg/cdc/hnsw_sinker.go index faf44055a381b..c14892bfa8aff 100644 --- a/pkg/cdc/hnsw_sinker.go +++ b/pkg/cdc/hnsw_sinker.go @@ -223,6 +223,7 @@ func (s *hnswSyncSinker[T]) Run(ctx context.Context, ar *ActiveRoutine) { // make sure there is a BEGIN before start transaction for sqlBuf := range s.sqlBufSendCh { + //os.Stderr.WriteString(fmt.Sprintf("Wait for BEGIN.... %s\n", string(sqlBuf))) if bytes.Equal(sqlBuf, begin) { break } @@ -245,7 +246,7 @@ func (s *hnswSyncSinker[T]) Run(ctx context.Context, ar *ActiveRoutine) { return nil } else if bytes.Equal(sqlBuf, rollback) { // ROLLBACK - return moerr.NewInternalError(ctx, "parent rollback") + return moerr.NewQueryInterrupted(ctx) } else { res, err := exec.Exec(string(sqlBuf), opts.StatementOption()) if err != nil { @@ -255,6 +256,8 @@ func (s *hnswSyncSinker[T]) Run(ctx context.Context, ar *ActiveRoutine) { return err } res.Close() + //return moerr.NewInternalError(ctx, "fake error") + //return moerr.NewQueryInterrupted(ctx) } } @@ -263,7 +266,33 @@ func (s *hnswSyncSinker[T]) Run(ctx context.Context, ar *ActiveRoutine) { }, opts) if err != nil { - s.SetError(err) + moe, ok := err.(*moerr.Error) + //os.Stderr.WriteString(fmt.Sprintf("error from txn %v, ok %v\n", err, ok)) + if ok { + if moe.ErrorCode() == moerr.ErrQueryInterrupted { + // skip rollback error + //os.Stderr.WriteString("error QueryInterrupted....rollback\n") + logutil.Errorf("cdc hnswSyncSinker(%v) parent rollback", s.dbTblInfo) + } else { + s.SetError(err) + } + } else if uw, ok := err.(interface{ Unwrap() []error }); ok { + rollbackfound := false + for _, e := range uw.Unwrap() { + //os.Stderr.WriteString(fmt.Sprintf("errors... %v\n", e)) + moe, ok := e.(*moerr.Error) + if ok && moe.ErrorCode() == moerr.ErrQueryInterrupted { + rollbackfound = true + } + } + + //os.Stderr.WriteString(fmt.Sprintf("rollback found %v\n", rollbackfound)) + if !rollbackfound { + s.SetError(err) + } + } else { + s.SetError(err) + } } }() } From ab9d98c14ba2efe4d9ae3a42f9b14e1529e5eb3a Mon Sep 17 00:00:00 2001 From: cpegeric Date: Thu, 1 May 2025 13:41:35 +0100 Subject: [PATCH 017/223] cleanup --- pkg/cdc/hnsw_sinker.go | 2 -- 1 file changed, 2 deletions(-) diff --git a/pkg/cdc/hnsw_sinker.go b/pkg/cdc/hnsw_sinker.go index c14892bfa8aff..9448b14c7c2a1 100644 --- a/pkg/cdc/hnsw_sinker.go +++ b/pkg/cdc/hnsw_sinker.go @@ -256,8 +256,6 @@ func (s *hnswSyncSinker[T]) Run(ctx context.Context, ar *ActiveRoutine) { return err } res.Close() - //return moerr.NewInternalError(ctx, "fake error") - //return moerr.NewQueryInterrupted(ctx) } } From 0838cb02809b867667a544b9419870c5020d7ae8 Mon Sep 17 00:00:00 2001 From: cpegeric Date: Wed, 14 May 2025 09:35:00 +0100 Subject: [PATCH 018/223] rename Hnsw to VectorIndex --- pkg/cdc/hnsw_sinker.go | 6 ++--- pkg/sql/plan/function/func_hnsw.go | 4 ++-- pkg/vectorindex/types.go | 36 +++++++++++++++--------------- 3 files changed, 23 insertions(+), 23 deletions(-) diff --git a/pkg/cdc/hnsw_sinker.go b/pkg/cdc/hnsw_sinker.go index bdc369c3daeff..040e64b404679 100644 --- a/pkg/cdc/hnsw_sinker.go +++ b/pkg/cdc/hnsw_sinker.go @@ -48,7 +48,7 @@ type hnswSyncSinker[T types.RealNumbers] struct { watermarkUpdater IWatermarkUpdater ar *ActiveRoutine tableDef *plan.TableDef - cdc *vectorindex.HnswCdc[T] + cdc *vectorindex.VectorIndexCdc[T] param vectorindex.HnswCdcParam err atomic.Value @@ -161,7 +161,7 @@ var NewHnswSyncSinker = func( watermarkUpdater: watermarkUpdater, ar: ar, tableDef: tableDef, - cdc: vectorindex.NewHnswCdc[float32](), + cdc: vectorindex.NewVectorIndexCdc[float32](), sqlBufSendCh: make(chan []byte), pkcol: pkcol, veccol: veccol, @@ -179,7 +179,7 @@ var NewHnswSyncSinker = func( watermarkUpdater: watermarkUpdater, ar: ar, tableDef: tableDef, - cdc: vectorindex.NewHnswCdc[float64](), + cdc: vectorindex.NewVectorIndexCdc[float64](), sqlBufSendCh: make(chan []byte), pkcol: pkcol, veccol: veccol, diff --git a/pkg/sql/plan/function/func_hnsw.go b/pkg/sql/plan/function/func_hnsw.go index c0d604a79f6f3..88642f7a5a357 100644 --- a/pkg/sql/plan/function/func_hnsw.go +++ b/pkg/sql/plan/function/func_hnsw.go @@ -28,7 +28,7 @@ import ( var hnswsync_runsql = sqlexec.RunSql -func hnswsync(proc *process.Process, db string, tbl string, cdc *vectorindex.HnswCdc[float32]) error { +func hnswsync(proc *process.Process, db string, tbl string, cdc *vectorindex.VectorIndexCdc[float32]) error { b, err := json.Marshal(cdc) if err != nil { @@ -97,7 +97,7 @@ func hnswCdcUpdate(ivecs []*vector.Vector, result vector.FunctionResultWrapper, return moerr.NewInvalidInput(proc.Ctx, "cdc is null") } - var cdc vectorindex.HnswCdc[float32] + var cdc vectorindex.VectorIndexCdc[float32] err := json.Unmarshal([]byte(cdcstr), &cdc) if err != nil { return moerr.NewInvalidInput(proc.Ctx, "cdc is not json object") diff --git a/pkg/vectorindex/types.go b/pkg/vectorindex/types.go index 089642b22adbb..60ff6efef3e52 100644 --- a/pkg/vectorindex/types.go +++ b/pkg/vectorindex/types.go @@ -99,32 +99,32 @@ type RuntimeConfig struct { Probe uint } -type HnswCdc[T types.RealNumbers] struct { - Start string `json:"start"` - End string `json:"end"` - Data []HnswCdcEntry[T] `json:"cdc"` +type VectorIndexCdc[T types.RealNumbers] struct { + Start string `json:"start"` + End string `json:"end"` + Data []VectorIndexCdcEntry[T] `json:"cdc"` } -func NewHnswCdc[T types.RealNumbers]() *HnswCdc[T] { - return &HnswCdc[T]{ - Data: make([]HnswCdcEntry[T], 0, 100), +func NewVectorIndexCdc[T types.RealNumbers]() *VectorIndexCdc[T] { + return &VectorIndexCdc[T]{ + Data: make([]VectorIndexCdcEntry[T], 0, 100), } } -func (h *HnswCdc[T]) Reset() { +func (h *VectorIndexCdc[T]) Reset() { h.Data = h.Data[:0] } -func (h *HnswCdc[T]) Empty() bool { +func (h *VectorIndexCdc[T]) Empty() bool { return len(h.Data) == 0 } -func (h *HnswCdc[T]) Full() bool { +func (h *VectorIndexCdc[T]) Full() bool { return len(h.Data) >= cap(h.Data) } -func (h *HnswCdc[T]) Insert(key int64, v []T) { - e := HnswCdcEntry[T]{ +func (h *VectorIndexCdc[T]) Insert(key int64, v []T) { + e := VectorIndexCdcEntry[T]{ Type: CDC_INSERT, PKey: key, Vec: v, @@ -133,8 +133,8 @@ func (h *HnswCdc[T]) Insert(key int64, v []T) { h.Data = append(h.Data, e) } -func (h *HnswCdc[T]) Upsert(key int64, v []T) { - e := HnswCdcEntry[T]{ +func (h *VectorIndexCdc[T]) Upsert(key int64, v []T) { + e := VectorIndexCdcEntry[T]{ Type: CDC_UPSERT, PKey: key, Vec: v, @@ -143,8 +143,8 @@ func (h *HnswCdc[T]) Upsert(key int64, v []T) { h.Data = append(h.Data, e) } -func (h *HnswCdc[T]) Delete(key int64) { - e := HnswCdcEntry[T]{ +func (h *VectorIndexCdc[T]) Delete(key int64) { + e := VectorIndexCdcEntry[T]{ Type: CDC_DELETE, PKey: key, } @@ -152,7 +152,7 @@ func (h *HnswCdc[T]) Delete(key int64) { h.Data = append(h.Data, e) } -func (h *HnswCdc[T]) ToJson() (string, error) { +func (h *VectorIndexCdc[T]) ToJson() (string, error) { b, err := json.Marshal(h) if err != nil { @@ -161,7 +161,7 @@ func (h *HnswCdc[T]) ToJson() (string, error) { return string(b), nil } -type HnswCdcEntry[T types.RealNumbers] struct { +type VectorIndexCdcEntry[T types.RealNumbers] struct { Type string `json:"t"` // I - INSERT, D - DELETE, U - UPSERT PKey int64 `json:"pk"` Vec []T `json:"v,omitempty"` From 28cdb7cdf08a656e9218239afc8ab405547946c8 Mon Sep 17 00:00:00 2001 From: cpegeric Date: Wed, 14 May 2025 10:24:01 +0100 Subject: [PATCH 019/223] refactor code --- pkg/vectorindex/hnsw/build.go | 193 ++------------------ pkg/vectorindex/hnsw/model.go | 323 +++++++++++++++++++++++++++++++++ pkg/vectorindex/hnsw/search.go | 147 +-------------- 3 files changed, 341 insertions(+), 322 deletions(-) create mode 100644 pkg/vectorindex/hnsw/model.go diff --git a/pkg/vectorindex/hnsw/build.go b/pkg/vectorindex/hnsw/build.go index b61d42b0216e8..4749ab52c4010 100644 --- a/pkg/vectorindex/hnsw/build.go +++ b/pkg/vectorindex/hnsw/build.go @@ -17,7 +17,6 @@ package hnsw import ( "errors" "fmt" - "math" "os" "strings" "sync" @@ -26,24 +25,13 @@ import ( "github.com/matrixorigin/matrixone/pkg/common/moerr" "github.com/matrixorigin/matrixone/pkg/vectorindex" "github.com/matrixorigin/matrixone/pkg/vm/process" - usearch "github.com/unum-cloud/usearch/golang" ) -// Hnsw Build index implementation -type HnswBuildIndex struct { - Id string - Index *usearch.Index - Path string - Saved bool - Size int64 - MaxCapacity uint -} - type HnswBuild struct { uid string cfg vectorindex.IndexConfig tblcfg vectorindex.IndexTableConfig - indexes []*HnswBuildIndex + indexes []*HnswModel nthread int add_chan chan AddItem err_chan chan error @@ -58,165 +46,6 @@ type AddItem struct { vec []float32 } -// New HnswBuildIndex struct -func NewHnswBuildIndex(id string, cfg vectorindex.IndexConfig, nthread int, max_capacity uint) (*HnswBuildIndex, error) { - var err error - idx := &HnswBuildIndex{} - - idx.Id = id - - idx.Index, err = usearch.NewIndex(cfg.Usearch) - if err != nil { - return nil, err - } - - idx.MaxCapacity = max_capacity - - err = idx.Index.Reserve(idx.MaxCapacity) - if err != nil { - return nil, err - } - - err = idx.Index.ChangeThreadsAdd(uint(nthread)) - if err != nil { - return nil, err - } - return idx, nil -} - -// Destroy the struct -func (idx *HnswBuildIndex) Destroy() error { - if idx.Index != nil { - err := idx.Index.Destroy() - if err != nil { - return err - } - idx.Index = nil - } - - if idx.Saved && len(idx.Path) > 0 { - // remove the file - err := os.Remove(idx.Path) - if err != nil { - return err - } - } - return nil -} - -// Save the index to file -func (idx *HnswBuildIndex) SaveToFile() error { - if idx.Saved { - return nil - } - - f, err := os.CreateTemp("", "hnsw") - if err != nil { - return err - } - - err = idx.Index.Save(f.Name()) - if err != nil { - os.Remove(f.Name()) - return err - } - - // free memory - err = idx.Index.Destroy() - if err != nil { - return err - } - idx.Index = nil - - idx.Saved = true - idx.Path = f.Name() - return nil -} - -// Generate the SQL to update the secondary index tables. -// 1. store the index file into the index table -func (idx *HnswBuildIndex) ToSql(cfg vectorindex.IndexTableConfig) ([]string, error) { - - err := idx.SaveToFile() - if err != nil { - return nil, err - } - - fi, err := os.Stat(idx.Path) - if err != nil { - return nil, err - } - - filesz := fi.Size() - offset := int64(0) - chunksz := int64(0) - chunkid := int64(0) - - idx.Size = filesz - - sqls := make([]string, 0, 5) - - sql := fmt.Sprintf("INSERT INTO `%s`.`%s` VALUES ", cfg.DbName, cfg.IndexTable) - values := make([]string, 0, int64(math.Ceil(float64(filesz)/float64(vectorindex.MaxChunkSize)))) - n := 0 - for offset = 0; offset < filesz; { - if offset+vectorindex.MaxChunkSize < filesz { - chunksz = vectorindex.MaxChunkSize - - } else { - chunksz = filesz - offset - } - - url := fmt.Sprintf("file://%s?offset=%d&size=%d", idx.Path, offset, chunksz) - tuple := fmt.Sprintf("('%s', %d, load_file(cast('%s' as datalink)), 0)", idx.Id, chunkid, url) - values = append(values, tuple) - - // offset and chunksz - offset += chunksz - chunkid++ - - n++ - if n == 10000 { - newsql := sql + strings.Join(values, ", ") - sqls = append(sqls, newsql) - values = values[:0] - n = 0 - } - } - - if len(values) > 0 { - newsql := sql + strings.Join(values, ", ") - sqls = append(sqls, newsql) - } - - //sql += strings.Join(values, ", ") - //return []string{sql}, nil - return sqls, nil -} - -// is the index empty -func (idx *HnswBuildIndex) Empty() (bool, error) { - sz, err := idx.Index.Len() - if err != nil { - return false, err - } - return (sz == 0), nil -} - -// check the index is full, i.e. 10K vectors -func (idx *HnswBuildIndex) Full() (bool, error) { - sz, err := idx.Index.Len() - if err != nil { - return false, err - } - return (sz == idx.MaxCapacity), nil -} - -// add vector to the index -func (idx *HnswBuildIndex) Add(key int64, vec []float32) error { - return idx.Index.Add(uint64(key), vec) -} - // create HsnwBuild struct func NewHnswBuild(proc *process.Process, uid string, nworker int32, cfg vectorindex.IndexConfig, tblcfg vectorindex.IndexTableConfig) (info *HnswBuild, err error) { @@ -239,7 +68,7 @@ func NewHnswBuild(proc *process.Process, uid string, nworker int32, uid: uid, cfg: cfg, tblcfg: tblcfg, - indexes: make([]*HnswBuildIndex, 0, 16), + indexes: make([]*HnswModel, 0, 16), nthread: int(nthread), } @@ -337,18 +166,18 @@ func (h *HnswBuild) createIndexUniqueKey(id int64) string { return fmt.Sprintf("%s:%d", h.uid, id) } -func (h *HnswBuild) getIndexForAddSync() (idx *HnswBuildIndex, save_idx *HnswBuildIndex, err error) { +func (h *HnswBuild) getIndexForAddSync() (idx *HnswModel, save_idx *HnswModel, err error) { h.mutex.Lock() defer h.mutex.Unlock() return h.getIndexForAdd() } -func (h *HnswBuild) getIndexForAdd() (idx *HnswBuildIndex, save_idx *HnswBuildIndex, err error) { +func (h *HnswBuild) getIndexForAdd() (idx *HnswModel, save_idx *HnswModel, err error) { save_idx = nil nidx := int64(len(h.indexes)) if nidx == 0 { - idx, err = NewHnswBuildIndex(h.createIndexUniqueKey(nidx), h.cfg, h.nthread, uint(h.tblcfg.IndexCapacity)) + idx, err = NewHnswModelForBuild(h.createIndexUniqueKey(nidx), h.cfg, h.nthread, uint(h.tblcfg.IndexCapacity)) if err != nil { return nil, nil, err } @@ -363,7 +192,7 @@ func (h *HnswBuild) getIndexForAdd() (idx *HnswBuildIndex, save_idx *HnswBuildIn save_idx = idx // create new index - idx, err = NewHnswBuildIndex(h.createIndexUniqueKey(nidx), h.cfg, h.nthread, uint(h.tblcfg.IndexCapacity)) + idx, err = NewHnswModelForBuild(h.createIndexUniqueKey(nidx), h.cfg, h.nthread, uint(h.tblcfg.IndexCapacity)) if err != nil { return nil, nil, err } @@ -382,8 +211,8 @@ func (h *HnswBuild) getIndexForAdd() (idx *HnswBuildIndex, save_idx *HnswBuildIn // sync version for multi-thread func (h *HnswBuild) addVectorSync(key int64, vec []float32) error { var err error - var idx *HnswBuildIndex - var save_idx *HnswBuildIndex + var idx *HnswModel + var save_idx *HnswModel idx, save_idx, err = h.getIndexForAddSync() if err != nil { @@ -406,8 +235,8 @@ func (h *HnswBuild) addVectorSync(key int64, vec []float32) error { // single-threaded version. func (h *HnswBuild) addVector(key int64, vec []float32) error { var err error - var idx *HnswBuildIndex - var save_idx *HnswBuildIndex + var idx *HnswModel + var save_idx *HnswModel h.mutex.Lock() defer h.mutex.Unlock() @@ -470,6 +299,6 @@ func (h *HnswBuild) ToInsertSql(ts int64) ([]string, error) { return sqls, nil } -func (h *HnswBuild) GetIndexes() []*HnswBuildIndex { +func (h *HnswBuild) GetIndexes() []*HnswModel { return h.indexes } diff --git a/pkg/vectorindex/hnsw/model.go b/pkg/vectorindex/hnsw/model.go new file mode 100644 index 0000000000000..495b77349cf40 --- /dev/null +++ b/pkg/vectorindex/hnsw/model.go @@ -0,0 +1,323 @@ +// Copyright 2022 Matrix Origin +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package hnsw + +import ( + "fmt" + "io" + "math" + "os" + "strings" + + "github.com/detailyang/go-fallocate" + "github.com/matrixorigin/matrixone/pkg/common/moerr" + "github.com/matrixorigin/matrixone/pkg/container/vector" + "github.com/matrixorigin/matrixone/pkg/util/executor" + "github.com/matrixorigin/matrixone/pkg/vectorindex" + "github.com/matrixorigin/matrixone/pkg/vm/process" + usearch "github.com/unum-cloud/usearch/golang" +) + +// Hnsw Build index implementation +type HnswModel struct { + Id string + Index *usearch.Index + Path string + FileSize int64 + + // info required for build + Saved bool + MaxCapacity uint + + // from metadata. info required for search + Timestamp int64 + Checksum string +} + +// New HnswModel struct +func NewHnswModelForBuild(id string, cfg vectorindex.IndexConfig, nthread int, max_capacity uint) (*HnswModel, error) { + var err error + idx := &HnswModel{} + + idx.Id = id + + idx.Index, err = usearch.NewIndex(cfg.Usearch) + if err != nil { + return nil, err + } + + idx.MaxCapacity = max_capacity + + err = idx.Index.Reserve(idx.MaxCapacity) + if err != nil { + return nil, err + } + + err = idx.Index.ChangeThreadsAdd(uint(nthread)) + if err != nil { + return nil, err + } + return idx, nil +} + +// Destroy the struct +func (idx *HnswModel) Destroy() error { + if idx.Index != nil { + err := idx.Index.Destroy() + if err != nil { + return err + } + idx.Index = nil + } + + if idx.Saved && len(idx.Path) > 0 { + // remove the file + err := os.Remove(idx.Path) + if err != nil { + return err + } + } + return nil +} + +// Save the index to file +func (idx *HnswModel) SaveToFile() error { + if idx.Saved { + return nil + } + + f, err := os.CreateTemp("", "hnsw") + if err != nil { + return err + } + + err = idx.Index.Save(f.Name()) + if err != nil { + os.Remove(f.Name()) + return err + } + + // free memory + err = idx.Index.Destroy() + if err != nil { + return err + } + idx.Index = nil + + idx.Saved = true + idx.Path = f.Name() + return nil +} + +// Generate the SQL to update the secondary index tables. +// 1. store the index file into the index table +func (idx *HnswModel) ToSql(cfg vectorindex.IndexTableConfig) ([]string, error) { + + err := idx.SaveToFile() + if err != nil { + return nil, err + } + + fi, err := os.Stat(idx.Path) + if err != nil { + return nil, err + } + + filesz := fi.Size() + offset := int64(0) + chunksz := int64(0) + chunkid := int64(0) + + idx.FileSize = filesz + + sqls := make([]string, 0, 5) + + sql := fmt.Sprintf("INSERT INTO `%s`.`%s` VALUES ", cfg.DbName, cfg.IndexTable) + values := make([]string, 0, int64(math.Ceil(float64(filesz)/float64(vectorindex.MaxChunkSize)))) + n := 0 + for offset = 0; offset < filesz; { + if offset+vectorindex.MaxChunkSize < filesz { + chunksz = vectorindex.MaxChunkSize + + } else { + chunksz = filesz - offset + } + + url := fmt.Sprintf("file://%s?offset=%d&size=%d", idx.Path, offset, chunksz) + tuple := fmt.Sprintf("('%s', %d, load_file(cast('%s' as datalink)), 0)", idx.Id, chunkid, url) + values = append(values, tuple) + + // offset and chunksz + offset += chunksz + chunkid++ + + n++ + if n == 10000 { + newsql := sql + strings.Join(values, ", ") + sqls = append(sqls, newsql) + values = values[:0] + n = 0 + } + } + + if len(values) > 0 { + newsql := sql + strings.Join(values, ", ") + sqls = append(sqls, newsql) + } + + //sql += strings.Join(values, ", ") + //return []string{sql}, nil + return sqls, nil +} + +// is the index empty +func (idx *HnswModel) Empty() (bool, error) { + sz, err := idx.Index.Len() + if err != nil { + return false, err + } + return (sz == 0), nil +} + +// check the index is full, i.e. 10K vectors +func (idx *HnswModel) Full() (bool, error) { + sz, err := idx.Index.Len() + if err != nil { + return false, err + } + return (sz == idx.MaxCapacity), nil +} + +// add vector to the index +func (idx *HnswModel) Add(key int64, vec []float32) error { + return idx.Index.Add(uint64(key), vec) +} + +// load chunk from database +func (idx *HnswModel) loadChunk(proc *process.Process, stream_chan chan executor.Result, error_chan chan error, fp *os.File) (stream_closed bool, err error) { + var res executor.Result + var ok bool + + select { + case res, ok = <-stream_chan: + if !ok { + return true, nil + } + case err = <-error_chan: + return false, err + case <-proc.Ctx.Done(): + return false, moerr.NewInternalError(proc.Ctx, "context cancelled") + } + + bat := res.Batches[0] + defer res.Close() + + for i := 0; i < bat.RowCount(); i++ { + chunk_id := vector.GetFixedAtWithTypeCheck[int64](bat.Vecs[0], i) + data := bat.Vecs[1].GetRawBytesAt(i) + + offset := chunk_id * vectorindex.MaxChunkSize + _, err = fp.Seek(offset, io.SeekStart) + if err != nil { + return false, err + } + + _, err = fp.Write(data) + if err != nil { + return false, err + } + } + return false, nil +} + +// load index from database +// TODO: loading file is tricky. +// 1. we need to know the size of the file. +// 2. Write Zero to file to have a pre-allocated size +// 3. SELECT chunk_id, data from index_table WHERE index_id = id. Result will be out of order +// 4. according to the chunk_id, seek to the offset and write the chunk +// 5. check the checksum to verify the correctness of the file +func (idx *HnswModel) LoadIndex(proc *process.Process, idxcfg vectorindex.IndexConfig, tblcfg vectorindex.IndexTableConfig, nthread int64) error { + + stream_chan := make(chan executor.Result, 2) + error_chan := make(chan error) + + // create tempfile for writing + fp, err := os.CreateTemp("", "hnswindx") + if err != nil { + return err + } + defer os.Remove(fp.Name()) + + err = fallocate.Fallocate(fp, 0, idx.FileSize) + if err != nil { + return err + } + + // run streaming sql + sql := fmt.Sprintf("SELECT chunk_id, data from `%s`.`%s` WHERE index_id = '%s'", tblcfg.DbName, tblcfg.IndexTable, idx.Id) + go func() { + _, err := runSql_streaming(proc, sql, stream_chan, error_chan) + if err != nil { + error_chan <- err + return + } + }() + + // incremental load from database + sql_closed := false + for !sql_closed { + sql_closed, err = idx.loadChunk(proc, stream_chan, error_chan, fp) + if err != nil { + return err + } + } + + // load index to memory + fp.Close() + + // check checksum + chksum, err := vectorindex.CheckSum(fp.Name()) + if err != nil { + return err + } + if chksum != idx.Checksum { + return moerr.NewInternalError(proc.Ctx, "Checksum mismatch with the index file") + } + + usearchidx, err := usearch.NewIndex(idxcfg.Usearch) + if err != nil { + return err + } + + err = usearchidx.ChangeThreadsSearch(uint(nthread)) + if err != nil { + return err + } + + err = usearchidx.Load(fp.Name()) + if err != nil { + return err + } + + idx.Index = usearchidx + + return nil +} + +// Call usearch.Search +func (idx *HnswModel) Search(query []float32, limit uint) (keys []usearch.Key, distances []float32, err error) { + return idx.Index.Search(query, limit) +} diff --git a/pkg/vectorindex/hnsw/search.go b/pkg/vectorindex/hnsw/search.go index bd5590d751785..07c6010358137 100644 --- a/pkg/vectorindex/hnsw/search.go +++ b/pkg/vectorindex/hnsw/search.go @@ -17,164 +17,31 @@ package hnsw import ( "errors" "fmt" - "io" - "os" "sync" "sync/atomic" - "github.com/detailyang/go-fallocate" "github.com/matrixorigin/matrixone/pkg/common/moerr" "github.com/matrixorigin/matrixone/pkg/container/vector" - "github.com/matrixorigin/matrixone/pkg/util/executor" "github.com/matrixorigin/matrixone/pkg/vectorindex" "github.com/matrixorigin/matrixone/pkg/vectorindex/cache" "github.com/matrixorigin/matrixone/pkg/vectorindex/sqlexec" "github.com/matrixorigin/matrixone/pkg/vm/process" - - usearch "github.com/unum-cloud/usearch/golang" ) var runSql = sqlexec.RunSql var runSql_streaming = sqlexec.RunStreamingSql -// Hnsw search index struct to hold the usearch index -type HnswSearchIndex struct { - Id string - Path string - Index *usearch.Index - Timestamp int64 - Checksum string - Filesize int64 -} - // This is the HNSW search implementation that implement VectorIndexSearchIf interface type HnswSearch struct { Idxcfg vectorindex.IndexConfig Tblcfg vectorindex.IndexTableConfig - Indexes []*HnswSearchIndex + Indexes []*HnswModel Concurrency atomic.Int64 Mutex sync.Mutex Cond *sync.Cond ThreadsSearch int64 } -// load chunk from database -func (idx *HnswSearchIndex) loadChunk(proc *process.Process, stream_chan chan executor.Result, error_chan chan error, fp *os.File) (stream_closed bool, err error) { - var res executor.Result - var ok bool - - select { - case res, ok = <-stream_chan: - if !ok { - return true, nil - } - case err = <-error_chan: - return false, err - case <-proc.Ctx.Done(): - return false, moerr.NewInternalError(proc.Ctx, "context cancelled") - } - - bat := res.Batches[0] - defer res.Close() - - for i := 0; i < bat.RowCount(); i++ { - chunk_id := vector.GetFixedAtWithTypeCheck[int64](bat.Vecs[0], i) - data := bat.Vecs[1].GetRawBytesAt(i) - - offset := chunk_id * vectorindex.MaxChunkSize - _, err = fp.Seek(offset, io.SeekStart) - if err != nil { - return false, err - } - - _, err = fp.Write(data) - if err != nil { - return false, err - } - } - return false, nil -} - -// load index from database -// TODO: loading file is tricky. -// 1. we need to know the size of the file. -// 2. Write Zero to file to have a pre-allocated size -// 3. SELECT chunk_id, data from index_table WHERE index_id = id. Result will be out of order -// 4. according to the chunk_id, seek to the offset and write the chunk -// 5. check the checksum to verify the correctness of the file -func (idx *HnswSearchIndex) LoadIndex(proc *process.Process, idxcfg vectorindex.IndexConfig, tblcfg vectorindex.IndexTableConfig, nthread int64) error { - - stream_chan := make(chan executor.Result, 2) - error_chan := make(chan error) - - // create tempfile for writing - fp, err := os.CreateTemp("", "hnswindx") - if err != nil { - return err - } - defer os.Remove(fp.Name()) - - err = fallocate.Fallocate(fp, 0, idx.Filesize) - if err != nil { - return err - } - - // run streaming sql - sql := fmt.Sprintf("SELECT chunk_id, data from `%s`.`%s` WHERE index_id = '%s'", tblcfg.DbName, tblcfg.IndexTable, idx.Id) - go func() { - _, err := runSql_streaming(proc, sql, stream_chan, error_chan) - if err != nil { - error_chan <- err - return - } - }() - - // incremental load from database - sql_closed := false - for !sql_closed { - sql_closed, err = idx.loadChunk(proc, stream_chan, error_chan, fp) - if err != nil { - return err - } - } - - // load index to memory - fp.Close() - - // check checksum - chksum, err := vectorindex.CheckSum(fp.Name()) - if err != nil { - return err - } - if chksum != idx.Checksum { - return moerr.NewInternalError(proc.Ctx, "Checksum mismatch with the index file") - } - - usearchidx, err := usearch.NewIndex(idxcfg.Usearch) - if err != nil { - return err - } - - err = usearchidx.ChangeThreadsSearch(uint(nthread)) - if err != nil { - return err - } - - err = usearchidx.Load(fp.Name()) - if err != nil { - return err - } - - idx.Index = usearchidx - - return nil -} - -// Call usearch.Search -func (idx *HnswSearchIndex) Search(query []float32, limit uint) (keys []usearch.Key, distances []float32, err error) { - return idx.Index.Search(query, limit) -} - func NewHnswSearch(idxcfg vectorindex.IndexConfig, tblcfg vectorindex.IndexTableConfig) *HnswSearch { nthread := vectorindex.GetConcurrency(tblcfg.ThreadsSearch) s := &HnswSearch{Idxcfg: idxcfg, Tblcfg: tblcfg, ThreadsSearch: nthread} @@ -300,9 +167,9 @@ func (s *HnswSearch) Destroy() { } // load metadata from database -func (s *HnswSearch) LoadMetadata(proc *process.Process) ([]*HnswSearchIndex, error) { +func LoadMetadata(proc *process.Process, dbname string, metatbl string) ([]*HnswModel, error) { - sql := fmt.Sprintf("SELECT * FROM `%s`.`%s`", s.Tblcfg.DbName, s.Tblcfg.MetadataTable) + sql := fmt.Sprintf("SELECT * FROM `%s`.`%s`", dbname, metatbl) res, err := runSql(proc, sql) if err != nil { return nil, err @@ -314,7 +181,7 @@ func (s *HnswSearch) LoadMetadata(proc *process.Process) ([]*HnswSearchIndex, er total += bat.RowCount() } - indexes := make([]*HnswSearchIndex, 0, total) + indexes := make([]*HnswModel, 0, total) for _, bat := range res.Batches { idVec := bat.Vecs[0] chksumVec := bat.Vecs[1] @@ -326,7 +193,7 @@ func (s *HnswSearch) LoadMetadata(proc *process.Process) ([]*HnswSearchIndex, er ts := vector.GetFixedAtWithTypeCheck[int64](tsVec, i) fs := vector.GetFixedAtWithTypeCheck[int64](fsVec, i) - idx := &HnswSearchIndex{Id: id, Checksum: chksum, Timestamp: ts, Filesize: fs} + idx := &HnswModel{Id: id, Checksum: chksum, Timestamp: ts, FileSize: fs} indexes = append(indexes, idx) } } @@ -335,7 +202,7 @@ func (s *HnswSearch) LoadMetadata(proc *process.Process) ([]*HnswSearchIndex, er } // load index from database -func (s *HnswSearch) LoadIndex(proc *process.Process, indexes []*HnswSearchIndex) ([]*HnswSearchIndex, error) { +func (s *HnswSearch) LoadIndex(proc *process.Process, indexes []*HnswModel) ([]*HnswModel, error) { for _, idx := range indexes { err := idx.LoadIndex(proc, s.Idxcfg, s.Tblcfg, s.ThreadsSearch) @@ -349,7 +216,7 @@ func (s *HnswSearch) LoadIndex(proc *process.Process, indexes []*HnswSearchIndex // load index from database (implement VectorIndexSearch.LoadFromDatabase) func (s *HnswSearch) Load(proc *process.Process) error { // load metadata - indexes, err := s.LoadMetadata(proc) + indexes, err := LoadMetadata(proc, s.Tblcfg.DbName, s.Tblcfg.MetadataTable) if err != nil { return err } From cf25e248889634eb613602a2c23f92021b858594 Mon Sep 17 00:00:00 2001 From: cpegeric Date: Wed, 14 May 2025 10:29:38 +0100 Subject: [PATCH 020/223] refactoring --- pkg/vectorindex/hnsw/build_test.go | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/pkg/vectorindex/hnsw/build_test.go b/pkg/vectorindex/hnsw/build_test.go index 33c98d5f2f98a..ab3112613c57f 100644 --- a/pkg/vectorindex/hnsw/build_test.go +++ b/pkg/vectorindex/hnsw/build_test.go @@ -110,9 +110,9 @@ func TestBuildMulti(t *testing.T) { fmt.Printf("load model from files\n") // load index - search.Indexes = make([]*HnswSearchIndex, len(indexes)) + search.Indexes = make([]*HnswModel, len(indexes)) for i, idx := range indexes { - sidx := &HnswSearchIndex{} + sidx := &HnswModel{} sidx.Index, err = usearch.NewIndex(idxcfg.Usearch) require.Nil(t, err) @@ -173,7 +173,7 @@ func TestBuildIndex(t *testing.T) { idxcfg.Usearch.Metric = 100 //tblcfg := vectorindex.IndexTableConfig{DbName: "db", SrcTable: "src", MetadataTable: "__secondary_meta", IndexTable: "__secondary_index"} - idx, err := NewHnswBuildIndex("abc-0", idxcfg, 1, MaxIndexCapacity) + idx, err := NewHnswModelForBuild("abc-0", idxcfg, 1, MaxIndexCapacity) require.Nil(t, err) empty, err := idx.Empty() @@ -273,9 +273,9 @@ func TestBuildSingleThread(t *testing.T) { fmt.Printf("load model from files\n") // load index - search.Indexes = make([]*HnswSearchIndex, len(indexes)) + search.Indexes = make([]*HnswModel, len(indexes)) for i, idx := range indexes { - sidx := &HnswSearchIndex{} + sidx := &HnswModel{} sidx.Index, err = usearch.NewIndex(idxcfg.Usearch) require.Nil(t, err) From df53b4fdf3f07b95b7b0495b39ccc3eb915b2c33 Mon Sep 17 00:00:00 2001 From: cpegeric Date: Wed, 14 May 2025 10:40:35 +0100 Subject: [PATCH 021/223] add remove() and contains() and load from view --- pkg/vectorindex/hnsw/model.go | 18 ++++++++++++++++-- pkg/vectorindex/hnsw/search.go | 2 +- 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/pkg/vectorindex/hnsw/model.go b/pkg/vectorindex/hnsw/model.go index 495b77349cf40..704971b9353bd 100644 --- a/pkg/vectorindex/hnsw/model.go +++ b/pkg/vectorindex/hnsw/model.go @@ -205,6 +205,16 @@ func (idx *HnswModel) Add(key int64, vec []float32) error { return idx.Index.Add(uint64(key), vec) } +// remove key +func (idx *HnswModel) Remove(key int64) error { + return idx.Index.Remove(uint64(key)) +} + +// contains key +func (idx *HnswModel) Contains(key int64) (found bool, err error) { + return idx.Index.Contains(uint64(key)) +} + // load chunk from database func (idx *HnswModel) loadChunk(proc *process.Process, stream_chan chan executor.Result, error_chan chan error, fp *os.File) (stream_closed bool, err error) { var res executor.Result @@ -249,7 +259,7 @@ func (idx *HnswModel) loadChunk(proc *process.Process, stream_chan chan executor // 3. SELECT chunk_id, data from index_table WHERE index_id = id. Result will be out of order // 4. according to the chunk_id, seek to the offset and write the chunk // 5. check the checksum to verify the correctness of the file -func (idx *HnswModel) LoadIndex(proc *process.Process, idxcfg vectorindex.IndexConfig, tblcfg vectorindex.IndexTableConfig, nthread int64) error { +func (idx *HnswModel) LoadIndex(proc *process.Process, idxcfg vectorindex.IndexConfig, tblcfg vectorindex.IndexTableConfig, nthread int64, view bool) error { stream_chan := make(chan executor.Result, 2) error_chan := make(chan error) @@ -307,7 +317,11 @@ func (idx *HnswModel) LoadIndex(proc *process.Process, idxcfg vectorindex.IndexC return err } - err = usearchidx.Load(fp.Name()) + if view { + err = usearchidx.View(fp.Name()) + } else { + err = usearchidx.Load(fp.Name()) + } if err != nil { return err } diff --git a/pkg/vectorindex/hnsw/search.go b/pkg/vectorindex/hnsw/search.go index 07c6010358137..78e4d627052ad 100644 --- a/pkg/vectorindex/hnsw/search.go +++ b/pkg/vectorindex/hnsw/search.go @@ -205,7 +205,7 @@ func LoadMetadata(proc *process.Process, dbname string, metatbl string) ([]*Hnsw func (s *HnswSearch) LoadIndex(proc *process.Process, indexes []*HnswModel) ([]*HnswModel, error) { for _, idx := range indexes { - err := idx.LoadIndex(proc, s.Idxcfg, s.Tblcfg, s.ThreadsSearch) + err := idx.LoadIndex(proc, s.Idxcfg, s.Tblcfg, s.ThreadsSearch, false) if err != nil { return nil, err } From 509137ace7982576f52603ea1abd830816a92860 Mon Sep 17 00:00:00 2001 From: cpegeric Date: Wed, 14 May 2025 11:38:01 +0100 Subject: [PATCH 022/223] unload --- pkg/vectorindex/hnsw/model.go | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/pkg/vectorindex/hnsw/model.go b/pkg/vectorindex/hnsw/model.go index 704971b9353bd..b3a114509bbbf 100644 --- a/pkg/vectorindex/hnsw/model.go +++ b/pkg/vectorindex/hnsw/model.go @@ -44,6 +44,9 @@ type HnswModel struct { // from metadata. info required for search Timestamp int64 Checksum string + + // for cdc update + Dirty bool } // New HnswModel struct @@ -331,6 +334,21 @@ func (idx *HnswModel) LoadIndex(proc *process.Process, idxcfg vectorindex.IndexC return nil } +// unload +func (idx *HnswModel) Unload() error { + if idx.Index != nil { + err := idx.Index.Destroy() + if err != nil { + return err + } + // reset variable + idx.Index = nil + idx.Saved = false + idx.Dirty = false + } + return nil +} + // Call usearch.Search func (idx *HnswModel) Search(query []float32, limit uint) (keys []usearch.Key, distances []float32, err error) { return idx.Index.Search(query, limit) From fdeb4c1bb503a679730d6652024b0efcd3f30eaf Mon Sep 17 00:00:00 2001 From: cpegeric Date: Wed, 14 May 2025 11:47:23 +0100 Subject: [PATCH 023/223] add cdc sync --- pkg/vectorindex/hnsw/sync.go | 62 ++++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 pkg/vectorindex/hnsw/sync.go diff --git a/pkg/vectorindex/hnsw/sync.go b/pkg/vectorindex/hnsw/sync.go new file mode 100644 index 0000000000000..882dee5d1f789 --- /dev/null +++ b/pkg/vectorindex/hnsw/sync.go @@ -0,0 +1,62 @@ +// Copyright 2022 Matrix Origin +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package hnsw + +import ( + "fmt" + "os" + + "github.com/matrixorigin/matrixone/pkg/vectorindex" + "github.com/matrixorigin/matrixone/pkg/vm/process" +) + +const ( + catalogsql = "select index_table_name, algo_table_type, algo_params, column_name from mo_catalog.mo_indexes where table_id = (select rel_id from mo_catalog.mo_tables where relname = '%s' and reldatabase = '%s') and algo='hnsw';" +) + +func CdcSync(proc *process.Process, db string, tbl string, cdc *vectorindex.VectorIndexCdc[float32]) error { + + sql := fmt.Sprintf(catalogsql, tbl, db) + res, err := runSql(proc, sql) + if err != nil { + return err + } + defer res.Close() + + os.Stderr.WriteString(sql) + os.Stderr.WriteString(fmt.Sprintf("\nnumber of batch = %d\n", len(res.Batches))) + + if len(res.Batches) == 0 { + return nil + } + + bat := res.Batches[0] + + idxtblvec := bat.Vecs[0] + algotypevec := bat.Vecs[1] + paramvec := bat.Vecs[2] + colvec := bat.Vecs[3] + + for i := 0; i < bat.RowCount(); i++ { + + idxtbl := idxtblvec.UnsafeGetStringAt(i) + algotyp := algotypevec.UnsafeGetStringAt(i) + param := paramvec.UnsafeGetStringAt(i) + cname := colvec.UnsafeGetStringAt(i) + os.Stderr.WriteString(fmt.Sprintf("idxtbl %s, type %s, param %s, cname %s\n", idxtbl, algotyp, param, cname)) + } + + return nil +} From f08aa2901098bffcf3f8f842721d8e34a0969b7d Mon Sep 17 00:00:00 2001 From: cpegeric Date: Wed, 14 May 2025 11:48:53 +0100 Subject: [PATCH 024/223] CdcSync --- pkg/sql/plan/function/func_hnsw.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pkg/sql/plan/function/func_hnsw.go b/pkg/sql/plan/function/func_hnsw.go index 88642f7a5a357..12f2b338e8ce1 100644 --- a/pkg/sql/plan/function/func_hnsw.go +++ b/pkg/sql/plan/function/func_hnsw.go @@ -22,6 +22,7 @@ import ( "github.com/matrixorigin/matrixone/pkg/common/moerr" "github.com/matrixorigin/matrixone/pkg/container/vector" "github.com/matrixorigin/matrixone/pkg/vectorindex" + "github.com/matrixorigin/matrixone/pkg/vectorindex/hnsw" "github.com/matrixorigin/matrixone/pkg/vectorindex/sqlexec" "github.com/matrixorigin/matrixone/pkg/vm/process" ) @@ -104,7 +105,7 @@ func hnswCdcUpdate(ivecs []*vector.Vector, result vector.FunctionResultWrapper, } // hnsw sync os.Stderr.WriteString(fmt.Sprintf("db=%s, table=%s, json=%s\n", dbname, tblname, cdcstr)) - hnswsync(proc, string(dbname), string(tblname), &cdc) + hnsw.CdcSync(proc, string(dbname), string(tblname), &cdc) } return nil From 7f791a708bca2b32f73bb8b40513cff120437465 Mon Sep 17 00:00:00 2001 From: cpegeric Date: Wed, 14 May 2025 11:52:57 +0100 Subject: [PATCH 025/223] error checking --- pkg/sql/plan/function/func_hnsw.go | 51 +++--------------------------- 1 file changed, 4 insertions(+), 47 deletions(-) diff --git a/pkg/sql/plan/function/func_hnsw.go b/pkg/sql/plan/function/func_hnsw.go index 12f2b338e8ce1..31033c8f0fa8e 100644 --- a/pkg/sql/plan/function/func_hnsw.go +++ b/pkg/sql/plan/function/func_hnsw.go @@ -23,55 +23,9 @@ import ( "github.com/matrixorigin/matrixone/pkg/container/vector" "github.com/matrixorigin/matrixone/pkg/vectorindex" "github.com/matrixorigin/matrixone/pkg/vectorindex/hnsw" - "github.com/matrixorigin/matrixone/pkg/vectorindex/sqlexec" "github.com/matrixorigin/matrixone/pkg/vm/process" ) -var hnswsync_runsql = sqlexec.RunSql - -func hnswsync(proc *process.Process, db string, tbl string, cdc *vectorindex.VectorIndexCdc[float32]) error { - - b, err := json.Marshal(cdc) - if err != nil { - return err - } - os.Stderr.WriteString(string(b)) - - sql := fmt.Sprintf("select index_table_name, algo_table_type, algo_params, column_name from mo_catalog.mo_indexes where table_id = (select rel_id from mo_catalog.mo_tables where relname = '%s' and reldatabase = '%s') and algo='hnsw';", - tbl, db) - - res, err := hnswsync_runsql(proc, sql) - if err != nil { - return err - } - defer res.Close() - - os.Stderr.WriteString(sql) - os.Stderr.WriteString(fmt.Sprintf("\nnumber of batch = %d\n", len(res.Batches))) - - if len(res.Batches) == 0 { - return nil - } - - bat := res.Batches[0] - - idxtblvec := bat.Vecs[0] - algotypevec := bat.Vecs[1] - paramvec := bat.Vecs[2] - colvec := bat.Vecs[3] - - for i := 0; i < bat.RowCount(); i++ { - - idxtbl := idxtblvec.UnsafeGetStringAt(i) - algotyp := algotypevec.UnsafeGetStringAt(i) - param := paramvec.UnsafeGetStringAt(i) - cname := colvec.UnsafeGetStringAt(i) - os.Stderr.WriteString(fmt.Sprintf("idxtbl %s, type %s, param %s, cname %s\n", idxtbl, algotyp, param, cname)) - } - - return nil -} - func hnswCdcUpdate(ivecs []*vector.Vector, result vector.FunctionResultWrapper, proc *process.Process, length int, selectList *FunctionSelectList) error { if len(ivecs) != 3 { @@ -105,7 +59,10 @@ func hnswCdcUpdate(ivecs []*vector.Vector, result vector.FunctionResultWrapper, } // hnsw sync os.Stderr.WriteString(fmt.Sprintf("db=%s, table=%s, json=%s\n", dbname, tblname, cdcstr)) - hnsw.CdcSync(proc, string(dbname), string(tblname), &cdc) + err = hnsw.CdcSync(proc, string(dbname), string(tblname), &cdc) + if err != nil { + return err + } } return nil From cc15bbf8eae01ea4181bbe9be95f879903f02025 Mon Sep 17 00:00:00 2001 From: cpegeric Date: Wed, 14 May 2025 14:30:36 +0100 Subject: [PATCH 026/223] add dimension as function argument --- pkg/cdc/hnsw_sinker.go | 13 ++-- pkg/sql/plan/function/func_hnsw.go | 17 +++-- pkg/sql/plan/function/list_builtIn.go | 2 +- pkg/vectorindex/hnsw/sync.go | 101 +++++++++++++++++++++++++- pkg/vectorindex/types.go | 11 +-- 5 files changed, 123 insertions(+), 21 deletions(-) diff --git a/pkg/cdc/hnsw_sinker.go b/pkg/cdc/hnsw_sinker.go index 040e64b404679..60503152e392f 100644 --- a/pkg/cdc/hnsw_sinker.go +++ b/pkg/cdc/hnsw_sinker.go @@ -143,11 +143,12 @@ var NewHnswSyncSinker = func( } param := vectorindex.HnswCdcParam{ - MetaTbl: meta, - IndexTbl: storage, - DbName: dbTblInfo.SinkDbName, - Table: dbTblInfo.SinkTblName, - Params: hnswparam, + MetaTbl: meta, + IndexTbl: storage, + DbName: dbTblInfo.SinkDbName, + Table: dbTblInfo.SinkTblName, + Params: hnswparam, + Dimension: tableDef.Cols[veccol].Typ.Width, } // create sinker @@ -499,7 +500,7 @@ func (s *hnswSyncSinker[T]) sendSql() error { } // pad extra space at the front and send SQL padding := strings.Repeat(" ", sqlBufReserved) - sql := fmt.Sprintf("%s SELECT hnsw_cdc_update('%s', '%s', '%s');", padding, s.param.DbName, s.param.Table, js) + sql := fmt.Sprintf("%s SELECT hnsw_cdc_update('%s', '%s', %d, '%s');", padding, s.param.DbName, s.param.Table, s.param.Dimension, js) s.sqlBufSendCh <- []byte(sql) diff --git a/pkg/sql/plan/function/func_hnsw.go b/pkg/sql/plan/function/func_hnsw.go index 31033c8f0fa8e..7ed40acda6d88 100644 --- a/pkg/sql/plan/function/func_hnsw.go +++ b/pkg/sql/plan/function/func_hnsw.go @@ -28,13 +28,14 @@ import ( func hnswCdcUpdate(ivecs []*vector.Vector, result vector.FunctionResultWrapper, proc *process.Process, length int, selectList *FunctionSelectList) error { - if len(ivecs) != 3 { - return moerr.NewInvalidInput(proc.Ctx, "number of arguments != 3") + if len(ivecs) != 4 { + return moerr.NewInvalidInput(proc.Ctx, "number of arguments != 4") } dbVec := vector.GenerateFunctionStrParameter(ivecs[0]) tblVec := vector.GenerateFunctionStrParameter(ivecs[1]) - cdcVec := vector.GenerateFunctionStrParameter(ivecs[2]) + dimVec := vector.GenerateFunctionFixedTypeParameter[int32](ivecs[2]) + cdcVec := vector.GenerateFunctionStrParameter(ivecs[3]) for i := uint64(0); i < uint64(length); i++ { dbname, isnull := dbVec.GetStrValue(i) @@ -47,6 +48,12 @@ func hnswCdcUpdate(ivecs []*vector.Vector, result vector.FunctionResultWrapper, return moerr.NewInvalidInput(proc.Ctx, "table name is null") } + + dim, isnull := dimVec.GetValue(i) + if isnull { + return moerr.NewInvalidInput(proc.Ctx, "dimension is null") + } + cdcstr, isnull := cdcVec.GetStrValue(i) if isnull { return moerr.NewInvalidInput(proc.Ctx, "cdc is null") @@ -58,8 +65,8 @@ func hnswCdcUpdate(ivecs []*vector.Vector, result vector.FunctionResultWrapper, return moerr.NewInvalidInput(proc.Ctx, "cdc is not json object") } // hnsw sync - os.Stderr.WriteString(fmt.Sprintf("db=%s, table=%s, json=%s\n", dbname, tblname, cdcstr)) - err = hnsw.CdcSync(proc, string(dbname), string(tblname), &cdc) + os.Stderr.WriteString(fmt.Sprintf("db=%s, table=%s, dim=%d, json=%s\n", dbname, tblname, dim, cdcstr)) + err = hnsw.CdcSync(proc, string(dbname), string(tblname), dim, &cdc) if err != nil { return err } diff --git a/pkg/sql/plan/function/list_builtIn.go b/pkg/sql/plan/function/list_builtIn.go index cd78f618fbde5..0175d0f840b41 100644 --- a/pkg/sql/plan/function/list_builtIn.go +++ b/pkg/sql/plan/function/list_builtIn.go @@ -6897,7 +6897,7 @@ var supportedOthersBuiltIns = []FuncNew{ Overloads: []overload{ { overloadId: 0, - args: []types.T{types.T_varchar, types.T_varchar, types.T_varchar}, + args: []types.T{types.T_varchar, types.T_varchar, types.T_int32, types.T_varchar}, retType: func(parameters []types.Type) types.Type { return types.T_uint64.ToType() }, diff --git a/pkg/vectorindex/hnsw/sync.go b/pkg/vectorindex/hnsw/sync.go index 882dee5d1f789..8014d02d3d6ab 100644 --- a/pkg/vectorindex/hnsw/sync.go +++ b/pkg/vectorindex/hnsw/sync.go @@ -15,10 +15,15 @@ package hnsw import ( + "encoding/json" "fmt" "os" + "strconv" + "github.com/matrixorigin/matrixone/pkg/catalog" + "github.com/matrixorigin/matrixone/pkg/common/moerr" "github.com/matrixorigin/matrixone/pkg/vectorindex" + "github.com/matrixorigin/matrixone/pkg/vectorindex/metric" "github.com/matrixorigin/matrixone/pkg/vm/process" ) @@ -26,7 +31,7 @@ const ( catalogsql = "select index_table_name, algo_table_type, algo_params, column_name from mo_catalog.mo_indexes where table_id = (select rel_id from mo_catalog.mo_tables where relname = '%s' and reldatabase = '%s') and algo='hnsw';" ) -func CdcSync(proc *process.Process, db string, tbl string, cdc *vectorindex.VectorIndexCdc[float32]) error { +func CdcSync(proc *process.Process, db string, tbl string, dimension int32, cdc *vectorindex.VectorIndexCdc[float32]) error { sql := fmt.Sprintf(catalogsql, tbl, db) res, err := runSql(proc, sql) @@ -49,13 +54,101 @@ func CdcSync(proc *process.Process, db string, tbl string, cdc *vectorindex.Vect paramvec := bat.Vecs[2] colvec := bat.Vecs[3] + var idxtblcfg vectorindex.IndexTableConfig + var param vectorindex.HnswParam + + idxtblcfg.DbName = db + idxtblcfg.SrcTable = tbl + + // GetResolveVariableFunc() is nil because of internal SQL proc don't have ResolveVariableFunc(). + if proc.GetResolveVariableFunc() != nil { + val, err := proc.GetResolveVariableFunc()("hnsw_threads_build", true, false) + if err != nil { + return err + } + idxtblcfg.ThreadsBuild = val.(int64) + + idxcap, err := proc.GetResolveVariableFunc()("hnsw_max_index_capacity", true, false) + if err != nil { + return err + } + idxtblcfg.IndexCapacity = idxcap.(int64) + } else { + + idxtblcfg.ThreadsBuild = 0 + idxtblcfg.IndexCapacity = 1000000 + } + for i := 0; i < bat.RowCount(); i++ { idxtbl := idxtblvec.UnsafeGetStringAt(i) algotyp := algotypevec.UnsafeGetStringAt(i) - param := paramvec.UnsafeGetStringAt(i) - cname := colvec.UnsafeGetStringAt(i) - os.Stderr.WriteString(fmt.Sprintf("idxtbl %s, type %s, param %s, cname %s\n", idxtbl, algotyp, param, cname)) + + if i == 0 { + paramstr := paramvec.UnsafeGetStringAt(i) + cname := colvec.UnsafeGetStringAt(i) + os.Stderr.WriteString(fmt.Sprintf("idxtbl %s, type %s, param %s, cname %s\n", idxtbl, algotyp, param, cname)) + idxtblcfg.KeyPart = cname + if len(paramstr) > 0 { + err := json.Unmarshal([]byte(paramstr), ¶m) + if err != nil { + return err + } + } + } + + if algotyp == catalog.Hnsw_TblType_Metadata { + idxtblcfg.MetadataTable = idxtbl + + } else if algotyp == catalog.Hnsw_TblType_Storage { + idxtblcfg.IndexTable = idxtbl + + } + } + + var idxcfg vectorindex.IndexConfig + idxcfg.Type = "hnsw" + + idxcfg.Usearch.Dimensions = uint(dimension) + + if len(param.Quantization) > 0 { + var ok bool + idxcfg.Usearch.Quantization, ok = vectorindex.QuantizationValid(param.Quantization) + if !ok { + return moerr.NewInternalError(proc.Ctx, "Invalid quantization value") + + } + } + + if len(param.M) > 0 { + val, err := strconv.Atoi(param.M) + if err != nil { + return err + } + idxcfg.Usearch.Connectivity = uint(val) + } + + // default L2Sq + metrictype, ok := metric.OpTypeToUsearchMetric[param.OpType] + if !ok { + return moerr.NewInternalError(proc.Ctx, "Invalid op_type") + } + idxcfg.Usearch.Metric = metrictype + + if len(param.EfConstruction) > 0 { + val, err := strconv.Atoi(param.EfConstruction) + if err != nil { + return err + } + idxcfg.Usearch.ExpansionAdd = uint(val) + } + // ef_search + if len(param.EfSearch) > 0 { + val, err := strconv.Atoi(param.EfSearch) + if err != nil { + return err + } + idxcfg.Usearch.ExpansionSearch = uint(val) } return nil diff --git a/pkg/vectorindex/types.go b/pkg/vectorindex/types.go index 60ff6efef3e52..f50e246c3cd3d 100644 --- a/pkg/vectorindex/types.go +++ b/pkg/vectorindex/types.go @@ -168,11 +168,12 @@ type VectorIndexCdcEntry[T types.RealNumbers] struct { } type HnswCdcParam struct { - DbName string `json:"db"` - Table string `json:"table"` - MetaTbl string `json:"meta"` - IndexTbl string `json:"index"` - Params HnswParam `json:"params"` + DbName string `json:"db"` + Table string `json:"table"` + MetaTbl string `json:"meta"` + IndexTbl string `json:"index"` + Params HnswParam `json:"params"` + Dimension int32 `json:"dimension"` } // nthread == 0, result will return NumCPU - 1 From 7fd2758e8e72652b61a5b9be92f02d126bea5d7c Mon Sep 17 00:00:00 2001 From: cpegeric Date: Wed, 14 May 2025 14:48:19 +0100 Subject: [PATCH 027/223] load metadata --- pkg/vectorindex/hnsw/sync.go | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/pkg/vectorindex/hnsw/sync.go b/pkg/vectorindex/hnsw/sync.go index 8014d02d3d6ab..2e1d0b2ea136f 100644 --- a/pkg/vectorindex/hnsw/sync.go +++ b/pkg/vectorindex/hnsw/sync.go @@ -151,5 +151,15 @@ func CdcSync(proc *process.Process, db string, tbl string, dimension int32, cdc idxcfg.Usearch.ExpansionSearch = uint(val) } + os.Stderr.WriteString(fmt.Sprintf("idxtblcfg: %v\n", idxtblcfg)) + os.Stderr.WriteString(fmt.Sprintf("idxcfg: %v\n", idxcfg)) + + // load metadata + indexes, err := LoadMetadata(proc, idxtblcfg.DbName, idxtblcfg.MetadataTable) + if err != nil { + return err + } + + os.Stderr.WriteString(fmt.Sprintf("meta: %v\n", indexes)) return nil } From 00050c1046c35b15fee73b293f68d8c6a3124a08 Mon Sep 17 00:00:00 2001 From: cpegeric Date: Wed, 14 May 2025 17:51:32 +0100 Subject: [PATCH 028/223] update --- pkg/vectorindex/hnsw/model.go | 87 ++++++++++------ pkg/vectorindex/hnsw/sync.go | 181 ++++++++++++++++++++++++++++++++++ 2 files changed, 236 insertions(+), 32 deletions(-) diff --git a/pkg/vectorindex/hnsw/model.go b/pkg/vectorindex/hnsw/model.go index b3a114509bbbf..12669b38f56c7 100644 --- a/pkg/vectorindex/hnsw/model.go +++ b/pkg/vectorindex/hnsw/model.go @@ -47,6 +47,8 @@ type HnswModel struct { // for cdc update Dirty bool + View bool + Len uint } // New HnswModel struct @@ -85,11 +87,13 @@ func (idx *HnswModel) Destroy() error { idx.Index = nil } - if idx.Saved && len(idx.Path) > 0 { + if (idx.Saved || idx.View) && len(idx.Path) > 0 { // remove the file - err := os.Remove(idx.Path) - if err != nil { - return err + if _, err := os.Stat(idx.Path); err == nil || os.IsExist(err) { + err := os.Remove(idx.Path) + if err != nil { + return err + } } } return nil @@ -205,11 +209,13 @@ func (idx *HnswModel) Full() (bool, error) { // add vector to the index func (idx *HnswModel) Add(key int64, vec []float32) error { + idx.Dirty = true return idx.Index.Add(uint64(key), vec) } // remove key func (idx *HnswModel) Remove(key int64) error { + idx.Dirty = true return idx.Index.Remove(uint64(key)) } @@ -264,45 +270,61 @@ func (idx *HnswModel) loadChunk(proc *process.Process, stream_chan chan executor // 5. check the checksum to verify the correctness of the file func (idx *HnswModel) LoadIndex(proc *process.Process, idxcfg vectorindex.IndexConfig, tblcfg vectorindex.IndexTableConfig, nthread int64, view bool) error { - stream_chan := make(chan executor.Result, 2) - error_chan := make(chan error) + if idx.Index != nil { + return nil - // create tempfile for writing - fp, err := os.CreateTemp("", "hnswindx") - if err != nil { - return err } - defer os.Remove(fp.Name()) - err = fallocate.Fallocate(fp, 0, idx.FileSize) - if err != nil { - return err - } + stream_chan := make(chan executor.Result, 2) + error_chan := make(chan error) - // run streaming sql - sql := fmt.Sprintf("SELECT chunk_id, data from `%s`.`%s` WHERE index_id = '%s'", tblcfg.DbName, tblcfg.IndexTable, idx.Id) - go func() { - _, err := runSql_streaming(proc, sql, stream_chan, error_chan) + if len(idx.Path) == 0 { + // create tempfile for writing + fp, err := os.CreateTemp("", "hnswindx") if err != nil { - error_chan <- err - return + return err } - }() - // incremental load from database - sql_closed := false - for !sql_closed { - sql_closed, err = idx.loadChunk(proc, stream_chan, error_chan, fp) + // load index to memory + defer func() { + if !view { + // if view == false, remove the file + os.Remove(fp.Name()) + } + }() + + err = fallocate.Fallocate(fp, 0, idx.FileSize) if err != nil { + fp.Close() return err } - } - // load index to memory - fp.Close() + // run streaming sql + sql := fmt.Sprintf("SELECT chunk_id, data from `%s`.`%s` WHERE index_id = '%s'", tblcfg.DbName, tblcfg.IndexTable, idx.Id) + go func() { + _, err := runSql_streaming(proc, sql, stream_chan, error_chan) + if err != nil { + error_chan <- err + return + } + }() + + // incremental load from database + sql_closed := false + for !sql_closed { + sql_closed, err = idx.loadChunk(proc, stream_chan, error_chan, fp) + if err != nil { + fp.Close() + return err + } + } + + idx.Path = fp.Name() + fp.Close() + } // check checksum - chksum, err := vectorindex.CheckSum(fp.Name()) + chksum, err := vectorindex.CheckSum(idx.Path) if err != nil { return err } @@ -321,9 +343,10 @@ func (idx *HnswModel) LoadIndex(proc *process.Process, idxcfg vectorindex.IndexC } if view { - err = usearchidx.View(fp.Name()) + err = usearchidx.View(idx.Path) + idx.View = true } else { - err = usearchidx.Load(fp.Name()) + err = usearchidx.Load(idx.Path) } if err != nil { return err diff --git a/pkg/vectorindex/hnsw/sync.go b/pkg/vectorindex/hnsw/sync.go index 2e1d0b2ea136f..7c79825312985 100644 --- a/pkg/vectorindex/hnsw/sync.go +++ b/pkg/vectorindex/hnsw/sync.go @@ -161,5 +161,186 @@ func CdcSync(proc *process.Process, db string, tbl string, dimension int32, cdc } os.Stderr.WriteString(fmt.Sprintf("meta: %v\n", indexes)) + + return startsync(proc, indexes, idxcfg, idxtblcfg, cdc) +} + +func startsync(proc *process.Process, indexes []*HnswModel, idxcfg vectorindex.IndexConfig, tblcfg vectorindex.IndexTableConfig, cdc *vectorindex.VectorIndexCdc[float32]) error { + var err error + + defer func() { + for _, m := range indexes { + m.Destroy() + } + }() + + maxcap := uint(0) + + if len(indexes) == 0 { + // create a new model and do insert + + } else { + // try to find index cap + cdclen := len(cdc.Data) + midx := make([]int, cdclen) + // reset idx to -1 + for i := range midx { + midx[i] = -1 + } + + // find corresponding indexes + for i, m := range indexes { + err = m.LoadIndex(proc, idxcfg, tblcfg, tblcfg.ThreadsBuild, true) + if err != nil { + return err + } + + capacity, err := m.Index.Capacity() + if err != nil { + return err + } + m.MaxCapacity = capacity + mlen, err := m.Index.Len() + if err != nil { + return err + } + m.Len = mlen + + if maxcap < capacity { + maxcap = capacity + } + + for j, row := range cdc.Data { + switch row.Type { + case vectorindex.CDC_UPSERT, vectorindex.CDC_DELETE: + if midx[j] == -1 { + found, err := m.Contains(row.PKey) + if err != nil { + return err + } + if found { + midx[j] = i + } + } + } + } + + m.Unload() + } + + current := (*HnswModel)(nil) + last := indexes[len(indexes)-1] + // last model not load yet so check the last.Len instead of Full() + if last.Len >= last.MaxCapacity { + // model is already full, create a new model for insert + newmodel, err := NewHnswModelForBuild("", idxcfg, int(tblcfg.ThreadsBuild), maxcap) + if err != nil { + return err + } + indexes = append(indexes, newmodel) + last = newmodel + + } else { + // load last + last.LoadIndex(proc, idxcfg, tblcfg, tblcfg.ThreadsBuild, true) + + } + + for i, row := range cdc.Data { + + switch row.Type { + case vectorindex.CDC_UPSERT: + if midx[i] == -1 { + // cannot find key from existing model. simple insert + last, err = getLastModel(proc, idxcfg, tblcfg, indexes, last, maxcap) + if err != nil { + return err + } + // insert + err = last.Add(row.PKey, row.Vec) + if err != nil { + return err + } + + break + + } + current, err := getCurrentModel(proc, idxcfg, tblcfg, indexes, current, midx[i]) + if err != nil { + return err + } + + // update + _ = current + + case vectorindex.CDC_DELETE: + if midx[i] == -1 { + // cannot find key from existing models. ignore it + continue + } + + current, err := getCurrentModel(proc, idxcfg, tblcfg, indexes, current, midx[i]) + if err != nil { + return err + } + + // delete + err = current.Remove(row.PKey) + if err != nil { + return err + } + + case vectorindex.CDC_INSERT: + last, err = getLastModel(proc, idxcfg, tblcfg, indexes, last, maxcap) + if err != nil { + return err + } + + // insert + err = last.Add(row.PKey, row.Vec) + if err != nil { + return err + } + } + + } + + // save to files + + // save to database + } + return nil } + +func getCurrentModel(proc *process.Process, idxcfg vectorindex.IndexConfig, tblcfg vectorindex.IndexTableConfig, indexes []*HnswModel, current *HnswModel, idx int) (*HnswModel, error) { + m := indexes[idx] + if current != m { + if current != nil { + current.Unload() + } + m.LoadIndex(proc, idxcfg, tblcfg, tblcfg.ThreadsBuild, true) + current = m + } + return current, nil +} + +func getLastModel(proc *process.Process, idxcfg vectorindex.IndexConfig, tblcfg vectorindex.IndexTableConfig, indexes []*HnswModel, last *HnswModel, maxcap uint) (*HnswModel, error) { + + full, err := last.Full() + if err != nil { + return nil, err + } + + if full { + // model is already full, create a new model for insert + newmodel, err := NewHnswModelForBuild("", idxcfg, int(tblcfg.ThreadsBuild), maxcap) + if err != nil { + return nil, err + } + indexes = append(indexes, newmodel) + last = newmodel + + } + return last, nil +} From 81a964e5e17d56eddd3cbb3f9017cc025d7a2b41 Mon Sep 17 00:00:00 2001 From: cpegeric Date: Wed, 14 May 2025 18:19:03 +0100 Subject: [PATCH 029/223] update --- pkg/vectorindex/hnsw/sync.go | 208 ++++++++++++++++++----------------- 1 file changed, 107 insertions(+), 101 deletions(-) diff --git a/pkg/vectorindex/hnsw/sync.go b/pkg/vectorindex/hnsw/sync.go index 7c79825312985..413de41d93801 100644 --- a/pkg/vectorindex/hnsw/sync.go +++ b/pkg/vectorindex/hnsw/sync.go @@ -176,140 +176,146 @@ func startsync(proc *process.Process, indexes []*HnswModel, idxcfg vectorindex.I maxcap := uint(0) - if len(indexes) == 0 { - // create a new model and do insert + // try to find index cap + cdclen := len(cdc.Data) + midx := make([]int, cdclen) + // reset idx to -1 + for i := range midx { + midx[i] = -1 + } - } else { - // try to find index cap - cdclen := len(cdc.Data) - midx := make([]int, cdclen) - // reset idx to -1 - for i := range midx { - midx[i] = -1 + // find corresponding indexes + for i, m := range indexes { + err = m.LoadIndex(proc, idxcfg, tblcfg, tblcfg.ThreadsBuild, true) + if err != nil { + return err } - // find corresponding indexes - for i, m := range indexes { - err = m.LoadIndex(proc, idxcfg, tblcfg, tblcfg.ThreadsBuild, true) - if err != nil { - return err - } - - capacity, err := m.Index.Capacity() - if err != nil { - return err - } - m.MaxCapacity = capacity - mlen, err := m.Index.Len() - if err != nil { - return err - } - m.Len = mlen - - if maxcap < capacity { - maxcap = capacity - } - - for j, row := range cdc.Data { - switch row.Type { - case vectorindex.CDC_UPSERT, vectorindex.CDC_DELETE: - if midx[j] == -1 { - found, err := m.Contains(row.PKey) - if err != nil { - return err - } - if found { - midx[j] = i - } - } - } - } - - m.Unload() + capacity, err := m.Index.Capacity() + if err != nil { + return err } - - current := (*HnswModel)(nil) - last := indexes[len(indexes)-1] - // last model not load yet so check the last.Len instead of Full() - if last.Len >= last.MaxCapacity { - // model is already full, create a new model for insert - newmodel, err := NewHnswModelForBuild("", idxcfg, int(tblcfg.ThreadsBuild), maxcap) - if err != nil { - return err - } - indexes = append(indexes, newmodel) - last = newmodel - - } else { - // load last - last.LoadIndex(proc, idxcfg, tblcfg, tblcfg.ThreadsBuild, true) - + m.MaxCapacity = capacity + mlen, err := m.Index.Len() + if err != nil { + return err } + m.Len = mlen - for i, row := range cdc.Data { + if maxcap < capacity { + maxcap = capacity + } + for j, row := range cdc.Data { switch row.Type { - case vectorindex.CDC_UPSERT: - if midx[i] == -1 { - // cannot find key from existing model. simple insert - last, err = getLastModel(proc, idxcfg, tblcfg, indexes, last, maxcap) + case vectorindex.CDC_UPSERT, vectorindex.CDC_DELETE: + if midx[j] == -1 { + found, err := m.Contains(row.PKey) if err != nil { return err } - // insert - err = last.Add(row.PKey, row.Vec) - if err != nil { - return err + if found { + midx[j] = i } - - break - - } - current, err := getCurrentModel(proc, idxcfg, tblcfg, indexes, current, midx[i]) - if err != nil { - return err } + } + } - // update - _ = current + m.Unload() + } - case vectorindex.CDC_DELETE: - if midx[i] == -1 { - // cannot find key from existing models. ignore it - continue - } + current := (*HnswModel)(nil) + last := (*HnswModel)(nil) + if len(indexes) == 0 { + // create a new model and do insert + newmodel, err := NewHnswModelForBuild("", idxcfg, int(tblcfg.ThreadsBuild), maxcap) + if err != nil { + return err + } + indexes = append(indexes, newmodel) + last = newmodel + } else { + last = indexes[len(indexes)-1] + } + // last model not load yet so check the last.Len instead of Full() + if last.Len >= last.MaxCapacity { + // model is already full, create a new model for insert + newmodel, err := NewHnswModelForBuild("", idxcfg, int(tblcfg.ThreadsBuild), maxcap) + if err != nil { + return err + } + indexes = append(indexes, newmodel) + last = newmodel - current, err := getCurrentModel(proc, idxcfg, tblcfg, indexes, current, midx[i]) - if err != nil { - return err - } + } else { + // load last + last.LoadIndex(proc, idxcfg, tblcfg, tblcfg.ThreadsBuild, true) - // delete - err = current.Remove(row.PKey) - if err != nil { - return err - } + } + + for i, row := range cdc.Data { - case vectorindex.CDC_INSERT: + switch row.Type { + case vectorindex.CDC_UPSERT: + if midx[i] == -1 { + // cannot find key from existing model. simple insert last, err = getLastModel(proc, idxcfg, tblcfg, indexes, last, maxcap) if err != nil { return err } - // insert err = last.Add(row.PKey, row.Vec) if err != nil { return err } + + break + + } + current, err := getCurrentModel(proc, idxcfg, tblcfg, indexes, current, midx[i]) + if err != nil { + return err } - } + // update + _ = current + + case vectorindex.CDC_DELETE: + if midx[i] == -1 { + // cannot find key from existing models. ignore it + continue + } + + current, err := getCurrentModel(proc, idxcfg, tblcfg, indexes, current, midx[i]) + if err != nil { + return err + } + + // delete + err = current.Remove(row.PKey) + if err != nil { + return err + } + + case vectorindex.CDC_INSERT: + last, err = getLastModel(proc, idxcfg, tblcfg, indexes, last, maxcap) + if err != nil { + return err + } - // save to files + // insert + err = last.Add(row.PKey, row.Vec) + if err != nil { + return err + } + } - // save to database } + // save to files + + // save to database + return nil } From a7c6fc635626534a26677740249916ec05974b6f Mon Sep 17 00:00:00 2001 From: cpegeric Date: Thu, 15 May 2025 10:53:27 +0100 Subject: [PATCH 030/223] update --- pkg/vectorindex/hnsw/model.go | 67 +++++++++++++++++----- pkg/vectorindex/hnsw/sync.go | 104 ++++++++++++++++++++++------------ 2 files changed, 121 insertions(+), 50 deletions(-) diff --git a/pkg/vectorindex/hnsw/model.go b/pkg/vectorindex/hnsw/model.go index 12669b38f56c7..ac469ed005126 100644 --- a/pkg/vectorindex/hnsw/model.go +++ b/pkg/vectorindex/hnsw/model.go @@ -38,7 +38,6 @@ type HnswModel struct { FileSize int64 // info required for build - Saved bool MaxCapacity uint // from metadata. info required for search @@ -87,7 +86,7 @@ func (idx *HnswModel) Destroy() error { idx.Index = nil } - if (idx.Saved || idx.View) && len(idx.Path) > 0 { + if len(idx.Path) > 0 { // remove the file if _, err := os.Stat(idx.Path); err == nil || os.IsExist(err) { err := os.Remove(idx.Path) @@ -101,10 +100,26 @@ func (idx *HnswModel) Destroy() error { // Save the index to file func (idx *HnswModel) SaveToFile() error { - if idx.Saved { + + if !idx.Dirty { + // nothing change. ignore return nil } + // delete old file + oldpath := idx.Path + if len(oldpath) > 0 { + // remove the file + if _, err := os.Stat(oldpath); err == nil || os.IsExist(err) { + err := os.Remove(oldpath) + if err != nil { + return err + } + } + } + idx.Path = "" + + // save to file f, err := os.CreateTemp("", "hnsw") if err != nil { return err @@ -122,8 +137,6 @@ func (idx *HnswModel) SaveToFile() error { return err } idx.Index = nil - - idx.Saved = true idx.Path = f.Name() return nil } @@ -137,6 +150,11 @@ func (idx *HnswModel) ToSql(cfg vectorindex.IndexTableConfig) ([]string, error) return nil, err } + if len(idx.Path) == 0 { + // file path is empty string. No file is written + return []string{}, nil + } + fi, err := os.Stat(idx.Path) if err != nil { return nil, err @@ -191,6 +209,10 @@ func (idx *HnswModel) ToSql(cfg vectorindex.IndexTableConfig) ([]string, error) // is the index empty func (idx *HnswModel) Empty() (bool, error) { + if idx.Index == nil { + return false, moerr.NewInternalErrorNoCtx("usearch index is nil") + } + sz, err := idx.Index.Len() if err != nil { return false, err @@ -200,6 +222,9 @@ func (idx *HnswModel) Empty() (bool, error) { // check the index is full, i.e. 10K vectors func (idx *HnswModel) Full() (bool, error) { + if idx.Index == nil { + return false, moerr.NewInternalErrorNoCtx("usearch index is nil") + } sz, err := idx.Index.Len() if err != nil { return false, err @@ -209,18 +234,27 @@ func (idx *HnswModel) Full() (bool, error) { // add vector to the index func (idx *HnswModel) Add(key int64, vec []float32) error { + if idx.Index == nil { + return moerr.NewInternalErrorNoCtx("usearch index is nil") + } idx.Dirty = true return idx.Index.Add(uint64(key), vec) } // remove key func (idx *HnswModel) Remove(key int64) error { + if idx.Index == nil { + return moerr.NewInternalErrorNoCtx("usearch index is nil") + } idx.Dirty = true return idx.Index.Remove(uint64(key)) } // contains key func (idx *HnswModel) Contains(key int64) (found bool, err error) { + if idx.Index == nil { + return false, moerr.NewInternalErrorNoCtx("usearch index is nil") + } return idx.Index.Contains(uint64(key)) } @@ -271,6 +305,7 @@ func (idx *HnswModel) loadChunk(proc *process.Process, stream_chan chan executor func (idx *HnswModel) LoadIndex(proc *process.Process, idxcfg vectorindex.IndexConfig, tblcfg vectorindex.IndexTableConfig, nthread int64, view bool) error { if idx.Index != nil { + // index already loaded. ignore return nil } @@ -359,20 +394,24 @@ func (idx *HnswModel) LoadIndex(proc *process.Process, idxcfg vectorindex.IndexC // unload func (idx *HnswModel) Unload() error { - if idx.Index != nil { - err := idx.Index.Destroy() - if err != nil { - return err - } - // reset variable - idx.Index = nil - idx.Saved = false - idx.Dirty = false + if idx.Index == nil { + return moerr.NewInternalErrorNoCtx("usearch index is nil") } + + err := idx.Index.Destroy() + if err != nil { + return err + } + // reset variable + idx.Index = nil + idx.Dirty = false return nil } // Call usearch.Search func (idx *HnswModel) Search(query []float32, limit uint) (keys []usearch.Key, distances []float32, err error) { + if idx.Index == nil { + return nil, nil, moerr.NewInternalErrorNoCtx("usearch index is nil") + } return idx.Index.Search(query, limit) } diff --git a/pkg/vectorindex/hnsw/sync.go b/pkg/vectorindex/hnsw/sync.go index 413de41d93801..c8f84b912f277 100644 --- a/pkg/vectorindex/hnsw/sync.go +++ b/pkg/vectorindex/hnsw/sync.go @@ -19,6 +19,7 @@ import ( "fmt" "os" "strconv" + "time" "github.com/matrixorigin/matrixone/pkg/catalog" "github.com/matrixorigin/matrixone/pkg/common/moerr" @@ -162,14 +163,28 @@ func CdcSync(proc *process.Process, db string, tbl string, dimension int32, cdc os.Stderr.WriteString(fmt.Sprintf("meta: %v\n", indexes)) - return startsync(proc, indexes, idxcfg, idxtblcfg, cdc) + // assume CDC run in single thread + // model id for CDC is cdc:1:0:timestamp + uid := fmt.Sprintf("%s:%d:%d", "cdc", 1, 0) + ts := time.Now().Unix() + sync := &HnswSync{indexes: indexes, idxcfg: idxcfg, tblcfg: idxtblcfg, cdc: cdc, uid: uid, ts: ts} + return sync.run(proc) } -func startsync(proc *process.Process, indexes []*HnswModel, idxcfg vectorindex.IndexConfig, tblcfg vectorindex.IndexTableConfig, cdc *vectorindex.VectorIndexCdc[float32]) error { +type HnswSync struct { + indexes []*HnswModel + idxcfg vectorindex.IndexConfig + tblcfg vectorindex.IndexTableConfig + cdc *vectorindex.VectorIndexCdc[float32] + uid string + ts int64 +} + +func (s *HnswSync) run(proc *process.Process) error { var err error defer func() { - for _, m := range indexes { + for _, m := range s.indexes { m.Destroy() } }() @@ -177,7 +192,7 @@ func startsync(proc *process.Process, indexes []*HnswModel, idxcfg vectorindex.I maxcap := uint(0) // try to find index cap - cdclen := len(cdc.Data) + cdclen := len(s.cdc.Data) midx := make([]int, cdclen) // reset idx to -1 for i := range midx { @@ -185,8 +200,8 @@ func startsync(proc *process.Process, indexes []*HnswModel, idxcfg vectorindex.I } // find corresponding indexes - for i, m := range indexes { - err = m.LoadIndex(proc, idxcfg, tblcfg, tblcfg.ThreadsBuild, true) + for i, m := range s.indexes { + err = m.LoadIndex(proc, s.idxcfg, s.tblcfg, s.tblcfg.ThreadsBuild, true) if err != nil { return err } @@ -206,7 +221,7 @@ func startsync(proc *process.Process, indexes []*HnswModel, idxcfg vectorindex.I maxcap = capacity } - for j, row := range cdc.Data { + for j, row := range s.cdc.Data { switch row.Type { case vectorindex.CDC_UPSERT, vectorindex.CDC_DELETE: if midx[j] == -1 { @@ -226,40 +241,42 @@ func startsync(proc *process.Process, indexes []*HnswModel, idxcfg vectorindex.I current := (*HnswModel)(nil) last := (*HnswModel)(nil) - if len(indexes) == 0 { + if len(s.indexes) == 0 { // create a new model and do insert - newmodel, err := NewHnswModelForBuild("", idxcfg, int(tblcfg.ThreadsBuild), maxcap) + id := s.getModelId() + newmodel, err := NewHnswModelForBuild(id, s.idxcfg, int(s.tblcfg.ThreadsBuild), maxcap) if err != nil { return err } - indexes = append(indexes, newmodel) + s.indexes = append(s.indexes, newmodel) last = newmodel } else { - last = indexes[len(indexes)-1] - } - // last model not load yet so check the last.Len instead of Full() - if last.Len >= last.MaxCapacity { - // model is already full, create a new model for insert - newmodel, err := NewHnswModelForBuild("", idxcfg, int(tblcfg.ThreadsBuild), maxcap) - if err != nil { - return err - } - indexes = append(indexes, newmodel) - last = newmodel + last = s.indexes[len(s.indexes)-1] + // last model not load yet so check the last.Len instead of Full() + if last.Len >= last.MaxCapacity { + id := s.getModelId() + // model is already full, create a new model for insert + newmodel, err := NewHnswModelForBuild(id, s.idxcfg, int(s.tblcfg.ThreadsBuild), maxcap) + if err != nil { + return err + } + s.indexes = append(s.indexes, newmodel) + last = newmodel - } else { - // load last - last.LoadIndex(proc, idxcfg, tblcfg, tblcfg.ThreadsBuild, true) + } else { + // load last + last.LoadIndex(proc, s.idxcfg, s.tblcfg, s.tblcfg.ThreadsBuild, true) + } } - for i, row := range cdc.Data { + for i, row := range s.cdc.Data { switch row.Type { case vectorindex.CDC_UPSERT: if midx[i] == -1 { // cannot find key from existing model. simple insert - last, err = getLastModel(proc, idxcfg, tblcfg, indexes, last, maxcap) + last, err = s.getLastModel(proc, last, maxcap) if err != nil { return err } @@ -272,13 +289,21 @@ func startsync(proc *process.Process, indexes []*HnswModel, idxcfg vectorindex.I break } - current, err := getCurrentModel(proc, idxcfg, tblcfg, indexes, current, midx[i]) + current, err := s.getCurrentModel(proc, current, midx[i]) if err != nil { return err } // update - _ = current + err = current.Remove(row.PKey) + if err != nil { + return err + } + + err = current.Add(row.PKey, row.Vec) + if err != nil { + return err + } case vectorindex.CDC_DELETE: if midx[i] == -1 { @@ -286,7 +311,7 @@ func startsync(proc *process.Process, indexes []*HnswModel, idxcfg vectorindex.I continue } - current, err := getCurrentModel(proc, idxcfg, tblcfg, indexes, current, midx[i]) + current, err := s.getCurrentModel(proc, current, midx[i]) if err != nil { return err } @@ -298,7 +323,7 @@ func startsync(proc *process.Process, indexes []*HnswModel, idxcfg vectorindex.I } case vectorindex.CDC_INSERT: - last, err = getLastModel(proc, idxcfg, tblcfg, indexes, last, maxcap) + last, err = s.getLastModel(proc, last, maxcap) if err != nil { return err } @@ -319,19 +344,25 @@ func startsync(proc *process.Process, indexes []*HnswModel, idxcfg vectorindex.I return nil } -func getCurrentModel(proc *process.Process, idxcfg vectorindex.IndexConfig, tblcfg vectorindex.IndexTableConfig, indexes []*HnswModel, current *HnswModel, idx int) (*HnswModel, error) { - m := indexes[idx] +func (s *HnswSync) getModelId() string { + id := fmt.Sprintf("%s:%d", s.uid, s.ts) + s.ts++ + return id +} + +func (s *HnswSync) getCurrentModel(proc *process.Process, current *HnswModel, idx int) (*HnswModel, error) { + m := s.indexes[idx] if current != m { if current != nil { current.Unload() } - m.LoadIndex(proc, idxcfg, tblcfg, tblcfg.ThreadsBuild, true) + m.LoadIndex(proc, s.idxcfg, s.tblcfg, s.tblcfg.ThreadsBuild, true) current = m } return current, nil } -func getLastModel(proc *process.Process, idxcfg vectorindex.IndexConfig, tblcfg vectorindex.IndexTableConfig, indexes []*HnswModel, last *HnswModel, maxcap uint) (*HnswModel, error) { +func (s *HnswSync) getLastModel(proc *process.Process, last *HnswModel, maxcap uint) (*HnswModel, error) { full, err := last.Full() if err != nil { @@ -339,12 +370,13 @@ func getLastModel(proc *process.Process, idxcfg vectorindex.IndexConfig, tblcfg } if full { + id := s.getModelId() // model is already full, create a new model for insert - newmodel, err := NewHnswModelForBuild("", idxcfg, int(tblcfg.ThreadsBuild), maxcap) + newmodel, err := NewHnswModelForBuild(id, s.idxcfg, int(s.tblcfg.ThreadsBuild), maxcap) if err != nil { return nil, err } - indexes = append(indexes, newmodel) + s.indexes = append(s.indexes, newmodel) last = newmodel } From f6c64b14e3b2ab50c13ce9b963cbe963c8a84a08 Mon Sep 17 00:00:00 2001 From: cpegeric Date: Thu, 15 May 2025 11:21:22 +0100 Subject: [PATCH 031/223] update --- pkg/vectorindex/hnsw/model.go | 7 +++-- pkg/vectorindex/hnsw/sync.go | 54 +++++++++++++++++++++++++++++++++++ 2 files changed, 58 insertions(+), 3 deletions(-) diff --git a/pkg/vectorindex/hnsw/model.go b/pkg/vectorindex/hnsw/model.go index ac469ed005126..7fc3478bd507f 100644 --- a/pkg/vectorindex/hnsw/model.go +++ b/pkg/vectorindex/hnsw/model.go @@ -45,9 +45,10 @@ type HnswModel struct { Checksum string // for cdc update - Dirty bool - View bool - Len uint + Dirty bool + View bool + Len uint + InsertMeta bool } // New HnswModel struct diff --git a/pkg/vectorindex/hnsw/sync.go b/pkg/vectorindex/hnsw/sync.go index c8f84b912f277..090fd815a2704 100644 --- a/pkg/vectorindex/hnsw/sync.go +++ b/pkg/vectorindex/hnsw/sync.go @@ -19,6 +19,7 @@ import ( "fmt" "os" "strconv" + "strings" "time" "github.com/matrixorigin/matrixone/pkg/catalog" @@ -248,6 +249,7 @@ func (s *HnswSync) run(proc *process.Process) error { if err != nil { return err } + newmodel.InsertMeta = true s.indexes = append(s.indexes, newmodel) last = newmodel } else { @@ -260,6 +262,7 @@ func (s *HnswSync) run(proc *process.Process) error { if err != nil { return err } + newmodel.InsertMeta = true s.indexes = append(s.indexes, newmodel) last = newmodel @@ -376,9 +379,60 @@ func (s *HnswSync) getLastModel(proc *process.Process, last *HnswModel, maxcap u if err != nil { return nil, err } + newmodel.InsertMeta = true s.indexes = append(s.indexes, newmodel) last = newmodel } return last, nil } + +// generate SQL to update the secondary index tables +// 1. sync the metadata table +// 2. sync the index file to index table +func (s *HnswSync) ToInsertSql(ts int64) ([]string, error) { + + if len(s.indexes) == 0 { + return []string{}, nil + } + + sqls := make([]string, 0, len(s.indexes)+1) + + metas := make([]string, 0, len(s.indexes)) + for _, idx := range s.indexes { + // check Dirty. Only update when Dirty is true + if !idx.Dirty { + continue + } + + // delete sql + + // insert sql + indexsqls, err := idx.ToSql(s.tblcfg) + if err != nil { + return nil, err + } + + sqls = append(sqls, indexsqls...) + + //os.Stderr.WriteString(fmt.Sprintf("Sql: %s\n", sql)) + chksum, err := vectorindex.CheckSum(idx.Path) + if err != nil { + return nil, err + } + + finfo, err := os.Stat(idx.Path) + if err != nil { + return nil, err + } + fs := finfo.Size() + + // check idx.InsertMeta. If true, Insert else Update + metas = append(metas, fmt.Sprintf("('%s', '%s', %d, %d)", idx.Id, chksum, ts, fs)) + } + + metasql := fmt.Sprintf("INSERT INTO `%s`.`%s` VALUES %s", s.tblcfg.DbName, s.tblcfg.MetadataTable, strings.Join(metas, ", ")) + + sqls = append(sqls, metasql) + return sqls, nil +} From 1bb32a00a13ef1810353b062f463d21e491c82cc Mon Sep 17 00:00:00 2001 From: cpegeric Date: Thu, 15 May 2025 12:20:48 +0100 Subject: [PATCH 032/223] add txn --- pkg/vectorindex/hnsw/model.go | 17 +++++++++++++++++ pkg/vectorindex/hnsw/sync.go | 16 ++++++++++++++-- pkg/vectorindex/sqlexec/sqlexec.go | 27 +++++++++++++++++++++++++++ 3 files changed, 58 insertions(+), 2 deletions(-) diff --git a/pkg/vectorindex/hnsw/model.go b/pkg/vectorindex/hnsw/model.go index 7fc3478bd507f..4c3d6e532b636 100644 --- a/pkg/vectorindex/hnsw/model.go +++ b/pkg/vectorindex/hnsw/model.go @@ -22,6 +22,7 @@ import ( "strings" "github.com/detailyang/go-fallocate" + "github.com/matrixorigin/matrixone/pkg/catalog" "github.com/matrixorigin/matrixone/pkg/common/moerr" "github.com/matrixorigin/matrixone/pkg/container/vector" "github.com/matrixorigin/matrixone/pkg/util/executor" @@ -208,6 +209,22 @@ func (idx *HnswModel) ToSql(cfg vectorindex.IndexTableConfig) ([]string, error) return sqls, nil } +func (idx *HnswModel) ToDeleteSql(cfg vectorindex.IndexTableConfig) ([]string, error) { + if idx.InsertMeta { + // this index is newly created and no DELETE sql required + return []string{}, nil + } + + sqls := make([]string, 0, 2) + + sql := fmt.Sprintf("DELETE FROM `%s`.`%s` WHERE %s = '%s'", cfg.DbName, cfg.IndexTable, catalog.Hnsw_TblCol_Storage_Index_Id, idx.Id) + sqls = append(sqls, sql) + sql = fmt.Sprintf("DELETE FROM `%s`.`%s` WHERE %s = '%s'", cfg.DbName, cfg.MetadataTable, catalog.Hnsw_TblCol_Metadata_Index_Id, idx.Id) + sqls = append(sqls, sql) + + return sqls, nil +} + // is the index empty func (idx *HnswModel) Empty() (bool, error) { if idx.Index == nil { diff --git a/pkg/vectorindex/hnsw/sync.go b/pkg/vectorindex/hnsw/sync.go index 090fd815a2704..c5e7ee55e4de5 100644 --- a/pkg/vectorindex/hnsw/sync.go +++ b/pkg/vectorindex/hnsw/sync.go @@ -343,6 +343,12 @@ func (s *HnswSync) run(proc *process.Process) error { // save to files // save to database + sqls, err := s.ToSql(s.ts) + if err != nil { + return err + } + + _ = sqls return nil } @@ -390,7 +396,7 @@ func (s *HnswSync) getLastModel(proc *process.Process, last *HnswModel, maxcap u // generate SQL to update the secondary index tables // 1. sync the metadata table // 2. sync the index file to index table -func (s *HnswSync) ToInsertSql(ts int64) ([]string, error) { +func (s *HnswSync) ToSql(ts int64) ([]string, error) { if len(s.indexes) == 0 { return []string{}, nil @@ -406,6 +412,13 @@ func (s *HnswSync) ToInsertSql(ts int64) ([]string, error) { } // delete sql + deletesqls, err := idx.ToDeleteSql(s.tblcfg) + if err != nil { + return nil, err + } + if len(deletesqls) > 0 { + sqls = append(sqls, deletesqls...) + } // insert sql indexsqls, err := idx.ToSql(s.tblcfg) @@ -427,7 +440,6 @@ func (s *HnswSync) ToInsertSql(ts int64) ([]string, error) { } fs := finfo.Size() - // check idx.InsertMeta. If true, Insert else Update metas = append(metas, fmt.Sprintf("('%s', '%s', %d, %d)", idx.Id, chksum, ts, fs)) } diff --git a/pkg/vectorindex/sqlexec/sqlexec.go b/pkg/vectorindex/sqlexec/sqlexec.go index b54b0e7648df5..0681973b13596 100644 --- a/pkg/vectorindex/sqlexec/sqlexec.go +++ b/pkg/vectorindex/sqlexec/sqlexec.go @@ -74,3 +74,30 @@ func RunStreamingSql(proc *process.Process, sql string, stream_chan chan executo WithStreaming(stream_chan, error_chan) return exec.Exec(topContext, sql, opts) } + +// run SQL in batch mode. Result batches will stored in memory and return once all result batches received. +func RunTxn(proc *process.Process, execFunc func(executor.TxnExecutor) error) error { + v, ok := moruntime.ServiceRuntime(proc.GetService()).GetGlobalVariables(moruntime.InternalSQLExecutor) + if !ok { + panic("missing lock service") + } + + //------------------------------------------------------- + topContext := proc.GetTopContext() + accountId, err := defines.GetAccountId(proc.Ctx) + if err != nil { + return err + } + //------------------------------------------------------- + + exec := v.(executor.SQLExecutor) + opts := executor.Options{}. + // All runSql and runSqlWithResult is a part of input sql, can not incr statement. + // All these sub-sql's need to be rolled back and retried en masse when they conflict in pessimistic mode + WithDisableIncrStatement(). + WithTxn(proc.GetTxnOperator()). + WithDatabase(proc.GetSessionInfo().Database). + WithTimeZone(proc.GetSessionInfo().TimeZone). + WithAccountID(accountId) + return exec.ExecTxn(topContext, execFunc, opts) +} From b435ee40baa77507abddbcd359067cd91b46ef0e Mon Sep 17 00:00:00 2001 From: cpegeric Date: Thu, 15 May 2025 12:52:21 +0100 Subject: [PATCH 033/223] runTxn --- pkg/vectorindex/hnsw/sync.go | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/pkg/vectorindex/hnsw/sync.go b/pkg/vectorindex/hnsw/sync.go index c5e7ee55e4de5..9a6b10e8f8d1f 100644 --- a/pkg/vectorindex/hnsw/sync.go +++ b/pkg/vectorindex/hnsw/sync.go @@ -24,8 +24,10 @@ import ( "github.com/matrixorigin/matrixone/pkg/catalog" "github.com/matrixorigin/matrixone/pkg/common/moerr" + "github.com/matrixorigin/matrixone/pkg/util/executor" "github.com/matrixorigin/matrixone/pkg/vectorindex" "github.com/matrixorigin/matrixone/pkg/vectorindex/metric" + "github.com/matrixorigin/matrixone/pkg/vectorindex/sqlexec" "github.com/matrixorigin/matrixone/pkg/vm/process" ) @@ -33,6 +35,8 @@ const ( catalogsql = "select index_table_name, algo_table_type, algo_params, column_name from mo_catalog.mo_indexes where table_id = (select rel_id from mo_catalog.mo_tables where relname = '%s' and reldatabase = '%s') and algo='hnsw';" ) +var runTxn = sqlexec.RunTxn + func CdcSync(proc *process.Process, db string, tbl string, dimension int32, cdc *vectorindex.VectorIndexCdc[float32]) error { sql := fmt.Sprintf(catalogsql, tbl, db) @@ -340,15 +344,26 @@ func (s *HnswSync) run(proc *process.Process) error { } - // save to files - - // save to database + // save to files and then save to database sqls, err := s.ToSql(s.ts) if err != nil { return err } - _ = sqls + opts := executor.Options{} + err = runTxn(proc, func(exec executor.TxnExecutor) error { + for _, sql := range sqls { + res, err := exec.Exec(sql, opts.StatementOption()) + if err != nil { + return err + } + res.Close() + } + return nil + }) + if err != nil { + return err + } return nil } From 827a42d678c5eeef6ffbc612c4abcc24d8c87e0d Mon Sep 17 00:00:00 2001 From: cpegeric Date: Thu, 15 May 2025 13:10:23 +0100 Subject: [PATCH 034/223] destroy --- pkg/vectorindex/hnsw/sync.go | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/pkg/vectorindex/hnsw/sync.go b/pkg/vectorindex/hnsw/sync.go index 9a6b10e8f8d1f..47e1bcd00db65 100644 --- a/pkg/vectorindex/hnsw/sync.go +++ b/pkg/vectorindex/hnsw/sync.go @@ -185,14 +185,17 @@ type HnswSync struct { ts int64 } +func (s *HnswSync) destroy() { + for _, m := range s.indexes { + m.Destroy() + } + s.indexes = nil +} + func (s *HnswSync) run(proc *process.Process) error { var err error - defer func() { - for _, m := range s.indexes { - m.Destroy() - } - }() + defer s.destroy() maxcap := uint(0) @@ -350,8 +353,12 @@ func (s *HnswSync) run(proc *process.Process) error { return err } + return s.runSqls(proc, sqls) +} + +func (s *HnswSync) runSqls(proc *process.Process, sqls []string) error { opts := executor.Options{} - err = runTxn(proc, func(exec executor.TxnExecutor) error { + err := runTxn(proc, func(exec executor.TxnExecutor) error { for _, sql := range sqls { res, err := exec.Exec(sql, opts.StatementOption()) if err != nil { From 6109470fac78f2daf3e2b7d74c92ae6c3afeee44 Mon Sep 17 00:00:00 2001 From: cpegeric Date: Thu, 15 May 2025 13:16:46 +0100 Subject: [PATCH 035/223] update --- pkg/vectorindex/hnsw/sync.go | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/pkg/vectorindex/hnsw/sync.go b/pkg/vectorindex/hnsw/sync.go index 47e1bcd00db65..dda6e6e81b253 100644 --- a/pkg/vectorindex/hnsw/sync.go +++ b/pkg/vectorindex/hnsw/sync.go @@ -353,6 +353,10 @@ func (s *HnswSync) run(proc *process.Process) error { return err } + if len(sqls) == 0 { + return nil + } + return s.runSqls(proc, sqls) } From 7f190b92c2f9b8a2b09275cb290c2f388c9ee53e Mon Sep 17 00:00:00 2001 From: cpegeric Date: Thu, 15 May 2025 14:32:55 +0100 Subject: [PATCH 036/223] bug fix save to file --- pkg/vectorindex/hnsw/model.go | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/pkg/vectorindex/hnsw/model.go b/pkg/vectorindex/hnsw/model.go index 4c3d6e532b636..4c0a713e44aca 100644 --- a/pkg/vectorindex/hnsw/model.go +++ b/pkg/vectorindex/hnsw/model.go @@ -103,6 +103,11 @@ func (idx *HnswModel) Destroy() error { // Save the index to file func (idx *HnswModel) SaveToFile() error { + if idx.Index == nil { + // index is nil. ignore + return nil + } + if !idx.Dirty { // nothing change. ignore return nil @@ -139,6 +144,7 @@ func (idx *HnswModel) SaveToFile() error { return err } idx.Index = nil + idx.Dirty = false idx.Path = f.Name() return nil } From 62aa87e59c6f5a4395a7d681b6f9739578d64239 Mon Sep 17 00:00:00 2001 From: cpegeric Date: Thu, 15 May 2025 14:44:41 +0100 Subject: [PATCH 037/223] bug fix with init index capacity --- pkg/vectorindex/hnsw/sync.go | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/pkg/vectorindex/hnsw/sync.go b/pkg/vectorindex/hnsw/sync.go index dda6e6e81b253..efc8fdf05e188 100644 --- a/pkg/vectorindex/hnsw/sync.go +++ b/pkg/vectorindex/hnsw/sync.go @@ -197,7 +197,7 @@ func (s *HnswSync) run(proc *process.Process) error { defer s.destroy() - maxcap := uint(0) + maxcap := uint(s.tblcfg.IndexCapacity) // try to find index cap cdclen := len(s.cdc.Data) @@ -361,6 +361,9 @@ func (s *HnswSync) run(proc *process.Process) error { } func (s *HnswSync) runSqls(proc *process.Process, sqls []string) error { + for _, s := range sqls { + os.Stderr.WriteString(fmt.Sprintf("sql : %s\n", s)) + } opts := executor.Options{} err := runTxn(proc, func(exec executor.TxnExecutor) error { for _, sql := range sqls { From e2278a32c4d8f8b047633ba3c89c2ffe6daaf9ab Mon Sep 17 00:00:00 2001 From: cpegeric Date: Thu, 15 May 2025 15:43:47 +0100 Subject: [PATCH 038/223] bug fix dirty --- pkg/vectorindex/hnsw/model.go | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/pkg/vectorindex/hnsw/model.go b/pkg/vectorindex/hnsw/model.go index 4c0a713e44aca..30094ccb82fcd 100644 --- a/pkg/vectorindex/hnsw/model.go +++ b/pkg/vectorindex/hnsw/model.go @@ -144,7 +144,6 @@ func (idx *HnswModel) SaveToFile() error { return err } idx.Index = nil - idx.Dirty = false idx.Path = f.Name() return nil } @@ -339,7 +338,7 @@ func (idx *HnswModel) LoadIndex(proc *process.Process, idxcfg vectorindex.IndexC if len(idx.Path) == 0 { // create tempfile for writing - fp, err := os.CreateTemp("", "hnswindx") + fp, err := os.CreateTemp("", "hnsw") if err != nil { return err } @@ -422,13 +421,21 @@ func (idx *HnswModel) Unload() error { return moerr.NewInternalErrorNoCtx("usearch index is nil") } - err := idx.Index.Destroy() + // SaveToFile will check Dirty bit. If dirty is true, save to file before unload + err := idx.SaveToFile() if err != nil { return err } - // reset variable - idx.Index = nil - idx.Dirty = false + + // SaveToFile will release the usearch index when dirty is true so always check nil index + if idx.Index != nil { + err := idx.Index.Destroy() + if err != nil { + return err + } + // reset variable + idx.Index = nil + } return nil } From 6e682b99f026d0d0457b5cb98876c0f44a537b7b Mon Sep 17 00:00:00 2001 From: cpegeric Date: Thu, 15 May 2025 15:58:37 +0100 Subject: [PATCH 039/223] update Len and Capacity --- pkg/vectorindex/hnsw/model.go | 12 ++++++++++++ pkg/vectorindex/hnsw/sync.go | 15 ++------------- 2 files changed, 14 insertions(+), 13 deletions(-) diff --git a/pkg/vectorindex/hnsw/model.go b/pkg/vectorindex/hnsw/model.go index 30094ccb82fcd..a672777e20c69 100644 --- a/pkg/vectorindex/hnsw/model.go +++ b/pkg/vectorindex/hnsw/model.go @@ -261,6 +261,7 @@ func (idx *HnswModel) Add(key int64, vec []float32) error { return moerr.NewInternalErrorNoCtx("usearch index is nil") } idx.Dirty = true + idx.Len++ return idx.Index.Add(uint64(key), vec) } @@ -270,6 +271,7 @@ func (idx *HnswModel) Remove(key int64) error { return moerr.NewInternalErrorNoCtx("usearch index is nil") } idx.Dirty = true + idx.Len-- return idx.Index.Remove(uint64(key)) } @@ -410,7 +412,17 @@ func (idx *HnswModel) LoadIndex(proc *process.Process, idxcfg vectorindex.IndexC return err } + // always get the number of item and capacity when model loaded. idx.Index = usearchidx + idx.Len, err = idx.Index.Len() + if err != nil { + return err + } + + idx.MaxCapacity, err = idx.Index.Capacity() + if err != nil { + return err + } return nil } diff --git a/pkg/vectorindex/hnsw/sync.go b/pkg/vectorindex/hnsw/sync.go index efc8fdf05e188..172a67b6ebd61 100644 --- a/pkg/vectorindex/hnsw/sync.go +++ b/pkg/vectorindex/hnsw/sync.go @@ -214,19 +214,8 @@ func (s *HnswSync) run(proc *process.Process) error { return err } - capacity, err := m.Index.Capacity() - if err != nil { - return err - } - m.MaxCapacity = capacity - mlen, err := m.Index.Len() - if err != nil { - return err - } - m.Len = mlen - - if maxcap < capacity { - maxcap = capacity + if maxcap < m.MaxCapacity { + maxcap = m.MaxCapacity } for j, row := range s.cdc.Data { From ed49fd130ae0a569d64d8408687909803e1ccd15 Mon Sep 17 00:00:00 2001 From: cpegeric Date: Fri, 16 May 2025 13:33:15 +0100 Subject: [PATCH 040/223] update --- pkg/vectorindex/hnsw/model.go | 10 +++++++++- pkg/vectorindex/hnsw/search.go | 2 +- pkg/vectorindex/hnsw/sync.go | 16 ++++++++++++---- 3 files changed, 22 insertions(+), 6 deletions(-) diff --git a/pkg/vectorindex/hnsw/model.go b/pkg/vectorindex/hnsw/model.go index a672777e20c69..eaf9c62a8abb5 100644 --- a/pkg/vectorindex/hnsw/model.go +++ b/pkg/vectorindex/hnsw/model.go @@ -174,6 +174,11 @@ func (idx *HnswModel) ToSql(cfg vectorindex.IndexTableConfig) ([]string, error) idx.FileSize = filesz + os.Stderr.WriteString(fmt.Sprintf("ToSQ: file %s size %d\n", idx.Path, idx.FileSize)) + if idx.FileSize == 0 { + return []string{}, nil + } + sqls := make([]string, 0, 5) sql := fmt.Sprintf("INSERT INTO `%s`.`%s` VALUES ", cfg.DbName, cfg.IndexTable) @@ -329,6 +334,7 @@ func (idx *HnswModel) loadChunk(proc *process.Process, stream_chan chan executor // 5. check the checksum to verify the correctness of the file func (idx *HnswModel) LoadIndex(proc *process.Process, idxcfg vectorindex.IndexConfig, tblcfg vectorindex.IndexTableConfig, nthread int64, view bool) error { + os.Stderr.WriteString(fmt.Sprintf("LoadIndex %s\n", idx.Id)) if idx.Index != nil { // index already loaded. ignore return nil @@ -403,7 +409,8 @@ func (idx *HnswModel) LoadIndex(proc *process.Process, idxcfg vectorindex.IndexC } if view { - err = usearchidx.View(idx.Path) + err = usearchidx.Load(idx.Path) + usearchidx.Reserve(uint(tblcfg.IndexCapacity)) idx.View = true } else { err = usearchidx.Load(idx.Path) @@ -429,6 +436,7 @@ func (idx *HnswModel) LoadIndex(proc *process.Process, idxcfg vectorindex.IndexC // unload func (idx *HnswModel) Unload() error { + os.Stderr.WriteString(fmt.Sprintf("Unload index %s\n", idx.Id)) if idx.Index == nil { return moerr.NewInternalErrorNoCtx("usearch index is nil") } diff --git a/pkg/vectorindex/hnsw/search.go b/pkg/vectorindex/hnsw/search.go index 78e4d627052ad..8bf2f444b9b49 100644 --- a/pkg/vectorindex/hnsw/search.go +++ b/pkg/vectorindex/hnsw/search.go @@ -169,7 +169,7 @@ func (s *HnswSearch) Destroy() { // load metadata from database func LoadMetadata(proc *process.Process, dbname string, metatbl string) ([]*HnswModel, error) { - sql := fmt.Sprintf("SELECT * FROM `%s`.`%s`", dbname, metatbl) + sql := fmt.Sprintf("SELECT * FROM `%s`.`%s` ORDER BY timestamp ASC", dbname, metatbl) res, err := runSql(proc, sql) if err != nil { return nil, err diff --git a/pkg/vectorindex/hnsw/sync.go b/pkg/vectorindex/hnsw/sync.go index 172a67b6ebd61..6122dd3a3df2c 100644 --- a/pkg/vectorindex/hnsw/sync.go +++ b/pkg/vectorindex/hnsw/sync.go @@ -166,7 +166,9 @@ func CdcSync(proc *process.Process, db string, tbl string, dimension int32, cdc return err } - os.Stderr.WriteString(fmt.Sprintf("meta: %v\n", indexes)) + for i, idxx := range indexes { + os.Stderr.WriteString(fmt.Sprintf("meta: %d id=%s\n", i, idxx.Id)) + } // assume CDC run in single thread // model id for CDC is cdc:1:0:timestamp @@ -227,6 +229,7 @@ func (s *HnswSync) run(proc *process.Process) error { return err } if found { + os.Stderr.WriteString(fmt.Sprintf("searching... found model %d row %d\n", i, j)) midx[j] = i } } @@ -252,6 +255,7 @@ func (s *HnswSync) run(proc *process.Process) error { last = s.indexes[len(s.indexes)-1] // last model not load yet so check the last.Len instead of Full() if last.Len >= last.MaxCapacity { + os.Stderr.WriteString(fmt.Sprintf("full len %d, cap %d\n", last.Len, last.MaxCapacity)) id := s.getModelId() // model is already full, create a new model for insert newmodel, err := NewHnswModelForBuild(id, s.idxcfg, int(s.tblcfg.ThreadsBuild), maxcap) @@ -263,6 +267,7 @@ func (s *HnswSync) run(proc *process.Process) error { last = newmodel } else { + os.Stderr.WriteString(fmt.Sprintf("load model with index %d\n", len(s.indexes)-1)) // load last last.LoadIndex(proc, s.idxcfg, s.tblcfg, s.tblcfg.ThreadsBuild, true) @@ -307,6 +312,7 @@ func (s *HnswSync) run(proc *process.Process) error { case vectorindex.CDC_DELETE: if midx[i] == -1 { // cannot find key from existing models. ignore it + os.Stderr.WriteString("DELETE NOT FOUND\n") continue } @@ -408,6 +414,7 @@ func (s *HnswSync) getLastModel(proc *process.Process, last *HnswModel, maxcap u last = newmodel } + os.Stderr.WriteString(fmt.Sprintf("getlast model full %v id = %s\n", full, last.Id)) return last, nil } @@ -461,8 +468,9 @@ func (s *HnswSync) ToSql(ts int64) ([]string, error) { metas = append(metas, fmt.Sprintf("('%s', '%s', %d, %d)", idx.Id, chksum, ts, fs)) } - metasql := fmt.Sprintf("INSERT INTO `%s`.`%s` VALUES %s", s.tblcfg.DbName, s.tblcfg.MetadataTable, strings.Join(metas, ", ")) - - sqls = append(sqls, metasql) + if len(metas) > 0 { + metasql := fmt.Sprintf("INSERT INTO `%s`.`%s` VALUES %s", s.tblcfg.DbName, s.tblcfg.MetadataTable, strings.Join(metas, ", ")) + sqls = append(sqls, metasql) + } return sqls, nil } From 1e5b6a846efa2469a8fd64e3ae48f53684f23dbb Mon Sep 17 00:00:00 2001 From: cpegeric Date: Fri, 16 May 2025 13:43:55 +0100 Subject: [PATCH 041/223] view --- pkg/vectorindex/hnsw/model.go | 2 +- pkg/vectorindex/hnsw/search.go | 2 +- pkg/vectorindex/hnsw/sync.go | 6 +++--- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/pkg/vectorindex/hnsw/model.go b/pkg/vectorindex/hnsw/model.go index eaf9c62a8abb5..2a934cb4fcf2e 100644 --- a/pkg/vectorindex/hnsw/model.go +++ b/pkg/vectorindex/hnsw/model.go @@ -410,10 +410,10 @@ func (idx *HnswModel) LoadIndex(proc *process.Process, idxcfg vectorindex.IndexC if view { err = usearchidx.Load(idx.Path) - usearchidx.Reserve(uint(tblcfg.IndexCapacity)) idx.View = true } else { err = usearchidx.Load(idx.Path) + usearchidx.Reserve(uint(tblcfg.IndexCapacity)) } if err != nil { return err diff --git a/pkg/vectorindex/hnsw/search.go b/pkg/vectorindex/hnsw/search.go index 8bf2f444b9b49..498823c713000 100644 --- a/pkg/vectorindex/hnsw/search.go +++ b/pkg/vectorindex/hnsw/search.go @@ -205,7 +205,7 @@ func LoadMetadata(proc *process.Process, dbname string, metatbl string) ([]*Hnsw func (s *HnswSearch) LoadIndex(proc *process.Process, indexes []*HnswModel) ([]*HnswModel, error) { for _, idx := range indexes { - err := idx.LoadIndex(proc, s.Idxcfg, s.Tblcfg, s.ThreadsSearch, false) + err := idx.LoadIndex(proc, s.Idxcfg, s.Tblcfg, s.ThreadsSearch, true) if err != nil { return nil, err } diff --git a/pkg/vectorindex/hnsw/sync.go b/pkg/vectorindex/hnsw/sync.go index 6122dd3a3df2c..db6124127b090 100644 --- a/pkg/vectorindex/hnsw/sync.go +++ b/pkg/vectorindex/hnsw/sync.go @@ -211,7 +211,7 @@ func (s *HnswSync) run(proc *process.Process) error { // find corresponding indexes for i, m := range s.indexes { - err = m.LoadIndex(proc, s.idxcfg, s.tblcfg, s.tblcfg.ThreadsBuild, true) + err = m.LoadIndex(proc, s.idxcfg, s.tblcfg, s.tblcfg.ThreadsBuild, false) if err != nil { return err } @@ -269,7 +269,7 @@ func (s *HnswSync) run(proc *process.Process) error { } else { os.Stderr.WriteString(fmt.Sprintf("load model with index %d\n", len(s.indexes)-1)) // load last - last.LoadIndex(proc, s.idxcfg, s.tblcfg, s.tblcfg.ThreadsBuild, true) + last.LoadIndex(proc, s.idxcfg, s.tblcfg, s.tblcfg.ThreadsBuild, false) } } @@ -389,7 +389,7 @@ func (s *HnswSync) getCurrentModel(proc *process.Process, current *HnswModel, id if current != nil { current.Unload() } - m.LoadIndex(proc, s.idxcfg, s.tblcfg, s.tblcfg.ThreadsBuild, true) + m.LoadIndex(proc, s.idxcfg, s.tblcfg, s.tblcfg.ThreadsBuild, false) current = m } return current, nil From 36bc11f5df79c6faa4d365d686256b21cb624346 Mon Sep 17 00:00:00 2001 From: cpegeric Date: Fri, 16 May 2025 15:34:12 +0100 Subject: [PATCH 042/223] bug fix view --- pkg/vectorindex/hnsw/model.go | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/pkg/vectorindex/hnsw/model.go b/pkg/vectorindex/hnsw/model.go index 2a934cb4fcf2e..3d794f9c92f77 100644 --- a/pkg/vectorindex/hnsw/model.go +++ b/pkg/vectorindex/hnsw/model.go @@ -353,8 +353,11 @@ func (idx *HnswModel) LoadIndex(proc *process.Process, idxcfg vectorindex.IndexC // load index to memory defer func() { - if !view { - // if view == false, remove the file + if view { + // if view == true, remove the file. right now view equals to read-only model when search. + // since model loads into memory anyway, we can safely remove the file after load. + // NOTE: when choose to load with usearch.View() mmap(), we cannot remove this file. + // for update, we need this file for Load() and unload(). os.Remove(fp.Name()) } }() From 3d70d9aa8db0df504a492098bb1042587c550d03 Mon Sep 17 00:00:00 2001 From: cpegeric Date: Thu, 22 May 2025 12:17:35 +0100 Subject: [PATCH 043/223] add tests --- pkg/vectorindex/hnsw/model.go | 8 ++ pkg/vectorindex/hnsw/model_test.go | 116 +++++++++++++++++++++++++++++ 2 files changed, 124 insertions(+) create mode 100644 pkg/vectorindex/hnsw/model_test.go diff --git a/pkg/vectorindex/hnsw/model.go b/pkg/vectorindex/hnsw/model.go index 3d794f9c92f77..b59cea654aa76 100644 --- a/pkg/vectorindex/hnsw/model.go +++ b/pkg/vectorindex/hnsw/model.go @@ -138,6 +138,13 @@ func (idx *HnswModel) SaveToFile() error { return err } + // get new checksum + chksum, err := vectorindex.CheckSum(f.Name()) + if err != nil { + return err + } + idx.Checksum = chksum + // free memory err = idx.Index.Destroy() if err != nil { @@ -145,6 +152,7 @@ func (idx *HnswModel) SaveToFile() error { } idx.Index = nil idx.Path = f.Name() + return nil } diff --git a/pkg/vectorindex/hnsw/model_test.go b/pkg/vectorindex/hnsw/model_test.go new file mode 100644 index 0000000000000..5bc318af4af1d --- /dev/null +++ b/pkg/vectorindex/hnsw/model_test.go @@ -0,0 +1,116 @@ +// Copyright 2022 Matrix Origin +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package hnsw + +import ( + "fmt" + "testing" + + "github.com/matrixorigin/matrixone/pkg/common/mpool" + "github.com/matrixorigin/matrixone/pkg/testutil" + "github.com/matrixorigin/matrixone/pkg/vectorindex" + "github.com/stretchr/testify/require" + + usearch "github.com/unum-cloud/usearch/golang" +) + +/* +// give metadata [index_id, checksum, timestamp] +func mock_runSql(proc *process.Process, sql string) (executor.Result, error) { + + return executor.Result{Mp: proc.Mp(), Batches: []*batch.Batch{makeMetaBatch(proc)}}, nil +} + +// give blob +func mock_runSql_streaming(proc *process.Process, sql string, ch chan executor.Result, err_chan chan error) (executor.Result, error) { + + defer close(ch) + res := executor.Result{Mp: proc.Mp(), Batches: []*batch.Batch{makeIndexBatch(proc)}} + ch <- res + return executor.Result{}, nil +} +*/ + +func doModelSearchTest(t *testing.T, idx *HnswModel, key uint64, v []float32) { + keys, distances, err := idx.Search(v, 4) + require.Nil(t, err) + require.Equal(t, len(keys), 4) + require.Equal(t, keys[0], key) + require.Equal(t, distances[0], float32(0)) + fmt.Printf("%v %v\n", keys, distances) + +} + +func TestModel(t *testing.T) { + var err error + fp32a := []float32{0, 1, 2} + v1000 := []float32{1000, 2000, 3000} + + m := mpool.MustNewZero() + proc := testutil.NewProcessWithMPool("", m) + + // stub runSql function + runSql = mock_runSql + runSql_streaming = mock_runSql_streaming + + models, err := LoadMetadata(proc, "db", "meta") + require.Nil(t, err) + + idxcfg := vectorindex.IndexConfig{Type: "hnsw", Usearch: usearch.DefaultConfig(3)} + idxcfg.Usearch.Metric = usearch.L2sq + tblcfg := vectorindex.IndexTableConfig{DbName: "db", SrcTable: "src", MetadataTable: "__secondary_meta", IndexTable: "__secondary_index"} + + require.Equal(t, len(models), 1) + idx := models[0] + defer idx.Destroy() + + err = idx.LoadIndex(proc, idxcfg, tblcfg, 0, false) + require.Nil(t, err) + + doModelSearchTest(t, idx, 0, fp32a) + + require.Equal(t, idx.Dirty, false) + + err = idx.Unload() + require.Nil(t, err) + + err = idx.LoadIndex(proc, idxcfg, tblcfg, 0, false) + require.Nil(t, err) + + doModelSearchTest(t, idx, 0, fp32a) + + var found bool + found, err = idx.Contains(0) + require.Nil(t, err) + require.Equal(t, found, true) + + found, err = idx.Contains(1000) + require.Nil(t, err) + require.Equal(t, found, false) + + err = idx.Add(1000, v1000) + require.Nil(t, err) + + require.Equal(t, idx.Dirty, true) + + err = idx.Unload() + require.Nil(t, err) + + err = idx.LoadIndex(proc, idxcfg, tblcfg, 0, false) + require.Nil(t, err) + + doModelSearchTest(t, idx, 1000, v1000) + +} From 3967bb6613c2d8d2e37c8095f2a7ef510f032685 Mon Sep 17 00:00:00 2001 From: cpegeric Date: Thu, 22 May 2025 12:59:29 +0100 Subject: [PATCH 044/223] update --- pkg/vectorindex/hnsw/model_test.go | 62 ++++++++++++++++++++++++++++-- 1 file changed, 58 insertions(+), 4 deletions(-) diff --git a/pkg/vectorindex/hnsw/model_test.go b/pkg/vectorindex/hnsw/model_test.go index 5bc318af4af1d..11b502dc8f8f6 100644 --- a/pkg/vectorindex/hnsw/model_test.go +++ b/pkg/vectorindex/hnsw/model_test.go @@ -100,17 +100,71 @@ func TestModel(t *testing.T) { require.Nil(t, err) require.Equal(t, found, false) - err = idx.Add(1000, v1000) + key := int64(1000) + v := v1000 + full := false + empty := false + + for i := 0; i < 10; i++ { + full, err = idx.Full() + require.Nil(t, err) + require.Equal(t, full, false) + + empty, err = idx.Empty() + require.Nil(t, err) + require.Equal(t, empty, false) + + err = idx.Add(int64(key), v) + require.Nil(t, err) + + require.Equal(t, idx.Dirty, true) + + err = idx.Unload() + require.Nil(t, err) + + err = idx.LoadIndex(proc, idxcfg, tblcfg, 0, false) + require.Nil(t, err) + + doModelSearchTest(t, idx, uint64(key), v) + + key += 1 + v[0] += 1 + } + + // reset vector to [1000, 2000, 3000] + key = int64(1000) + v[0] = 1000 + + for i := 0; i < 10; i++ { + err = idx.Remove(key) + require.Nil(t, err) + key += 1 + } + + deletesqls, err := idx.ToDeleteSql(tblcfg) require.Nil(t, err) - require.Equal(t, idx.Dirty, true) + fmt.Printf("%v\n", deletesqls) - err = idx.Unload() + // ToSql will release the index so index is nil + sqls, err := idx.ToSql(tblcfg) require.Nil(t, err) + fmt.Printf("%v\n", sqls) + + // unload with nil index will output error + err = idx.Unload() + require.NotNil(t, err) + // load again err = idx.LoadIndex(proc, idxcfg, tblcfg, 0, false) require.Nil(t, err) - doModelSearchTest(t, idx, 1000, v1000) + key = int64(1000) + for i := 0; i < 10; i++ { + found, err = idx.Contains(key) + require.Nil(t, err) + require.Equal(t, found, false) + key += 1 + } } From 6db0cb6030e92cc2aac3336f103e8cdd2ff7d819 Mon Sep 17 00:00:00 2001 From: cpegeric Date: Thu, 22 May 2025 13:57:58 +0100 Subject: [PATCH 045/223] add tests --- pkg/vectorindex/hnsw/model_test.go | 36 ++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/pkg/vectorindex/hnsw/model_test.go b/pkg/vectorindex/hnsw/model_test.go index 11b502dc8f8f6..18f4afa8031a9 100644 --- a/pkg/vectorindex/hnsw/model_test.go +++ b/pkg/vectorindex/hnsw/model_test.go @@ -168,3 +168,39 @@ func TestModel(t *testing.T) { } } + +func TestModelNil(t *testing.T) { + + var err error + var tblcfg vectorindex.IndexTableConfig + + idx := HnswModel{} + err = idx.SaveToFile() + require.Nil(t, err) + + sqls, err := idx.ToSql(tblcfg) + require.Nil(t, err) + require.Equal(t, len(sqls), 0) + + _, err = idx.Empty() + require.NotNil(t, err) + + _, err = idx.Full() + require.NotNil(t, err) + + err = idx.Add(0, nil) + require.NotNil(t, err) + + err = idx.Remove(0) + require.NotNil(t, err) + + _, err = idx.Contains(0) + require.NotNil(t, err) + + err = idx.Unload() + require.NotNil(t, err) + + _, _, err = idx.Search(nil, 0) + require.NotNil(t, err) + +} From d123d51271535928cdcb69cc07bcebb1281debca Mon Sep 17 00:00:00 2001 From: cpegeric Date: Fri, 23 May 2025 11:36:39 +0100 Subject: [PATCH 046/223] add sync test --- pkg/vectorindex/hnsw/search_test.go | 30 ++++++++++++++++ pkg/vectorindex/hnsw/sync.go | 3 +- pkg/vectorindex/hnsw/sync_test.go | 54 +++++++++++++++++++++++++++++ 3 files changed, 86 insertions(+), 1 deletion(-) create mode 100644 pkg/vectorindex/hnsw/sync_test.go diff --git a/pkg/vectorindex/hnsw/search_test.go b/pkg/vectorindex/hnsw/search_test.go index d580fdc18f96c..adabb57561b32 100644 --- a/pkg/vectorindex/hnsw/search_test.go +++ b/pkg/vectorindex/hnsw/search_test.go @@ -22,6 +22,7 @@ import ( fallocate "github.com/detailyang/go-fallocate" + "github.com/matrixorigin/matrixone/pkg/catalog" "github.com/matrixorigin/matrixone/pkg/common/mpool" "github.com/matrixorigin/matrixone/pkg/container/batch" "github.com/matrixorigin/matrixone/pkg/container/types" @@ -51,6 +52,12 @@ func mock_runSql_streaming(proc *process.Process, sql string, ch chan executor.R return executor.Result{}, nil } +// give moindexes metadata [index_table_name, algo_table_type, algo_params, column_name] +func mock_runCatalogSql(proc *process.Process, sql string) (executor.Result, error) { + + return executor.Result{Mp: proc.Mp(), Batches: []*batch.Batch{makeMoIndexesBatch(proc)}}, nil +} + func TestHnsw(t *testing.T) { m := mpool.MustNewZero() proc := testutil.NewProcessWithMPool("", m) @@ -151,3 +158,26 @@ func TestFallocate(t *testing.T) { fallocate.Fallocate(f, 0, 10000) f.Close() } + +func makeMoIndexesBatch(proc *process.Process) *batch.Batch { + bat := batch.NewWithSize(4) + bat.Vecs[0] = vector.NewVec(types.New(types.T_varchar, 128, 0)) // index_table_name + bat.Vecs[1] = vector.NewVec(types.New(types.T_varchar, 128, 0)) // alog_table_type + bat.Vecs[2] = vector.NewVec(types.New(types.T_varchar, 128, 0)) // algo_params + bat.Vecs[3] = vector.NewVec(types.New(types.T_varchar, 128, 0)) // colname_name + + // metadata + vector.AppendBytes(bat.Vecs[0], []byte("__meta"), false, proc.Mp()) + vector.AppendBytes(bat.Vecs[1], []byte(catalog.Hnsw_TblType_Metadata), false, proc.Mp()) + vector.AppendBytes(bat.Vecs[2], []byte("{\"op_type\":\"vector_l2_ops\"}"), false, proc.Mp()) + vector.AppendBytes(bat.Vecs[3], []byte("embed"), false, proc.Mp()) + + // storage + vector.AppendBytes(bat.Vecs[0], []byte("__storage"), false, proc.Mp()) + vector.AppendBytes(bat.Vecs[1], []byte(catalog.Hnsw_TblType_Storage), false, proc.Mp()) + vector.AppendBytes(bat.Vecs[2], []byte("{\"op_type\":\"vector_l2_ops\"}"), false, proc.Mp()) + vector.AppendBytes(bat.Vecs[3], []byte("embed"), false, proc.Mp()) + + bat.SetRowCount(2) + return bat +} diff --git a/pkg/vectorindex/hnsw/sync.go b/pkg/vectorindex/hnsw/sync.go index db6124127b090..9d736341637eb 100644 --- a/pkg/vectorindex/hnsw/sync.go +++ b/pkg/vectorindex/hnsw/sync.go @@ -36,11 +36,12 @@ const ( ) var runTxn = sqlexec.RunTxn +var runCatalogSql = sqlexec.RunSql func CdcSync(proc *process.Process, db string, tbl string, dimension int32, cdc *vectorindex.VectorIndexCdc[float32]) error { sql := fmt.Sprintf(catalogsql, tbl, db) - res, err := runSql(proc, sql) + res, err := runCatalogSql(proc, sql) if err != nil { return err } diff --git a/pkg/vectorindex/hnsw/sync_test.go b/pkg/vectorindex/hnsw/sync_test.go new file mode 100644 index 0000000000000..9386a2dee9964 --- /dev/null +++ b/pkg/vectorindex/hnsw/sync_test.go @@ -0,0 +1,54 @@ +// Copyright 2022 Matrix Origin +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package hnsw + +import ( + "testing" + + "github.com/matrixorigin/matrixone/pkg/common/mpool" + "github.com/matrixorigin/matrixone/pkg/testutil" + "github.com/matrixorigin/matrixone/pkg/vectorindex" + "github.com/stretchr/testify/require" +) + +/* +// give metadata [index_id, checksum, timestamp] +func mock_runSql(proc *process.Process, sql string) (executor.Result, error) { + return executor.Result{Mp: proc.Mp(), Batches: []*batch.Batch{makeMetaBatch(proc)}}, nil +} + +// give blob +func mock_runSql_streaming(proc *process.Process, sql string, ch chan executor.Result, err_chan chan error) (executor.Result, error) { + defer close(ch) + res := executor.Result{Mp: proc.Mp(), Batches: []*batch.Batch{makeIndexBatch(proc)}} + ch <- res + return executor.Result{}, nil +} +*/ + +func TestSync(t *testing.T) { + + m := mpool.MustNewZero() + proc := testutil.NewProcessWithMPool("", m) + + runSql = mock_runSql + runSql_streaming = mock_runSql_streaming + runCatalogSql = mock_runCatalogSql + + cdc := vectorindex.VectorIndexCdc[float32]{} + + err := CdcSync(proc, "db", "src", 3, &cdc) + require.Nil(t, err) +} From 35ca423bf4b1eb59fd25b7b9d06ab28ff5393a1f Mon Sep 17 00:00:00 2001 From: cpegeric Date: Fri, 23 May 2025 12:16:35 +0100 Subject: [PATCH 047/223] update tests --- pkg/vectorindex/hnsw/search_test.go | 6 ++++-- pkg/vectorindex/hnsw/sync.go | 5 ++--- pkg/vectorindex/hnsw/sync_test.go | 21 ++++++++++++++++++++- 3 files changed, 26 insertions(+), 6 deletions(-) diff --git a/pkg/vectorindex/hnsw/search_test.go b/pkg/vectorindex/hnsw/search_test.go index adabb57561b32..035a0ee8cf3ff 100644 --- a/pkg/vectorindex/hnsw/search_test.go +++ b/pkg/vectorindex/hnsw/search_test.go @@ -160,6 +160,8 @@ func TestFallocate(t *testing.T) { } func makeMoIndexesBatch(proc *process.Process) *batch.Batch { + //param := "{\"op_type\": \"vector_l2_ops\", \"m\":\"128\",\"ef_construction\":\"256\", \"ef_search\":\"100\"}" + param := "{\"op_type\": \"vector_l2_ops\"}" bat := batch.NewWithSize(4) bat.Vecs[0] = vector.NewVec(types.New(types.T_varchar, 128, 0)) // index_table_name bat.Vecs[1] = vector.NewVec(types.New(types.T_varchar, 128, 0)) // alog_table_type @@ -169,13 +171,13 @@ func makeMoIndexesBatch(proc *process.Process) *batch.Batch { // metadata vector.AppendBytes(bat.Vecs[0], []byte("__meta"), false, proc.Mp()) vector.AppendBytes(bat.Vecs[1], []byte(catalog.Hnsw_TblType_Metadata), false, proc.Mp()) - vector.AppendBytes(bat.Vecs[2], []byte("{\"op_type\":\"vector_l2_ops\"}"), false, proc.Mp()) + vector.AppendBytes(bat.Vecs[2], []byte(param), false, proc.Mp()) vector.AppendBytes(bat.Vecs[3], []byte("embed"), false, proc.Mp()) // storage vector.AppendBytes(bat.Vecs[0], []byte("__storage"), false, proc.Mp()) vector.AppendBytes(bat.Vecs[1], []byte(catalog.Hnsw_TblType_Storage), false, proc.Mp()) - vector.AppendBytes(bat.Vecs[2], []byte("{\"op_type\":\"vector_l2_ops\"}"), false, proc.Mp()) + vector.AppendBytes(bat.Vecs[2], []byte(param), false, proc.Mp()) vector.AppendBytes(bat.Vecs[3], []byte("embed"), false, proc.Mp()) bat.SetRowCount(2) diff --git a/pkg/vectorindex/hnsw/sync.go b/pkg/vectorindex/hnsw/sync.go index 9d736341637eb..efc3bcdf45e0c 100644 --- a/pkg/vectorindex/hnsw/sync.go +++ b/pkg/vectorindex/hnsw/sync.go @@ -94,7 +94,7 @@ func CdcSync(proc *process.Process, db string, tbl string, dimension int32, cdc if i == 0 { paramstr := paramvec.UnsafeGetStringAt(i) cname := colvec.UnsafeGetStringAt(i) - os.Stderr.WriteString(fmt.Sprintf("idxtbl %s, type %s, param %s, cname %s\n", idxtbl, algotyp, param, cname)) + os.Stderr.WriteString(fmt.Sprintf("idxtbl %s, type %s, param %s, cname %s\n", idxtbl, algotyp, paramstr, cname)) idxtblcfg.KeyPart = cname if len(paramstr) > 0 { err := json.Unmarshal([]byte(paramstr), ¶m) @@ -176,6 +176,7 @@ func CdcSync(proc *process.Process, db string, tbl string, dimension int32, cdc uid := fmt.Sprintf("%s:%d:%d", "cdc", 1, 0) ts := time.Now().Unix() sync := &HnswSync{indexes: indexes, idxcfg: idxcfg, tblcfg: idxtblcfg, cdc: cdc, uid: uid, ts: ts} + defer sync.destroy() return sync.run(proc) } @@ -198,8 +199,6 @@ func (s *HnswSync) destroy() { func (s *HnswSync) run(proc *process.Process) error { var err error - defer s.destroy() - maxcap := uint(s.tblcfg.IndexCapacity) // try to find index cap diff --git a/pkg/vectorindex/hnsw/sync_test.go b/pkg/vectorindex/hnsw/sync_test.go index 9386a2dee9964..324b33b3696ab 100644 --- a/pkg/vectorindex/hnsw/sync_test.go +++ b/pkg/vectorindex/hnsw/sync_test.go @@ -19,7 +19,9 @@ import ( "github.com/matrixorigin/matrixone/pkg/common/mpool" "github.com/matrixorigin/matrixone/pkg/testutil" + "github.com/matrixorigin/matrixone/pkg/util/executor" "github.com/matrixorigin/matrixone/pkg/vectorindex" + "github.com/matrixorigin/matrixone/pkg/vm/process" "github.com/stretchr/testify/require" ) @@ -38,6 +40,10 @@ func mock_runSql_streaming(proc *process.Process, sql string, ch chan executor.R } */ +func mock_runTxn(proc *process.Process, fn func(exec executor.TxnExecutor) error) error { + return nil +} + func TestSync(t *testing.T) { m := mpool.MustNewZero() @@ -46,8 +52,21 @@ func TestSync(t *testing.T) { runSql = mock_runSql runSql_streaming = mock_runSql_streaming runCatalogSql = mock_runCatalogSql + runTxn = mock_runTxn + + cdc := vectorindex.VectorIndexCdc[float32]{Data: make([]vectorindex.VectorIndexCdcEntry[float32], 0, 1000)} + + key := int64(1000) + v := []float32{0.1, 0.2, 0.3} - cdc := vectorindex.VectorIndexCdc[float32]{} + for i := 0; i < 1000; i++ { + e := vectorindex.VectorIndexCdcEntry[float32]{Type: vectorindex.CDC_UPSERT, PKey: key, Vec: v} + cdc.Data = append(cdc.Data, e) + key += 1 + for i := range len(v) { + v[i] += 0.01 + } + } err := CdcSync(proc, "db", "src", 3, &cdc) require.Nil(t, err) From dd2ecdb16fb0184fa03344b9f9315e58027bfa2a Mon Sep 17 00:00:00 2001 From: cpegeric Date: Fri, 23 May 2025 12:47:38 +0100 Subject: [PATCH 048/223] delete all tests --- pkg/vectorindex/hnsw/model.go | 16 +++++++++++++++- pkg/vectorindex/hnsw/sync.go | 4 ++++ pkg/vectorindex/hnsw/sync_test.go | 27 ++++++++++++++++++++++++++- 3 files changed, 45 insertions(+), 2 deletions(-) diff --git a/pkg/vectorindex/hnsw/model.go b/pkg/vectorindex/hnsw/model.go index b59cea654aa76..15aaee0eed260 100644 --- a/pkg/vectorindex/hnsw/model.go +++ b/pkg/vectorindex/hnsw/model.go @@ -126,6 +126,20 @@ func (idx *HnswModel) SaveToFile() error { } idx.Path = "" + empty, err := idx.Empty() + if err != nil { + return err + } + if empty { + // index empty, no file need to save + err = idx.Index.Destroy() + if err != nil { + return err + } + idx.Index = nil + return nil + } + // save to file f, err := os.CreateTemp("", "hnsw") if err != nil { @@ -182,7 +196,7 @@ func (idx *HnswModel) ToSql(cfg vectorindex.IndexTableConfig) ([]string, error) idx.FileSize = filesz - os.Stderr.WriteString(fmt.Sprintf("ToSQ: file %s size %d\n", idx.Path, idx.FileSize)) + os.Stderr.WriteString(fmt.Sprintf("ToSQL: file %s size %d\n", idx.Path, idx.FileSize)) if idx.FileSize == 0 { return []string{}, nil } diff --git a/pkg/vectorindex/hnsw/sync.go b/pkg/vectorindex/hnsw/sync.go index efc3bcdf45e0c..b485693b01b24 100644 --- a/pkg/vectorindex/hnsw/sync.go +++ b/pkg/vectorindex/hnsw/sync.go @@ -451,6 +451,10 @@ func (s *HnswSync) ToSql(ts int64) ([]string, error) { return nil, err } + if len(indexsqls) == 0 { + continue + } + sqls = append(sqls, indexsqls...) //os.Stderr.WriteString(fmt.Sprintf("Sql: %s\n", sql)) diff --git a/pkg/vectorindex/hnsw/sync_test.go b/pkg/vectorindex/hnsw/sync_test.go index 324b33b3696ab..f1d9301e37af5 100644 --- a/pkg/vectorindex/hnsw/sync_test.go +++ b/pkg/vectorindex/hnsw/sync_test.go @@ -44,7 +44,7 @@ func mock_runTxn(proc *process.Process, fn func(exec executor.TxnExecutor) error return nil } -func TestSync(t *testing.T) { +func TestSyncUpsert(t *testing.T) { m := mpool.MustNewZero() proc := testutil.NewProcessWithMPool("", m) @@ -71,3 +71,28 @@ func TestSync(t *testing.T) { err := CdcSync(proc, "db", "src", 3, &cdc) require.Nil(t, err) } + +// should delete all items +func TestSyncDelete(t *testing.T) { + + m := mpool.MustNewZero() + proc := testutil.NewProcessWithMPool("", m) + + runSql = mock_runSql + runSql_streaming = mock_runSql_streaming + runCatalogSql = mock_runCatalogSql + runTxn = mock_runTxn + + cdc := vectorindex.VectorIndexCdc[float32]{Data: make([]vectorindex.VectorIndexCdcEntry[float32], 0, 1000)} + + key := int64(0) + + for i := 0; i < 100; i++ { + e := vectorindex.VectorIndexCdcEntry[float32]{Type: vectorindex.CDC_DELETE, PKey: key} + cdc.Data = append(cdc.Data, e) + key += 1 + } + + err := CdcSync(proc, "db", "src", 3, &cdc) + require.Nil(t, err) +} From 5356fd95c04333fc78d07b5e559ed605d405b4db Mon Sep 17 00:00:00 2001 From: cpegeric Date: Fri, 23 May 2025 13:38:35 +0100 Subject: [PATCH 049/223] update tests --- pkg/vectorindex/hnsw/sync.go | 1 + pkg/vectorindex/hnsw/sync_test.go | 60 +++++++++++++++++++++++++++++++ 2 files changed, 61 insertions(+) diff --git a/pkg/vectorindex/hnsw/sync.go b/pkg/vectorindex/hnsw/sync.go index b485693b01b24..1bdbcca0236f6 100644 --- a/pkg/vectorindex/hnsw/sync.go +++ b/pkg/vectorindex/hnsw/sync.go @@ -451,6 +451,7 @@ func (s *HnswSync) ToSql(ts int64) ([]string, error) { return nil, err } + // skip when sqls is empty which means the index is empty if len(indexsqls) == 0 { continue } diff --git a/pkg/vectorindex/hnsw/sync_test.go b/pkg/vectorindex/hnsw/sync_test.go index f1d9301e37af5..08163ce038fce 100644 --- a/pkg/vectorindex/hnsw/sync_test.go +++ b/pkg/vectorindex/hnsw/sync_test.go @@ -96,3 +96,63 @@ func TestSyncDelete(t *testing.T) { err := CdcSync(proc, "db", "src", 3, &cdc) require.Nil(t, err) } + +// should delete items and add the same keys back to the model +func TestSyncDeleteAndInsert(t *testing.T) { + + m := mpool.MustNewZero() + proc := testutil.NewProcessWithMPool("", m) + + runSql = mock_runSql + runSql_streaming = mock_runSql_streaming + runCatalogSql = mock_runCatalogSql + runTxn = mock_runTxn + + cdc := vectorindex.VectorIndexCdc[float32]{Data: make([]vectorindex.VectorIndexCdcEntry[float32], 0, 200)} + + key := int64(0) + + for i := 0; i < 100; i++ { + e := vectorindex.VectorIndexCdcEntry[float32]{Type: vectorindex.CDC_DELETE, PKey: key} + cdc.Data = append(cdc.Data, e) + key += 1 + } + + key = 0 + v := []float32{0.1, 0.2, 0.3} + for i := 0; i < 100; i++ { + e := vectorindex.VectorIndexCdcEntry[float32]{Type: vectorindex.CDC_INSERT, PKey: key, Vec: v} + cdc.Data = append(cdc.Data, e) + key += 1 + + } + + err := CdcSync(proc, "db", "src", 3, &cdc) + require.Nil(t, err) +} + +// should delete items and add the same keys back to the model +func TestSyncUpdate(t *testing.T) { + + m := mpool.MustNewZero() + proc := testutil.NewProcessWithMPool("", m) + + runSql = mock_runSql + runSql_streaming = mock_runSql_streaming + runCatalogSql = mock_runCatalogSql + runTxn = mock_runTxn + + cdc := vectorindex.VectorIndexCdc[float32]{Data: make([]vectorindex.VectorIndexCdcEntry[float32], 0, 100)} + + key := int64(0) + v := []float32{0.1, 0.2, 0.3} + + for i := 0; i < 100; i++ { + e := vectorindex.VectorIndexCdcEntry[float32]{Type: vectorindex.CDC_UPSERT, PKey: key, Vec: v} + cdc.Data = append(cdc.Data, e) + key += 1 + } + + err := CdcSync(proc, "db", "src", 3, &cdc) + require.Nil(t, err) +} From 69dffe17d19b4ac5cfcf0e8100aa905a0874e9a0 Mon Sep 17 00:00:00 2001 From: cpegeric Date: Fri, 23 May 2025 13:42:52 +0100 Subject: [PATCH 050/223] add test --- pkg/vectorindex/hnsw/model.go | 1 + pkg/vectorindex/hnsw/sync_test.go | 34 +++++++++++++++++++++++++++++++ 2 files changed, 35 insertions(+) diff --git a/pkg/vectorindex/hnsw/model.go b/pkg/vectorindex/hnsw/model.go index 15aaee0eed260..ac58823b8f241 100644 --- a/pkg/vectorindex/hnsw/model.go +++ b/pkg/vectorindex/hnsw/model.go @@ -267,6 +267,7 @@ func (idx *HnswModel) Empty() (bool, error) { if err != nil { return false, err } + fmt.Printf("Check empty Size = %d\n", sz) return (sz == 0), nil } diff --git a/pkg/vectorindex/hnsw/sync_test.go b/pkg/vectorindex/hnsw/sync_test.go index 08163ce038fce..75f509ff0fccb 100644 --- a/pkg/vectorindex/hnsw/sync_test.go +++ b/pkg/vectorindex/hnsw/sync_test.go @@ -156,3 +156,37 @@ func TestSyncUpdate(t *testing.T) { err := CdcSync(proc, "db", "src", 3, &cdc) require.Nil(t, err) } + +// should delete items and add the same keys back to the model +func TestSyncDeleteAndUpsert(t *testing.T) { + + m := mpool.MustNewZero() + proc := testutil.NewProcessWithMPool("", m) + + runSql = mock_runSql + runSql_streaming = mock_runSql_streaming + runCatalogSql = mock_runCatalogSql + runTxn = mock_runTxn + + cdc := vectorindex.VectorIndexCdc[float32]{Data: make([]vectorindex.VectorIndexCdcEntry[float32], 0, 200)} + + key := int64(0) + + for i := 0; i < 100; i++ { + e := vectorindex.VectorIndexCdcEntry[float32]{Type: vectorindex.CDC_DELETE, PKey: key} + cdc.Data = append(cdc.Data, e) + key += 1 + } + + key = 0 + v := []float32{0.1, 0.2, 0.3} + for i := 0; i < 100; i++ { + e := vectorindex.VectorIndexCdcEntry[float32]{Type: vectorindex.CDC_UPSERT, PKey: key, Vec: v} + cdc.Data = append(cdc.Data, e) + key += 1 + + } + + err := CdcSync(proc, "db", "src", 3, &cdc) + require.Nil(t, err) +} From 48a3f59ebe346b5a0f2abc7757de3a58d8eebc70 Mon Sep 17 00:00:00 2001 From: cpegeric Date: Fri, 23 May 2025 13:43:41 +0100 Subject: [PATCH 051/223] add test --- pkg/vectorindex/hnsw/model.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/vectorindex/hnsw/model.go b/pkg/vectorindex/hnsw/model.go index ac58823b8f241..16c2ed805f077 100644 --- a/pkg/vectorindex/hnsw/model.go +++ b/pkg/vectorindex/hnsw/model.go @@ -267,7 +267,7 @@ func (idx *HnswModel) Empty() (bool, error) { if err != nil { return false, err } - fmt.Printf("Check empty Size = %d\n", sz) + os.Stderr.WriteString(fmt.Sprintf("Check empty Size = %d\n", sz)) return (sz == 0), nil } From 4a0db76dc63008fbdcd568f01ce91cb6e446a1bc Mon Sep 17 00:00:00 2001 From: cpegeric Date: Fri, 23 May 2025 14:22:59 +0100 Subject: [PATCH 052/223] update --- pkg/vectorindex/hnsw/model.go | 11 ++++++++++- pkg/vectorindex/hnsw/sync.go | 2 +- pkg/vectorindex/hnsw/sync_test.go | 29 +++++++++++++++++++++++++++++ 3 files changed, 40 insertions(+), 2 deletions(-) diff --git a/pkg/vectorindex/hnsw/model.go b/pkg/vectorindex/hnsw/model.go index 16c2ed805f077..a5d3576cb3329 100644 --- a/pkg/vectorindex/hnsw/model.go +++ b/pkg/vectorindex/hnsw/model.go @@ -267,7 +267,7 @@ func (idx *HnswModel) Empty() (bool, error) { if err != nil { return false, err } - os.Stderr.WriteString(fmt.Sprintf("Check empty Size = %d\n", sz)) + os.Stderr.WriteString(fmt.Sprintf("Check empty Size = %d, cap = %d\n", sz, idx.MaxCapacity)) return (sz == 0), nil } @@ -440,6 +440,7 @@ func (idx *HnswModel) LoadIndex(proc *process.Process, idxcfg vectorindex.IndexC } else { err = usearchidx.Load(idx.Path) usearchidx.Reserve(uint(tblcfg.IndexCapacity)) + fmt.Printf("LoadIndex Reserver %d\n", tblcfg.IndexCapacity) } if err != nil { return err @@ -457,6 +458,14 @@ func (idx *HnswModel) LoadIndex(proc *process.Process, idxcfg vectorindex.IndexC return err } + if !view { + // sometimes Reserve() will give bigger capacity than requested + if idx.MaxCapacity > uint(tblcfg.IndexCapacity) { + idx.MaxCapacity = uint(tblcfg.IndexCapacity) + } + } + fmt.Printf("LoadIndex Check cap %d\n", idx.MaxCapacity) + return nil } diff --git a/pkg/vectorindex/hnsw/sync.go b/pkg/vectorindex/hnsw/sync.go index 1bdbcca0236f6..722a26eddf3c2 100644 --- a/pkg/vectorindex/hnsw/sync.go +++ b/pkg/vectorindex/hnsw/sync.go @@ -414,7 +414,7 @@ func (s *HnswSync) getLastModel(proc *process.Process, last *HnswModel, maxcap u last = newmodel } - os.Stderr.WriteString(fmt.Sprintf("getlast model full %v id = %s\n", full, last.Id)) + //os.Stderr.WriteString(fmt.Sprintf("getlast model full %v id = %s\n", full, last.Id)) return last, nil } diff --git a/pkg/vectorindex/hnsw/sync_test.go b/pkg/vectorindex/hnsw/sync_test.go index 75f509ff0fccb..4948ca6e85ca3 100644 --- a/pkg/vectorindex/hnsw/sync_test.go +++ b/pkg/vectorindex/hnsw/sync_test.go @@ -190,3 +190,32 @@ func TestSyncDeleteAndUpsert(t *testing.T) { err := CdcSync(proc, "db", "src", 3, &cdc) require.Nil(t, err) } + +// total 1000100 items and should have two models +func TestSyncAddOneModel(t *testing.T) { + + m := mpool.MustNewZero() + proc := testutil.NewProcessWithMPool("", m) + + runSql = mock_runSql + runSql_streaming = mock_runSql_streaming + runCatalogSql = mock_runCatalogSql + runTxn = mock_runTxn + + cdc := vectorindex.VectorIndexCdc[float32]{Data: make([]vectorindex.VectorIndexCdcEntry[float32], 0, 1000000)} + + key := int64(1000) + v := []float32{0.1, 0.2, 0.3} + + for i := 0; i < 1000000; i++ { + e := vectorindex.VectorIndexCdcEntry[float32]{Type: vectorindex.CDC_UPSERT, PKey: key, Vec: v} + cdc.Data = append(cdc.Data, e) + key += 1 + for i := range len(v) { + v[i] += 0.001 + } + } + + err := CdcSync(proc, "db", "src", 3, &cdc) + require.Nil(t, err) +} From 03b7f3bcc7f20c5e006611ef18b7f40b32ad7603 Mon Sep 17 00:00:00 2001 From: cpegeric Date: Fri, 23 May 2025 15:49:39 +0100 Subject: [PATCH 053/223] remove InsertMeta --- pkg/vectorindex/hnsw/model.go | 12 +++--------- pkg/vectorindex/hnsw/sync.go | 3 --- 2 files changed, 3 insertions(+), 12 deletions(-) diff --git a/pkg/vectorindex/hnsw/model.go b/pkg/vectorindex/hnsw/model.go index a5d3576cb3329..c1b5b442e56a2 100644 --- a/pkg/vectorindex/hnsw/model.go +++ b/pkg/vectorindex/hnsw/model.go @@ -46,10 +46,9 @@ type HnswModel struct { Checksum string // for cdc update - Dirty bool - View bool - Len uint - InsertMeta bool + Dirty bool + View bool + Len uint } // New HnswModel struct @@ -242,11 +241,6 @@ func (idx *HnswModel) ToSql(cfg vectorindex.IndexTableConfig) ([]string, error) } func (idx *HnswModel) ToDeleteSql(cfg vectorindex.IndexTableConfig) ([]string, error) { - if idx.InsertMeta { - // this index is newly created and no DELETE sql required - return []string{}, nil - } - sqls := make([]string, 0, 2) sql := fmt.Sprintf("DELETE FROM `%s`.`%s` WHERE %s = '%s'", cfg.DbName, cfg.IndexTable, catalog.Hnsw_TblCol_Storage_Index_Id, idx.Id) diff --git a/pkg/vectorindex/hnsw/sync.go b/pkg/vectorindex/hnsw/sync.go index 722a26eddf3c2..b1ba04acb8d1e 100644 --- a/pkg/vectorindex/hnsw/sync.go +++ b/pkg/vectorindex/hnsw/sync.go @@ -248,7 +248,6 @@ func (s *HnswSync) run(proc *process.Process) error { if err != nil { return err } - newmodel.InsertMeta = true s.indexes = append(s.indexes, newmodel) last = newmodel } else { @@ -262,7 +261,6 @@ func (s *HnswSync) run(proc *process.Process) error { if err != nil { return err } - newmodel.InsertMeta = true s.indexes = append(s.indexes, newmodel) last = newmodel @@ -409,7 +407,6 @@ func (s *HnswSync) getLastModel(proc *process.Process, last *HnswModel, maxcap u if err != nil { return nil, err } - newmodel.InsertMeta = true s.indexes = append(s.indexes, newmodel) last = newmodel From fc450b1a1d758794f4e9da7bd73d9b0c7d74cfda Mon Sep 17 00:00:00 2001 From: cpegeric Date: Fri, 23 May 2025 15:58:16 +0100 Subject: [PATCH 054/223] start with empty --- pkg/vectorindex/hnsw/sync_test.go | 35 +++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/pkg/vectorindex/hnsw/sync_test.go b/pkg/vectorindex/hnsw/sync_test.go index 4948ca6e85ca3..4b9a78fbc6825 100644 --- a/pkg/vectorindex/hnsw/sync_test.go +++ b/pkg/vectorindex/hnsw/sync_test.go @@ -18,6 +18,7 @@ import ( "testing" "github.com/matrixorigin/matrixone/pkg/common/mpool" + "github.com/matrixorigin/matrixone/pkg/container/batch" "github.com/matrixorigin/matrixone/pkg/testutil" "github.com/matrixorigin/matrixone/pkg/util/executor" "github.com/matrixorigin/matrixone/pkg/vectorindex" @@ -40,10 +41,44 @@ func mock_runSql_streaming(proc *process.Process, sql string, ch chan executor.R } */ +// give metadata [index_id, checksum, timestamp] +func mock_runSql_empty(proc *process.Process, sql string) (executor.Result, error) { + + return executor.Result{Mp: proc.Mp(), Batches: []*batch.Batch{}}, nil +} + func mock_runTxn(proc *process.Process, fn func(exec executor.TxnExecutor) error) error { return nil } +func TestSyncUpsertWithEmpty(t *testing.T) { + + m := mpool.MustNewZero() + proc := testutil.NewProcessWithMPool("", m) + + runSql = mock_runSql_empty + runSql_streaming = mock_runSql_streaming + runCatalogSql = mock_runCatalogSql + runTxn = mock_runTxn + + cdc := vectorindex.VectorIndexCdc[float32]{Data: make([]vectorindex.VectorIndexCdcEntry[float32], 0, 1000)} + + key := int64(1000) + v := []float32{0.1, 0.2, 0.3} + + for i := 0; i < 1000; i++ { + e := vectorindex.VectorIndexCdcEntry[float32]{Type: vectorindex.CDC_UPSERT, PKey: key, Vec: v} + cdc.Data = append(cdc.Data, e) + key += 1 + for i := range len(v) { + v[i] += 0.01 + } + } + + err := CdcSync(proc, "db", "src", 3, &cdc) + require.Nil(t, err) +} + func TestSyncUpsert(t *testing.T) { m := mpool.MustNewZero() From 862cd46a375971d2de55beef788fff53c3b0d704 Mon Sep 17 00:00:00 2001 From: cpegeric Date: Fri, 23 May 2025 16:27:41 +0100 Subject: [PATCH 055/223] delete 2 files --- pkg/vectorindex/hnsw/search_test.go | 74 +++++++++++++++++++++++++++++ pkg/vectorindex/hnsw/sync_test.go | 25 ++++++++++ 2 files changed, 99 insertions(+) diff --git a/pkg/vectorindex/hnsw/search_test.go b/pkg/vectorindex/hnsw/search_test.go index 035a0ee8cf3ff..a0b6728038929 100644 --- a/pkg/vectorindex/hnsw/search_test.go +++ b/pkg/vectorindex/hnsw/search_test.go @@ -15,7 +15,9 @@ package hnsw import ( + "fmt" "os" + "strings" "sync" "testing" "time" @@ -52,6 +54,27 @@ func mock_runSql_streaming(proc *process.Process, sql string, ch chan executor.R return executor.Result{}, nil } +// give metadata [index_id, checksum, timestamp] +func mock_runSql_2files(proc *process.Process, sql string) (executor.Result, error) { + + return executor.Result{Mp: proc.Mp(), Batches: []*batch.Batch{makeMetaBatch2Files(proc)}}, nil +} + +// give blob +func mock_runSql_streaming_2files(proc *process.Process, sql string, ch chan executor.Result, err_chan chan error) (executor.Result, error) { + + fmt.Printf("SQL %s\n", sql) + idx := 0 + if strings.Contains(sql, "abc-1") { + idx = 1 + } + + defer close(ch) + res := executor.Result{Mp: proc.Mp(), Batches: []*batch.Batch{makeIndexBatch2Files(proc, idx)}} + ch <- res + return executor.Result{}, nil +} + // give moindexes metadata [index_table_name, algo_table_type, algo_params, column_name] func mock_runCatalogSql(proc *process.Process, sql string) (executor.Result, error) { @@ -183,3 +206,54 @@ func makeMoIndexesBatch(proc *process.Process) *batch.Batch { bat.SetRowCount(2) return bat } + +func makeMetaBatch2Files(proc *process.Process) *batch.Batch { + indexfiles := []string{"resources/hnsw0.bin", "resources/hnsw1.bin"} + ids := []string{"abc-0", "abc-1"} + + bat := batch.NewWithSize(4) + bat.Vecs[0] = vector.NewVec(types.New(types.T_varchar, 128, 0)) // index_id + bat.Vecs[1] = vector.NewVec(types.New(types.T_varchar, 65536, 0)) // checksum + bat.Vecs[2] = vector.NewVec(types.New(types.T_int64, 8, 0)) // timestamp + bat.Vecs[3] = vector.NewVec(types.New(types.T_int64, 8, 0)) // timestamp + + for i, indexfile := range indexfiles { + + vector.AppendBytes(bat.Vecs[0], []byte(ids[i]), false, proc.Mp()) + chksum, err := vectorindex.CheckSum(indexfile) + if err != nil { + panic("file checksum error") + } + + finfo, err := os.Stat(indexfile) + if err != nil { + panic("file not found") + } + + vector.AppendBytes(bat.Vecs[1], []byte(chksum), false, proc.Mp()) + vector.AppendFixed[int64](bat.Vecs[2], int64(0), false, proc.Mp()) + vector.AppendFixed[int64](bat.Vecs[3], finfo.Size(), false, proc.Mp()) + + } + + bat.SetRowCount(len(indexfiles)) + return bat +} + +func makeIndexBatch2Files(proc *process.Process, id int) *batch.Batch { + indexfiles := []string{"resources/hnsw0.bin", "resources/hnsw1.bin"} + indexfile := indexfiles[id] + + bat := batch.NewWithSize(2) + bat.Vecs[0] = vector.NewVec(types.New(types.T_int64, 8, 0)) // chunk_id + bat.Vecs[1] = vector.NewVec(types.New(types.T_blob, 65536, 0)) // data + + dat, err := os.ReadFile(indexfile) + if err != nil { + panic("read file error") + } + vector.AppendFixed[int64](bat.Vecs[0], int64(0), false, proc.Mp()) + vector.AppendBytes(bat.Vecs[1], dat, false, proc.Mp()) + bat.SetRowCount(1) + return bat +} diff --git a/pkg/vectorindex/hnsw/sync_test.go b/pkg/vectorindex/hnsw/sync_test.go index 4b9a78fbc6825..5ebefb7be998d 100644 --- a/pkg/vectorindex/hnsw/sync_test.go +++ b/pkg/vectorindex/hnsw/sync_test.go @@ -254,3 +254,28 @@ func TestSyncAddOneModel(t *testing.T) { err := CdcSync(proc, "db", "src", 3, &cdc) require.Nil(t, err) } + +// should delete all items +func TestSyncDelete2Files(t *testing.T) { + + m := mpool.MustNewZero() + proc := testutil.NewProcessWithMPool("", m) + + runSql = mock_runSql_2files + runSql_streaming = mock_runSql_streaming_2files + runCatalogSql = mock_runCatalogSql + runTxn = mock_runTxn + + cdc := vectorindex.VectorIndexCdc[float32]{Data: make([]vectorindex.VectorIndexCdcEntry[float32], 0, 1000)} + + key := int64(0) + + for i := 0; i < 200; i++ { + e := vectorindex.VectorIndexCdcEntry[float32]{Type: vectorindex.CDC_DELETE, PKey: key} + cdc.Data = append(cdc.Data, e) + key += 1 + } + + err := CdcSync(proc, "db", "src", 3, &cdc) + require.Nil(t, err) +} From fd6eee9ce5d41344eb4972fdbae6cc3670cc7a37 Mon Sep 17 00:00:00 2001 From: cpegeric Date: Fri, 23 May 2025 16:32:06 +0100 Subject: [PATCH 056/223] shuffle test --- pkg/vectorindex/hnsw/sync_test.go | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/pkg/vectorindex/hnsw/sync_test.go b/pkg/vectorindex/hnsw/sync_test.go index 5ebefb7be998d..16db4b3559761 100644 --- a/pkg/vectorindex/hnsw/sync_test.go +++ b/pkg/vectorindex/hnsw/sync_test.go @@ -16,6 +16,7 @@ package hnsw import ( "testing" + "time" "github.com/matrixorigin/matrixone/pkg/common/mpool" "github.com/matrixorigin/matrixone/pkg/container/batch" @@ -24,6 +25,7 @@ import ( "github.com/matrixorigin/matrixone/pkg/vectorindex" "github.com/matrixorigin/matrixone/pkg/vm/process" "github.com/stretchr/testify/require" + "golang.org/x/exp/rand" ) /* @@ -279,3 +281,31 @@ func TestSyncDelete2Files(t *testing.T) { err := CdcSync(proc, "db", "src", 3, &cdc) require.Nil(t, err) } + +// should delete all items +func TestSyncDeleteShuffle2Files(t *testing.T) { + + m := mpool.MustNewZero() + proc := testutil.NewProcessWithMPool("", m) + + runSql = mock_runSql_2files + runSql_streaming = mock_runSql_streaming_2files + runCatalogSql = mock_runCatalogSql + runTxn = mock_runTxn + + cdc := vectorindex.VectorIndexCdc[float32]{Data: make([]vectorindex.VectorIndexCdcEntry[float32], 0, 1000)} + + key := int64(0) + + for i := 0; i < 200; i++ { + e := vectorindex.VectorIndexCdcEntry[float32]{Type: vectorindex.CDC_DELETE, PKey: key} + cdc.Data = append(cdc.Data, e) + key += 1 + } + + rand.Seed(uint64(time.Now().UnixNano())) + rand.Shuffle(len(cdc.Data), func(i, j int) { cdc.Data[i], cdc.Data[j] = cdc.Data[j], cdc.Data[i] }) + + err := CdcSync(proc, "db", "src", 3, &cdc) + require.Nil(t, err) +} From 8c51bbe6a531612302b10ff8c784fe135d621d90 Mon Sep 17 00:00:00 2001 From: cpegeric Date: Fri, 23 May 2025 16:42:29 +0100 Subject: [PATCH 057/223] update shuffle --- pkg/vectorindex/hnsw/sync_test.go | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/pkg/vectorindex/hnsw/sync_test.go b/pkg/vectorindex/hnsw/sync_test.go index 16db4b3559761..f50197d397301 100644 --- a/pkg/vectorindex/hnsw/sync_test.go +++ b/pkg/vectorindex/hnsw/sync_test.go @@ -309,3 +309,32 @@ func TestSyncDeleteShuffle2Files(t *testing.T) { err := CdcSync(proc, "db", "src", 3, &cdc) require.Nil(t, err) } + +// should delete items and add the same keys back to the model +func TestSyncUpdateShuffle2Files(t *testing.T) { + + m := mpool.MustNewZero() + proc := testutil.NewProcessWithMPool("", m) + + runSql = mock_runSql_2files + runSql_streaming = mock_runSql_streaming_2files + runCatalogSql = mock_runCatalogSql + runTxn = mock_runTxn + + cdc := vectorindex.VectorIndexCdc[float32]{Data: make([]vectorindex.VectorIndexCdcEntry[float32], 0, 100)} + + key := int64(0) + v := []float32{0.1, 0.2, 0.3} + + for i := 0; i < 200; i++ { + e := vectorindex.VectorIndexCdcEntry[float32]{Type: vectorindex.CDC_UPSERT, PKey: key, Vec: v} + cdc.Data = append(cdc.Data, e) + key += 1 + } + + rand.Seed(uint64(time.Now().UnixNano())) + rand.Shuffle(len(cdc.Data), func(i, j int) { cdc.Data[i], cdc.Data[j] = cdc.Data[j], cdc.Data[i] }) + + err := CdcSync(proc, "db", "src", 3, &cdc) + require.Nil(t, err) +} From 3e5f1648db5e9816f93887e80a509cbb40141072 Mon Sep 17 00:00:00 2001 From: cpegeric Date: Tue, 27 May 2025 11:27:08 +0100 Subject: [PATCH 058/223] create/drop index --- pkg/sql/compile/ddl.go | 7 ++++++ pkg/sql/compile/ddl_index_algo.go | 13 +++++++++++ pkg/sql/compile/util.go | 37 +++++++++++++++++++++++++++++++ 3 files changed, 57 insertions(+) diff --git a/pkg/sql/compile/ddl.go b/pkg/sql/compile/ddl.go index 48e6c029267a9..df05b70c79e6c 100644 --- a/pkg/sql/compile/ddl.go +++ b/pkg/sql/compile/ddl.go @@ -1997,6 +1997,11 @@ func (s *Scope) DropIndex(c *Compile) error { if err != nil { return err } + + // TODO: ERIC delete cdc task for vector, fulltext index + // cdc task name = __mo_cdc_{qry.Table}_{qry.IndexName} + // pitr name = __mo_table_pitr_{qry.Table} + return nil } @@ -2540,6 +2545,8 @@ func (s *Scope) DropTable(c *Compile) error { } } + // TODO: ERIC delete cdc task of the vector and fulltext index here + if isTemp { if err := dbSource.Delete(c.proc.Ctx, engine.GetTempTableName(dbName, tblName)); err != nil { return err diff --git a/pkg/sql/compile/ddl_index_algo.go b/pkg/sql/compile/ddl_index_algo.go index a3083132e4a7b..617b0c5877c03 100644 --- a/pkg/sql/compile/ddl_index_algo.go +++ b/pkg/sql/compile/ddl_index_algo.go @@ -516,5 +516,18 @@ func (s *Scope) handleVectorHnswIndex(c *Compile, dbSource engine.Database, inde } } + // TODO: ERIC 4. register CDC update + sqls, err = genCdcHnswIndex(c.proc, indexDefs, qryDatabase, originalTableDef) + if err != nil { + return err + } + + for _, sql := range sqls { + err = c.runSql(sql) + if err != nil { + return err + } + } + return nil } diff --git a/pkg/sql/compile/util.go b/pkg/sql/compile/util.go index 79f6e62fcd1c0..337a03e358f23 100644 --- a/pkg/sql/compile/util.go +++ b/pkg/sql/compile/util.go @@ -19,6 +19,7 @@ import ( "context" "encoding/json" "fmt" + "os" "strings" "time" @@ -560,3 +561,39 @@ func genBuildHnswIndex(proc *process.Process, indexDefs map[string]*plan.IndexDe return []string{sql}, nil } + +// TODO: ERIC 4. register CDC update +// DROP PITR IF EXISTS `__mo_table_pitr_${srctable}` +// CREATE PITR __mo_table_pitr_${srctable} for table ${db} ${srctable) range 2 'h'; +// CREATE CDC __mo_cdc_${srctable}_${indexInfo.IndexName} 'mysql://root:111@127.0.0.1:6001' 'hnswsync' 'mysql://root:111@127.0.0.1:6001' '${db}.${srctable}' {'Level'='table'}' +// DROP CDC TASK __mo_cdc_${srctable}_${indexInfo.IndexName} +func genCdcHnswIndex(proc *process.Process, indexDefs map[string]*plan.IndexDef, qryDatabase string, originalTableDef *plan.TableDef) ([]string, error) { + + idxdef_meta, ok := indexDefs[catalog.Hnsw_TblType_Metadata] + if !ok { + return nil, moerr.NewInternalErrorNoCtx("hnsw_meta index definition not found") + } + srctbl := originalTableDef.Name + pitrname := fmt.Sprintf("__mo_index_pitr_%s_%s", qryDatabase, srctbl) + cdcname := fmt.Sprintf("__mo_index_cdc_%s_%s_%s", qryDatabase, srctbl, idxdef_meta.IndexName) + + var sql string + + sqls := make([]string, 0, 3) + + // CREATE PITR + sql = fmt.Sprintf("DROP PITR IF EXISTS `%s`;", pitrname) + sqls = append(sqls, sql) + + sql = fmt.Sprintf("CREATE PITR `%s` FOR TABLE `%s` `%s` range 2 'h';", pitrname, qryDatabase, srctbl) + sqls = append(sqls, sql) + + // CREATE CDC TASK + dummyurl := "mysql://root:111@127.0.0.1:6001" + sql = fmt.Sprintf("CREATE CDC `%s` '%s' 'hnswsync' '%s' '%s.%s' {'Level'='table'};", cdcname, dummyurl, dummyurl, qryDatabase, srctbl) + sqls = append(sqls, sql) + + os.Stderr.WriteString(fmt.Sprintf("%v\n", sqls)) + + return []string{}, nil +} From 2f00775e95d9eae583132f05e413792fc0bb2557 Mon Sep 17 00:00:00 2001 From: cpegeric Date: Tue, 27 May 2025 11:35:31 +0100 Subject: [PATCH 059/223] remove new cdc sql syntax --- pkg/sql/parsers/dialect/mysql/mysql_sql.go | 17111 ++++++++-------- pkg/sql/parsers/dialect/mysql/mysql_sql.y | 34 - .../parsers/dialect/mysql/mysql_sql_test.go | 12 - pkg/sql/parsers/tree/delete.go | 7 +- pkg/sql/parsers/tree/insert.go | 7 +- pkg/sql/parsers/tree/replace.go | 7 +- pkg/sql/plan/build_delete.go | 1 - pkg/sql/plan/build_insert.go | 2 - pkg/sql/plan/types.go | 1 - 9 files changed, 8503 insertions(+), 8679 deletions(-) diff --git a/pkg/sql/parsers/dialect/mysql/mysql_sql.go b/pkg/sql/parsers/dialect/mysql/mysql_sql.go index 466aa85a0bab1..12a7d0d290fcd 100644 --- a/pkg/sql/parsers/dialect/mysql/mysql_sql.go +++ b/pkg/sql/parsers/dialect/mysql/mysql_sql.go @@ -1334,7 +1334,7 @@ const yyEofCode = 1 const yyErrCode = 2 const yyInitialStackSize = 16 -//line mysql_sql.y:13009 +//line mysql_sql.y:12975 //line yacctab:1 var yyExca = [...]int{ @@ -1342,13 +1342,13 @@ var yyExca = [...]int{ 1, -1, -2, 0, -1, 142, - 11, 815, - 22, 815, - -2, 808, + 11, 812, + 22, 812, + -2, 805, -1, 167, - 246, 1249, - 248, 1143, - -2, 1195, + 246, 1246, + 248, 1140, + -2, 1192, -1, 194, 44, 635, 248, 635, @@ -1357,1031 +1357,1168 @@ var yyExca = [...]int{ 479, 635, -2, 670, -1, 234, - 664, 2027, + 664, 2024, -2, 534, -1, 548, - 664, 2151, + 664, 2148, -2, 412, -1, 606, - 664, 2210, + 664, 2207, -2, 410, -1, 607, - 664, 2211, + 664, 2208, -2, 411, -1, 608, - 664, 2212, + 664, 2209, -2, 413, - -1, 750, + -1, 748, 327, 181, 451, 181, 452, 181, - -2, 1924, - -1, 817, - 86, 1709, - -2, 2087, - -1, 818, - 86, 1728, - -2, 2058, - -1, 822, - 86, 1729, - -2, 2086, + -2, 1921, + -1, 815, + 86, 1706, + -2, 2084, + -1, 816, + 86, 1725, + -2, 2055, + -1, 820, + 86, 1726, + -2, 2083, + -1, 854, + 86, 1633, + -2, 2287, + -1, 855, + 86, 1634, + -2, 2286, -1, 856, - 86, 1636, - -2, 2290, + 86, 1635, + -2, 2276, -1, 857, - 86, 1637, - -2, 2289, + 86, 2248, + -2, 2269, -1, 858, - 86, 1638, - -2, 2279, + 86, 2249, + -2, 2270, -1, 859, - 86, 2251, - -2, 2272, + 86, 2250, + -2, 2278, -1, 860, - 86, 2252, - -2, 2273, + 86, 2251, + -2, 2258, -1, 861, - 86, 2253, - -2, 2281, + 86, 2252, + -2, 2267, -1, 862, - 86, 2254, - -2, 2261, + 86, 2253, + -2, 2279, -1, 863, - 86, 2255, - -2, 2270, + 86, 2254, + -2, 2280, -1, 864, - 86, 2256, - -2, 2282, + 86, 2255, + -2, 2285, -1, 865, - 86, 2257, - -2, 2283, + 86, 2256, + -2, 2290, -1, 866, - 86, 2258, - -2, 2288, + 86, 2257, + -2, 2291, -1, 867, - 86, 2259, - -2, 2293, + 86, 1702, + -2, 2122, -1, 868, - 86, 2260, - -2, 2294, + 86, 1703, + -2, 1905, -1, 869, - 86, 1705, - -2, 2125, + 86, 1704, + -2, 2131, -1, 870, - 86, 1706, - -2, 1908, - -1, 871, - 86, 1707, - -2, 2134, + 86, 1705, + -2, 1914, -1, 872, 86, 1708, - -2, 1917, + -2, 1922, -1, 874, - 86, 1711, - -2, 1925, + 86, 1710, + -2, 2155, -1, 876, 86, 1713, - -2, 2158, + -2, 1943, -1, 878, + 86, 1715, + -2, 2167, + -1, 879, 86, 1716, - -2, 1946, + -2, 2166, -1, 880, - 86, 1718, - -2, 2170, + 86, 1717, + -2, 1990, -1, 881, - 86, 1719, - -2, 2169, - -1, 882, - 86, 1720, - -2, 1993, - -1, 883, + 86, 1718, + -2, 2079, + -1, 884, 86, 1721, - -2, 2082, + -2, 2178, -1, 886, - 86, 1724, + 86, 1723, -2, 2181, + -1, 887, + 86, 1724, + -2, 2183, -1, 888, - 86, 1726, - -2, 2184, - -1, 889, 86, 1727, - -2, 2186, + -2, 2191, + -1, 889, + 86, 1728, + -2, 2064, -1, 890, - 86, 1730, - -2, 2194, + 86, 1729, + -2, 2109, -1, 891, - 86, 1731, - -2, 2067, + 86, 1730, + -2, 2074, -1, 892, - 86, 1732, - -2, 2112, - -1, 893, - 86, 1733, - -2, 2077, - -1, 894, - 86, 1734, - -2, 2102, + 86, 1731, + -2, 2099, + -1, 903, + 86, 1611, + -2, 2281, + -1, 904, + 86, 1612, + -2, 2282, -1, 905, - 86, 1614, - -2, 2284, - -1, 906, - 86, 1615, - -2, 2285, - -1, 907, - 86, 1616, - -2, 2286, - -1, 1013, + 86, 1613, + -2, 2283, + -1, 1010, 474, 670, 475, 670, -2, 636, - -1, 1064, - 128, 1908, - 139, 1908, - 159, 1908, - -2, 1882, - -1, 1187, - 22, 842, - -2, 791, - -1, 1297, - 11, 815, - 22, 815, - -2, 1491, - -1, 1381, - 22, 842, - -2, 791, - -1, 1743, - 86, 1781, - -2, 2084, - -1, 1744, - 86, 1782, - -2, 2085, - -1, 1919, - 87, 1015, - -2, 1021, - -1, 2377, - 111, 1187, - 155, 1187, - 195, 1187, - 198, 1187, - 288, 1187, - -2, 1180, - -1, 2543, - 11, 815, - 22, 815, - -2, 956, - -1, 2577, - 87, 1868, - 160, 1868, - -2, 2069, - -1, 2578, - 87, 1868, - 160, 1868, - -2, 2068, - -1, 2579, + -1, 1061, + 128, 1905, + 139, 1905, + 159, 1905, + -2, 1879, + -1, 1182, + 22, 839, + -2, 788, + -1, 1292, + 11, 812, + 22, 812, + -2, 1488, + -1, 1376, + 22, 839, + -2, 788, + -1, 1735, + 86, 1778, + -2, 2081, + -1, 1736, + 86, 1779, + -2, 2082, + -1, 1911, + 87, 1012, + -2, 1018, + -1, 2366, + 111, 1184, + 155, 1184, + 195, 1184, + 198, 1184, + 288, 1184, + -2, 1177, + -1, 2531, + 11, 812, + 22, 812, + -2, 953, + -1, 2565, + 87, 1865, + 160, 1865, + -2, 2066, + -1, 2566, + 87, 1865, + 160, 1865, + -2, 2065, + -1, 2567, + 87, 1841, + 160, 1841, + -2, 2052, + -1, 2568, + 87, 1842, + 160, 1842, + -2, 2057, + -1, 2569, + 87, 1843, + 160, 1843, + -2, 1978, + -1, 2570, 87, 1844, 160, 1844, - -2, 2055, - -1, 2580, + -2, 1971, + -1, 2571, 87, 1845, 160, 1845, - -2, 2060, - -1, 2581, + -2, 1895, + -1, 2572, 87, 1846, 160, 1846, - -2, 1981, - -1, 2582, + -2, 2054, + -1, 2573, 87, 1847, 160, 1847, - -2, 1974, - -1, 2583, + -2, 1976, + -1, 2574, 87, 1848, 160, 1848, - -2, 1898, - -1, 2584, + -2, 1970, + -1, 2575, 87, 1849, 160, 1849, - -2, 2057, + -2, 1958, + -1, 2576, + 87, 1865, + 160, 1865, + -2, 1959, + -1, 2577, + 87, 1865, + 160, 1865, + -2, 1960, + -1, 2579, + 87, 1854, + 160, 1854, + -2, 2099, + -1, 2580, + 87, 1831, + 160, 1831, + -2, 2084, + -1, 2581, + 87, 1863, + 160, 1863, + -2, 2055, + -1, 2582, + 87, 1863, + 160, 1863, + -2, 2083, + -1, 2583, + 87, 1863, + 160, 1863, + -2, 1923, + -1, 2584, + 87, 1861, + 160, 1861, + -2, 2074, -1, 2585, - 87, 1850, - 160, 1850, - -2, 1979, + 87, 1858, + 160, 1858, + -2, 1948, -1, 2586, - 87, 1851, - 160, 1851, - -2, 1973, + 86, 1812, + 87, 1812, + 160, 1812, + 409, 1812, + 410, 1812, + 411, 1812, + -2, 1894, -1, 2587, - 87, 1852, - 160, 1852, - -2, 1961, + 86, 1813, + 87, 1813, + 160, 1813, + 409, 1813, + 410, 1813, + 411, 1813, + -2, 1896, -1, 2588, - 87, 1868, - 160, 1868, - -2, 1962, + 86, 1814, + 87, 1814, + 160, 1814, + 409, 1814, + 410, 1814, + 411, 1814, + -2, 2127, -1, 2589, - 87, 1868, - 160, 1868, - -2, 1963, - -1, 2591, - 87, 1857, - 160, 1857, - -2, 2102, - -1, 2592, - 87, 1834, - 160, 1834, - -2, 2087, - -1, 2593, - 87, 1866, - 160, 1866, - -2, 2058, - -1, 2594, - 87, 1866, - 160, 1866, - -2, 2086, - -1, 2595, - 87, 1866, - 160, 1866, - -2, 1926, - -1, 2596, - 87, 1864, - 160, 1864, - -2, 2077, - -1, 2597, - 87, 1861, - 160, 1861, - -2, 1951, - -1, 2598, - 86, 1815, - 87, 1815, - 160, 1815, - 409, 1815, - 410, 1815, - 411, 1815, - -2, 1897, - -1, 2599, 86, 1816, 87, 1816, 160, 1816, 409, 1816, 410, 1816, 411, 1816, - -2, 1899, - -1, 2600, - 86, 1817, - 87, 1817, - 160, 1817, - 409, 1817, - 410, 1817, - 411, 1817, - -2, 2130, - -1, 2601, - 86, 1819, - 87, 1819, - 160, 1819, - 409, 1819, - 410, 1819, - 411, 1819, - -2, 2059, - -1, 2602, - 86, 1821, - 87, 1821, - 160, 1821, - 409, 1821, - 410, 1821, - 411, 1821, - -2, 2037, - -1, 2603, + -2, 2056, + -1, 2590, + 86, 1818, + 87, 1818, + 160, 1818, + 409, 1818, + 410, 1818, + 411, 1818, + -2, 2034, + -1, 2591, + 86, 1820, + 87, 1820, + 160, 1820, + 409, 1820, + 410, 1820, + 411, 1820, + -2, 1977, + -1, 2592, + 86, 1822, + 87, 1822, + 160, 1822, + 409, 1822, + 410, 1822, + 411, 1822, + -2, 1954, + -1, 2593, 86, 1823, 87, 1823, 160, 1823, 409, 1823, 410, 1823, 411, 1823, - -2, 1980, - -1, 2604, + -2, 1955, + -1, 2594, 86, 1825, 87, 1825, 160, 1825, 409, 1825, 410, 1825, 411, 1825, - -2, 1957, - -1, 2605, - 86, 1826, - 87, 1826, - 160, 1826, - 409, 1826, - 410, 1826, - 411, 1826, - -2, 1958, - -1, 2606, - 86, 1828, - 87, 1828, - 160, 1828, - 409, 1828, - 410, 1828, - 411, 1828, - -2, 1896, - -1, 2607, - 87, 1871, - 160, 1871, - 409, 1871, - 410, 1871, - 411, 1871, - -2, 1931, - -1, 2608, + -2, 1893, + -1, 2595, + 87, 1868, + 160, 1868, + 409, 1868, + 410, 1868, + 411, 1868, + -2, 1928, + -1, 2596, + 87, 1868, + 160, 1868, + 409, 1868, + 410, 1868, + 411, 1868, + -2, 1944, + -1, 2597, 87, 1871, 160, 1871, 409, 1871, 410, 1871, 411, 1871, - -2, 1947, - -1, 2609, - 87, 1874, - 160, 1874, - 409, 1874, - 410, 1874, - 411, 1874, - -2, 1927, - -1, 2610, - 87, 1874, - 160, 1874, - 409, 1874, - 410, 1874, - 411, 1874, - -2, 1996, - -1, 2611, + -2, 1924, + -1, 2598, 87, 1871, 160, 1871, 409, 1871, 410, 1871, 411, 1871, - -2, 2019, - -1, 2833, - 111, 1187, - 155, 1187, - 195, 1187, - 198, 1187, - 288, 1187, - -2, 1181, - -1, 2851, - 84, 733, - 160, 733, - -2, 1365, - -1, 3284, - 198, 1187, - 312, 1454, - -2, 1426, - -1, 3473, - 111, 1187, - 155, 1187, - 195, 1187, - 198, 1187, - -2, 1305, - -1, 3475, - 111, 1187, - 155, 1187, - 195, 1187, - 198, 1187, - -2, 1305, - -1, 3487, - 84, 733, - 160, 733, - -2, 1365, - -1, 3509, - 198, 1187, - 312, 1454, - -2, 1427, - -1, 3664, - 111, 1187, - 155, 1187, - 195, 1187, - 198, 1187, - -2, 1306, - -1, 3693, - 87, 1267, - 160, 1267, - -2, 1187, - -1, 3840, - 87, 1267, - 160, 1267, - -2, 1187, - -1, 4011, - 87, 1271, - 160, 1271, - -2, 1187, - -1, 4066, - 87, 1272, - 160, 1272, - -2, 1187, + -2, 1993, + -1, 2599, + 87, 1868, + 160, 1868, + 409, 1868, + 410, 1868, + 411, 1868, + -2, 2016, + -1, 2820, + 111, 1184, + 155, 1184, + 195, 1184, + 198, 1184, + 288, 1184, + -2, 1178, + -1, 2838, + 84, 732, + 160, 732, + -2, 1362, + -1, 3269, + 198, 1184, + 312, 1451, + -2, 1423, + -1, 3458, + 111, 1184, + 155, 1184, + 195, 1184, + 198, 1184, + -2, 1302, + -1, 3460, + 111, 1184, + 155, 1184, + 195, 1184, + 198, 1184, + -2, 1302, + -1, 3472, + 84, 732, + 160, 732, + -2, 1362, + -1, 3493, + 198, 1184, + 312, 1451, + -2, 1424, + -1, 3648, + 111, 1184, + 155, 1184, + 195, 1184, + 198, 1184, + -2, 1303, + -1, 3676, + 87, 1264, + 160, 1264, + -2, 1184, + -1, 3822, + 87, 1264, + 160, 1264, + -2, 1184, + -1, 3991, + 87, 1268, + 160, 1268, + -2, 1184, + -1, 4046, + 87, 1269, + 160, 1269, + -2, 1184, } const yyPrivate = 57344 -const yyLast = 56251 +const yyLast = 55687 var yyAct = [...]int{ - 784, 760, 4120, 786, 4088, 2883, 223, 4112, 1643, 2008, - 4015, 1723, 3494, 3594, 4021, 3304, 3907, 4022, 4014, 3840, - 3270, 769, 3931, 3966, 3887, 3381, 3721, 3523, 3817, 1487, - 762, 2877, 3786, 3878, 3839, 3382, 1333, 3908, 1188, 1783, - 3652, 1555, 3755, 814, 2880, 2795, 648, 3598, 3455, 1063, - 1493, 3808, 3888, 3890, 3589, 3460, 1770, 1953, 2428, 3510, - 3279, 2537, 1719, 666, 1462, 673, 673, 3673, 1181, 2854, - 3661, 673, 692, 701, 1726, 3226, 701, 3240, 3634, 3379, - 3202, 2996, 3476, 3666, 2997, 2119, 2995, 3447, 2103, 2972, - 3229, 758, 2906, 3299, 3478, 2106, 3281, 1176, 2142, 3424, - 3288, 2702, 713, 1788, 2218, 37, 208, 3065, 2174, 2573, - 2431, 3025, 3344, 3203, 2667, 2992, 2068, 1968, 3249, 1785, - 3205, 3287, 3209, 2821, 1644, 3204, 2388, 709, 2356, 2983, - 2332, 3200, 3173, 2834, 3113, 1548, 3207, 2331, 757, 752, - 2202, 3039, 141, 2644, 2575, 2182, 36, 1881, 2183, 1632, - 2626, 1636, 2175, 942, 2214, 2099, 2538, 1633, 1621, 2147, - 2213, 2072, 1452, 2069, 2521, 2805, 2810, 2516, 2888, 1628, - 984, 2429, 1998, 2908, 1057, 1418, 1458, 698, 2846, 2387, - 219, 8, 218, 7, 6, 1928, 2377, 2571, 1717, 2248, - 1784, 2215, 1595, 1527, 2172, 1124, 761, 1533, 2368, 648, - 1529, 2424, 665, 1777, 1564, 751, 1967, 2739, 1757, 759, - 2371, 1708, 1204, 1667, 1660, 23, 2181, 1647, 2178, 2163, - 647, 1602, 1924, 223, 706, 223, 1716, 1115, 1116, 1056, - 1927, 1447, 2545, 2517, 673, 683, 770, 1472, 1532, 909, - 1476, 983, 24, 1722, 1022, 1586, 715, 1789, 25, 209, - 1488, 716, 1095, 27, 17, 1497, 959, 981, 1403, 1496, - 975, 201, 712, 15, 753, 10, 205, 700, 965, 1334, - 3897, 3805, 16, 1379, 1008, 911, 912, 2222, 2461, 1265, - 1266, 1267, 1264, 1265, 1266, 1267, 1264, 668, 1112, 2775, - 14, 2547, 3390, 973, 2775, 974, 2775, 3490, 1265, 1266, - 1267, 1264, 3256, 3082, 3081, 1182, 3625, 2232, 3463, 1183, - 2690, 2629, 1894, 1609, 1108, 207, 667, 2330, 1398, 1455, - 1456, 1457, 1531, 3865, 1372, 697, 2627, 3374, 931, 1111, - 679, 1113, 33, 2632, 954, 696, 2630, 686, 1605, 1042, - 1108, 2738, 1108, 704, 693, 1069, 929, 1107, 968, 1071, - 964, 2336, 1895, 674, 978, 979, 980, 3183, 2340, 1401, - 3166, 753, 695, 3163, 1182, 1659, 3168, 3165, 1090, 4100, - 1510, 1888, 1394, 3587, 2767, 2765, 1607, 1265, 1266, 1267, - 1264, 1265, 1266, 1267, 1264, 3061, 3059, 2152, 8, 3873, - 7, 3762, 1106, 3756, 3590, 3380, 2199, 3892, 1328, 3142, - 2177, 992, 910, 2169, 694, 2469, 945, 4126, 3886, 4097, - 3770, 4050, 1263, 921, 3604, 3824, 3635, 1227, 2769, 1409, - 2676, 3477, 2219, 206, 2379, 206, 1642, 3884, 930, 3792, - 2720, 3768, 3639, 3942, 2684, 1572, 1408, 1407, 1406, 931, - 1091, 929, 1664, 1073, 1426, 711, 928, 206, 64, 197, - 168, 206, 3140, 206, 64, 197, 168, 2230, 1045, 3825, - 1443, 3992, 206, 2990, 2372, 206, 64, 197, 168, 1404, - 1651, 1823, 1661, 988, 989, 3794, 2552, 1067, 1068, 2551, - 1410, 970, 2553, 963, 1032, 2794, 1961, 1037, 1035, 2565, - 1036, 1262, 967, 966, 1897, 2116, 1663, 206, 202, 1657, - 1648, 206, 64, 197, 168, 1235, 206, 2566, 1237, 948, - 2378, 140, 1676, 955, 68, 1085, 1080, 1075, 1079, 1083, - 202, 1656, 922, 206, 1650, 3032, 202, 1242, 206, 2840, - 1243, 2082, 1690, 962, 3274, 202, 1238, 2645, 202, 2790, - 3033, 3034, 3167, 1088, 926, 3164, 3085, 1078, 2083, 2084, - 1506, 1031, 972, 1507, 1906, 1907, 1484, 961, 1245, 2807, - 2792, 960, 206, 64, 197, 168, 1199, 947, 1034, 2808, - 202, 1033, 3073, 953, 202, 1494, 1495, 140, 1043, 2838, - 3895, 799, 142, 1425, 1534, 1492, 1536, 142, 1982, 1491, - 1494, 1495, 206, 64, 197, 168, 202, 1725, 1086, 1255, - 951, 202, 1260, 2791, 1959, 1039, 3614, 1089, 3272, 900, - 1018, 899, 901, 902, 2787, 903, 904, 1066, 2806, 993, - 1065, 1608, 1606, 1231, 3989, 4025, 4026, 1196, 2770, 2841, - 3985, 3895, 3980, 3894, 1076, 202, 3894, 3979, 971, 3893, - 1709, 1509, 2319, 1713, 3383, 1240, 995, 4049, 3968, 1233, - 680, 3893, 3978, 142, 4092, 4093, 3876, 2788, 1087, 3066, - 3968, 1236, 1239, 3383, 952, 202, 2100, 1712, 2671, 1041, - 673, 673, 673, 3067, 3971, 3068, 673, 167, 195, 204, - 196, 3759, 1193, 673, 1192, 2927, 3904, 1232, 2234, 3397, - 1207, 1210, 3644, 1202, 2090, 3448, 1207, 1210, 1077, 1729, - 194, 2226, 2504, 701, 701, 2813, 673, 3994, 3995, 1241, - 1704, 1017, 1015, 2511, 2367, 3453, 3103, 1072, 2231, 3222, - 2160, 3990, 3991, 971, 3998, 3997, 3996, 3999, 3879, 3880, - 3881, 3882, 1520, 1615, 1614, 2797, 1427, 3535, 1014, 2681, - 2984, 969, 1258, 1259, 2793, 1960, 1040, 1397, 2768, 193, - 987, 3613, 3796, 3797, 3987, 2114, 2115, 3101, 1714, 3615, - 1482, 994, 1027, 1257, 1234, 2467, 976, 1230, 3588, 1305, - 3060, 2978, 1184, 3896, 3804, 1084, 2507, 2508, 2506, 3428, - 958, 3216, 1711, 3801, 1070, 1023, 1244, 4024, 3641, 142, - 2568, 1118, 3400, 698, 698, 698, 2514, 3107, 2789, 2774, - 1183, 3227, 3276, 1191, 142, 1183, 142, 3749, 1183, 1508, - 1252, 1081, 2220, 1222, 1082, 2220, 1192, 2220, 1253, 1254, - 664, 1024, 1028, 1728, 1727, 2337, 1896, 3550, 3083, 3300, - 3301, 3605, 3080, 1069, 3238, 4057, 3778, 1071, 3779, 3250, - 3302, 1011, 3303, 1009, 1013, 1031, 1337, 2253, 924, 1010, - 1007, 1006, 2221, 1012, 997, 998, 996, 999, 1000, 1001, - 1002, 1108, 1029, 1108, 1030, 3924, 3547, 1183, 3823, 1108, - 3918, 3830, 1108, 3821, 1108, 1025, 1026, 2233, 2847, 2974, - 946, 703, 944, 1108, 699, 1038, 3750, 702, 1299, 2628, - 2499, 925, 3781, 1610, 1209, 1208, 2988, 3214, 1201, 1710, - 1209, 1208, 699, 2374, 3540, 3174, 1069, 1211, 3769, 3909, - 1071, 3926, 1021, 3271, 1092, 3795, 1074, 3495, 1020, 3228, - 3993, 3932, 1494, 1495, 3780, 973, 1400, 974, 1402, 910, - 2237, 2239, 2240, 1016, 1198, 1338, 2878, 2879, 699, 2882, - 1414, 697, 697, 697, 1417, 2766, 65, 1377, 1423, 666, - 1382, 696, 696, 696, 1187, 1186, 1068, 1178, 1179, 1219, - 693, 693, 693, 1185, 65, 169, 3640, 169, 2685, 2882, - 1215, 1216, 1658, 1221, 1301, 1302, 1303, 1304, 695, 695, - 695, 3502, 1898, 984, 3439, 1405, 1471, 1699, 203, 169, - 1700, 1483, 3306, 169, 3228, 169, 1494, 1495, 3790, 699, - 65, 3220, 3631, 2447, 169, 2351, 3436, 169, 1306, 2427, - 2450, 1019, 2101, 3778, 3551, 3779, 3190, 990, 991, 985, - 694, 694, 694, 2502, 986, 1195, 1197, 1200, 2812, 699, - 3903, 3773, 927, 3831, 3277, 3822, 2510, 1490, 673, 169, - 3104, 1522, 3223, 169, 1247, 673, 4132, 1248, 169, 648, - 648, 2568, 3438, 3712, 3986, 1464, 2094, 3217, 3218, 648, - 648, 65, 2985, 1559, 1559, 169, 673, 2449, 2479, 3781, - 169, 2478, 3645, 3219, 2434, 1250, 3798, 3601, 1213, 2819, - 2928, 1544, 2929, 2930, 2956, 2816, 2817, 701, 1587, 666, - 1543, 65, 1220, 3701, 1598, 1469, 1349, 1350, 2091, 2226, - 2815, 3780, 2500, 2501, 169, 1561, 1566, 3215, 1468, 223, - 1467, 2710, 747, 2448, 1705, 749, 1032, 1428, 648, 4115, - 748, 1420, 1421, 3707, 3933, 1557, 1557, 1430, 1431, 1432, - 1433, 1434, 3844, 1436, 169, 3809, 1735, 1738, 1739, 1442, - 1168, 1164, 1165, 1166, 1167, 3280, 2715, 1736, 2714, 2713, - 2711, 1424, 1486, 1485, 1177, 3774, 3162, 2470, 1521, 3889, - 3236, 3479, 1246, 2427, 4013, 1461, 3300, 3301, 3585, 3386, - 1640, 2444, 1419, 1470, 711, 1645, 3027, 3029, 2238, 1383, - 1480, 3965, 1530, 1655, 972, 1381, 3296, 3305, 1499, 1500, - 3178, 1502, 1503, 1296, 1504, 2677, 1553, 1554, 3044, 3045, - 1034, 1251, 2557, 1033, 1227, 1072, 2825, 2829, 2830, 2831, - 2826, 2828, 2827, 1688, 2465, 2433, 2223, 2089, 2712, 1429, - 2435, 2066, 1416, 1538, 1540, 1666, 1249, 1559, 1435, 1559, - 1192, 2437, 3335, 1551, 1552, 3106, 1441, 1449, 1440, 1439, - 1451, 1438, 1478, 1479, 1454, 3722, 3723, 3724, 3728, 3726, - 3727, 3729, 3725, 1044, 2780, 1473, 1477, 1477, 1477, 1900, - 4116, 705, 1511, 1512, 3441, 3843, 978, 979, 980, 142, - 142, 142, 1070, 1616, 2436, 3714, 1653, 1654, 1072, 3297, - 1473, 1473, 1649, 1665, 1619, 1498, 1622, 1623, 1501, 2925, - 1662, 1588, 1611, 3237, 1226, 2352, 3425, 1559, 1624, 1625, - 2235, 2236, 2249, 1542, 698, 2661, 1032, 698, 698, 3115, - 3114, 1683, 1684, 1448, 1192, 1787, 1630, 1631, 2784, 1638, - 1698, 2346, 2345, 1635, 2344, 1413, 1639, 1818, 1819, 1836, - 1822, 1909, 3774, 1573, 679, 1567, 3775, 1579, 1837, 2957, - 2959, 2960, 2961, 2958, 1910, 1297, 4012, 1599, 3703, 1724, - 3028, 1844, 3702, 1846, 1585, 1847, 1848, 1849, 1600, 1771, - 1411, 1412, 3708, 3709, 2716, 2717, 2438, 943, 3623, 3180, - 1745, 1746, 1747, 1748, 1749, 1750, 1751, 1752, 1753, 1754, - 1755, 1756, 2343, 1721, 1737, 2443, 1768, 1769, 1908, 2441, - 1034, 2947, 2948, 1033, 4113, 4114, 1192, 932, 2491, 933, - 754, 2535, 1899, 3674, 1687, 3387, 1902, 1879, 1904, 1740, - 1189, 1463, 1674, 1686, 1702, 1677, 1911, 1913, 2359, 1914, - 2370, 1916, 1917, 4134, 1821, 1463, 1587, 2852, 3255, 2141, - 3975, 1925, 1559, 1930, 1931, 1845, 1933, 1522, 673, 1669, - 1189, 2360, 2361, 673, 1263, 1706, 1559, 1707, 1826, 1827, - 1828, 984, 697, 3341, 1954, 697, 697, 1696, 2568, 3337, - 2093, 1842, 696, 1692, 1843, 696, 696, 1559, 1697, 1695, - 1718, 693, 1715, 1522, 693, 693, 1882, 1835, 692, 1720, - 1691, 1856, 1857, 2781, 1032, 4128, 3298, 1694, 1901, 695, - 1227, 2647, 695, 695, 1384, 2434, 2437, 2287, 1981, 936, - 2286, 1878, 1766, 1767, 2853, 1693, 936, 1988, 1988, 1224, - 1522, 2262, 1522, 1522, 3444, 1890, 673, 673, 2946, 2055, - 1925, 2059, 1225, 1955, 1559, 2063, 2064, 1759, 2464, 2536, - 2079, 694, 648, 4122, 694, 694, 1675, 1932, 2369, 1678, - 1679, 1265, 1266, 1267, 1264, 1973, 648, 4110, 1559, 4141, - 940, 4068, 1985, 2536, 1934, 938, 937, 935, 2228, 1263, - 3399, 1980, 938, 937, 1983, 1984, 4036, 3341, 1034, 2324, - 2853, 1033, 2139, 1263, 2676, 673, 1925, 1559, 3310, 2124, - 3308, 673, 673, 673, 709, 709, 1225, 2261, 4033, 1378, - 1227, 2134, 2135, 2136, 2137, 1885, 2117, 3172, 2143, 1850, - 4027, 2010, 1921, 1922, 1923, 223, 4123, 2057, 223, 223, - 4009, 223, 3959, 3958, 1936, 1937, 1938, 1939, 1880, 3170, - 4069, 1109, 1110, 2536, 4069, 3952, 1114, 1991, 3047, 2799, - 3927, 2438, 939, 1886, 2771, 2407, 2433, 2427, 2432, 4037, - 2430, 2435, 2109, 2110, 2666, 1965, 1966, 2095, 1949, 2652, - 1568, 1836, 1836, 2185, 680, 1265, 1266, 1267, 1264, 2434, - 2437, 4034, 1975, 1976, 1836, 1836, 2126, 2127, 2128, 1956, - 1957, 1920, 2204, 2263, 2086, 1929, 2088, 3914, 3863, 2219, - 2123, 1950, 1986, 4010, 1990, 1263, 1263, 2107, 2108, 1945, - 142, 1072, 1951, 2081, 2420, 2436, 2198, 2329, 2263, 1072, - 3862, 3138, 2102, 2228, 1954, 1964, 2080, 4124, 1559, 2217, - 1962, 2151, 3857, 1970, 2154, 2155, 2323, 2157, 1992, 1993, - 2322, 3856, 1974, 1473, 2188, 2294, 1265, 1266, 1267, 1264, - 2210, 2112, 2065, 1450, 1979, 1774, 1969, 1477, 1971, 1972, - 1987, 1989, 2056, 1265, 1266, 1267, 1264, 1545, 3855, 1477, - 3915, 3864, 1978, 3490, 2061, 3854, 3834, 3051, 142, 1649, - 1649, 2211, 2067, 2855, 2679, 2678, 142, 2062, 2670, 2414, - 2193, 1662, 2406, 2393, 2282, 2096, 2085, 3833, 2087, 3807, - 142, 2267, 3556, 142, 142, 2263, 698, 2209, 3452, 2259, - 2146, 3504, 3469, 1069, 2263, 2438, 142, 1071, 2121, 2180, - 2433, 2427, 2432, 2122, 2430, 2435, 1069, 2132, 2129, 2130, - 1071, 3417, 2180, 3413, 3318, 3022, 2422, 1103, 1104, 1105, - 1718, 2263, 2757, 2148, 1851, 1852, 1853, 1854, 2263, 2228, - 1858, 1859, 1860, 1861, 1863, 1864, 1865, 1866, 1867, 1868, - 1869, 1870, 1871, 1872, 1873, 1671, 1314, 2165, 2745, 3739, - 2228, 1102, 2263, 2737, 1099, 2568, 2246, 2247, 1212, 2436, - 914, 915, 916, 917, 3505, 3470, 1174, 1169, 3554, 2692, - 2674, 2186, 2187, 2662, 1954, 914, 915, 916, 917, 2654, - 2197, 2196, 2194, 2200, 3418, 2242, 3414, 3319, 2536, 1296, - 2649, 2111, 2206, 2641, 2208, 2393, 2334, 2335, 1280, 2338, - 3260, 2639, 2341, 1069, 3098, 934, 1549, 1071, 2637, 2635, - 2392, 2325, 2301, 2347, 2300, 2285, 4135, 1550, 2212, 752, - 2276, 1263, 673, 673, 673, 1459, 1263, 2275, 4096, 1460, - 3251, 2317, 2462, 2225, 697, 2265, 2274, 673, 673, 673, - 673, 1570, 1263, 2393, 696, 3898, 2650, 2264, 2227, 1680, - 2389, 3052, 2655, 693, 3806, 2627, 2149, 2250, 1474, 3766, - 2394, 2395, 2396, 2650, 2399, 1522, 2642, 1825, 1824, 3705, - 2243, 695, 2244, 2245, 2640, 3704, 2295, 2296, 2241, 2298, - 2255, 2636, 2636, 2393, 2324, 1263, 2305, 1263, 1263, 787, - 797, 1522, 1547, 1263, 3690, 1825, 1824, 3372, 1759, 788, - 1263, 789, 793, 796, 792, 790, 791, 1505, 2456, 1263, - 3648, 3252, 919, 694, 1096, 1097, 1098, 1101, 2207, 1100, - 2263, 2228, 1681, 3462, 3342, 1778, 3333, 919, 3325, 3320, - 2401, 2402, 1281, 1282, 1283, 1284, 1285, 1286, 1287, 1280, - 2404, 2405, 1288, 1289, 1281, 1282, 1283, 1284, 1285, 1286, - 1287, 1280, 2411, 3919, 794, 3253, 2413, 941, 2415, 3675, - 2463, 3482, 1915, 3480, 3231, 2981, 673, 1988, 1283, 1284, - 1285, 1286, 1287, 1280, 1765, 2540, 2540, 2079, 2540, 1475, - 2980, 1862, 2318, 2320, 2321, 3717, 2823, 795, 2776, 2699, - 1762, 1764, 1761, 2689, 1763, 2653, 1546, 3920, 648, 648, - 2326, 2559, 2621, 3676, 2191, 3483, 1192, 3481, 2416, 1855, - 1459, 2078, 1559, 673, 1460, 2190, 2189, 1265, 1266, 1267, - 1264, 1445, 2426, 1444, 2353, 1194, 673, 2425, 3375, 1778, - 3977, 2256, 1192, 2612, 666, 1264, 1337, 2542, 3716, 2546, - 1598, 1603, 2079, 2149, 3069, 2617, 2917, 2619, 1267, 1264, - 223, 2390, 2915, 2894, 4018, 2408, 1268, 2892, 2419, 1265, - 1266, 1267, 1264, 4131, 1298, 1072, 3649, 3650, 1072, 1072, - 2631, 2400, 3696, 1308, 2563, 2554, 4106, 2555, 1072, 1840, - 1072, 1265, 1266, 1267, 1264, 1316, 142, 4105, 3642, 142, - 142, 2658, 142, 2544, 1841, 2822, 2560, 2561, 1315, 1317, - 2759, 4104, 2760, 2614, 2439, 2440, 3450, 2445, 4102, 2968, - 2672, 2570, 4101, 2217, 2668, 2669, 2548, 2966, 4040, 1069, - 1559, 2964, 1559, 1071, 1559, 1338, 2412, 2953, 4130, 1192, - 4008, 4006, 1070, 3921, 2403, 142, 142, 2691, 2796, 2409, - 1541, 1477, 2410, 3859, 3847, 1070, 3837, 142, 3643, 3826, - 3757, 2576, 1265, 1266, 1267, 1264, 2622, 3678, 2616, 2515, - 2509, 3373, 142, 1559, 1192, 3117, 3451, 3677, 2723, 2967, - 3496, 3484, 1538, 1540, 3449, 1072, 3321, 2965, 3456, 2549, - 3221, 2963, 3094, 2730, 2682, 3064, 3063, 2952, 1559, 2951, - 1265, 1266, 1267, 1264, 2468, 2950, 2949, 2471, 2472, 2473, - 2474, 2475, 2476, 2477, 2718, 2941, 2480, 2481, 2482, 2483, - 2484, 2485, 2486, 2487, 2488, 2489, 2490, 2564, 2492, 2493, - 2494, 2495, 2496, 2935, 2497, 1557, 3131, 2934, 2933, 2731, - 2932, 2567, 2615, 2772, 2734, 2735, 2613, 2778, 2779, 2643, - 2556, 2782, 1297, 1265, 1266, 1267, 1264, 2328, 2686, 2168, - 1557, 1271, 1272, 1273, 1274, 1275, 1276, 1277, 1269, 1192, - 2167, 2166, 2707, 1192, 2162, 1265, 1266, 1267, 1264, 2161, - 1559, 2688, 3619, 1522, 2701, 1265, 1266, 1267, 1264, 2059, - 2721, 2732, 2656, 1603, 2683, 2118, 1905, 2851, 1903, 3130, - 2697, 1672, 1396, 3461, 2858, 3208, 4127, 2859, 4125, 1265, - 1266, 1267, 1264, 2703, 2675, 2703, 747, 2673, 2680, 749, - 1172, 2278, 2664, 4107, 748, 2869, 1265, 1266, 1267, 1264, - 2763, 1265, 1266, 1267, 1264, 1192, 1265, 1266, 1267, 1264, - 2623, 3799, 3800, 2891, 2693, 2694, 1265, 1266, 1267, 1264, - 1192, 1192, 1192, 1988, 3595, 1604, 1192, 3607, 2901, 2902, - 2903, 2904, 1192, 2911, 2719, 2912, 2913, 2709, 2914, 2696, - 2916, 2835, 4094, 1718, 4056, 2836, 4055, 4052, 2862, 1171, - 3983, 2911, 3982, 2865, 1265, 1266, 1267, 1264, 2800, 3787, - 3963, 2277, 2576, 2540, 3906, 2870, 2839, 3653, 3900, 3883, - 2820, 3874, 3851, 3846, 1597, 3845, 3803, 2969, 3789, 3788, - 3758, 2860, 3698, 3657, 2010, 3606, 3646, 648, 1265, 1266, - 1267, 1264, 3628, 3626, 3624, 2059, 3621, 3618, 3617, 1192, - 2079, 2079, 2079, 2079, 2079, 2079, 2802, 3593, 2804, 3591, - 2848, 3564, 1265, 1266, 1267, 1264, 1192, 2079, 2885, 3561, - 2540, 2889, 3558, 2973, 2886, 2889, 3446, 3433, 2975, 3426, - 2801, 3544, 3410, 2896, 3408, 2818, 3030, 3403, 1559, 2886, - 2897, 2898, 3353, 2872, 3331, 2900, 2850, 2842, 3330, 673, - 673, 2907, 8, 3328, 7, 3327, 2857, 2861, 1265, 1266, - 1267, 1264, 3322, 3316, 3315, 3232, 2866, 2867, 3195, 3194, - 3193, 1072, 3405, 2874, 3184, 3182, 2871, 3355, 3134, 3179, - 2887, 3177, 2333, 2893, 3133, 3108, 3105, 2890, 3084, 3951, - 2899, 3062, 3037, 1929, 2962, 2954, 2944, 3018, 2942, 1265, - 1266, 1267, 1264, 2938, 223, 1265, 1266, 1267, 1264, 223, - 2937, 1265, 1266, 1267, 1264, 2936, 2785, 3031, 2998, 2943, - 2777, 2986, 2740, 2741, 2931, 2773, 2809, 2665, 2746, 855, - 854, 1836, 2348, 1836, 2342, 2998, 3079, 2339, 2543, 2171, - 2164, 1893, 3132, 1892, 1730, 1731, 1732, 1733, 1734, 2976, - 1673, 3093, 2868, 1345, 2756, 2077, 2982, 1559, 1341, 4133, - 3100, 2979, 1340, 2999, 3000, 3001, 3002, 3003, 3004, 1265, - 1266, 1267, 1264, 1175, 923, 4082, 3021, 3015, 3019, 3939, - 3020, 1265, 1266, 1267, 1264, 206, 1775, 197, 168, 3935, - 1779, 1780, 1781, 1782, 3783, 3038, 3782, 3771, 3035, 3767, - 1820, 3048, 3620, 2078, 2755, 3602, 3574, 3475, 1830, 3474, - 3053, 142, 3473, 3443, 3422, 3057, 3420, 1623, 3419, 3416, - 672, 672, 2923, 2924, 1882, 3415, 681, 1624, 1625, 3078, - 3409, 1265, 1266, 1267, 1264, 3074, 3407, 2939, 2940, 3388, - 3076, 3378, 1638, 3377, 1630, 1631, 1635, 3364, 3086, 1639, - 3363, 3262, 3087, 3198, 3169, 3136, 3055, 3127, 202, 2884, - 3097, 1883, 3181, 2977, 3054, 2754, 3119, 3118, 3102, 3185, - 3186, 3187, 3189, 3112, 3191, 3192, 3072, 3046, 3077, 3075, - 3070, 2260, 2798, 2638, 1192, 2634, 3088, 3090, 2633, 3089, - 3211, 2306, 1265, 1266, 1267, 1264, 2299, 2293, 2292, 2753, - 3225, 2291, 2290, 2288, 2284, 673, 2283, 2281, 3109, 2272, - 2269, 3096, 2752, 2268, 3110, 2170, 1876, 3129, 3241, 1192, - 3116, 1875, 673, 1874, 1192, 1192, 1265, 1266, 1267, 1264, - 1839, 3125, 3126, 2079, 2389, 1838, 3259, 673, 1829, 1265, - 1266, 1267, 1264, 3122, 1958, 3124, 206, 1571, 1569, 3120, - 3121, 3017, 2751, 4081, 4039, 3171, 3957, 2456, 1335, 1265, - 1266, 1267, 1264, 2750, 3123, 3235, 3934, 3869, 3866, 3286, - 1977, 3289, 3853, 3289, 3289, 1072, 3848, 3752, 1192, 1265, - 1266, 1267, 1264, 3751, 3733, 3715, 3176, 3175, 2749, 681, - 1265, 1266, 1267, 1264, 2748, 3711, 3311, 2835, 3689, 3672, - 3307, 2729, 3575, 2886, 1559, 1559, 3263, 3572, 3196, 3273, - 3275, 3265, 3266, 3542, 3264, 1265, 1266, 1267, 1264, 202, - 3213, 1265, 1266, 1267, 1264, 3197, 3244, 3254, 3541, 1883, - 3538, 3248, 3537, 3503, 1883, 1883, 3500, 3498, 2886, 3464, - 3128, 1618, 142, 2886, 2886, 3312, 3313, 3234, 1629, 3257, - 3243, 673, 1620, 142, 1634, 3246, 3247, 3949, 3211, 3269, - 3258, 1069, 1637, 1626, 1453, 1071, 1557, 1557, 3009, 3285, - 3268, 1522, 2970, 3294, 2059, 2059, 2426, 2747, 2895, 2844, - 2843, 2425, 2837, 2803, 2150, 2758, 2648, 2153, 2558, 2498, - 2156, 3295, 2391, 2158, 3290, 3291, 2362, 2886, 1265, 1266, - 1267, 1264, 3309, 2327, 1265, 1266, 1267, 1264, 1760, 202, - 2131, 3284, 1279, 1278, 1288, 1289, 1281, 1282, 1283, 1284, - 1285, 1286, 1287, 1280, 1919, 3267, 2744, 1889, 1192, 1703, - 1652, 2289, 2723, 1627, 2258, 1395, 3317, 1380, 1376, 1375, - 3376, 3340, 1374, 1373, 4074, 3838, 1372, 710, 1371, 1370, - 3292, 2203, 1369, 1265, 1266, 1267, 1264, 1368, 3143, 3144, - 1367, 1366, 1365, 3356, 3145, 3146, 3147, 3148, 3687, 3149, - 3150, 3151, 3152, 3153, 3154, 3155, 3156, 3157, 3158, 3159, - 3324, 2078, 2078, 2078, 2078, 2078, 2078, 673, 3336, 3338, - 3339, 3332, 3329, 3323, 3349, 3326, 3350, 1364, 2078, 1279, - 1278, 1288, 1289, 1281, 1282, 1283, 1284, 1285, 1286, 1287, - 1280, 2743, 1265, 1266, 1267, 1264, 3357, 1363, 3360, 3361, - 3362, 2742, 1279, 1278, 1288, 1289, 1281, 1282, 1283, 1284, - 1285, 1286, 1287, 1280, 1362, 1361, 1360, 3366, 1265, 1266, - 1267, 1264, 2736, 1359, 1072, 1358, 1357, 2576, 1265, 1266, - 1267, 1264, 1356, 1355, 1354, 2252, 1353, 1072, 1352, 2257, - 2143, 3430, 3389, 1351, 3432, 2726, 1348, 2266, 3434, 1265, - 1266, 1267, 1264, 3440, 3391, 1347, 1346, 3392, 3395, 3411, - 1344, 2270, 3396, 1343, 1342, 142, 1339, 1332, 1331, 1329, - 142, 1328, 1265, 1266, 1267, 1264, 1327, 3947, 2722, 3401, - 1326, 4072, 2698, 1325, 2273, 1324, 1323, 1322, 673, 2059, - 1321, 142, 2280, 1320, 3435, 1319, 3437, 1318, 1313, 3468, - 1312, 1311, 1310, 1309, 142, 1265, 1266, 1267, 1264, 1265, - 1266, 1267, 1264, 1229, 2297, 2540, 2079, 3487, 1773, 2302, - 2303, 2304, 2703, 1173, 2307, 2308, 2309, 2310, 2311, 2312, - 2313, 2314, 2315, 2316, 3945, 3427, 3423, 3539, 3429, 3345, - 3346, 3506, 2398, 2376, 1192, 1265, 1266, 1267, 1264, 1217, - 4023, 3348, 2824, 3286, 2173, 2569, 1228, 1192, 1265, 1266, - 1267, 1264, 3012, 3007, 3354, 3442, 3351, 3013, 3016, 1192, - 3005, 3553, 3445, 3457, 3006, 1559, 3485, 3014, 3010, 2530, - 2531, 125, 3488, 3011, 3976, 67, 3577, 66, 3885, 3489, - 3694, 2663, 3492, 2651, 3578, 1446, 673, 3230, 2059, 1947, - 1948, 3092, 1192, 3536, 3459, 672, 672, 1180, 1942, 1943, - 1944, 672, 3282, 1072, 3283, 1072, 3555, 2466, 1190, 3491, - 1072, 3549, 2919, 3493, 3497, 3367, 3499, 2048, 3529, 2920, - 2921, 2922, 3486, 1612, 223, 3393, 3394, 1557, 2646, 3568, - 2687, 1218, 1668, 3565, 3576, 2668, 2669, 1192, 1072, 1646, - 676, 3548, 3545, 3543, 677, 2349, 678, 2133, 3579, 1223, - 3206, 3552, 3199, 3507, 2873, 2845, 2418, 2385, 1952, 3557, - 1918, 4085, 3560, 1825, 1824, 3562, 3546, 1391, 1392, 3850, - 1070, 3566, 142, 3563, 3567, 3559, 3569, 142, 2907, 3622, - 1389, 1390, 1387, 1388, 2078, 1385, 1386, 3314, 3570, 2512, - 3630, 2505, 2060, 1514, 1513, 1192, 1256, 2192, 3600, 3359, - 3040, 2350, 2205, 1466, 1465, 142, 1437, 1489, 4046, 4044, - 4000, 2998, 3973, 3972, 3970, 1192, 1559, 1559, 3596, 3910, - 3870, 3241, 3597, 3747, 3746, 3684, 3592, 3412, 3385, 3384, - 3586, 3370, 3627, 3665, 3629, 3665, 3369, 1883, 2451, 1883, - 2421, 1670, 2540, 3050, 1463, 3581, 4076, 4075, 4075, 1192, - 3683, 1192, 3659, 3660, 3654, 3431, 2998, 3655, 1883, 1883, - 3686, 3095, 3688, 2856, 3465, 3466, 3467, 2783, 1559, 2378, - 3471, 3472, 2271, 3656, 3638, 3637, 3636, 1399, 1557, 1771, - 1214, 4076, 3713, 3647, 3365, 1189, 673, 3616, 1192, 1192, - 1597, 1481, 1192, 1192, 210, 3, 3670, 75, 3658, 3669, - 3679, 3680, 3685, 3681, 2, 4098, 2188, 3489, 4099, 1, - 3735, 3682, 2764, 1887, 2886, 1393, 3692, 3730, 3536, 3695, - 918, 913, 1535, 1954, 3699, 2550, 3744, 3719, 3720, 3662, - 1771, 3731, 3732, 2113, 1563, 1891, 3633, 920, 3753, 3754, - 2657, 3023, 2660, 3529, 3024, 3691, 3358, 3026, 3741, 2786, - 2224, 1559, 2987, 2503, 2366, 3697, 1279, 1278, 1288, 1289, - 1281, 1282, 1283, 1284, 1285, 1286, 1287, 1280, 1724, 3740, - 1724, 3224, 977, 1831, 3784, 1685, 914, 915, 916, 917, - 3742, 1189, 1206, 1682, 3777, 1205, 1203, 1776, 801, 3736, - 2176, 2971, 3765, 2945, 2518, 3743, 4084, 4119, 4038, 4087, - 3764, 1701, 3760, 785, 3964, 3875, 4042, 2700, 3877, 3763, - 2706, 2229, 1261, 1557, 3071, 3772, 3776, 1004, 984, 842, - 812, 2724, 2725, 3818, 3812, 1330, 3141, 3791, 3139, 2727, - 2728, 2525, 2529, 2530, 2531, 2526, 2534, 2527, 2532, 811, - 1192, 2528, 3454, 2533, 2814, 2733, 3802, 3748, 3043, 3820, - 1005, 3836, 2159, 3842, 3872, 3761, 1613, 1617, 2417, 3829, - 3930, 3693, 3278, 1517, 1072, 2881, 3813, 3814, 3827, 3600, - 1528, 1072, 3815, 1641, 1730, 1883, 3925, 3501, 3612, 3832, - 3610, 3611, 717, 2092, 1192, 646, 1054, 3734, 718, 1559, - 2397, 1565, 3988, 3852, 956, 2375, 3828, 957, 949, 3608, - 2833, 3609, 2832, 1741, 1270, 1758, 3160, 3849, 1278, 1288, - 1289, 1281, 1282, 1283, 1284, 1285, 1286, 1287, 1280, 3810, - 3161, 1307, 756, 3858, 2254, 2811, 3524, 3036, 74, 73, - 3860, 142, 72, 71, 231, 803, 230, 3785, 142, 3651, - 3960, 4089, 782, 3902, 781, 3891, 780, 779, 778, 777, - 2523, 1557, 2524, 3871, 2522, 2520, 2519, 2863, 2864, 1724, - 2525, 2529, 2530, 2531, 2526, 2534, 2527, 2532, 2074, 2073, - 2528, 3911, 2533, 3049, 3368, 2138, 2140, 3239, 2910, 3737, - 2905, 1999, 1997, 3738, 1526, 2446, 3899, 2078, 2453, 1996, - 4020, 3402, 3603, 3940, 3941, 3710, 3905, 2955, 3599, 1941, - 3929, 2442, 2016, 3913, 1192, 2926, 2013, 3922, 2012, 2918, - 3706, 3700, 1559, 2044, 3816, 3954, 3664, 3923, 3508, 3509, - 3961, 3944, 3946, 3948, 3950, 3928, 3867, 3868, 3515, 2384, - 1123, 1119, 1121, 1122, 3962, 1120, 3937, 2708, 3334, 2423, - 3201, 2358, 2357, 3943, 2355, 2354, 1422, 3901, 3984, 3632, - 2574, 2572, 1170, 3953, 3347, 3343, 2184, 3352, 3008, 2201, - 3091, 3969, 3967, 1559, 2075, 2071, 3818, 2070, 1094, 1093, - 1594, 2989, 2513, 3793, 1557, 1946, 950, 2373, 109, 41, - 3981, 122, 108, 4011, 185, 59, 184, 58, 120, 4019, - 182, 57, 4001, 103, 4003, 102, 119, 4004, 4005, 1883, - 3137, 180, 56, 4007, 4002, 142, 215, 214, 217, 216, - 213, 2624, 2625, 212, 1601, 211, 4035, 3974, 3668, 3956, - 908, 44, 4028, 43, 4029, 1557, 4030, 186, 4031, 42, - 4032, 110, 60, 40, 4045, 39, 4047, 4048, 1072, 38, - 34, 4043, 4041, 13, 12, 35, 22, 21, 1689, 3891, - 20, 1192, 4051, 26, 1279, 1278, 1288, 1289, 1281, 1282, - 1283, 1284, 1285, 1286, 1287, 1280, 32, 31, 3861, 135, - 134, 3842, 4064, 30, 133, 132, 131, 130, 3056, 129, - 3058, 4066, 4067, 4065, 4070, 128, 127, 4073, 4083, 4071, - 4091, 29, 19, 4090, 51, 4077, 4078, 4079, 4080, 1883, - 50, 49, 48, 47, 1883, 142, 46, 9, 4103, 123, - 4095, 118, 116, 28, 1192, 117, 114, 2203, 115, 113, - 112, 111, 106, 104, 86, 4108, 3929, 4109, 85, 84, - 4111, 99, 98, 97, 4117, 96, 95, 4121, 94, 92, - 4118, 93, 3912, 1003, 83, 82, 81, 3916, 3917, 80, - 79, 101, 3111, 1515, 1516, 107, 1518, 1519, 105, 1523, - 1524, 1525, 90, 1935, 100, 4129, 91, 89, 1940, 88, - 4062, 87, 78, 77, 4091, 4137, 76, 4090, 4136, 3938, - 3135, 166, 165, 164, 163, 162, 4121, 4138, 160, 161, - 159, 158, 4142, 1574, 1575, 1576, 1577, 1578, 157, 1580, - 1581, 1582, 1583, 1584, 1809, 156, 155, 1590, 1591, 1592, - 1593, 154, 52, 53, 54, 55, 176, 206, 64, 197, - 168, 175, 177, 3513, 179, 181, 178, 183, 1072, 173, - 171, 174, 172, 1724, 170, 69, 198, 11, 121, 18, - 4, 1994, 1995, 189, 0, 0, 0, 199, 206, 64, - 197, 168, 1279, 1278, 1288, 1289, 1281, 1282, 1283, 1284, - 1285, 1286, 1287, 1280, 3525, 0, 140, 198, 0, 0, - 0, 0, 0, 0, 189, 0, 0, 3516, 199, 0, - 0, 126, 0, 0, 0, 0, 0, 0, 3511, 0, - 202, 0, 0, 3533, 3534, 142, 0, 140, 0, 3512, - 2120, 0, 0, 0, 0, 0, 2120, 2120, 2120, 0, - 0, 0, 126, 0, 0, 0, 0, 0, 4053, 4054, - 0, 202, 0, 0, 0, 4058, 4059, 4060, 4061, 0, - 0, 729, 728, 735, 725, 0, 3517, 0, 0, 0, - 0, 0, 0, 0, 732, 733, 3293, 734, 738, 0, - 0, 719, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 743, 0, 0, 0, 0, 0, 148, 149, 0, - 150, 151, 0, 0, 0, 152, 0, 1805, 153, 0, - 0, 0, 0, 0, 1802, 0, 0, 0, 1804, 1801, - 1803, 1807, 1808, 2695, 0, 0, 1806, 0, 148, 149, - 0, 150, 151, 0, 0, 0, 152, 747, 0, 153, - 749, 0, 0, 0, 0, 748, 0, 1279, 1278, 1288, - 1289, 1281, 1282, 1283, 1284, 1285, 1286, 1287, 1280, 0, - 0, 0, 0, 0, 3532, 0, 2432, 0, 0, 0, - 0, 167, 195, 204, 196, 124, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 3521, 0, 0, 194, 188, 187, 0, 0, 0, - 0, 70, 167, 195, 204, 196, 124, 0, 0, 0, - 0, 0, 0, 3518, 3522, 3520, 3519, 1291, 0, 1295, - 0, 0, 0, 0, 0, 194, 188, 187, 0, 0, - 0, 0, 70, 0, 0, 1292, 1294, 1290, 0, 1293, - 1279, 1278, 1288, 1289, 1281, 1282, 1283, 1284, 1285, 1286, - 1287, 1280, 0, 3527, 3528, 0, 0, 0, 0, 0, - 0, 0, 190, 191, 192, 0, 0, 0, 0, 0, - 1812, 1813, 1814, 1815, 1816, 1817, 1810, 1811, 0, 0, - 0, 0, 0, 0, 0, 720, 722, 721, 0, 0, - 0, 0, 0, 190, 191, 192, 727, 0, 0, 0, - 200, 0, 0, 0, 0, 0, 3535, 0, 731, 2251, - 0, 0, 3404, 0, 0, 746, 0, 0, 3514, 3406, - 0, 136, 724, 0, 3526, 193, 714, 137, 0, 0, - 0, 200, 0, 1279, 1278, 1288, 1289, 1281, 1282, 1283, - 1284, 1285, 1286, 1287, 1280, 0, 0, 0, 0, 0, - 0, 3421, 136, 0, 0, 0, 193, 0, 137, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 2045, 0, 0, 0, 0, 2006, 0, 2363, 2364, 2365, + 782, 758, 4100, 784, 4068, 2869, 223, 4092, 1637, 3995, + 1999, 1715, 3578, 3478, 4001, 3289, 3889, 4002, 3994, 3822, + 3255, 767, 3912, 3947, 3869, 3704, 3366, 3507, 3800, 1711, + 760, 3769, 2863, 3860, 3821, 3367, 1775, 1328, 3890, 3636, + 1481, 3738, 812, 3791, 1549, 37, 648, 1183, 2866, 1060, + 3582, 2782, 3870, 3872, 3440, 1487, 3573, 3494, 1944, 1762, + 3650, 2416, 3445, 666, 3657, 672, 672, 1177, 2841, 3645, + 3212, 672, 690, 699, 3264, 1718, 699, 3226, 3618, 3461, + 3188, 3364, 2982, 2983, 3215, 2981, 3432, 208, 2097, 2958, + 68, 2110, 2892, 3284, 1780, 3463, 756, 3273, 2978, 3266, + 2689, 3409, 711, 2207, 2133, 2094, 3051, 3011, 2059, 2561, + 3329, 2525, 2419, 1959, 2808, 2969, 1542, 696, 3193, 2563, + 3235, 3195, 2377, 1638, 1173, 2654, 3191, 707, 3190, 2321, + 2821, 3159, 141, 755, 3099, 2165, 3189, 3272, 2345, 750, + 2449, 1626, 3186, 1622, 2191, 2614, 2632, 2138, 3025, 36, + 2320, 2173, 1873, 940, 2166, 1630, 2174, 2090, 2526, 2797, + 2203, 1446, 2894, 2063, 1627, 2202, 2504, 2792, 2509, 2417, + 981, 1054, 2874, 1989, 2833, 219, 8, 1920, 2376, 1776, + 2366, 1709, 218, 7, 1413, 6, 2559, 2204, 2237, 1589, + 1527, 1121, 759, 1558, 665, 2357, 2412, 1521, 749, 648, + 1769, 1958, 2360, 2726, 768, 1749, 1199, 1700, 2169, 2172, + 27, 1641, 2154, 1659, 1596, 1714, 1615, 647, 704, 681, + 1708, 1919, 1466, 223, 1053, 223, 2533, 1112, 1113, 1916, + 23, 1526, 980, 2060, 672, 1523, 907, 1781, 1580, 24, + 1092, 713, 25, 17, 1019, 205, 1482, 10, 957, 757, + 1490, 209, 978, 16, 2505, 714, 963, 1398, 1005, 710, + 1470, 698, 15, 751, 201, 909, 1374, 1329, 3879, 3788, + 2725, 2211, 14, 910, 668, 1260, 1261, 1262, 1259, 2762, + 2762, 1452, 695, 1260, 1261, 1262, 1259, 2762, 1109, 33, + 971, 2535, 972, 1069, 1260, 1261, 1262, 1259, 3475, 3375, + 3242, 3068, 3067, 2221, 1178, 3609, 3448, 1179, 1087, 3359, + 1108, 684, 1110, 2677, 2620, 2618, 1886, 2617, 2615, 1603, + 1105, 1599, 1104, 207, 667, 691, 2319, 1456, 1393, 1525, + 3847, 952, 929, 677, 694, 1066, 2325, 702, 1367, 3169, + 673, 1449, 1450, 1451, 693, 966, 1105, 962, 1105, 1039, + 927, 2329, 1068, 1887, 1396, 3152, 3154, 1652, 3149, 3151, + 751, 692, 4080, 1504, 1178, 2754, 2752, 1880, 1389, 3571, + 3047, 1601, 3045, 2143, 3855, 206, 64, 197, 168, 3745, + 1088, 3739, 3574, 8, 3365, 2188, 3874, 1323, 2168, 908, + 7, 3128, 2160, 1103, 198, 1260, 1261, 1262, 1259, 2457, + 4106, 189, 3973, 943, 3868, 199, 4077, 3807, 3753, 2756, + 919, 1260, 1261, 1262, 1259, 1404, 3588, 4030, 1258, 3623, + 1222, 2663, 2671, 206, 140, 2208, 3619, 2367, 206, 64, + 197, 168, 928, 3462, 2368, 1636, 1777, 3866, 3775, 126, + 2707, 206, 3751, 206, 3923, 206, 2827, 1566, 202, 1403, + 926, 3808, 752, 1399, 1402, 1082, 1077, 1072, 1076, 1080, + 1401, 929, 1645, 927, 1657, 1070, 206, 1064, 206, 206, + 64, 197, 168, 709, 3126, 1065, 1405, 1438, 968, 2219, + 961, 1421, 206, 1085, 924, 1889, 2976, 1075, 2781, 965, + 964, 1650, 1642, 1668, 1654, 206, 2825, 1034, 1032, 1491, + 1033, 202, 2361, 2777, 2553, 898, 946, 897, 899, 900, + 953, 901, 902, 1649, 202, 3071, 1644, 3059, 1656, 920, + 1257, 1237, 1952, 2554, 1238, 148, 149, 3777, 150, 151, + 960, 140, 2107, 152, 3019, 3020, 153, 3153, 1083, 202, + 3150, 202, 202, 1528, 140, 1530, 2828, 1086, 1682, 970, + 1500, 3018, 1240, 1501, 959, 202, 2074, 2075, 958, 206, + 64, 197, 168, 2779, 945, 3970, 2540, 2073, 202, 2539, + 951, 2633, 2541, 1028, 1073, 1898, 1899, 1250, 2774, 206, + 64, 197, 168, 206, 64, 197, 168, 1478, 1040, 1488, + 1489, 3598, 1973, 3259, 2794, 1717, 3877, 949, 1084, 167, + 195, 204, 196, 124, 2795, 3257, 2778, 1255, 3876, 1063, + 2308, 206, 64, 197, 168, 1036, 1602, 1600, 1062, 2757, + 1420, 2775, 194, 188, 187, 3877, 3961, 1701, 3875, 70, + 1705, 3966, 202, 4005, 4006, 969, 3876, 3960, 1074, 1235, + 1950, 1503, 2658, 3949, 1191, 4072, 4073, 3368, 3975, 3976, + 3875, 3959, 202, 2793, 1704, 4029, 202, 3858, 1815, 3052, + 3368, 950, 3971, 3972, 3949, 3979, 3978, 3977, 3980, 2223, + 672, 672, 3952, 1106, 1107, 3053, 1194, 3054, 1111, 1038, + 3742, 672, 1187, 1486, 202, 1202, 1205, 1485, 1488, 1489, + 190, 191, 192, 167, 195, 204, 196, 3861, 3862, 3863, + 3864, 699, 699, 1236, 672, 1721, 1188, 2800, 2091, 3886, + 1202, 1205, 3382, 2081, 3433, 1081, 194, 2499, 2215, 1230, + 1696, 1242, 1232, 2151, 1243, 2913, 3208, 3628, 200, 3438, + 2970, 696, 696, 696, 2492, 3089, 3597, 2356, 967, 2755, + 2220, 969, 3779, 3780, 3599, 1706, 3761, 2780, 3762, 136, + 1233, 1078, 1245, 193, 1079, 137, 1037, 1392, 1609, 1608, + 1514, 2784, 2776, 3519, 3756, 3968, 1115, 1300, 3087, 1703, + 1252, 3878, 3787, 1422, 1253, 1254, 2668, 956, 193, 1069, + 1239, 1951, 3385, 3093, 2455, 1225, 3572, 1197, 922, 3046, + 2761, 1476, 2105, 2106, 2964, 4004, 1248, 1249, 1180, 2495, + 2496, 1179, 3764, 1179, 2494, 3202, 3784, 1179, 3625, 1502, + 2326, 1217, 138, 3732, 1187, 2209, 2209, 3534, 3413, 3261, + 2209, 1066, 2556, 2502, 3069, 63, 1247, 1888, 664, 1720, + 1719, 923, 3066, 3589, 3763, 3285, 3286, 1226, 1068, 1241, + 3287, 4037, 3288, 2242, 1332, 1105, 2210, 3531, 3213, 2085, + 1105, 1105, 1069, 1105, 1089, 3224, 1071, 1105, 1105, 3236, + 3806, 3974, 3905, 1228, 3900, 697, 2834, 1179, 2226, 2228, + 2229, 3812, 3804, 2222, 65, 1231, 1234, 944, 1246, 942, + 2960, 2487, 1727, 1730, 1731, 1294, 1702, 701, 700, 1204, + 1203, 2974, 2363, 1728, 1066, 1035, 695, 695, 695, 3524, + 3733, 1227, 3160, 1244, 3891, 745, 3907, 2616, 747, 146, + 203, 1068, 147, 746, 1204, 1203, 3479, 169, 908, 3752, + 1206, 3200, 61, 1604, 1395, 3913, 1397, 65, 2812, 2816, + 2817, 2818, 2813, 2815, 2814, 3761, 2753, 3762, 1409, 691, + 691, 691, 1412, 1181, 1175, 1182, 1418, 666, 694, 694, + 694, 1065, 2868, 3624, 1372, 3256, 2672, 1377, 693, 693, + 693, 1214, 1210, 1211, 1651, 169, 3214, 3778, 1216, 1400, + 169, 3206, 925, 1890, 1301, 692, 692, 692, 1229, 3486, + 981, 1488, 1489, 169, 2340, 169, 1465, 169, 139, 45, + 3291, 3764, 1196, 1488, 1489, 62, 697, 1190, 1192, 1195, + 3773, 3885, 3615, 1691, 203, 3421, 1692, 3176, 169, 2422, + 169, 169, 1296, 1297, 1298, 1299, 697, 143, 144, 2490, + 697, 145, 1477, 3763, 169, 3535, 3214, 3203, 3204, 3424, + 2799, 3695, 4095, 3813, 3805, 672, 2556, 169, 1516, 971, + 2498, 972, 672, 3205, 1193, 1484, 648, 648, 697, 3209, + 4112, 3262, 2971, 2467, 2092, 3967, 648, 648, 65, 3090, + 1553, 1553, 2466, 672, 3585, 3757, 3781, 1208, 2435, 3758, + 2864, 2865, 2806, 2868, 2415, 2438, 3684, 3690, 65, 2488, + 2489, 1538, 65, 1537, 699, 1581, 666, 2803, 2804, 1551, + 1551, 1592, 1344, 1345, 1480, 1479, 3993, 3423, 1215, 1463, + 1462, 169, 2802, 2215, 2942, 1555, 223, 3629, 3914, 1461, + 65, 3792, 1560, 3826, 3265, 648, 2227, 2082, 1186, 1174, + 2914, 169, 2915, 2916, 1697, 169, 1029, 3148, 1415, 1416, + 1729, 3201, 2437, 2458, 1425, 1426, 1427, 1428, 1429, 3464, + 1431, 1419, 1291, 2415, 3013, 3015, 1437, 3285, 3286, 3946, + 2421, 1515, 3569, 169, 3371, 2423, 1378, 3705, 3706, 3707, + 3711, 3709, 3710, 3712, 3708, 2697, 1414, 1634, 709, 1524, + 3222, 2432, 1639, 4096, 1547, 1548, 1376, 3281, 2436, 1648, + 1222, 3164, 2664, 3030, 3031, 3290, 2545, 2453, 2212, 2080, + 2057, 1411, 1430, 2425, 1165, 1161, 1162, 1163, 1164, 3320, + 2702, 3092, 2701, 2700, 2698, 1424, 1263, 2767, 1680, 2424, + 1031, 1436, 1435, 1030, 1293, 1434, 1433, 1532, 1534, 1643, + 1041, 3426, 1553, 1303, 1553, 1187, 1655, 1545, 1546, 1658, + 703, 1423, 1445, 975, 976, 977, 1892, 3697, 2911, 696, + 1448, 3410, 696, 696, 1505, 1506, 3825, 3282, 973, 1312, + 1333, 2238, 2648, 2084, 3757, 1690, 2224, 2225, 3871, 1472, + 1473, 1443, 1610, 2771, 1069, 2333, 1492, 1455, 1408, 1495, + 1221, 1069, 2699, 1901, 2341, 1464, 3101, 3100, 3992, 1902, + 1582, 1029, 1474, 2335, 2334, 941, 1605, 1624, 1625, 3607, + 1493, 1494, 1553, 1496, 1497, 3166, 1498, 2332, 970, 1900, + 1647, 1406, 1407, 3223, 1536, 930, 2479, 4093, 4094, 1187, + 1779, 1561, 931, 1675, 1676, 1458, 3691, 3692, 3014, 3658, + 1632, 1763, 1810, 1811, 1828, 1814, 1573, 1629, 2426, 1567, + 1633, 3686, 1593, 1829, 677, 3685, 4108, 934, 4114, 1613, + 3956, 1616, 1617, 1457, 1258, 1579, 1836, 3326, 1838, 2556, + 1839, 1840, 1841, 1618, 1619, 3322, 2359, 1594, 1457, 2943, + 2945, 2946, 2947, 2944, 1222, 1031, 2933, 2934, 1030, 2635, + 1737, 1738, 1739, 1740, 1741, 1742, 1743, 1744, 1745, 1746, + 1747, 1748, 3429, 934, 1713, 2431, 1760, 1761, 933, 2429, + 3372, 1187, 1184, 936, 935, 2276, 3384, 1891, 2275, 1732, + 2348, 1894, 1698, 1896, 695, 1694, 1679, 695, 695, 2217, + 1813, 1903, 1905, 1871, 1906, 1678, 1908, 1909, 2703, 2704, + 1689, 1581, 1666, 2349, 2350, 1669, 1917, 1553, 1922, 1923, + 1661, 1925, 1516, 672, 938, 1837, 2768, 1710, 672, 936, + 935, 1553, 1818, 1819, 1820, 981, 1042, 691, 1945, 1688, + 691, 691, 1684, 1687, 3283, 1834, 694, 1683, 1835, 694, + 694, 1553, 1707, 1686, 1874, 1893, 693, 1516, 1029, 693, + 693, 1258, 690, 2839, 2358, 1848, 1849, 4102, 1712, 1220, + 1827, 4090, 1685, 692, 4048, 2524, 692, 692, 2313, 2395, + 1751, 4016, 1972, 2932, 1184, 1870, 1467, 1471, 1471, 1471, + 3326, 1979, 1979, 2663, 1516, 1667, 1516, 1516, 1670, 1671, + 672, 672, 2452, 2046, 1917, 2050, 937, 3241, 1553, 2054, + 2055, 1467, 1467, 4013, 2070, 4007, 648, 2523, 1260, 1261, + 1262, 1259, 1924, 912, 913, 914, 915, 1758, 1759, 3989, + 648, 1258, 1553, 1591, 3295, 1926, 785, 795, 3293, 3940, + 4103, 1976, 1031, 3158, 4049, 1030, 786, 4049, 787, 791, + 794, 790, 788, 789, 4017, 912, 913, 914, 915, 672, + 1917, 1553, 2001, 2115, 3124, 672, 672, 672, 707, 707, + 1260, 1261, 1262, 1259, 1842, 2125, 2126, 2127, 2128, 3156, + 1877, 2524, 2134, 2840, 1219, 3033, 4014, 3939, 2252, 223, + 2048, 2108, 223, 223, 2786, 223, 1913, 1914, 1915, 2758, + 1872, 792, 3990, 2653, 1564, 3933, 2840, 1982, 1928, 1929, + 1930, 1931, 1258, 2132, 1878, 3908, 2394, 2640, 2208, 1274, + 1273, 1283, 1284, 1276, 1277, 1278, 1279, 1280, 1281, 1282, + 1275, 2086, 1921, 1373, 793, 1828, 1828, 2176, 2278, 2077, + 2251, 2079, 3896, 2100, 2101, 2524, 1937, 1828, 1828, 1912, + 2072, 1716, 2098, 2099, 2193, 2408, 2117, 2118, 2119, 3845, + 1258, 1220, 1699, 2318, 2114, 2068, 1953, 1942, 1941, 3844, + 1260, 1261, 1262, 1259, 1955, 917, 2142, 1981, 2252, 2145, + 2146, 1961, 2148, 1643, 2312, 2311, 1945, 2071, 2217, 2187, + 1553, 2206, 2093, 1947, 1948, 3839, 3838, 1983, 1984, 3837, + 3836, 1722, 1723, 1724, 1725, 1726, 2178, 917, 696, 3816, + 3815, 1960, 3790, 1962, 1963, 3897, 2250, 2422, 2425, 2283, + 3540, 3488, 3454, 2053, 3402, 1069, 1965, 1969, 1069, 2052, + 671, 671, 3846, 2047, 1956, 1957, 679, 1069, 1970, 2199, + 2058, 3398, 2381, 1767, 2200, 1978, 1980, 1771, 1772, 1773, + 1774, 1966, 1967, 2076, 2087, 2078, 2130, 1812, 1260, 1261, + 1262, 1259, 3303, 3008, 2103, 1822, 2744, 1066, 2252, 2252, + 1946, 1977, 2252, 2252, 2732, 2724, 1710, 2679, 2661, 1066, + 2183, 2113, 2217, 2217, 1068, 2252, 2120, 2121, 2056, 2112, + 1444, 2171, 1964, 2556, 3489, 3455, 1068, 3403, 2649, 2642, + 2139, 1766, 1539, 2171, 2248, 1222, 4121, 2637, 1971, 2629, + 2627, 1974, 1975, 2625, 3399, 2623, 4104, 1882, 1875, 3475, + 2380, 2314, 3037, 2842, 2156, 2290, 2666, 1100, 1101, 1102, + 2289, 2665, 2657, 1069, 932, 3304, 2524, 2422, 2425, 2381, + 2274, 2402, 2265, 2235, 2236, 2264, 1275, 1258, 1258, 2177, + 1258, 2381, 2271, 2426, 2263, 2184, 1945, 2186, 2421, 2415, + 2420, 1099, 2418, 2423, 1096, 2189, 2231, 2253, 2256, 2198, + 2197, 2638, 2643, 695, 2410, 1066, 2137, 2216, 2323, 2324, + 2638, 2327, 2630, 2628, 2330, 3437, 2624, 3246, 2624, 2195, + 1672, 2123, 1068, 2381, 2313, 2336, 2201, 3722, 1258, 679, + 1949, 750, 3538, 1258, 672, 672, 672, 2214, 1663, 2254, + 1309, 1207, 1291, 1258, 2306, 1258, 691, 2424, 1258, 672, + 672, 672, 672, 1171, 1166, 694, 1968, 1258, 2230, 2102, + 1817, 1816, 2378, 3084, 4115, 693, 1817, 1816, 2239, 4076, + 2252, 2382, 2383, 2384, 3901, 2387, 1516, 2450, 1751, 2232, + 2217, 1467, 692, 3237, 1468, 3880, 3659, 2284, 2285, 2244, + 2287, 3789, 1453, 1673, 1543, 1471, 1454, 2294, 3749, 3688, + 2615, 3687, 1516, 2426, 2196, 1544, 3673, 1471, 2421, 2415, + 2420, 1499, 2418, 2423, 3467, 1875, 939, 3465, 3902, 2444, + 1875, 1875, 3632, 3447, 2233, 2234, 1843, 1844, 1845, 1846, + 3660, 3327, 1850, 1851, 1852, 1853, 1855, 1856, 1857, 1858, + 1859, 1860, 1861, 1862, 1863, 1864, 1865, 1278, 1279, 1280, + 1281, 1282, 1275, 1541, 1093, 1094, 1095, 1098, 3468, 1097, + 3318, 3466, 2399, 3310, 3238, 1757, 2401, 2424, 2403, 2682, + 2141, 2451, 3305, 2144, 1854, 3217, 2147, 672, 1979, 2149, + 1847, 1754, 1756, 1753, 2967, 1755, 2528, 2528, 2070, 2528, + 2307, 2309, 2310, 1274, 1273, 1283, 1284, 1276, 1277, 1278, + 1279, 1280, 1281, 1282, 1275, 1469, 3357, 2966, 3239, 648, + 648, 2810, 2315, 2763, 1453, 2404, 2676, 1187, 1454, 1260, + 1261, 1262, 1259, 1553, 672, 1260, 1261, 1262, 1259, 2342, + 3360, 2641, 2547, 2686, 2181, 2192, 2619, 672, 2180, 2414, + 2179, 2413, 1440, 1187, 2600, 666, 1439, 1332, 1189, 2609, + 2140, 1592, 2551, 2070, 1770, 3038, 2605, 1540, 2607, 3958, + 1770, 223, 2245, 1597, 1907, 2140, 2716, 2456, 2407, 1259, + 2459, 2460, 2461, 2462, 2463, 2464, 2465, 2388, 1069, 2468, + 2469, 2470, 2471, 2472, 2473, 2474, 2475, 2476, 2477, 2478, + 3700, 2480, 2481, 2482, 2483, 2484, 2532, 2485, 2530, 3699, + 2534, 2645, 3055, 2542, 2903, 2543, 1262, 1259, 2536, 2901, + 2427, 2428, 2880, 2433, 1260, 1261, 1262, 1259, 2878, 2659, + 1066, 3679, 2206, 3358, 2548, 2549, 3633, 3634, 2558, 1553, + 4111, 1553, 1311, 1553, 3626, 1832, 2391, 1068, 1187, 2241, + 2746, 2397, 2747, 2246, 2398, 1310, 2678, 4086, 2610, 4085, + 1833, 2255, 4084, 1260, 1261, 1262, 1259, 2400, 4082, 4081, + 2669, 2604, 2688, 1260, 1261, 1262, 1259, 4020, 2497, 3988, + 3987, 2396, 1553, 1187, 2503, 3903, 2783, 2710, 3841, 3829, + 1532, 1534, 3819, 2537, 1260, 1261, 1262, 1259, 2262, 3809, + 2809, 3435, 2717, 2611, 3627, 4110, 2269, 1553, 3740, 3662, + 3661, 1551, 3480, 3469, 2389, 2390, 1276, 1277, 1278, 1279, + 1280, 1281, 1282, 1275, 2392, 2393, 2705, 2552, 2286, 1260, + 1261, 1262, 1259, 2291, 2292, 2293, 1551, 1597, 2296, 2297, + 2298, 2299, 2300, 2301, 2302, 2303, 2304, 2305, 3117, 2601, + 2603, 2718, 2555, 2954, 3434, 3306, 2765, 2766, 2655, 2656, + 2769, 3436, 2721, 2722, 1273, 1283, 1284, 1276, 1277, 1278, + 1279, 1280, 1281, 1282, 1275, 671, 1176, 3207, 1187, 3080, + 2694, 1535, 1187, 3050, 2952, 3049, 1185, 2937, 2936, 1553, + 2935, 2927, 1516, 1260, 1261, 1262, 1259, 2690, 2050, 2690, + 2921, 2920, 1598, 2675, 2684, 2719, 2838, 2919, 2670, 1213, + 2708, 3116, 2844, 2953, 2267, 2845, 2918, 2950, 2759, 2662, + 2667, 2939, 2660, 1266, 1267, 1268, 1269, 1270, 1271, 1272, + 1264, 2651, 2750, 2855, 1260, 1261, 1262, 1259, 1260, 1261, + 1262, 1259, 2631, 1187, 2951, 2826, 1260, 1261, 1262, 1259, + 3103, 2877, 2680, 2681, 1710, 2544, 2317, 2822, 1187, 1187, + 1187, 1979, 2706, 2159, 1187, 3998, 2887, 2888, 2889, 2890, + 1187, 2897, 2696, 2898, 2899, 2158, 2900, 2949, 2902, 2157, + 3603, 2938, 2153, 2823, 2266, 2152, 2109, 2602, 1897, 2897, + 1069, 1895, 1260, 1261, 1262, 1259, 1664, 1391, 3441, 2001, + 3446, 2528, 2856, 3194, 4107, 2807, 1471, 1260, 1261, 1262, + 1259, 1260, 1261, 1262, 1259, 2955, 3782, 3783, 2683, 2846, + 3591, 2259, 4105, 4087, 2835, 648, 3579, 2796, 1260, 1261, + 1262, 1259, 4074, 2050, 1169, 4036, 4035, 1187, 2070, 2070, + 2070, 2070, 2070, 2070, 2789, 4032, 2791, 1260, 1261, 1262, + 1259, 3964, 3963, 3770, 1187, 2070, 2858, 3944, 2528, 3888, + 1875, 2875, 1875, 1333, 3637, 2875, 2805, 3882, 2788, 3865, + 3590, 3856, 2961, 3833, 3016, 4113, 1553, 797, 142, 2871, + 2829, 1875, 1875, 142, 2837, 8, 3828, 672, 672, 2564, + 2727, 2728, 7, 1168, 2882, 2843, 2733, 1260, 1261, 1262, + 1259, 3528, 3827, 3786, 1921, 3772, 745, 3771, 3741, 747, + 2857, 3681, 2860, 1591, 746, 3641, 2873, 3630, 1260, 1261, + 1262, 1259, 2909, 2910, 2249, 2879, 3390, 2885, 1260, 1261, + 1262, 1259, 3612, 3610, 2876, 3608, 3004, 2925, 2926, 3605, + 3602, 3601, 223, 3577, 3575, 2972, 678, 223, 3120, 142, + 3548, 2917, 3545, 1260, 1261, 1262, 1259, 3542, 2247, 2929, + 2959, 3431, 2644, 2963, 2647, 3418, 3411, 3395, 3393, 1828, + 3388, 1828, 3017, 3338, 3065, 1260, 1261, 1262, 1259, 3316, + 3932, 2854, 3315, 3313, 2673, 3312, 3307, 2968, 3079, 2962, + 3301, 3300, 3218, 3119, 1553, 3181, 2965, 3086, 4062, 3180, + 2847, 3179, 1260, 1261, 1262, 1259, 3170, 3168, 3165, 2852, + 2853, 3163, 2322, 3060, 3034, 3094, 3007, 3006, 3005, 3001, + 1260, 1261, 1262, 1259, 3091, 3072, 3070, 3048, 2687, 3039, + 3023, 2693, 2948, 2940, 3043, 3024, 1260, 1261, 1262, 1259, + 1511, 3021, 2711, 2712, 2930, 2928, 2924, 1522, 2923, 2848, + 2714, 2715, 2922, 2772, 2851, 1874, 1624, 1625, 1069, 2764, + 3064, 2760, 853, 852, 2870, 2652, 2720, 2337, 1559, 2331, + 1069, 2985, 2986, 2987, 2988, 2989, 2990, 2328, 2162, 2155, + 1067, 1885, 1884, 1665, 1632, 142, 1340, 1336, 1335, 3041, + 3040, 1629, 1172, 921, 1633, 1722, 1875, 3083, 3920, 3167, + 142, 3916, 142, 3766, 3088, 3062, 3171, 3172, 3173, 3175, + 3765, 3177, 3178, 1617, 2787, 3754, 3073, 3750, 2564, 3058, + 3056, 1187, 3063, 1618, 1619, 3061, 3604, 3197, 3076, 3075, + 3074, 206, 3586, 197, 168, 3558, 3460, 3211, 3459, 3458, + 3428, 3407, 672, 3405, 3404, 3401, 3096, 3400, 3394, 3392, + 3373, 3363, 3362, 3349, 3082, 3227, 1187, 3102, 3095, 672, + 3118, 1187, 1187, 3348, 3247, 3115, 3184, 3155, 3111, 3112, + 2070, 2378, 3108, 3245, 3110, 3109, 3122, 2849, 2850, 2872, + 3113, 3105, 3104, 3157, 3098, 3032, 2785, 1260, 1261, 1262, + 1259, 2743, 2626, 2444, 2872, 2883, 2884, 2742, 2622, 2621, + 2886, 2741, 3221, 3230, 202, 3271, 2893, 3274, 3234, 3274, + 3274, 2822, 2295, 2288, 1187, 2282, 2281, 2280, 1260, 1261, + 1262, 1259, 3162, 3161, 1260, 1261, 1262, 1259, 1260, 1261, + 1262, 1259, 3296, 2240, 2279, 3254, 3292, 3183, 2277, 2273, + 1553, 1553, 2272, 3199, 3106, 3107, 1069, 2740, 1069, 3249, + 3258, 3260, 2270, 1069, 2261, 3182, 2258, 1274, 1273, 1283, + 1284, 1276, 1277, 1278, 1279, 1280, 1281, 1282, 1275, 1551, + 1551, 2257, 2161, 2984, 1260, 1261, 1262, 1259, 3243, 1868, + 1069, 3220, 1867, 1866, 3297, 3298, 2739, 672, 1066, 1831, + 2984, 3240, 1830, 3244, 3197, 1821, 206, 3820, 3229, 1565, + 1563, 4061, 3270, 3232, 3233, 1068, 4019, 1516, 3253, 3938, + 2050, 2050, 3279, 1260, 1261, 1262, 1259, 1330, 2414, 1875, + 2413, 3915, 3269, 3930, 3129, 3130, 3003, 3670, 3851, 3848, + 3131, 3132, 3133, 3134, 3835, 3135, 3136, 3137, 3138, 3139, + 3140, 3141, 3142, 3143, 3144, 3145, 3275, 3276, 3830, 3294, + 3280, 1274, 1273, 1283, 1284, 1276, 1277, 1278, 1279, 1280, + 1281, 1282, 1275, 3735, 1187, 3734, 3716, 3698, 2710, 202, + 3694, 3672, 3656, 4054, 2738, 3559, 3361, 3556, 3302, 3526, + 708, 1274, 1273, 1283, 1284, 1276, 1277, 1278, 1279, 1280, + 1281, 1282, 1275, 3525, 3522, 3277, 3521, 3487, 3042, 3484, + 3044, 1260, 1261, 1262, 1259, 2737, 3482, 3449, 3323, 3324, + 3114, 3308, 3311, 1612, 3314, 3309, 3928, 2736, 3317, 1875, + 3321, 3926, 2735, 672, 1875, 1623, 1614, 4052, 3334, 1628, + 3335, 1801, 1260, 1261, 1262, 1259, 2192, 1631, 1927, 3340, + 2734, 1620, 1447, 1932, 1260, 1261, 1262, 1259, 3342, 1260, + 1261, 1262, 1259, 2995, 2956, 2881, 3345, 3346, 3347, 1286, + 2831, 1290, 2830, 2824, 2790, 2745, 3252, 1260, 1261, 1262, + 1259, 3097, 2636, 3351, 2546, 2486, 2379, 1287, 1289, 1285, + 2351, 1288, 1274, 1273, 1283, 1284, 1276, 1277, 1278, 1279, + 1280, 1281, 1282, 1275, 2316, 1752, 2134, 3415, 202, 3121, + 3417, 2731, 2122, 1911, 3419, 3248, 1881, 1695, 1646, 3425, + 3250, 3251, 3377, 2730, 3380, 1985, 1986, 3381, 3677, 2729, + 1621, 1390, 1375, 1371, 3396, 3374, 1370, 1369, 1260, 1261, + 1262, 1259, 1368, 1367, 3386, 1366, 1365, 3376, 1364, 1363, + 1260, 1261, 1262, 1259, 672, 2050, 1260, 1261, 1262, 1259, + 1362, 1361, 1360, 2690, 1359, 3453, 3420, 2872, 3422, 2723, + 1358, 3427, 1357, 142, 142, 142, 1067, 1356, 3430, 1355, + 1354, 2528, 2070, 3472, 2111, 1353, 1352, 1351, 1350, 1349, + 2111, 2111, 2111, 3408, 1348, 1347, 1260, 1261, 1262, 1259, + 1346, 1343, 2872, 3412, 1342, 1341, 3490, 2872, 2872, 1187, + 3414, 1339, 1338, 1337, 1797, 1334, 1069, 1327, 3271, 1326, + 1324, 1794, 1187, 1069, 1323, 1796, 1793, 1795, 1799, 1800, + 1322, 1321, 1320, 1798, 1187, 1319, 3537, 1318, 1317, 1316, + 1553, 1315, 1314, 1313, 1308, 3442, 1307, 3523, 2713, 1292, + 3325, 2386, 2709, 3444, 3474, 1306, 1305, 4003, 2685, 1304, + 2872, 672, 1224, 2050, 1170, 3330, 3331, 1187, 2365, 1551, + 3513, 3520, 3341, 1212, 3278, 1260, 1261, 1262, 1259, 1260, + 1261, 1262, 1259, 3333, 3539, 1260, 1261, 1262, 1259, 3477, + 3471, 2811, 3470, 2557, 3481, 2164, 3483, 1223, 3339, 223, + 1765, 3336, 3450, 3451, 3452, 2998, 2993, 3002, 3456, 3457, + 2999, 2991, 1187, 3552, 3549, 3527, 3532, 2992, 125, 2996, + 3529, 3957, 3867, 3563, 2997, 2650, 3536, 1260, 1261, 1262, + 1259, 3561, 67, 66, 3541, 3000, 3544, 2518, 2519, 3562, + 2639, 3543, 3547, 1441, 1939, 1940, 3216, 3267, 3551, 3268, + 3553, 3078, 3550, 2454, 3606, 2905, 3554, 3546, 1934, 1935, + 1936, 3533, 2906, 2907, 2908, 3614, 3352, 3378, 3379, 2039, + 1187, 1606, 2634, 3584, 2655, 2656, 2338, 1804, 1805, 1806, + 1807, 1808, 1809, 1802, 1803, 2674, 3570, 674, 1660, 3560, + 1187, 1553, 1553, 1640, 3580, 2124, 3227, 1218, 1379, 3581, + 3192, 675, 676, 3185, 2859, 2832, 2406, 2374, 1943, 3649, + 2564, 3649, 1910, 3611, 4065, 3613, 1817, 1816, 3832, 3565, + 1551, 1763, 3299, 1187, 3666, 1187, 3638, 3643, 3644, 1386, + 1387, 1384, 1385, 2500, 3669, 3639, 3671, 1382, 1383, 1380, + 1381, 2493, 1553, 2051, 3646, 1508, 1507, 1251, 3620, 3622, + 3621, 3640, 2182, 3631, 3344, 3026, 2339, 2194, 1460, 1459, + 672, 3600, 1187, 1187, 1432, 1483, 1187, 1187, 4026, 4024, + 3654, 1763, 3981, 3642, 3954, 3653, 3953, 3951, 3892, 3852, + 2178, 3474, 3665, 3730, 3718, 3729, 3617, 3667, 3576, 1069, + 3713, 3678, 3397, 3370, 3513, 3520, 3369, 1945, 3702, 3703, + 3727, 3682, 3714, 3715, 3675, 3355, 2439, 2409, 1662, 3354, + 3389, 3473, 3736, 3737, 3036, 1457, 3416, 3391, 4056, 4055, + 3476, 3081, 2770, 2506, 3674, 1553, 2367, 2260, 1394, 2352, + 2353, 2354, 1209, 3724, 3680, 4055, 4056, 3696, 3350, 1184, + 210, 3, 1475, 75, 2369, 2370, 2371, 2372, 3767, 3406, + 3723, 2, 4078, 1562, 1551, 3725, 4079, 678, 3760, 1, + 2513, 2517, 2518, 2519, 2514, 2522, 2515, 2520, 3719, 3748, + 2516, 2751, 2521, 1879, 1388, 916, 911, 1529, 3743, 3747, + 912, 913, 914, 915, 2538, 1184, 2104, 1557, 1883, 3755, + 3759, 918, 981, 142, 3009, 3010, 3343, 3801, 3012, 3795, + 2773, 2213, 2973, 3592, 2491, 3593, 2355, 3774, 3210, 1442, + 974, 1823, 1677, 1187, 1201, 3720, 1674, 1200, 1198, 3721, + 1768, 799, 2167, 2957, 3818, 2931, 3785, 3824, 3726, 4064, + 4099, 4018, 4067, 3793, 1693, 783, 3945, 3857, 3798, 4022, + 3796, 3859, 3746, 3584, 3797, 3491, 2218, 1256, 3057, 1001, + 840, 3810, 810, 1325, 1653, 3127, 3814, 1187, 3530, 3125, + 809, 142, 1553, 3439, 2801, 3731, 3029, 3803, 142, 1002, + 2893, 2150, 1522, 3854, 3744, 1607, 1611, 2405, 1069, 3831, + 3811, 142, 3911, 3676, 142, 142, 3263, 2867, 1635, 3906, + 3485, 1551, 3596, 3840, 3594, 3668, 3595, 142, 715, 2083, + 646, 1051, 3717, 2984, 1875, 2163, 3842, 716, 2385, 3969, + 3834, 954, 2364, 955, 947, 2820, 3884, 2819, 3873, 1559, + 1875, 1733, 1265, 3555, 1750, 3853, 3557, 3146, 3147, 1302, + 754, 2243, 2111, 2798, 3508, 3022, 74, 73, 3663, 3664, + 72, 71, 231, 801, 230, 3893, 3768, 3564, 2984, 1274, + 1273, 1283, 1284, 1276, 1277, 1278, 1279, 1280, 1281, 1282, + 1275, 3123, 3635, 3941, 4069, 3881, 780, 779, 3887, 778, + 777, 776, 775, 3910, 2511, 2512, 1187, 3895, 2510, 2508, + 2507, 2065, 2064, 3035, 1553, 3353, 2129, 3935, 2131, 3225, + 2896, 3904, 3942, 3925, 3927, 3929, 3931, 3909, 3849, 3850, + 2891, 1990, 1988, 3843, 1520, 3943, 2872, 2434, 2441, 3918, + 1987, 4000, 3924, 1551, 3387, 1274, 1273, 1283, 1284, 1276, + 1277, 1278, 1279, 1280, 1281, 1282, 1275, 3587, 3934, 3921, + 3922, 3693, 2941, 3950, 3948, 1553, 3583, 1933, 3801, 1274, + 1273, 1283, 1284, 1276, 1277, 1278, 1279, 1280, 1281, 1282, + 1275, 3962, 2430, 2007, 3991, 2912, 2004, 2003, 2904, 1716, + 3999, 1716, 3689, 3683, 1551, 3982, 3984, 2035, 3799, 3985, + 3986, 3648, 3492, 3493, 3499, 2373, 1120, 3894, 1116, 3983, + 1118, 1119, 3898, 3899, 1117, 2695, 3319, 4015, 2411, 3187, + 2347, 2346, 4008, 2344, 4009, 2343, 4010, 1417, 4011, 3883, + 3965, 4012, 3616, 2562, 4025, 2560, 4027, 4028, 1167, 3332, + 3328, 2175, 4023, 3919, 4021, 3337, 2994, 2190, 3077, 2066, + 3873, 2062, 1187, 4031, 1283, 1284, 1276, 1277, 1278, 1279, + 1280, 1281, 1282, 1275, 1801, 2061, 1091, 1090, 1588, 2975, + 2501, 3776, 3824, 4044, 1938, 948, 2362, 109, 41, 122, + 108, 4046, 4047, 4045, 4050, 185, 59, 4053, 4063, 4051, + 4071, 184, 58, 4070, 120, 4057, 4058, 4059, 4060, 182, + 2513, 2517, 2518, 2519, 2514, 2522, 2515, 2520, 4083, 4075, + 2516, 57, 2521, 103, 1187, 102, 119, 180, 56, 215, + 214, 2836, 217, 216, 213, 4088, 2612, 3910, 4089, 4091, + 2613, 212, 1595, 211, 4097, 3955, 3652, 4101, 3937, 906, + 4098, 2069, 44, 43, 186, 42, 110, 60, 40, 39, + 38, 34, 13, 1509, 1510, 12, 1512, 1513, 35, 1517, + 1518, 1519, 22, 21, 1681, 4109, 20, 26, 32, 31, + 135, 134, 30, 133, 4071, 4117, 132, 4070, 4116, 1716, + 131, 4033, 4034, 130, 129, 128, 4101, 4118, 4038, 4039, + 4040, 4041, 4122, 1568, 1569, 1570, 1571, 1572, 127, 1574, + 1575, 1576, 1577, 1578, 29, 19, 51, 1584, 1585, 1586, + 1587, 50, 49, 48, 47, 46, 142, 9, 123, 142, + 142, 118, 142, 116, 28, 117, 114, 206, 64, 197, + 168, 115, 113, 112, 111, 106, 104, 1797, 86, 85, + 84, 99, 98, 97, 1794, 96, 198, 3497, 1796, 1793, + 1795, 1799, 1800, 189, 95, 94, 1798, 199, 92, 93, + 1000, 83, 1067, 82, 81, 142, 80, 79, 101, 107, + 105, 90, 100, 91, 1067, 89, 140, 88, 87, 78, + 77, 76, 166, 165, 164, 163, 162, 1312, 3509, 160, + 142, 126, 161, 159, 158, 157, 156, 155, 154, 52, + 202, 3500, 3027, 3028, 53, 54, 55, 176, 175, 177, + 179, 181, 3495, 178, 183, 173, 171, 3517, 3518, 174, + 172, 170, 69, 3496, 11, 121, 18, 4, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 727, 726, 733, 723, 0, 989, 0, 0, + 0, 0, 0, 3917, 0, 730, 731, 0, 732, 736, + 3501, 0, 717, 0, 0, 0, 0, 0, 0, 0, + 1292, 0, 741, 0, 0, 0, 0, 148, 149, 0, + 150, 151, 0, 0, 0, 152, 0, 0, 153, 1782, + 1783, 1784, 1785, 1786, 1787, 1788, 1789, 1790, 1791, 1792, + 1804, 1805, 1806, 1807, 1808, 1809, 1802, 1803, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 745, 985, + 986, 747, 0, 0, 0, 0, 746, 0, 0, 0, + 1029, 0, 0, 0, 0, 0, 0, 0, 3996, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 167, 195, 204, 196, 124, 0, 0, 3516, 0, + 2420, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 194, 188, 187, 0, 0, 0, + 0, 70, 0, 0, 0, 3505, 0, 0, 4042, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 3502, 3506, 3504, + 3503, 0, 0, 0, 1031, 0, 3996, 1030, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 190, 191, 192, 0, 0, 3511, 3512, 0, + 1716, 0, 0, 0, 0, 0, 1015, 3219, 0, 0, + 0, 0, 0, 0, 0, 990, 718, 720, 719, 0, + 0, 0, 3996, 0, 3231, 0, 0, 725, 0, 0, + 200, 0, 0, 0, 0, 0, 0, 0, 0, 729, + 0, 0, 992, 0, 0, 0, 744, 0, 0, 0, + 3519, 136, 0, 722, 0, 193, 0, 137, 0, 0, + 0, 0, 3498, 0, 0, 0, 0, 0, 3510, 0, + 727, 726, 733, 723, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 730, 731, 0, 732, 736, 4120, 0, + 717, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 741, 2036, 0, 0, 0, 0, 1997, 1014, 1012, 0, 0, 0, 0, 0, 138, 0, 0, 0, 0, 0, - 0, 0, 2380, 2381, 2382, 2383, 0, 63, 0, 0, - 0, 0, 0, 0, 0, 0, 2048, 2015, 0, 0, - 0, 0, 0, 0, 0, 138, 2049, 2050, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 2125, 63, 2045, - 0, 0, 0, 0, 2006, 0, 0, 0, 0, 726, - 730, 736, 2014, 737, 739, 0, 65, 740, 741, 742, - 0, 0, 744, 745, 3531, 0, 0, 0, 0, 0, - 2022, 0, 0, 0, 0, 2048, 2015, 0, 0, 0, - 0, 0, 0, 0, 0, 2049, 2050, 65, 0, 0, - 0, 146, 203, 0, 147, 1265, 1266, 1267, 1264, 169, + 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, + 0, 0, 0, 0, 1011, 2531, 0, 2039, 2006, 0, + 0, 0, 0, 0, 2116, 0, 984, 2040, 2041, 0, + 0, 0, 2111, 0, 0, 0, 0, 991, 1024, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 724, 728, 734, 2005, 735, 737, 65, 0, 738, 739, + 740, 1020, 0, 742, 743, 0, 0, 0, 0, 0, + 0, 2013, 0, 0, 0, 0, 0, 0, 3515, 0, + 2069, 0, 0, 0, 0, 0, 0, 0, 142, 0, + 0, 146, 203, 0, 147, 0, 0, 1021, 1025, 169, 0, 0, 0, 0, 61, 0, 0, 0, 0, 0, - 0, 2014, 0, 0, 0, 0, 0, 1883, 0, 0, - 0, 0, 146, 203, 0, 147, 0, 0, 0, 2022, - 169, 1528, 0, 1883, 0, 61, 3571, 0, 2038, 3573, - 3530, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3580, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 139, 45, 0, 0, 0, 1809, 0, 62, 1565, 0, - 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 2120, 0, 0, 0, 0, 0, 2038, 0, 143, - 144, 139, 45, 145, 0, 0, 0, 0, 62, 0, - 0, 0, 2005, 2007, 2004, 0, 0, 2001, 723, 0, - 0, 0, 2026, 0, 0, 0, 0, 0, 0, 0, - 143, 144, 0, 2032, 145, 0, 0, 0, 0, 0, - 0, 2017, 0, 2000, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 2020, 2054, 0, 0, 2021, 2023, 2025, - 0, 2027, 2028, 2029, 2033, 2034, 2035, 2037, 2040, 2041, - 2042, 2005, 2876, 2004, 0, 0, 2875, 0, 2030, 2039, - 2031, 2026, 0, 0, 0, 0, 0, 0, 0, 0, - 2009, 0, 2032, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 2020, 2054, 2046, 0, 2021, 2023, 2025, 0, - 2027, 2028, 2029, 2033, 2034, 2035, 2037, 2040, 2041, 2042, - 0, 0, 0, 0, 0, 0, 0, 2030, 2039, 2031, - 0, 0, 0, 0, 0, 0, 2002, 2003, 1805, 2009, - 0, 0, 0, 0, 0, 1802, 0, 0, 0, 1804, - 1801, 1803, 1807, 1808, 2043, 0, 0, 1806, 0, 0, - 0, 0, 0, 2046, 0, 0, 0, 0, 0, 0, - 0, 2019, 0, 0, 0, 0, 0, 0, 2018, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 2002, 2003, 0, 0, 0, - 0, 0, 2036, 0, 0, 0, 0, 0, 0, 0, - 0, 2024, 0, 2043, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 2052, 2051, 0, 0, 0, 0, - 2019, 0, 0, 0, 0, 0, 0, 2018, 0, 1142, - 0, 0, 2849, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 2036, 0, 0, 0, 0, 0, 0, 0, 0, - 2024, 0, 0, 0, 0, 0, 0, 2011, 0, 0, - 0, 0, 0, 2052, 2051, 0, 0, 0, 0, 0, - 1790, 1791, 1792, 1793, 1794, 1795, 1796, 1797, 1798, 1799, - 1800, 1812, 1813, 1814, 1815, 1816, 1817, 1810, 1811, 0, - 0, 0, 1142, 0, 0, 0, 0, 0, 0, 2047, - 0, 0, 2053, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 2011, 0, 0, 729, - 728, 735, 725, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 732, 733, 0, 734, 738, 0, 0, 719, - 0, 0, 1317, 1127, 0, 0, 0, 0, 0, 743, - 0, 0, 0, 0, 0, 1142, 0, 0, 2047, 0, - 0, 2053, 0, 0, 1150, 1154, 1156, 1158, 1160, 1161, - 1163, 0, 1168, 1164, 1165, 1166, 1167, 0, 1145, 1146, - 1147, 1148, 1125, 1126, 1151, 0, 1128, 0, 1130, 1131, - 1132, 1133, 1129, 1134, 1135, 1136, 1137, 1138, 1141, 1143, - 1139, 1140, 1149, 0, 3041, 3042, 0, 0, 0, 3936, - 1153, 1155, 1157, 1159, 1162, 0, 1127, 0, 0, 0, - 1117, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1150, 1154, 1156, - 1158, 1160, 1161, 1163, 0, 1168, 1164, 1165, 1166, 1167, - 1144, 1145, 1146, 1147, 1148, 1125, 1126, 1151, 1809, 1128, - 0, 1130, 1131, 1132, 1133, 1129, 1134, 1135, 1136, 1137, - 1138, 1141, 1143, 1139, 1140, 1149, 0, 2045, 0, 1127, - 0, 0, 0, 1153, 1155, 1157, 1159, 1162, 0, 0, - 0, 0, 0, 0, 0, 4016, 0, 0, 0, 0, - 1150, 1154, 1156, 1158, 1160, 1161, 1163, 0, 1168, 1164, - 1165, 1166, 1167, 2048, 1145, 1146, 1147, 1148, 1125, 1126, - 1151, 0, 1128, 1144, 1130, 1131, 1132, 1133, 1129, 1134, - 1135, 1136, 1137, 1138, 1141, 1143, 1139, 1140, 1149, 0, - 0, 0, 0, 720, 722, 721, 1153, 1155, 1157, 1159, - 1162, 0, 0, 0, 727, 0, 0, 3841, 0, 0, - 0, 0, 0, 0, 0, 0, 731, 2022, 0, 0, - 0, 0, 0, 746, 4016, 0, 0, 0, 0, 0, - 724, 0, 0, 0, 0, 0, 1144, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 2704, 2705, 0, 729, - 728, 735, 725, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 732, 733, 0, 734, 738, 0, 0, 719, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 743, - 4016, 1805, 0, 0, 0, 2038, 0, 0, 1802, 0, - 0, 0, 1804, 1801, 1803, 1807, 1808, 0, 0, 0, - 1806, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3233, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 747, 0, 3245, 749, 0, - 0, 0, 0, 748, 0, 0, 0, 0, 0, 0, - 0, 0, 3261, 0, 0, 0, 4140, 726, 730, 736, - 0, 737, 739, 0, 0, 740, 741, 742, 0, 0, - 744, 745, 0, 0, 0, 0, 0, 0, 0, 2026, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 2032, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1152, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 2020, 2054, 0, 0, 2021, 2023, 2025, 0, 2027, 2028, - 2029, 2033, 2034, 2035, 2037, 2040, 2041, 2042, 0, 0, - 0, 0, 0, 0, 0, 2030, 2039, 2031, 0, 0, - 0, 0, 0, 1790, 1791, 1792, 1793, 1794, 1795, 1796, - 1797, 1798, 1799, 1800, 1812, 1813, 1814, 1815, 1816, 1817, - 1810, 1811, 0, 0, 0, 0, 2120, 0, 0, 0, - 0, 2046, 0, 1152, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 720, 722, 721, 0, 0, 0, 0, - 0, 0, 0, 0, 727, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 731, 0, 0, 0, - 0, 0, 0, 746, 0, 0, 0, 0, 0, 0, - 724, 2043, 0, 0, 0, 0, 723, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1152, 0, 2019, 0, - 0, 0, 0, 0, 0, 2018, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 2036, - 0, 0, 0, 0, 0, 0, 0, 819, 2024, 0, + 0, 0, 0, 0, 0, 0, 0, 1008, 0, 1006, + 1010, 1028, 0, 0, 0, 1007, 1004, 1003, 0, 1009, + 994, 995, 993, 996, 997, 998, 999, 0, 1026, 2029, + 1027, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1022, 1023, 0, 3514, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 3383, 0, + 139, 45, 0, 0, 718, 720, 719, 62, 0, 0, + 0, 5, 0, 0, 0, 725, 0, 0, 1018, 0, + 0, 0, 0, 0, 1017, 0, 0, 729, 0, 143, + 144, 0, 0, 145, 744, 0, 0, 0, 0, 1013, + 0, 722, 0, 1996, 1998, 1995, 0, 0, 1992, 721, + 0, 0, 0, 2017, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2023, 0, 2036, 0, 0, 0, + 0, 1997, 2008, 0, 1991, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2011, 2045, 0, 0, 2012, 2014, + 2016, 0, 2018, 2019, 2020, 2024, 2025, 2026, 2028, 2031, + 2032, 2033, 2039, 2006, 0, 0, 0, 0, 0, 2021, + 2030, 2022, 2040, 2041, 0, 0, 0, 1016, 0, 2111, + 0, 2000, 0, 987, 988, 982, 0, 0, 0, 0, + 983, 0, 0, 0, 0, 0, 0, 0, 2005, 0, + 0, 0, 0, 0, 0, 2037, 0, 142, 0, 0, + 0, 0, 0, 0, 0, 0, 2013, 142, 724, 728, + 734, 0, 735, 737, 0, 0, 738, 739, 740, 0, + 0, 742, 743, 0, 0, 0, 0, 1993, 1994, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 2034, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2010, 0, 0, 0, 0, 0, 0, 2009, + 0, 0, 0, 0, 2029, 0, 2111, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 2027, 0, 0, 0, 0, 0, 0, + 0, 0, 2015, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 2043, 2042, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 2069, 2069, 2069, 2069, 2069, + 2069, 0, 0, 0, 0, 0, 0, 0, 1996, 2862, + 1995, 0, 2069, 2861, 0, 0, 0, 0, 2017, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 2002, 2023, + 0, 0, 0, 0, 0, 0, 0, 721, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 2011, + 2045, 0, 0, 2012, 2014, 2016, 0, 2018, 2019, 2020, + 2024, 2025, 2026, 2028, 2031, 2032, 2033, 0, 0, 0, + 2038, 0, 0, 2044, 2021, 2030, 2022, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 2000, 1139, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 142, + 0, 0, 0, 0, 142, 0, 0, 0, 0, 0, + 2037, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 142, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 3701, 0, 142, 0, 0, + 0, 0, 1993, 1994, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2034, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 2010, 0, 0, + 0, 0, 0, 0, 2009, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1139, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 2027, 0, + 0, 1124, 0, 0, 0, 0, 0, 2015, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2043, 2042, 1147, 1151, 1153, 1155, 1157, 1158, 1160, 0, + 1165, 1161, 1162, 1163, 1164, 0, 1142, 1143, 1144, 1145, + 1122, 1123, 1148, 0, 1125, 0, 1127, 1128, 1129, 1130, + 1126, 1131, 1132, 1133, 1134, 1135, 1138, 1140, 1136, 1137, + 1146, 0, 0, 0, 0, 0, 0, 0, 1150, 1152, + 1154, 1156, 1159, 2002, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2036, 0, 0, 0, 0, 0, 0, 206, 0, + 0, 0, 0, 1067, 0, 142, 0, 0, 1141, 1124, + 142, 1139, 0, 1114, 0, 2038, 0, 2069, 2044, 0, + 0, 3647, 0, 0, 0, 0, 0, 2039, 0, 0, + 1147, 1151, 1153, 1155, 1157, 1158, 1160, 142, 1165, 1161, + 1162, 1163, 1164, 0, 1142, 1143, 1144, 1145, 1122, 1123, + 1148, 0, 1125, 2036, 1127, 1128, 1129, 1130, 1126, 1131, + 1132, 1133, 1134, 1135, 1138, 1140, 1136, 1137, 1146, 0, + 0, 202, 0, 0, 0, 0, 1150, 1152, 1154, 1156, + 1159, 2013, 0, 0, 0, 0, 0, 0, 0, 2039, + 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, 1141, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 3823, 0, 1124, 0, 0, 0, 0, + 0, 0, 0, 2013, 0, 0, 0, 0, 0, 2029, + 0, 0, 0, 0, 2691, 2692, 1147, 1151, 1153, 1155, + 1157, 1158, 1160, 0, 1165, 1161, 1162, 1163, 1164, 0, + 1142, 1143, 1144, 1145, 1122, 1123, 1148, 0, 1125, 0, + 1127, 1128, 1129, 1130, 1126, 1131, 1132, 1133, 1134, 1135, + 1138, 1140, 1136, 1137, 1146, 0, 0, 0, 0, 0, + 0, 0, 1150, 1152, 1154, 1156, 1159, 0, 0, 0, + 0, 2029, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 2017, 0, 0, 0, 0, 0, 0, + 0, 0, 1141, 0, 2023, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2011, 2045, 0, 0, 2012, 2014, + 2016, 0, 2018, 2019, 2020, 2024, 2025, 2026, 2028, 2031, + 2032, 2033, 0, 0, 0, 0, 0, 0, 0, 2021, + 2030, 2022, 0, 0, 0, 2017, 0, 0, 1149, 0, + 0, 0, 0, 0, 0, 0, 2023, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 2037, 2011, 2045, 0, 0, + 2012, 2014, 2016, 0, 2018, 2019, 2020, 2024, 2025, 2026, + 2028, 2031, 2032, 2033, 0, 0, 0, 0, 0, 0, + 0, 2021, 2030, 2022, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 142, 0, 0, 0, 0, 0, 0, + 142, 0, 0, 0, 0, 2034, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 2037, 0, 0, + 0, 0, 2010, 0, 0, 0, 0, 0, 0, 2009, + 0, 0, 0, 0, 0, 0, 1149, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 2069, + 0, 0, 0, 2027, 0, 0, 0, 0, 0, 0, + 0, 0, 2015, 0, 0, 0, 0, 2034, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2010, 0, 0, 0, 0, 0, + 0, 2009, 0, 0, 0, 0, 817, 0, 0, 0, + 0, 0, 0, 0, 0, 401, 0, 0, 532, 565, + 554, 638, 520, 0, 0, 2027, 0, 0, 0, 769, + 0, 0, 0, 336, 2015, 0, 369, 569, 551, 561, + 552, 537, 538, 539, 546, 348, 540, 541, 542, 512, + 543, 513, 544, 545, 808, 568, 519, 434, 385, 586, + 585, 0, 0, 877, 885, 0, 0, 0, 0, 0, + 0, 0, 1149, 873, 0, 0, 142, 0, 761, 0, + 3651, 798, 853, 852, 785, 795, 0, 0, 309, 229, + 514, 634, 516, 515, 786, 0, 787, 791, 794, 790, + 788, 789, 0, 868, 0, 0, 0, 0, 0, 0, + 753, 765, 0, 770, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 762, 763, 0, + 0, 0, 3655, 818, 0, 764, 0, 0, 813, 792, + 796, 0, 0, 0, 0, 299, 441, 460, 310, 429, + 473, 315, 437, 452, 305, 400, 426, 0, 0, 301, + 458, 436, 382, 359, 360, 300, 142, 420, 334, 350, + 331, 398, 793, 816, 820, 330, 891, 814, 468, 303, + 0, 467, 397, 454, 459, 383, 376, 0, 302, 456, + 381, 375, 363, 340, 892, 364, 365, 354, 409, 373, + 410, 355, 387, 386, 388, 0, 0, 0, 0, 0, + 496, 497, 0, 0, 645, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 627, 811, 0, 631, + 0, 470, 0, 0, 875, 0, 0, 0, 440, 0, + 0, 366, 0, 0, 0, 815, 0, 423, 403, 888, + 0, 0, 421, 371, 455, 411, 461, 442, 469, 417, + 412, 294, 443, 333, 384, 306, 308, 328, 335, 337, + 341, 342, 393, 394, 406, 428, 445, 446, 447, 332, + 316, 422, 317, 352, 318, 295, 324, 322, 325, 430, + 326, 297, 407, 451, 0, 347, 418, 379, 298, 378, + 408, 450, 449, 307, 477, 483, 484, 573, 0, 489, + 660, 661, 662, 498, 0, 413, 503, 504, 505, 507, + 508, 509, 510, 574, 591, 558, 528, 491, 582, 525, + 529, 530, 357, 594, 1825, 1824, 1826, 482, 367, 368, + 0, 339, 338, 380, 416, 345, 291, 292, 655, 872, + 399, 596, 629, 630, 521, 142, 887, 867, 869, 870, + 874, 878, 879, 880, 881, 882, 884, 886, 890, 654, + 0, 575, 590, 658, 589, 651, 405, 0, 427, 587, + 534, 0, 579, 553, 0, 580, 549, 584, 0, 523, + 0, 435, 463, 475, 492, 495, 524, 609, 610, 611, + 296, 494, 613, 614, 615, 616, 617, 618, 619, 612, + 889, 556, 533, 559, 474, 536, 535, 0, 0, 570, + 819, 571, 572, 389, 390, 391, 392, 876, 597, 314, + 493, 415, 0, 557, 0, 0, 0, 0, 0, 0, + 0, 0, 562, 563, 560, 663, 0, 620, 621, 0, + 0, 487, 488, 344, 351, 506, 353, 313, 404, 346, + 472, 361, 0, 499, 564, 500, 623, 626, 624, 625, + 396, 356, 358, 431, 362, 372, 419, 471, 402, 424, + 311, 462, 433, 377, 550, 577, 898, 871, 897, 899, + 900, 896, 901, 902, 883, 774, 0, 826, 894, 893, + 895, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 605, 604, 603, 602, 601, 600, 599, 598, + 0, 0, 547, 448, 323, 285, 319, 320, 327, 652, + 649, 453, 653, 781, 293, 527, 370, 0, 414, 343, + 592, 593, 0, 644, 860, 833, 834, 835, 771, 836, + 830, 831, 772, 832, 861, 824, 857, 858, 800, 827, + 837, 856, 838, 859, 862, 863, 903, 904, 844, 828, + 257, 905, 841, 864, 855, 854, 839, 825, 865, 866, + 807, 802, 842, 843, 829, 848, 849, 850, 773, 821, + 822, 823, 845, 846, 803, 804, 805, 806, 0, 0, + 0, 478, 479, 480, 502, 0, 464, 526, 650, 0, + 0, 0, 0, 0, 0, 0, 576, 588, 622, 0, + 632, 633, 635, 637, 851, 639, 438, 439, 0, 847, + 642, 643, 640, 374, 425, 444, 432, 817, 656, 517, + 518, 657, 628, 0, 766, 0, 401, 0, 0, 532, + 565, 554, 638, 520, 0, 0, 0, 0, 0, 0, + 769, 0, 0, 0, 336, 1876, 0, 369, 569, 551, + 561, 552, 537, 538, 539, 546, 348, 540, 541, 542, + 512, 543, 513, 544, 545, 808, 568, 519, 434, 385, + 586, 585, 0, 0, 877, 885, 0, 0, 0, 0, + 0, 0, 0, 0, 873, 0, 2095, 0, 0, 761, + 0, 0, 798, 853, 852, 785, 795, 0, 0, 309, + 229, 514, 634, 516, 515, 786, 0, 787, 791, 794, + 790, 788, 789, 0, 868, 0, 0, 0, 0, 0, + 0, 753, 765, 0, 770, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 762, 763, + 0, 0, 0, 0, 818, 0, 764, 0, 0, 2096, + 792, 796, 0, 0, 0, 0, 299, 441, 460, 310, + 429, 473, 315, 437, 452, 305, 400, 426, 0, 0, + 301, 458, 436, 382, 359, 360, 300, 0, 420, 334, + 350, 331, 398, 793, 816, 820, 330, 891, 814, 468, + 303, 0, 467, 397, 454, 459, 383, 376, 0, 302, + 456, 381, 375, 363, 340, 892, 364, 365, 354, 409, + 373, 410, 355, 387, 386, 388, 0, 0, 0, 0, + 0, 496, 497, 0, 0, 645, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 627, 811, 0, + 631, 0, 470, 0, 0, 875, 0, 0, 0, 440, + 0, 0, 366, 0, 0, 0, 815, 0, 423, 403, + 888, 0, 0, 421, 371, 455, 411, 461, 442, 469, + 417, 412, 294, 443, 333, 384, 306, 308, 328, 335, + 337, 341, 342, 393, 394, 406, 428, 445, 446, 447, + 332, 316, 422, 317, 352, 318, 295, 324, 322, 325, + 430, 326, 297, 407, 451, 0, 347, 418, 379, 298, + 378, 408, 450, 449, 307, 477, 483, 484, 573, 0, + 489, 660, 661, 662, 498, 0, 413, 503, 504, 505, + 507, 508, 509, 510, 574, 591, 558, 528, 491, 582, + 525, 529, 530, 357, 594, 0, 0, 0, 482, 367, + 368, 0, 339, 338, 380, 416, 345, 291, 292, 655, + 872, 399, 596, 629, 630, 521, 0, 887, 867, 869, + 870, 874, 878, 879, 880, 881, 882, 884, 886, 890, + 654, 0, 575, 590, 658, 589, 651, 405, 0, 427, + 587, 534, 0, 579, 553, 0, 580, 549, 584, 0, + 523, 0, 435, 463, 475, 492, 495, 524, 609, 610, + 611, 296, 494, 613, 614, 615, 616, 617, 618, 619, + 612, 889, 556, 533, 559, 474, 536, 535, 0, 0, + 570, 819, 571, 572, 389, 390, 391, 392, 876, 597, + 314, 493, 415, 0, 557, 0, 0, 0, 0, 0, + 0, 0, 0, 562, 563, 560, 663, 0, 620, 621, + 0, 0, 487, 488, 344, 351, 506, 353, 313, 404, + 346, 472, 361, 0, 499, 564, 500, 623, 626, 624, + 625, 396, 356, 358, 431, 362, 372, 419, 471, 402, + 424, 311, 462, 433, 377, 550, 577, 898, 871, 897, + 899, 900, 896, 901, 902, 883, 774, 0, 826, 894, + 893, 895, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 605, 604, 603, 602, 601, 600, 599, + 598, 0, 0, 547, 448, 323, 285, 319, 320, 327, + 652, 649, 453, 653, 781, 293, 527, 370, 0, 414, + 343, 592, 593, 0, 644, 860, 833, 834, 835, 771, + 836, 830, 831, 772, 832, 861, 824, 857, 858, 800, + 827, 837, 856, 838, 859, 862, 863, 903, 904, 844, + 828, 257, 905, 841, 864, 855, 854, 839, 825, 865, + 866, 807, 802, 842, 843, 829, 848, 849, 850, 773, + 821, 822, 823, 845, 846, 803, 804, 805, 806, 0, + 0, 0, 478, 479, 480, 502, 0, 464, 526, 650, + 0, 0, 0, 0, 0, 0, 0, 576, 588, 622, + 0, 632, 633, 635, 637, 851, 639, 438, 439, 0, + 847, 642, 643, 640, 374, 425, 444, 432, 0, 656, + 517, 518, 657, 628, 0, 766, 206, 817, 0, 0, 0, 0, 0, 0, 0, 0, 401, 0, 0, 532, 565, 554, 638, 520, 0, 0, 0, 0, 0, 0, - 771, 0, 3398, 0, 336, 0, 0, 369, 569, 551, + 769, 0, 0, 0, 336, 0, 0, 369, 569, 551, 561, 552, 537, 538, 539, 546, 348, 540, 541, 542, - 512, 543, 513, 544, 545, 810, 568, 519, 434, 385, - 586, 585, 0, 0, 879, 887, 0, 726, 730, 736, - 0, 737, 739, 0, 875, 740, 741, 742, 0, 763, - 744, 745, 800, 855, 854, 787, 797, 0, 0, 309, - 229, 514, 634, 516, 515, 788, 0, 789, 793, 796, - 792, 790, 791, 0, 870, 0, 0, 0, 0, 0, - 0, 755, 767, 0, 772, 0, 3671, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 764, 765, - 0, 0, 0, 0, 820, 0, 766, 0, 0, 815, - 794, 798, 0, 2120, 0, 0, 299, 441, 460, 310, + 512, 543, 513, 544, 545, 1295, 568, 519, 434, 385, + 586, 585, 0, 0, 877, 885, 0, 0, 0, 0, + 0, 0, 0, 0, 873, 0, 0, 0, 0, 761, + 0, 0, 798, 853, 852, 785, 795, 0, 0, 309, + 229, 514, 634, 516, 515, 786, 0, 787, 791, 794, + 790, 788, 789, 0, 868, 0, 0, 0, 0, 0, + 0, 753, 765, 0, 770, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 762, 763, + 0, 0, 0, 0, 818, 0, 764, 0, 0, 813, + 792, 796, 0, 0, 0, 0, 299, 441, 460, 310, 429, 473, 315, 437, 452, 305, 400, 426, 0, 0, 301, 458, 436, 382, 359, 360, 300, 0, 420, 334, - 350, 331, 398, 795, 818, 822, 330, 893, 816, 468, + 350, 331, 398, 793, 816, 820, 330, 891, 814, 468, 303, 0, 467, 397, 454, 459, 383, 376, 0, 302, - 456, 381, 375, 363, 340, 894, 364, 365, 354, 409, + 456, 381, 375, 363, 340, 892, 364, 365, 354, 409, 373, 410, 355, 387, 386, 388, 0, 0, 0, 0, 0, 496, 497, 0, 0, 645, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 723, 627, 813, 0, - 631, 0, 470, 0, 0, 877, 0, 0, 0, 440, - 0, 0, 366, 0, 0, 0, 817, 0, 423, 403, - 890, 2120, 0, 421, 371, 455, 411, 461, 442, 469, + 0, 0, 0, 0, 0, 0, 0, 627, 811, 0, + 631, 0, 470, 0, 0, 875, 0, 0, 0, 440, + 0, 0, 366, 0, 0, 0, 815, 0, 423, 403, + 888, 0, 0, 421, 371, 455, 411, 461, 442, 469, 417, 412, 294, 443, 333, 384, 306, 308, 328, 335, 337, 341, 342, 393, 394, 406, 428, 445, 446, 447, 332, 316, 422, 317, 352, 318, 295, 324, 322, 325, @@ -2389,128 +2526,63 @@ var yyAct = [...]int{ 378, 408, 450, 449, 307, 477, 483, 484, 573, 0, 489, 660, 661, 662, 498, 0, 413, 503, 504, 505, 507, 508, 509, 510, 574, 591, 558, 528, 491, 582, - 525, 529, 530, 357, 594, 1833, 1832, 1834, 482, 367, + 525, 529, 530, 357, 594, 0, 0, 0, 482, 367, 368, 0, 339, 338, 380, 416, 345, 291, 292, 655, - 874, 399, 596, 629, 630, 521, 0, 889, 869, 871, - 872, 876, 880, 881, 882, 883, 884, 886, 888, 892, + 872, 399, 596, 629, 630, 521, 0, 887, 867, 869, + 870, 874, 878, 879, 880, 881, 882, 884, 886, 890, 654, 0, 575, 590, 658, 589, 651, 405, 0, 427, 587, 534, 0, 579, 553, 0, 580, 549, 584, 0, 523, 0, 435, 463, 475, 492, 495, 524, 609, 610, 611, 296, 494, 613, 614, 615, 616, 617, 618, 619, - 612, 891, 556, 533, 559, 474, 536, 535, 0, 0, - 570, 821, 571, 572, 389, 390, 391, 392, 878, 597, + 612, 889, 556, 533, 559, 474, 536, 535, 0, 0, + 570, 819, 571, 572, 389, 390, 391, 392, 876, 597, 314, 493, 415, 0, 557, 0, 0, 0, 0, 0, 0, 0, 0, 562, 563, 560, 663, 0, 620, 621, - 0, 3718, 487, 488, 344, 351, 506, 353, 313, 404, + 0, 0, 487, 488, 344, 351, 506, 353, 313, 404, 346, 472, 361, 0, 499, 564, 500, 623, 626, 624, 625, 396, 356, 358, 431, 362, 372, 419, 471, 402, - 424, 311, 462, 433, 377, 550, 577, 900, 873, 899, - 901, 902, 898, 903, 904, 885, 776, 0, 828, 896, - 895, 897, 0, 0, 0, 0, 0, 0, 0, 0, + 424, 311, 462, 433, 377, 550, 577, 898, 871, 897, + 899, 900, 896, 901, 902, 883, 774, 0, 826, 894, + 893, 895, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 605, 604, 603, 602, 601, 600, 599, 598, 0, 0, 547, 448, 323, 285, 319, 320, 327, - 652, 649, 453, 653, 783, 293, 527, 370, 0, 414, - 343, 592, 593, 0, 644, 862, 835, 836, 837, 773, - 838, 832, 833, 774, 834, 863, 826, 859, 860, 802, - 829, 839, 858, 840, 861, 864, 865, 905, 906, 846, - 830, 257, 907, 843, 866, 857, 856, 841, 827, 867, - 868, 809, 804, 844, 845, 831, 850, 851, 852, 775, - 823, 824, 825, 847, 848, 805, 806, 807, 808, 0, + 652, 649, 453, 653, 781, 293, 527, 370, 169, 414, + 343, 592, 593, 0, 644, 860, 833, 834, 835, 771, + 836, 830, 831, 772, 832, 861, 824, 857, 858, 800, + 827, 837, 856, 838, 859, 862, 863, 903, 904, 844, + 828, 257, 905, 841, 864, 855, 854, 839, 825, 865, + 866, 807, 802, 842, 843, 829, 848, 849, 850, 773, + 821, 822, 823, 845, 846, 803, 804, 805, 806, 0, 0, 0, 478, 479, 480, 502, 0, 464, 526, 650, 0, 0, 0, 0, 0, 0, 0, 576, 588, 622, - 0, 632, 633, 635, 637, 853, 639, 438, 439, 0, - 849, 642, 643, 640, 374, 425, 444, 432, 819, 656, - 517, 518, 657, 628, 0, 768, 0, 401, 0, 0, - 532, 565, 554, 638, 520, 0, 0, 0, 0, 0, - 0, 771, 0, 0, 0, 336, 1884, 0, 369, 569, - 551, 561, 552, 537, 538, 539, 546, 348, 540, 541, - 542, 512, 543, 513, 544, 545, 810, 568, 519, 434, - 385, 586, 585, 0, 0, 879, 887, 0, 0, 0, - 0, 0, 0, 0, 0, 875, 0, 2104, 0, 0, - 763, 0, 0, 800, 855, 854, 787, 797, 0, 0, - 309, 229, 514, 634, 516, 515, 788, 0, 789, 793, - 796, 792, 790, 791, 0, 870, 0, 0, 0, 0, - 0, 0, 755, 767, 0, 772, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 764, - 765, 0, 0, 0, 0, 820, 0, 766, 0, 0, - 2105, 794, 798, 0, 0, 0, 0, 299, 441, 460, - 310, 429, 473, 315, 437, 452, 305, 400, 426, 0, - 0, 301, 458, 436, 382, 359, 360, 300, 0, 420, - 334, 350, 331, 398, 795, 818, 822, 330, 893, 816, - 468, 303, 0, 467, 397, 454, 459, 383, 376, 0, - 302, 456, 381, 375, 363, 340, 894, 364, 365, 354, - 409, 373, 410, 355, 387, 386, 388, 0, 0, 0, - 0, 0, 496, 497, 0, 0, 645, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 627, 813, - 0, 631, 0, 470, 0, 0, 877, 0, 0, 0, - 440, 0, 0, 366, 0, 0, 0, 817, 0, 423, - 403, 890, 0, 0, 421, 371, 455, 411, 461, 442, - 469, 417, 412, 294, 443, 333, 384, 306, 308, 328, - 335, 337, 341, 342, 393, 394, 406, 428, 445, 446, - 447, 332, 316, 422, 317, 352, 318, 295, 324, 322, - 325, 430, 326, 297, 407, 451, 0, 347, 418, 379, - 298, 378, 408, 450, 449, 307, 477, 483, 484, 573, - 0, 489, 660, 661, 662, 498, 0, 413, 503, 504, - 505, 507, 508, 509, 510, 574, 591, 558, 528, 491, - 582, 525, 529, 530, 357, 594, 0, 0, 0, 482, - 367, 368, 0, 339, 338, 380, 416, 345, 291, 292, - 655, 874, 399, 596, 629, 630, 521, 0, 889, 869, - 871, 872, 876, 880, 881, 882, 883, 884, 886, 888, - 892, 654, 0, 575, 590, 658, 589, 651, 405, 0, - 427, 587, 534, 0, 579, 553, 0, 580, 549, 584, - 0, 523, 0, 435, 463, 475, 492, 495, 524, 609, - 610, 611, 296, 494, 613, 614, 615, 616, 617, 618, - 619, 612, 891, 556, 533, 559, 474, 536, 535, 0, - 0, 570, 821, 571, 572, 389, 390, 391, 392, 878, - 597, 314, 493, 415, 0, 557, 0, 0, 0, 0, - 0, 0, 0, 0, 562, 563, 560, 663, 0, 620, - 621, 0, 0, 487, 488, 344, 351, 506, 353, 313, - 404, 346, 472, 361, 0, 499, 564, 500, 623, 626, - 624, 625, 396, 356, 358, 431, 362, 372, 419, 471, - 402, 424, 311, 462, 433, 377, 550, 577, 900, 873, - 899, 901, 902, 898, 903, 904, 885, 776, 0, 828, - 896, 895, 897, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 605, 604, 603, 602, 601, 600, - 599, 598, 0, 0, 547, 448, 323, 285, 319, 320, - 327, 652, 649, 453, 653, 783, 293, 527, 370, 0, - 414, 343, 592, 593, 0, 644, 862, 835, 836, 837, - 773, 838, 832, 833, 774, 834, 863, 826, 859, 860, - 802, 829, 839, 858, 840, 861, 864, 865, 905, 906, - 846, 830, 257, 907, 843, 866, 857, 856, 841, 827, - 867, 868, 809, 804, 844, 845, 831, 850, 851, 852, - 775, 823, 824, 825, 847, 848, 805, 806, 807, 808, - 0, 0, 0, 478, 479, 480, 502, 0, 464, 526, - 650, 0, 0, 0, 0, 0, 0, 0, 576, 588, - 622, 0, 632, 633, 635, 637, 853, 639, 438, 439, - 0, 849, 642, 643, 640, 374, 425, 444, 432, 0, - 656, 517, 518, 657, 628, 0, 768, 206, 819, 0, - 0, 0, 0, 0, 0, 0, 0, 401, 0, 0, + 0, 632, 633, 635, 637, 851, 639, 438, 439, 0, + 847, 642, 643, 640, 374, 425, 444, 432, 817, 656, + 517, 518, 657, 628, 0, 766, 0, 401, 0, 0, 532, 565, 554, 638, 520, 0, 0, 0, 0, 0, - 0, 771, 0, 0, 0, 336, 0, 0, 369, 569, + 0, 769, 0, 0, 0, 336, 4119, 0, 369, 569, 551, 561, 552, 537, 538, 539, 546, 348, 540, 541, - 542, 512, 543, 513, 544, 545, 1300, 568, 519, 434, - 385, 586, 585, 0, 0, 879, 887, 0, 0, 0, - 0, 0, 0, 0, 0, 875, 0, 0, 0, 0, - 763, 0, 0, 800, 855, 854, 787, 797, 0, 0, - 309, 229, 514, 634, 516, 515, 788, 0, 789, 793, - 796, 792, 790, 791, 0, 870, 0, 0, 0, 0, - 0, 0, 755, 767, 0, 772, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 764, - 765, 0, 0, 0, 0, 820, 0, 766, 0, 0, - 815, 794, 798, 0, 0, 0, 0, 299, 441, 460, + 542, 512, 543, 513, 544, 545, 808, 568, 519, 434, + 385, 586, 585, 0, 0, 877, 885, 0, 0, 0, + 0, 0, 0, 0, 0, 873, 0, 0, 0, 0, + 761, 0, 0, 798, 853, 852, 785, 795, 0, 0, + 309, 229, 514, 634, 516, 515, 786, 0, 787, 791, + 794, 790, 788, 789, 0, 868, 0, 0, 0, 0, + 0, 0, 753, 765, 0, 770, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 762, + 763, 0, 0, 0, 0, 818, 0, 764, 0, 0, + 813, 792, 796, 0, 0, 0, 0, 299, 441, 460, 310, 429, 473, 315, 437, 452, 305, 400, 426, 0, 0, 301, 458, 436, 382, 359, 360, 300, 0, 420, - 334, 350, 331, 398, 795, 818, 822, 330, 893, 816, + 334, 350, 331, 398, 793, 816, 820, 330, 891, 814, 468, 303, 0, 467, 397, 454, 459, 383, 376, 0, - 302, 456, 381, 375, 363, 340, 894, 364, 365, 354, + 302, 456, 381, 375, 363, 340, 892, 364, 365, 354, 409, 373, 410, 355, 387, 386, 388, 0, 0, 0, 0, 0, 496, 497, 0, 0, 645, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 627, 813, - 0, 631, 0, 470, 0, 0, 877, 0, 0, 0, - 440, 0, 0, 366, 0, 0, 0, 817, 0, 423, - 403, 890, 0, 0, 421, 371, 455, 411, 461, 442, + 0, 0, 0, 0, 0, 0, 0, 0, 627, 811, + 0, 631, 0, 470, 0, 0, 875, 0, 0, 0, + 440, 0, 0, 366, 0, 0, 0, 815, 0, 423, + 403, 888, 0, 0, 421, 371, 455, 411, 461, 442, 469, 417, 412, 294, 443, 333, 384, 306, 308, 328, 335, 337, 341, 342, 393, 394, 406, 428, 445, 446, 447, 332, 316, 422, 317, 352, 318, 295, 324, 322, @@ -2520,61 +2592,61 @@ var yyAct = [...]int{ 505, 507, 508, 509, 510, 574, 591, 558, 528, 491, 582, 525, 529, 530, 357, 594, 0, 0, 0, 482, 367, 368, 0, 339, 338, 380, 416, 345, 291, 292, - 655, 874, 399, 596, 629, 630, 521, 0, 889, 869, - 871, 872, 876, 880, 881, 882, 883, 884, 886, 888, - 892, 654, 0, 575, 590, 658, 589, 651, 405, 0, + 655, 872, 399, 596, 629, 630, 521, 0, 887, 867, + 869, 870, 874, 878, 879, 880, 881, 882, 884, 886, + 890, 654, 0, 575, 590, 658, 589, 651, 405, 0, 427, 587, 534, 0, 579, 553, 0, 580, 549, 584, 0, 523, 0, 435, 463, 475, 492, 495, 524, 609, 610, 611, 296, 494, 613, 614, 615, 616, 617, 618, - 619, 612, 891, 556, 533, 559, 474, 536, 535, 0, - 0, 570, 821, 571, 572, 389, 390, 391, 392, 878, + 619, 612, 889, 556, 533, 559, 474, 536, 535, 0, + 0, 570, 819, 571, 572, 389, 390, 391, 392, 876, 597, 314, 493, 415, 0, 557, 0, 0, 0, 0, 0, 0, 0, 0, 562, 563, 560, 663, 0, 620, 621, 0, 0, 487, 488, 344, 351, 506, 353, 313, 404, 346, 472, 361, 0, 499, 564, 500, 623, 626, 624, 625, 396, 356, 358, 431, 362, 372, 419, 471, - 402, 424, 311, 462, 433, 377, 550, 577, 900, 873, - 899, 901, 902, 898, 903, 904, 885, 776, 0, 828, - 896, 895, 897, 0, 0, 0, 0, 0, 0, 0, + 402, 424, 311, 462, 433, 377, 550, 577, 898, 871, + 897, 899, 900, 896, 901, 902, 883, 774, 0, 826, + 894, 893, 895, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 605, 604, 603, 602, 601, 600, 599, 598, 0, 0, 547, 448, 323, 285, 319, 320, - 327, 652, 649, 453, 653, 783, 293, 527, 370, 169, - 414, 343, 592, 593, 0, 644, 862, 835, 836, 837, - 773, 838, 832, 833, 774, 834, 863, 826, 859, 860, - 802, 829, 839, 858, 840, 861, 864, 865, 905, 906, - 846, 830, 257, 907, 843, 866, 857, 856, 841, 827, - 867, 868, 809, 804, 844, 845, 831, 850, 851, 852, - 775, 823, 824, 825, 847, 848, 805, 806, 807, 808, + 327, 652, 649, 453, 653, 781, 293, 527, 370, 0, + 414, 343, 592, 593, 0, 644, 860, 833, 834, 835, + 771, 836, 830, 831, 772, 832, 861, 824, 857, 858, + 800, 827, 837, 856, 838, 859, 862, 863, 903, 904, + 844, 828, 257, 905, 841, 864, 855, 854, 839, 825, + 865, 866, 807, 802, 842, 843, 829, 848, 849, 850, + 773, 821, 822, 823, 845, 846, 803, 804, 805, 806, 0, 0, 0, 478, 479, 480, 502, 0, 464, 526, 650, 0, 0, 0, 0, 0, 0, 0, 576, 588, - 622, 0, 632, 633, 635, 637, 853, 639, 438, 439, - 0, 849, 642, 643, 640, 374, 425, 444, 432, 819, - 656, 517, 518, 657, 628, 0, 768, 0, 401, 0, + 622, 0, 632, 633, 635, 637, 851, 639, 438, 439, + 0, 847, 642, 643, 640, 374, 425, 444, 432, 817, + 656, 517, 518, 657, 628, 0, 766, 0, 401, 0, 0, 532, 565, 554, 638, 520, 0, 0, 0, 0, - 0, 0, 771, 0, 0, 0, 336, 4139, 0, 369, + 0, 0, 769, 0, 0, 0, 336, 0, 0, 369, 569, 551, 561, 552, 537, 538, 539, 546, 348, 540, - 541, 542, 512, 543, 513, 544, 545, 810, 568, 519, - 434, 385, 586, 585, 0, 0, 879, 887, 0, 0, - 0, 0, 0, 0, 0, 0, 875, 0, 0, 0, - 0, 763, 0, 0, 800, 855, 854, 787, 797, 0, - 0, 309, 229, 514, 634, 516, 515, 788, 0, 789, - 793, 796, 792, 790, 791, 0, 870, 0, 0, 0, - 0, 0, 0, 755, 767, 0, 772, 0, 0, 0, + 541, 542, 512, 543, 513, 544, 545, 808, 568, 519, + 434, 385, 586, 585, 0, 0, 877, 885, 0, 0, + 0, 0, 0, 0, 0, 0, 873, 0, 0, 0, + 0, 761, 0, 0, 798, 853, 852, 785, 795, 0, + 0, 309, 229, 514, 634, 516, 515, 786, 0, 787, + 791, 794, 790, 788, 789, 0, 868, 0, 0, 0, + 0, 0, 0, 753, 765, 0, 770, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 764, 765, 0, 0, 0, 0, 820, 0, 766, 0, - 0, 815, 794, 798, 0, 0, 0, 0, 299, 441, + 762, 763, 0, 0, 0, 0, 818, 0, 764, 0, + 0, 813, 792, 796, 0, 0, 0, 0, 299, 441, 460, 310, 429, 473, 315, 437, 452, 305, 400, 426, 0, 0, 301, 458, 436, 382, 359, 360, 300, 0, - 420, 334, 350, 331, 398, 795, 818, 822, 330, 893, - 816, 468, 303, 0, 467, 397, 454, 459, 383, 376, - 0, 302, 456, 381, 375, 363, 340, 894, 364, 365, + 420, 334, 350, 331, 398, 793, 816, 820, 330, 891, + 814, 468, 303, 0, 467, 397, 454, 459, 383, 376, + 0, 302, 456, 381, 375, 363, 340, 892, 364, 365, 354, 409, 373, 410, 355, 387, 386, 388, 0, 0, 0, 0, 0, 496, 497, 0, 0, 645, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 627, - 813, 0, 631, 0, 470, 0, 0, 877, 0, 0, - 0, 440, 0, 0, 366, 0, 0, 0, 817, 0, - 423, 403, 890, 0, 0, 421, 371, 455, 411, 461, + 811, 0, 631, 0, 470, 0, 0, 875, 0, 0, + 0, 440, 0, 0, 366, 0, 0, 0, 815, 0, + 423, 403, 888, 3997, 0, 421, 371, 455, 411, 461, 442, 469, 417, 412, 294, 443, 333, 384, 306, 308, 328, 335, 337, 341, 342, 393, 394, 406, 428, 445, 446, 447, 332, 316, 422, 317, 352, 318, 295, 324, @@ -2584,61 +2656,61 @@ var yyAct = [...]int{ 504, 505, 507, 508, 509, 510, 574, 591, 558, 528, 491, 582, 525, 529, 530, 357, 594, 0, 0, 0, 482, 367, 368, 0, 339, 338, 380, 416, 345, 291, - 292, 655, 874, 399, 596, 629, 630, 521, 0, 889, - 869, 871, 872, 876, 880, 881, 882, 883, 884, 886, - 888, 892, 654, 0, 575, 590, 658, 589, 651, 405, + 292, 655, 872, 399, 596, 629, 630, 521, 0, 887, + 867, 869, 870, 874, 878, 879, 880, 881, 882, 884, + 886, 890, 654, 0, 575, 590, 658, 589, 651, 405, 0, 427, 587, 534, 0, 579, 553, 0, 580, 549, 584, 0, 523, 0, 435, 463, 475, 492, 495, 524, 609, 610, 611, 296, 494, 613, 614, 615, 616, 617, - 618, 619, 612, 891, 556, 533, 559, 474, 536, 535, - 0, 0, 570, 821, 571, 572, 389, 390, 391, 392, - 878, 597, 314, 493, 415, 0, 557, 0, 0, 0, + 618, 619, 612, 889, 556, 533, 559, 474, 536, 535, + 0, 0, 570, 819, 571, 572, 389, 390, 391, 392, + 876, 597, 314, 493, 415, 0, 557, 0, 0, 0, 0, 0, 0, 0, 0, 562, 563, 560, 663, 0, 620, 621, 0, 0, 487, 488, 344, 351, 506, 353, 313, 404, 346, 472, 361, 0, 499, 564, 500, 623, 626, 624, 625, 396, 356, 358, 431, 362, 372, 419, - 471, 402, 424, 311, 462, 433, 377, 550, 577, 900, - 873, 899, 901, 902, 898, 903, 904, 885, 776, 0, - 828, 896, 895, 897, 0, 0, 0, 0, 0, 0, + 471, 402, 424, 311, 462, 433, 377, 550, 577, 898, + 871, 897, 899, 900, 896, 901, 902, 883, 774, 0, + 826, 894, 893, 895, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 605, 604, 603, 602, 601, 600, 599, 598, 0, 0, 547, 448, 323, 285, 319, - 320, 327, 652, 649, 453, 653, 783, 293, 527, 370, - 0, 414, 343, 592, 593, 0, 644, 862, 835, 836, - 837, 773, 838, 832, 833, 774, 834, 863, 826, 859, - 860, 802, 829, 839, 858, 840, 861, 864, 865, 905, - 906, 846, 830, 257, 907, 843, 866, 857, 856, 841, - 827, 867, 868, 809, 804, 844, 845, 831, 850, 851, - 852, 775, 823, 824, 825, 847, 848, 805, 806, 807, - 808, 0, 0, 0, 478, 479, 480, 502, 0, 464, + 320, 327, 652, 649, 453, 653, 781, 293, 527, 370, + 0, 414, 343, 592, 593, 0, 644, 860, 833, 834, + 835, 771, 836, 830, 831, 772, 832, 861, 824, 857, + 858, 800, 827, 837, 856, 838, 859, 862, 863, 903, + 904, 844, 828, 257, 905, 841, 864, 855, 854, 839, + 825, 865, 866, 807, 802, 842, 843, 829, 848, 849, + 850, 773, 821, 822, 823, 845, 846, 803, 804, 805, + 806, 0, 0, 0, 478, 479, 480, 502, 0, 464, 526, 650, 0, 0, 0, 0, 0, 0, 0, 576, - 588, 622, 0, 632, 633, 635, 637, 853, 639, 438, - 439, 0, 849, 642, 643, 640, 374, 425, 444, 432, - 819, 656, 517, 518, 657, 628, 0, 768, 0, 401, + 588, 622, 0, 632, 633, 635, 637, 851, 639, 438, + 439, 0, 847, 642, 643, 640, 374, 425, 444, 432, + 817, 656, 517, 518, 657, 628, 0, 766, 0, 401, 0, 0, 532, 565, 554, 638, 520, 0, 0, 0, - 0, 0, 0, 771, 0, 0, 0, 336, 0, 0, + 0, 0, 0, 769, 0, 0, 0, 336, 1876, 0, 369, 569, 551, 561, 552, 537, 538, 539, 546, 348, - 540, 541, 542, 512, 543, 513, 544, 545, 810, 568, - 519, 434, 385, 586, 585, 0, 0, 879, 887, 0, - 0, 0, 0, 0, 0, 0, 0, 875, 0, 0, - 0, 0, 763, 0, 0, 800, 855, 854, 787, 797, - 0, 0, 309, 229, 514, 634, 516, 515, 788, 0, - 789, 793, 796, 792, 790, 791, 0, 870, 0, 0, - 0, 0, 0, 0, 755, 767, 0, 772, 0, 0, + 540, 541, 542, 512, 543, 513, 544, 545, 808, 568, + 519, 434, 385, 586, 585, 0, 0, 877, 885, 0, + 0, 0, 0, 0, 0, 0, 0, 873, 0, 0, + 0, 0, 761, 0, 0, 798, 853, 852, 785, 795, + 0, 0, 309, 229, 514, 634, 516, 515, 786, 0, + 787, 791, 794, 790, 788, 789, 0, 868, 0, 0, + 0, 0, 0, 0, 753, 765, 0, 770, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 764, 765, 0, 0, 0, 0, 820, 0, 766, - 0, 0, 815, 794, 798, 0, 0, 0, 0, 299, + 0, 762, 763, 0, 0, 0, 0, 818, 0, 764, + 0, 0, 813, 792, 796, 0, 0, 0, 0, 299, 441, 460, 310, 429, 473, 315, 437, 452, 305, 400, 426, 0, 0, 301, 458, 436, 382, 359, 360, 300, - 0, 420, 334, 350, 331, 398, 795, 818, 822, 330, - 893, 816, 468, 303, 0, 467, 397, 454, 459, 383, - 376, 0, 302, 456, 381, 375, 363, 340, 894, 364, + 0, 420, 334, 350, 331, 398, 793, 816, 820, 330, + 891, 814, 468, 303, 0, 467, 397, 454, 459, 383, + 376, 0, 302, 456, 381, 375, 363, 340, 892, 364, 365, 354, 409, 373, 410, 355, 387, 386, 388, 0, 0, 0, 0, 0, 496, 497, 0, 0, 645, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 627, 813, 0, 631, 0, 470, 0, 0, 877, 0, - 0, 0, 440, 0, 0, 366, 0, 0, 0, 817, - 0, 423, 403, 890, 4017, 0, 421, 371, 455, 411, + 627, 811, 0, 631, 0, 470, 0, 0, 875, 0, + 0, 0, 440, 0, 0, 366, 0, 0, 0, 815, + 0, 423, 403, 888, 0, 0, 421, 371, 455, 411, 461, 442, 469, 417, 412, 294, 443, 333, 384, 306, 308, 328, 335, 337, 341, 342, 393, 394, 406, 428, 445, 446, 447, 332, 316, 422, 317, 352, 318, 295, @@ -2648,61 +2720,61 @@ var yyAct = [...]int{ 503, 504, 505, 507, 508, 509, 510, 574, 591, 558, 528, 491, 582, 525, 529, 530, 357, 594, 0, 0, 0, 482, 367, 368, 0, 339, 338, 380, 416, 345, - 291, 292, 655, 874, 399, 596, 629, 630, 521, 0, - 889, 869, 871, 872, 876, 880, 881, 882, 883, 884, - 886, 888, 892, 654, 0, 575, 590, 658, 589, 651, + 291, 292, 655, 872, 399, 596, 629, 630, 521, 0, + 887, 867, 869, 870, 874, 878, 879, 880, 881, 882, + 884, 886, 890, 654, 0, 575, 590, 658, 589, 651, 405, 0, 427, 587, 534, 0, 579, 553, 0, 580, 549, 584, 0, 523, 0, 435, 463, 475, 492, 495, 524, 609, 610, 611, 296, 494, 613, 614, 615, 616, - 617, 618, 619, 612, 891, 556, 533, 559, 474, 536, - 535, 0, 0, 570, 821, 571, 572, 389, 390, 391, - 392, 878, 597, 314, 493, 415, 0, 557, 0, 0, + 617, 618, 619, 612, 889, 556, 533, 559, 474, 536, + 535, 0, 0, 570, 819, 571, 572, 389, 390, 391, + 392, 876, 597, 314, 493, 415, 0, 557, 0, 0, 0, 0, 0, 0, 0, 0, 562, 563, 560, 663, 0, 620, 621, 0, 0, 487, 488, 344, 351, 506, 353, 313, 404, 346, 472, 361, 0, 499, 564, 500, 623, 626, 624, 625, 396, 356, 358, 431, 362, 372, 419, 471, 402, 424, 311, 462, 433, 377, 550, 577, - 900, 873, 899, 901, 902, 898, 903, 904, 885, 776, - 0, 828, 896, 895, 897, 0, 0, 0, 0, 0, + 898, 871, 897, 899, 900, 896, 901, 902, 883, 774, + 0, 826, 894, 893, 895, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 605, 604, 603, 602, 601, 600, 599, 598, 0, 0, 547, 448, 323, 285, - 319, 320, 327, 652, 649, 453, 653, 783, 293, 527, - 370, 0, 414, 343, 592, 593, 0, 644, 862, 835, - 836, 837, 773, 838, 832, 833, 774, 834, 863, 826, - 859, 860, 802, 829, 839, 858, 840, 861, 864, 865, - 905, 906, 846, 830, 257, 907, 843, 866, 857, 856, - 841, 827, 867, 868, 809, 804, 844, 845, 831, 850, - 851, 852, 775, 823, 824, 825, 847, 848, 805, 806, - 807, 808, 0, 0, 0, 478, 479, 480, 502, 0, + 319, 320, 327, 652, 649, 453, 653, 781, 293, 527, + 370, 0, 414, 343, 592, 593, 0, 644, 860, 833, + 834, 835, 771, 836, 830, 831, 772, 832, 861, 824, + 857, 858, 800, 827, 837, 856, 838, 859, 862, 863, + 903, 904, 844, 828, 257, 905, 841, 864, 855, 854, + 839, 825, 865, 866, 807, 802, 842, 843, 829, 848, + 849, 850, 773, 821, 822, 823, 845, 846, 803, 804, + 805, 806, 0, 0, 0, 478, 479, 480, 502, 0, 464, 526, 650, 0, 0, 0, 0, 0, 0, 0, - 576, 588, 622, 0, 632, 633, 635, 637, 853, 639, - 438, 439, 0, 849, 642, 643, 640, 374, 425, 444, - 432, 819, 656, 517, 518, 657, 628, 0, 768, 0, + 576, 588, 622, 0, 632, 633, 635, 637, 851, 639, + 438, 439, 0, 847, 642, 643, 640, 374, 425, 444, + 432, 817, 656, 517, 518, 657, 628, 0, 766, 0, 401, 0, 0, 532, 565, 554, 638, 520, 0, 0, - 0, 0, 0, 0, 771, 0, 0, 0, 336, 1884, + 0, 0, 0, 0, 769, 0, 0, 0, 336, 0, 0, 369, 569, 551, 561, 552, 537, 538, 539, 546, - 348, 540, 541, 542, 512, 543, 513, 544, 545, 810, - 568, 519, 434, 385, 586, 585, 0, 0, 879, 887, - 0, 0, 0, 0, 0, 0, 0, 0, 875, 0, - 0, 0, 0, 763, 0, 0, 800, 855, 854, 787, - 797, 0, 0, 309, 229, 514, 634, 516, 515, 788, - 0, 789, 793, 796, 792, 790, 791, 0, 870, 0, - 0, 0, 0, 0, 0, 755, 767, 0, 772, 0, + 348, 540, 541, 542, 512, 543, 513, 544, 545, 808, + 568, 519, 434, 385, 586, 585, 0, 0, 877, 885, + 0, 0, 0, 0, 0, 0, 0, 0, 873, 0, + 0, 0, 0, 761, 0, 0, 798, 853, 852, 785, + 795, 0, 0, 309, 229, 514, 634, 516, 515, 786, + 0, 787, 791, 794, 790, 788, 789, 0, 868, 0, + 0, 0, 0, 0, 0, 753, 765, 0, 770, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 764, 765, 0, 0, 0, 0, 820, 0, - 766, 0, 0, 815, 794, 798, 0, 0, 0, 0, + 0, 0, 762, 763, 1590, 0, 0, 0, 818, 0, + 764, 0, 0, 813, 792, 796, 0, 0, 0, 0, 299, 441, 460, 310, 429, 473, 315, 437, 452, 305, 400, 426, 0, 0, 301, 458, 436, 382, 359, 360, - 300, 0, 420, 334, 350, 331, 398, 795, 818, 822, - 330, 893, 816, 468, 303, 0, 467, 397, 454, 459, - 383, 376, 0, 302, 456, 381, 375, 363, 340, 894, + 300, 0, 420, 334, 350, 331, 398, 793, 816, 820, + 330, 891, 814, 468, 303, 0, 467, 397, 454, 459, + 383, 376, 0, 302, 456, 381, 375, 363, 340, 892, 364, 365, 354, 409, 373, 410, 355, 387, 386, 388, 0, 0, 0, 0, 0, 496, 497, 0, 0, 645, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 627, 813, 0, 631, 0, 470, 0, 0, 877, + 0, 627, 811, 0, 631, 0, 470, 0, 0, 875, 0, 0, 0, 440, 0, 0, 366, 0, 0, 0, - 817, 0, 423, 403, 890, 0, 0, 421, 371, 455, + 815, 0, 423, 403, 888, 0, 0, 421, 371, 455, 411, 461, 442, 469, 417, 412, 294, 443, 333, 384, 306, 308, 328, 335, 337, 341, 342, 393, 394, 406, 428, 445, 446, 447, 332, 316, 422, 317, 352, 318, @@ -2712,126 +2784,126 @@ var yyAct = [...]int{ 413, 503, 504, 505, 507, 508, 509, 510, 574, 591, 558, 528, 491, 582, 525, 529, 530, 357, 594, 0, 0, 0, 482, 367, 368, 0, 339, 338, 380, 416, - 345, 291, 292, 655, 874, 399, 596, 629, 630, 521, - 0, 889, 869, 871, 872, 876, 880, 881, 882, 883, - 884, 886, 888, 892, 654, 0, 575, 590, 658, 589, + 345, 291, 292, 655, 872, 399, 596, 629, 630, 521, + 0, 887, 867, 869, 870, 874, 878, 879, 880, 881, + 882, 884, 886, 890, 654, 0, 575, 590, 658, 589, 651, 405, 0, 427, 587, 534, 0, 579, 553, 0, 580, 549, 584, 0, 523, 0, 435, 463, 475, 492, 495, 524, 609, 610, 611, 296, 494, 613, 614, 615, - 616, 617, 618, 619, 612, 891, 556, 533, 559, 474, - 536, 535, 0, 0, 570, 821, 571, 572, 389, 390, - 391, 392, 878, 597, 314, 493, 415, 0, 557, 0, + 616, 617, 618, 619, 612, 889, 556, 533, 559, 474, + 536, 535, 0, 0, 570, 819, 571, 572, 389, 390, + 391, 392, 876, 597, 314, 493, 415, 0, 557, 0, 0, 0, 0, 0, 0, 0, 0, 562, 563, 560, 663, 0, 620, 621, 0, 0, 487, 488, 344, 351, 506, 353, 313, 404, 346, 472, 361, 0, 499, 564, 500, 623, 626, 624, 625, 396, 356, 358, 431, 362, 372, 419, 471, 402, 424, 311, 462, 433, 377, 550, - 577, 900, 873, 899, 901, 902, 898, 903, 904, 885, - 776, 0, 828, 896, 895, 897, 0, 0, 0, 0, + 577, 898, 871, 897, 899, 900, 896, 901, 902, 883, + 774, 0, 826, 894, 893, 895, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 605, 604, 603, 602, 601, 600, 599, 598, 0, 0, 547, 448, 323, - 285, 319, 320, 327, 652, 649, 453, 653, 783, 293, - 527, 370, 0, 414, 343, 592, 593, 0, 644, 862, - 835, 836, 837, 773, 838, 832, 833, 774, 834, 863, - 826, 859, 860, 802, 829, 839, 858, 840, 861, 864, - 865, 905, 906, 846, 830, 257, 907, 843, 866, 857, - 856, 841, 827, 867, 868, 809, 804, 844, 845, 831, - 850, 851, 852, 775, 823, 824, 825, 847, 848, 805, - 806, 807, 808, 0, 0, 0, 478, 479, 480, 502, + 285, 319, 320, 327, 652, 649, 453, 653, 781, 293, + 527, 370, 0, 414, 343, 592, 593, 0, 644, 860, + 833, 834, 835, 771, 836, 830, 831, 772, 832, 861, + 824, 857, 858, 800, 827, 837, 856, 838, 859, 862, + 863, 903, 904, 844, 828, 257, 905, 841, 864, 855, + 854, 839, 825, 865, 866, 807, 802, 842, 843, 829, + 848, 849, 850, 773, 821, 822, 823, 845, 846, 803, + 804, 805, 806, 0, 0, 0, 478, 479, 480, 502, 0, 464, 526, 650, 0, 0, 0, 0, 0, 0, - 0, 576, 588, 622, 0, 632, 633, 635, 637, 853, - 639, 438, 439, 0, 849, 642, 643, 640, 374, 425, - 444, 432, 819, 656, 517, 518, 657, 628, 0, 768, - 0, 401, 0, 0, 532, 565, 554, 638, 520, 0, - 0, 0, 0, 0, 0, 771, 0, 0, 0, 336, - 0, 0, 369, 569, 551, 561, 552, 537, 538, 539, - 546, 348, 540, 541, 542, 512, 543, 513, 544, 545, - 810, 568, 519, 434, 385, 586, 585, 0, 0, 879, - 887, 0, 0, 0, 0, 0, 0, 0, 0, 875, - 0, 0, 0, 0, 763, 0, 0, 800, 855, 854, - 787, 797, 0, 0, 309, 229, 514, 634, 516, 515, - 788, 0, 789, 793, 796, 792, 790, 791, 0, 870, - 0, 0, 0, 0, 0, 0, 755, 767, 0, 772, + 0, 576, 588, 622, 0, 632, 633, 635, 637, 851, + 639, 438, 439, 0, 847, 642, 643, 640, 374, 425, + 444, 432, 0, 656, 517, 518, 657, 628, 817, 766, + 0, 2268, 0, 0, 0, 0, 0, 401, 0, 0, + 532, 565, 554, 638, 520, 0, 0, 0, 0, 0, + 0, 769, 0, 0, 0, 336, 0, 0, 369, 569, + 551, 561, 552, 537, 538, 539, 546, 348, 540, 541, + 542, 512, 543, 513, 544, 545, 808, 568, 519, 434, + 385, 586, 585, 0, 0, 877, 885, 0, 0, 0, + 0, 0, 0, 0, 0, 873, 0, 0, 0, 0, + 761, 0, 0, 798, 853, 852, 785, 795, 0, 0, + 309, 229, 514, 634, 516, 515, 786, 0, 787, 791, + 794, 790, 788, 789, 0, 868, 0, 0, 0, 0, + 0, 0, 753, 765, 0, 770, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 762, + 763, 0, 0, 0, 0, 818, 0, 764, 0, 0, + 813, 792, 796, 0, 0, 0, 0, 299, 441, 460, + 310, 429, 473, 315, 437, 452, 305, 400, 426, 0, + 0, 301, 458, 436, 382, 359, 360, 300, 0, 420, + 334, 350, 331, 398, 793, 816, 820, 330, 891, 814, + 468, 303, 0, 467, 397, 454, 459, 383, 376, 0, + 302, 456, 381, 375, 363, 340, 892, 364, 365, 354, + 409, 373, 410, 355, 387, 386, 388, 0, 0, 0, + 0, 0, 496, 497, 0, 0, 645, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 627, 811, + 0, 631, 0, 470, 0, 0, 875, 0, 0, 0, + 440, 0, 0, 366, 0, 0, 0, 815, 0, 423, + 403, 888, 0, 0, 421, 371, 455, 411, 461, 442, + 469, 417, 412, 294, 443, 333, 384, 306, 308, 328, + 335, 337, 341, 342, 393, 394, 406, 428, 445, 446, + 447, 332, 316, 422, 317, 352, 318, 295, 324, 322, + 325, 430, 326, 297, 407, 451, 0, 347, 418, 379, + 298, 378, 408, 450, 449, 307, 477, 483, 484, 573, + 0, 489, 660, 661, 662, 498, 0, 413, 503, 504, + 505, 507, 508, 509, 510, 574, 591, 558, 528, 491, + 582, 525, 529, 530, 357, 594, 0, 0, 0, 482, + 367, 368, 0, 339, 338, 380, 416, 345, 291, 292, + 655, 872, 399, 596, 629, 630, 521, 0, 887, 867, + 869, 870, 874, 878, 879, 880, 881, 882, 884, 886, + 890, 654, 0, 575, 590, 658, 589, 651, 405, 0, + 427, 587, 534, 0, 579, 553, 0, 580, 549, 584, + 0, 523, 0, 435, 463, 475, 492, 495, 524, 609, + 610, 611, 296, 494, 613, 614, 615, 616, 617, 618, + 619, 612, 889, 556, 533, 559, 474, 536, 535, 0, + 0, 570, 819, 571, 572, 389, 390, 391, 392, 876, + 597, 314, 493, 415, 0, 557, 0, 0, 0, 0, + 0, 0, 0, 0, 562, 563, 560, 663, 0, 620, + 621, 0, 0, 487, 488, 344, 351, 506, 353, 313, + 404, 346, 472, 361, 0, 499, 564, 500, 623, 626, + 624, 625, 396, 356, 358, 431, 362, 372, 419, 471, + 402, 424, 311, 462, 433, 377, 550, 577, 898, 871, + 897, 899, 900, 896, 901, 902, 883, 774, 0, 826, + 894, 893, 895, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 605, 604, 603, 602, 601, 600, + 599, 598, 0, 0, 547, 448, 323, 285, 319, 320, + 327, 652, 649, 453, 653, 781, 293, 527, 370, 0, + 414, 343, 592, 593, 0, 644, 860, 833, 834, 835, + 771, 836, 830, 831, 772, 832, 861, 824, 857, 858, + 800, 827, 837, 856, 838, 859, 862, 863, 903, 904, + 844, 828, 257, 905, 841, 864, 855, 854, 839, 825, + 865, 866, 807, 802, 842, 843, 829, 848, 849, 850, + 773, 821, 822, 823, 845, 846, 803, 804, 805, 806, + 0, 0, 0, 478, 479, 480, 502, 0, 464, 526, + 650, 0, 0, 0, 0, 0, 0, 0, 576, 588, + 622, 0, 632, 633, 635, 637, 851, 639, 438, 439, + 0, 847, 642, 643, 640, 374, 425, 444, 432, 817, + 656, 517, 518, 657, 628, 0, 766, 0, 401, 0, + 0, 532, 565, 554, 638, 520, 0, 0, 0, 0, + 0, 0, 769, 0, 0, 0, 336, 0, 0, 369, + 569, 551, 561, 552, 537, 538, 539, 546, 348, 540, + 541, 542, 512, 543, 513, 544, 545, 808, 568, 519, + 434, 385, 586, 585, 0, 0, 877, 885, 0, 0, + 0, 0, 0, 0, 0, 0, 873, 0, 0, 0, + 0, 761, 0, 0, 798, 853, 852, 785, 795, 0, + 0, 309, 229, 514, 634, 516, 515, 786, 0, 787, + 791, 794, 790, 788, 789, 0, 868, 0, 0, 0, + 0, 0, 0, 753, 765, 0, 770, 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, 764, 765, 1596, 0, 0, 0, 820, - 0, 766, 0, 0, 815, 794, 798, 0, 0, 0, - 0, 299, 441, 460, 310, 429, 473, 315, 437, 452, - 305, 400, 426, 0, 0, 301, 458, 436, 382, 359, - 360, 300, 0, 420, 334, 350, 331, 398, 795, 818, - 822, 330, 893, 816, 468, 303, 0, 467, 397, 454, - 459, 383, 376, 0, 302, 456, 381, 375, 363, 340, - 894, 364, 365, 354, 409, 373, 410, 355, 387, 386, - 388, 0, 0, 0, 0, 0, 496, 497, 0, 0, - 645, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 627, 813, 0, 631, 0, 470, 0, 0, - 877, 0, 0, 0, 440, 0, 0, 366, 0, 0, - 0, 817, 0, 423, 403, 890, 0, 0, 421, 371, - 455, 411, 461, 442, 469, 417, 412, 294, 443, 333, - 384, 306, 308, 328, 335, 337, 341, 342, 393, 394, - 406, 428, 445, 446, 447, 332, 316, 422, 317, 352, - 318, 295, 324, 322, 325, 430, 326, 297, 407, 451, - 0, 347, 418, 379, 298, 378, 408, 450, 449, 307, - 477, 483, 484, 573, 0, 489, 660, 661, 662, 498, - 0, 413, 503, 504, 505, 507, 508, 509, 510, 574, - 591, 558, 528, 491, 582, 525, 529, 530, 357, 594, - 0, 0, 0, 482, 367, 368, 0, 339, 338, 380, - 416, 345, 291, 292, 655, 874, 399, 596, 629, 630, - 521, 0, 889, 869, 871, 872, 876, 880, 881, 882, - 883, 884, 886, 888, 892, 654, 0, 575, 590, 658, - 589, 651, 405, 0, 427, 587, 534, 0, 579, 553, - 0, 580, 549, 584, 0, 523, 0, 435, 463, 475, - 492, 495, 524, 609, 610, 611, 296, 494, 613, 614, - 615, 616, 617, 618, 619, 612, 891, 556, 533, 559, - 474, 536, 535, 0, 0, 570, 821, 571, 572, 389, - 390, 391, 392, 878, 597, 314, 493, 415, 0, 557, - 0, 0, 0, 0, 0, 0, 0, 0, 562, 563, - 560, 663, 0, 620, 621, 0, 0, 487, 488, 344, - 351, 506, 353, 313, 404, 346, 472, 361, 0, 499, - 564, 500, 623, 626, 624, 625, 396, 356, 358, 431, - 362, 372, 419, 471, 402, 424, 311, 462, 433, 377, - 550, 577, 900, 873, 899, 901, 902, 898, 903, 904, - 885, 776, 0, 828, 896, 895, 897, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 605, 604, - 603, 602, 601, 600, 599, 598, 0, 0, 547, 448, - 323, 285, 319, 320, 327, 652, 649, 453, 653, 783, - 293, 527, 370, 0, 414, 343, 592, 593, 0, 644, - 862, 835, 836, 837, 773, 838, 832, 833, 774, 834, - 863, 826, 859, 860, 802, 829, 839, 858, 840, 861, - 864, 865, 905, 906, 846, 830, 257, 907, 843, 866, - 857, 856, 841, 827, 867, 868, 809, 804, 844, 845, - 831, 850, 851, 852, 775, 823, 824, 825, 847, 848, - 805, 806, 807, 808, 0, 0, 0, 478, 479, 480, - 502, 0, 464, 526, 650, 0, 0, 0, 0, 0, - 0, 0, 576, 588, 622, 0, 632, 633, 635, 637, - 853, 639, 438, 439, 0, 849, 642, 643, 640, 374, - 425, 444, 432, 0, 656, 517, 518, 657, 628, 819, - 768, 0, 2279, 0, 0, 0, 0, 0, 401, 0, - 0, 532, 565, 554, 638, 520, 0, 0, 0, 0, - 0, 0, 771, 0, 0, 0, 336, 0, 0, 369, - 569, 551, 561, 552, 537, 538, 539, 546, 348, 540, - 541, 542, 512, 543, 513, 544, 545, 810, 568, 519, - 434, 385, 586, 585, 0, 0, 879, 887, 0, 0, - 0, 0, 0, 0, 0, 0, 875, 0, 0, 0, - 0, 763, 0, 0, 800, 855, 854, 787, 797, 0, - 0, 309, 229, 514, 634, 516, 515, 788, 0, 789, - 793, 796, 792, 790, 791, 0, 870, 0, 0, 0, - 0, 0, 0, 755, 767, 0, 772, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 764, 765, 0, 0, 0, 0, 820, 0, 766, 0, - 0, 815, 794, 798, 0, 0, 0, 0, 299, 441, + 762, 763, 1869, 0, 0, 0, 818, 0, 764, 0, + 0, 813, 792, 796, 0, 0, 0, 0, 299, 441, 460, 310, 429, 473, 315, 437, 452, 305, 400, 426, 0, 0, 301, 458, 436, 382, 359, 360, 300, 0, - 420, 334, 350, 331, 398, 795, 818, 822, 330, 893, - 816, 468, 303, 0, 467, 397, 454, 459, 383, 376, - 0, 302, 456, 381, 375, 363, 340, 894, 364, 365, + 420, 334, 350, 331, 398, 793, 816, 820, 330, 891, + 814, 468, 303, 0, 467, 397, 454, 459, 383, 376, + 0, 302, 456, 381, 375, 363, 340, 892, 364, 365, 354, 409, 373, 410, 355, 387, 386, 388, 0, 0, 0, 0, 0, 496, 497, 0, 0, 645, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 627, - 813, 0, 631, 0, 470, 0, 0, 877, 0, 0, - 0, 440, 0, 0, 366, 0, 0, 0, 817, 0, - 423, 403, 890, 0, 0, 421, 371, 455, 411, 461, + 811, 0, 631, 0, 470, 0, 0, 875, 0, 0, + 0, 440, 0, 0, 366, 0, 0, 0, 815, 0, + 423, 403, 888, 0, 0, 421, 371, 455, 411, 461, 442, 469, 417, 412, 294, 443, 333, 384, 306, 308, 328, 335, 337, 341, 342, 393, 394, 406, 428, 445, 446, 447, 332, 316, 422, 317, 352, 318, 295, 324, @@ -2841,61 +2913,61 @@ var yyAct = [...]int{ 504, 505, 507, 508, 509, 510, 574, 591, 558, 528, 491, 582, 525, 529, 530, 357, 594, 0, 0, 0, 482, 367, 368, 0, 339, 338, 380, 416, 345, 291, - 292, 655, 874, 399, 596, 629, 630, 521, 0, 889, - 869, 871, 872, 876, 880, 881, 882, 883, 884, 886, - 888, 892, 654, 0, 575, 590, 658, 589, 651, 405, + 292, 655, 872, 399, 596, 629, 630, 521, 0, 887, + 867, 869, 870, 874, 878, 879, 880, 881, 882, 884, + 886, 890, 654, 0, 575, 590, 658, 589, 651, 405, 0, 427, 587, 534, 0, 579, 553, 0, 580, 549, 584, 0, 523, 0, 435, 463, 475, 492, 495, 524, 609, 610, 611, 296, 494, 613, 614, 615, 616, 617, - 618, 619, 612, 891, 556, 533, 559, 474, 536, 535, - 0, 0, 570, 821, 571, 572, 389, 390, 391, 392, - 878, 597, 314, 493, 415, 0, 557, 0, 0, 0, + 618, 619, 612, 889, 556, 533, 559, 474, 536, 535, + 0, 0, 570, 819, 571, 572, 389, 390, 391, 392, + 876, 597, 314, 493, 415, 0, 557, 0, 0, 0, 0, 0, 0, 0, 0, 562, 563, 560, 663, 0, 620, 621, 0, 0, 487, 488, 344, 351, 506, 353, 313, 404, 346, 472, 361, 0, 499, 564, 500, 623, 626, 624, 625, 396, 356, 358, 431, 362, 372, 419, - 471, 402, 424, 311, 462, 433, 377, 550, 577, 900, - 873, 899, 901, 902, 898, 903, 904, 885, 776, 0, - 828, 896, 895, 897, 0, 0, 0, 0, 0, 0, + 471, 402, 424, 311, 462, 433, 377, 550, 577, 898, + 871, 897, 899, 900, 896, 901, 902, 883, 774, 0, + 826, 894, 893, 895, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 605, 604, 603, 602, 601, 600, 599, 598, 0, 0, 547, 448, 323, 285, 319, - 320, 327, 652, 649, 453, 653, 783, 293, 527, 370, - 0, 414, 343, 592, 593, 0, 644, 862, 835, 836, - 837, 773, 838, 832, 833, 774, 834, 863, 826, 859, - 860, 802, 829, 839, 858, 840, 861, 864, 865, 905, - 906, 846, 830, 257, 907, 843, 866, 857, 856, 841, - 827, 867, 868, 809, 804, 844, 845, 831, 850, 851, - 852, 775, 823, 824, 825, 847, 848, 805, 806, 807, - 808, 0, 0, 0, 478, 479, 480, 502, 0, 464, + 320, 327, 652, 649, 453, 653, 781, 293, 527, 370, + 0, 414, 343, 592, 593, 0, 644, 860, 833, 834, + 835, 771, 836, 830, 831, 772, 832, 861, 824, 857, + 858, 800, 827, 837, 856, 838, 859, 862, 863, 903, + 904, 844, 828, 257, 905, 841, 864, 855, 854, 839, + 825, 865, 866, 807, 802, 842, 843, 829, 848, 849, + 850, 773, 821, 822, 823, 845, 846, 803, 804, 805, + 806, 0, 0, 0, 478, 479, 480, 502, 0, 464, 526, 650, 0, 0, 0, 0, 0, 0, 0, 576, - 588, 622, 0, 632, 633, 635, 637, 853, 639, 438, - 439, 0, 849, 642, 643, 640, 374, 425, 444, 432, - 819, 656, 517, 518, 657, 628, 0, 768, 0, 401, + 588, 622, 0, 632, 633, 635, 637, 851, 639, 438, + 439, 0, 847, 642, 643, 640, 374, 425, 444, 432, + 817, 656, 517, 518, 657, 628, 0, 766, 0, 401, 0, 0, 532, 565, 554, 638, 520, 0, 0, 0, - 0, 0, 0, 771, 0, 0, 0, 336, 0, 0, + 0, 0, 0, 769, 0, 0, 0, 336, 0, 0, 369, 569, 551, 561, 552, 537, 538, 539, 546, 348, - 540, 541, 542, 512, 543, 513, 544, 545, 810, 568, - 519, 434, 385, 586, 585, 0, 0, 879, 887, 0, - 0, 0, 0, 0, 0, 0, 0, 875, 0, 0, - 0, 0, 763, 0, 0, 800, 855, 854, 787, 797, - 0, 0, 309, 229, 514, 634, 516, 515, 788, 0, - 789, 793, 796, 792, 790, 791, 0, 870, 0, 0, - 0, 0, 0, 0, 755, 767, 0, 772, 0, 0, + 540, 541, 542, 512, 543, 513, 544, 545, 808, 568, + 519, 434, 385, 586, 585, 0, 0, 877, 885, 0, + 0, 0, 0, 0, 0, 0, 0, 873, 0, 0, + 0, 0, 761, 0, 0, 798, 853, 852, 785, 795, + 0, 0, 309, 229, 514, 634, 516, 515, 786, 0, + 787, 791, 794, 790, 788, 789, 0, 868, 0, 0, + 0, 0, 0, 0, 753, 765, 0, 770, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 764, 765, 1877, 0, 0, 0, 820, 0, 766, - 0, 0, 815, 794, 798, 0, 0, 0, 0, 299, + 0, 762, 763, 0, 0, 0, 0, 818, 0, 764, + 0, 0, 813, 792, 796, 0, 0, 0, 0, 299, 441, 460, 310, 429, 473, 315, 437, 452, 305, 400, 426, 0, 0, 301, 458, 436, 382, 359, 360, 300, - 0, 420, 334, 350, 331, 398, 795, 818, 822, 330, - 893, 816, 468, 303, 0, 467, 397, 454, 459, 383, - 376, 0, 302, 456, 381, 375, 363, 340, 894, 364, + 0, 420, 334, 350, 331, 398, 793, 816, 820, 330, + 891, 814, 468, 303, 0, 467, 397, 454, 459, 383, + 376, 0, 302, 456, 381, 375, 363, 340, 892, 364, 365, 354, 409, 373, 410, 355, 387, 386, 388, 0, 0, 0, 0, 0, 496, 497, 0, 0, 645, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 627, 813, 0, 631, 0, 470, 0, 0, 877, 0, - 0, 0, 440, 0, 0, 366, 0, 0, 0, 817, - 0, 423, 403, 890, 0, 0, 421, 371, 455, 411, + 627, 811, 0, 631, 0, 470, 0, 0, 875, 0, + 0, 0, 440, 0, 0, 366, 0, 0, 0, 815, + 0, 423, 403, 888, 0, 0, 421, 371, 455, 411, 461, 442, 469, 417, 412, 294, 443, 333, 384, 306, 308, 328, 335, 337, 341, 342, 393, 394, 406, 428, 445, 446, 447, 332, 316, 422, 317, 352, 318, 295, @@ -2905,61 +2977,61 @@ var yyAct = [...]int{ 503, 504, 505, 507, 508, 509, 510, 574, 591, 558, 528, 491, 582, 525, 529, 530, 357, 594, 0, 0, 0, 482, 367, 368, 0, 339, 338, 380, 416, 345, - 291, 292, 655, 874, 399, 596, 629, 630, 521, 0, - 889, 869, 871, 872, 876, 880, 881, 882, 883, 884, - 886, 888, 892, 654, 0, 575, 590, 658, 589, 651, + 291, 292, 655, 872, 399, 596, 629, 630, 521, 0, + 887, 867, 869, 870, 874, 878, 879, 880, 881, 882, + 884, 886, 890, 654, 0, 575, 590, 658, 589, 651, 405, 0, 427, 587, 534, 0, 579, 553, 0, 580, 549, 584, 0, 523, 0, 435, 463, 475, 492, 495, 524, 609, 610, 611, 296, 494, 613, 614, 615, 616, - 617, 618, 619, 612, 891, 556, 533, 559, 474, 536, - 535, 0, 0, 570, 821, 571, 572, 389, 390, 391, - 392, 878, 597, 314, 493, 415, 0, 557, 0, 0, + 617, 618, 619, 612, 889, 556, 533, 559, 474, 536, + 535, 0, 0, 570, 819, 571, 572, 389, 390, 391, + 392, 876, 597, 314, 493, 415, 0, 557, 0, 0, 0, 0, 0, 0, 0, 0, 562, 563, 560, 663, 0, 620, 621, 0, 0, 487, 488, 344, 351, 506, 353, 313, 404, 346, 472, 361, 0, 499, 564, 500, 623, 626, 624, 625, 396, 356, 358, 431, 362, 372, 419, 471, 402, 424, 311, 462, 433, 377, 550, 577, - 900, 873, 899, 901, 902, 898, 903, 904, 885, 776, - 0, 828, 896, 895, 897, 0, 0, 0, 0, 0, + 898, 871, 897, 899, 900, 896, 901, 902, 883, 774, + 0, 826, 894, 893, 895, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 605, 604, 603, 602, 601, 600, 599, 598, 0, 0, 547, 448, 323, 285, - 319, 320, 327, 652, 649, 453, 653, 783, 293, 527, - 370, 0, 414, 343, 592, 593, 0, 644, 862, 835, - 836, 837, 773, 838, 832, 833, 774, 834, 863, 826, - 859, 860, 802, 829, 839, 858, 840, 861, 864, 865, - 905, 906, 846, 830, 257, 907, 843, 866, 857, 856, - 841, 827, 867, 868, 809, 804, 844, 845, 831, 850, - 851, 852, 775, 823, 824, 825, 847, 848, 805, 806, - 807, 808, 0, 0, 0, 478, 479, 480, 502, 0, + 319, 320, 327, 652, 649, 453, 653, 781, 293, 527, + 370, 0, 414, 343, 592, 593, 0, 644, 860, 833, + 834, 835, 771, 836, 830, 831, 772, 832, 861, 824, + 857, 858, 800, 827, 837, 856, 838, 859, 862, 863, + 903, 904, 844, 828, 257, 905, 841, 864, 855, 854, + 839, 825, 865, 866, 807, 802, 842, 843, 829, 848, + 849, 850, 773, 821, 822, 823, 845, 846, 803, 804, + 805, 806, 0, 0, 0, 478, 479, 480, 502, 0, 464, 526, 650, 0, 0, 0, 0, 0, 0, 0, - 576, 588, 622, 0, 632, 633, 635, 637, 853, 639, - 438, 439, 0, 849, 642, 643, 640, 374, 425, 444, - 432, 819, 656, 517, 518, 657, 628, 0, 768, 0, + 576, 588, 622, 0, 632, 633, 635, 637, 851, 639, + 438, 439, 0, 847, 642, 643, 640, 374, 425, 444, + 432, 817, 656, 517, 518, 657, 628, 0, 766, 0, 401, 0, 0, 532, 565, 554, 638, 520, 0, 0, - 0, 0, 0, 0, 771, 0, 0, 0, 336, 0, + 0, 0, 0, 0, 769, 0, 0, 0, 336, 0, 0, 369, 569, 551, 561, 552, 537, 538, 539, 546, - 348, 540, 541, 542, 512, 543, 513, 544, 545, 810, - 568, 519, 434, 385, 586, 585, 0, 0, 879, 887, - 0, 0, 0, 0, 0, 0, 0, 0, 875, 0, - 0, 0, 0, 763, 0, 0, 800, 855, 854, 787, - 797, 0, 0, 309, 229, 514, 634, 516, 515, 788, - 0, 789, 793, 796, 792, 790, 791, 0, 870, 0, - 0, 0, 0, 0, 0, 755, 767, 0, 772, 0, + 348, 540, 541, 542, 512, 543, 513, 544, 545, 808, + 568, 519, 434, 385, 586, 585, 0, 0, 877, 885, + 0, 0, 0, 0, 0, 0, 0, 0, 873, 0, + 0, 0, 0, 761, 0, 0, 798, 853, 852, 785, + 795, 0, 0, 309, 229, 514, 634, 516, 515, 786, + 0, 787, 791, 794, 790, 788, 789, 0, 868, 0, + 0, 0, 0, 0, 0, 753, 765, 0, 770, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 764, 765, 0, 0, 0, 0, 820, 0, - 766, 0, 0, 815, 794, 798, 0, 0, 0, 0, + 0, 0, 762, 763, 0, 0, 0, 0, 818, 0, + 764, 0, 0, 813, 792, 796, 0, 0, 0, 0, 299, 441, 460, 310, 429, 473, 315, 437, 452, 305, 400, 426, 0, 0, 301, 458, 436, 382, 359, 360, - 300, 0, 420, 334, 350, 331, 398, 795, 818, 822, - 330, 893, 816, 468, 303, 0, 467, 397, 454, 459, - 383, 376, 0, 302, 456, 381, 375, 363, 340, 894, + 300, 0, 420, 334, 350, 331, 398, 793, 816, 820, + 330, 891, 814, 468, 303, 0, 467, 397, 454, 459, + 383, 376, 0, 302, 456, 381, 375, 363, 340, 892, 364, 365, 354, 409, 373, 410, 355, 387, 386, 388, 0, 0, 0, 0, 0, 496, 497, 0, 0, 645, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 627, 813, 0, 631, 0, 470, 0, 0, 877, + 0, 627, 811, 0, 631, 0, 470, 0, 0, 875, 0, 0, 0, 440, 0, 0, 366, 0, 0, 0, - 817, 0, 423, 403, 890, 0, 0, 421, 371, 455, + 815, 0, 423, 403, 888, 0, 0, 421, 371, 455, 411, 461, 442, 469, 417, 412, 294, 443, 333, 384, 306, 308, 328, 335, 337, 341, 342, 393, 394, 406, 428, 445, 446, 447, 332, 316, 422, 317, 352, 318, @@ -2969,61 +3041,61 @@ var yyAct = [...]int{ 413, 503, 504, 505, 507, 508, 509, 510, 574, 591, 558, 528, 491, 582, 525, 529, 530, 357, 594, 0, 0, 0, 482, 367, 368, 0, 339, 338, 380, 416, - 345, 291, 292, 655, 874, 399, 596, 629, 630, 521, - 0, 889, 869, 871, 872, 876, 880, 881, 882, 883, - 884, 886, 888, 892, 654, 0, 575, 590, 658, 589, + 345, 291, 292, 655, 872, 399, 596, 629, 630, 521, + 0, 887, 867, 869, 870, 874, 878, 879, 880, 881, + 882, 884, 886, 890, 654, 0, 575, 590, 658, 589, 651, 405, 0, 427, 587, 534, 0, 579, 553, 0, 580, 549, 584, 0, 523, 0, 435, 463, 475, 492, 495, 524, 609, 610, 611, 296, 494, 613, 614, 615, - 616, 617, 618, 619, 612, 891, 556, 533, 559, 474, - 536, 535, 0, 0, 570, 821, 571, 572, 389, 390, - 391, 392, 878, 597, 314, 493, 415, 0, 557, 0, + 616, 617, 618, 619, 612, 889, 556, 533, 559, 474, + 536, 535, 0, 0, 570, 819, 571, 572, 389, 390, + 391, 392, 876, 597, 314, 493, 415, 0, 557, 0, 0, 0, 0, 0, 0, 0, 0, 562, 563, 560, 663, 0, 620, 621, 0, 0, 487, 488, 344, 351, 506, 353, 313, 404, 346, 472, 361, 0, 499, 564, 500, 623, 626, 624, 625, 396, 356, 358, 431, 362, 372, 419, 471, 402, 424, 311, 462, 433, 377, 550, - 577, 900, 873, 899, 901, 902, 898, 903, 904, 885, - 776, 0, 828, 896, 895, 897, 0, 0, 0, 0, + 577, 898, 871, 897, 899, 900, 896, 901, 902, 883, + 774, 0, 826, 894, 893, 895, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 605, 604, 603, 602, 601, 600, 599, 598, 0, 0, 547, 448, 323, - 285, 319, 320, 327, 652, 649, 453, 653, 783, 293, - 527, 370, 0, 414, 343, 592, 593, 0, 644, 862, - 835, 836, 837, 773, 838, 832, 833, 774, 834, 863, - 826, 859, 860, 802, 829, 839, 858, 840, 861, 864, - 865, 905, 906, 846, 830, 257, 907, 843, 866, 857, - 856, 841, 827, 867, 868, 809, 804, 844, 845, 831, - 850, 851, 852, 775, 823, 824, 825, 847, 848, 805, - 806, 807, 808, 0, 0, 0, 478, 479, 480, 502, + 285, 319, 320, 327, 652, 649, 453, 653, 781, 293, + 527, 370, 0, 414, 343, 592, 593, 0, 644, 860, + 833, 834, 835, 771, 836, 830, 831, 772, 832, 861, + 824, 857, 858, 800, 827, 837, 856, 838, 859, 862, + 863, 903, 904, 844, 828, 257, 905, 841, 864, 855, + 854, 839, 825, 865, 866, 807, 802, 842, 843, 829, + 848, 849, 850, 773, 821, 822, 823, 845, 846, 803, + 804, 805, 806, 0, 0, 0, 478, 479, 480, 502, 0, 464, 526, 650, 0, 0, 0, 0, 0, 0, - 0, 576, 588, 622, 0, 632, 633, 635, 637, 853, - 639, 438, 439, 0, 849, 642, 643, 640, 374, 425, - 444, 432, 819, 656, 517, 518, 657, 628, 0, 768, + 0, 576, 588, 622, 0, 632, 633, 635, 637, 851, + 639, 438, 439, 0, 3566, 642, 3567, 3568, 374, 425, + 444, 432, 817, 656, 517, 518, 657, 628, 0, 766, 0, 401, 0, 0, 532, 565, 554, 638, 520, 0, - 0, 0, 0, 0, 0, 771, 0, 0, 0, 336, + 0, 0, 0, 0, 0, 769, 0, 0, 0, 336, 0, 0, 369, 569, 551, 561, 552, 537, 538, 539, 546, 348, 540, 541, 542, 512, 543, 513, 544, 545, - 810, 568, 519, 434, 385, 586, 585, 0, 0, 879, - 887, 0, 0, 0, 0, 0, 0, 0, 0, 875, - 0, 0, 0, 0, 763, 0, 0, 800, 855, 854, - 787, 797, 0, 0, 309, 229, 514, 634, 516, 515, - 788, 0, 789, 793, 796, 792, 790, 791, 0, 870, - 0, 0, 0, 0, 0, 0, 755, 767, 0, 772, + 808, 568, 519, 434, 385, 586, 585, 0, 0, 877, + 885, 0, 0, 0, 0, 0, 0, 0, 0, 873, + 0, 0, 0, 0, 761, 0, 0, 798, 853, 852, + 785, 795, 0, 0, 309, 229, 514, 634, 516, 515, + 2748, 0, 2749, 791, 794, 790, 788, 789, 0, 868, + 0, 0, 0, 0, 0, 0, 753, 765, 0, 770, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 764, 765, 0, 0, 0, 0, 820, - 0, 766, 0, 0, 815, 794, 798, 0, 0, 0, + 0, 0, 0, 762, 763, 0, 0, 0, 0, 818, + 0, 764, 0, 0, 813, 792, 796, 0, 0, 0, 0, 299, 441, 460, 310, 429, 473, 315, 437, 452, 305, 400, 426, 0, 0, 301, 458, 436, 382, 359, - 360, 300, 0, 420, 334, 350, 331, 398, 795, 818, - 822, 330, 893, 816, 468, 303, 0, 467, 397, 454, + 360, 300, 0, 420, 334, 350, 331, 398, 793, 816, + 820, 330, 891, 814, 468, 303, 0, 467, 397, 454, 459, 383, 376, 0, 302, 456, 381, 375, 363, 340, - 894, 364, 365, 354, 409, 373, 410, 355, 387, 386, + 892, 364, 365, 354, 409, 373, 410, 355, 387, 386, 388, 0, 0, 0, 0, 0, 496, 497, 0, 0, 645, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 627, 813, 0, 631, 0, 470, 0, 0, - 877, 0, 0, 0, 440, 0, 0, 366, 0, 0, - 0, 817, 0, 423, 403, 890, 0, 0, 421, 371, + 0, 0, 627, 811, 0, 631, 0, 470, 0, 0, + 875, 0, 0, 0, 440, 0, 0, 366, 0, 0, + 0, 815, 0, 423, 403, 888, 0, 0, 421, 371, 455, 411, 461, 442, 469, 417, 412, 294, 443, 333, 384, 306, 308, 328, 335, 337, 341, 342, 393, 394, 406, 428, 445, 446, 447, 332, 316, 422, 317, 352, @@ -3033,189 +3105,189 @@ var yyAct = [...]int{ 0, 413, 503, 504, 505, 507, 508, 509, 510, 574, 591, 558, 528, 491, 582, 525, 529, 530, 357, 594, 0, 0, 0, 482, 367, 368, 0, 339, 338, 380, - 416, 345, 291, 292, 655, 874, 399, 596, 629, 630, - 521, 0, 889, 869, 871, 872, 876, 880, 881, 882, - 883, 884, 886, 888, 892, 654, 0, 575, 590, 658, + 416, 345, 291, 292, 655, 872, 399, 596, 629, 630, + 521, 0, 887, 867, 869, 870, 874, 878, 879, 880, + 881, 882, 884, 886, 890, 654, 0, 575, 590, 658, 589, 651, 405, 0, 427, 587, 534, 0, 579, 553, 0, 580, 549, 584, 0, 523, 0, 435, 463, 475, 492, 495, 524, 609, 610, 611, 296, 494, 613, 614, - 615, 616, 617, 618, 619, 612, 891, 556, 533, 559, - 474, 536, 535, 0, 0, 570, 821, 571, 572, 389, - 390, 391, 392, 878, 597, 314, 493, 415, 0, 557, + 615, 616, 617, 618, 619, 612, 889, 556, 533, 559, + 474, 536, 535, 0, 0, 570, 819, 571, 572, 389, + 390, 391, 392, 876, 597, 314, 493, 415, 0, 557, 0, 0, 0, 0, 0, 0, 0, 0, 562, 563, 560, 663, 0, 620, 621, 0, 0, 487, 488, 344, 351, 506, 353, 313, 404, 346, 472, 361, 0, 499, 564, 500, 623, 626, 624, 625, 396, 356, 358, 431, 362, 372, 419, 471, 402, 424, 311, 462, 433, 377, - 550, 577, 900, 873, 899, 901, 902, 898, 903, 904, - 885, 776, 0, 828, 896, 895, 897, 0, 0, 0, + 550, 577, 898, 871, 897, 899, 900, 896, 901, 902, + 883, 774, 0, 826, 894, 893, 895, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 605, 604, 603, 602, 601, 600, 599, 598, 0, 0, 547, 448, - 323, 285, 319, 320, 327, 652, 649, 453, 653, 783, + 323, 285, 319, 320, 327, 652, 649, 453, 653, 781, 293, 527, 370, 0, 414, 343, 592, 593, 0, 644, - 862, 835, 836, 837, 773, 838, 832, 833, 774, 834, - 863, 826, 859, 860, 802, 829, 839, 858, 840, 861, - 864, 865, 905, 906, 846, 830, 257, 907, 843, 866, - 857, 856, 841, 827, 867, 868, 809, 804, 844, 845, - 831, 850, 851, 852, 775, 823, 824, 825, 847, 848, - 805, 806, 807, 808, 0, 0, 0, 478, 479, 480, + 860, 833, 834, 835, 771, 836, 830, 831, 772, 832, + 861, 824, 857, 858, 800, 827, 837, 856, 838, 859, + 862, 863, 903, 904, 844, 828, 257, 905, 841, 864, + 855, 854, 839, 825, 865, 866, 807, 802, 842, 843, + 829, 848, 849, 850, 773, 821, 822, 823, 845, 846, + 803, 804, 805, 806, 0, 0, 0, 478, 479, 480, 502, 0, 464, 526, 650, 0, 0, 0, 0, 0, 0, 0, 576, 588, 622, 0, 632, 633, 635, 637, - 853, 639, 438, 439, 0, 3582, 642, 3583, 3584, 374, - 425, 444, 432, 819, 656, 517, 518, 657, 628, 0, - 768, 0, 401, 0, 0, 532, 565, 554, 638, 520, - 0, 0, 0, 0, 0, 0, 771, 0, 0, 0, + 851, 639, 438, 439, 0, 847, 642, 643, 640, 374, + 425, 444, 432, 817, 656, 517, 518, 657, 628, 0, + 766, 0, 401, 0, 0, 532, 565, 554, 638, 520, + 0, 0, 1734, 0, 0, 0, 769, 0, 0, 0, 336, 0, 0, 369, 569, 551, 561, 552, 537, 538, 539, 546, 348, 540, 541, 542, 512, 543, 513, 544, - 545, 810, 568, 519, 434, 385, 586, 585, 0, 0, - 879, 887, 0, 0, 0, 0, 0, 0, 0, 0, - 875, 0, 0, 0, 0, 763, 0, 0, 800, 855, - 854, 787, 797, 0, 0, 309, 229, 514, 634, 516, - 515, 2761, 0, 2762, 793, 796, 792, 790, 791, 0, - 870, 0, 0, 0, 0, 0, 0, 755, 767, 0, - 772, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 764, 765, 0, 0, 0, 0, - 820, 0, 766, 0, 0, 815, 794, 798, 0, 0, + 545, 808, 568, 519, 434, 385, 586, 585, 0, 0, + 877, 885, 0, 0, 0, 0, 0, 0, 0, 0, + 873, 0, 0, 0, 0, 761, 0, 0, 798, 853, + 852, 785, 795, 0, 0, 309, 229, 514, 634, 516, + 515, 786, 0, 787, 791, 794, 790, 788, 789, 0, + 868, 0, 0, 0, 0, 0, 0, 0, 765, 0, + 770, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 762, 763, 0, 0, 0, 0, + 818, 0, 764, 0, 0, 813, 792, 796, 0, 0, 0, 0, 299, 441, 460, 310, 429, 473, 315, 437, 452, 305, 400, 426, 0, 0, 301, 458, 436, 382, - 359, 360, 300, 0, 420, 334, 350, 331, 398, 795, - 818, 822, 330, 893, 816, 468, 303, 0, 467, 397, + 359, 360, 300, 0, 420, 334, 350, 331, 398, 793, + 816, 820, 330, 891, 814, 468, 303, 0, 467, 397, 454, 459, 383, 376, 0, 302, 456, 381, 375, 363, - 340, 894, 364, 365, 354, 409, 373, 410, 355, 387, + 340, 892, 364, 365, 354, 409, 373, 410, 355, 387, 386, 388, 0, 0, 0, 0, 0, 496, 497, 0, 0, 645, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 627, 813, 0, 631, 0, 470, 0, - 0, 877, 0, 0, 0, 440, 0, 0, 366, 0, - 0, 0, 817, 0, 423, 403, 890, 0, 0, 421, + 0, 0, 0, 627, 811, 0, 631, 0, 470, 0, + 0, 875, 0, 0, 0, 440, 0, 0, 366, 0, + 0, 0, 815, 0, 423, 403, 888, 0, 0, 421, 371, 455, 411, 461, 442, 469, 417, 412, 294, 443, 333, 384, 306, 308, 328, 335, 337, 341, 342, 393, 394, 406, 428, 445, 446, 447, 332, 316, 422, 317, 352, 318, 295, 324, 322, 325, 430, 326, 297, 407, 451, 0, 347, 418, 379, 298, 378, 408, 450, 449, - 307, 477, 483, 484, 573, 0, 489, 660, 661, 662, + 307, 477, 1735, 1736, 573, 0, 489, 660, 661, 662, 498, 0, 413, 503, 504, 505, 507, 508, 509, 510, 574, 591, 558, 528, 491, 582, 525, 529, 530, 357, 594, 0, 0, 0, 482, 367, 368, 0, 339, 338, - 380, 416, 345, 291, 292, 655, 874, 399, 596, 629, - 630, 521, 0, 889, 869, 871, 872, 876, 880, 881, - 882, 883, 884, 886, 888, 892, 654, 0, 575, 590, + 380, 416, 345, 291, 292, 655, 872, 399, 596, 629, + 630, 521, 0, 887, 867, 869, 870, 874, 878, 879, + 880, 881, 882, 884, 886, 890, 654, 0, 575, 590, 658, 589, 651, 405, 0, 427, 587, 534, 0, 579, 553, 0, 580, 549, 584, 0, 523, 0, 435, 463, 475, 492, 495, 524, 609, 610, 611, 296, 494, 613, - 614, 615, 616, 617, 618, 619, 612, 891, 556, 533, - 559, 474, 536, 535, 0, 0, 570, 821, 571, 572, - 389, 390, 391, 392, 878, 597, 314, 493, 415, 0, + 614, 615, 616, 617, 618, 619, 612, 889, 556, 533, + 559, 474, 536, 535, 0, 0, 570, 819, 571, 572, + 389, 390, 391, 392, 876, 597, 314, 493, 415, 0, 557, 0, 0, 0, 0, 0, 0, 0, 0, 562, 563, 560, 663, 0, 620, 621, 0, 0, 487, 488, 344, 351, 506, 353, 313, 404, 346, 472, 361, 0, 499, 564, 500, 623, 626, 624, 625, 396, 356, 358, 431, 362, 372, 419, 471, 402, 424, 311, 462, 433, - 377, 550, 577, 900, 873, 899, 901, 902, 898, 903, - 904, 885, 776, 0, 828, 896, 895, 897, 0, 0, + 377, 550, 577, 898, 871, 897, 899, 900, 896, 901, + 902, 883, 774, 0, 826, 894, 893, 895, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 605, 604, 603, 602, 601, 600, 599, 598, 0, 0, 547, 448, 323, 285, 319, 320, 327, 652, 649, 453, 653, - 783, 293, 527, 370, 0, 414, 343, 592, 593, 0, - 644, 862, 835, 836, 837, 773, 838, 832, 833, 774, - 834, 863, 826, 859, 860, 802, 829, 839, 858, 840, - 861, 864, 865, 905, 906, 846, 830, 257, 907, 843, - 866, 857, 856, 841, 827, 867, 868, 809, 804, 844, - 845, 831, 850, 851, 852, 775, 823, 824, 825, 847, - 848, 805, 806, 807, 808, 0, 0, 0, 478, 479, + 781, 293, 527, 370, 0, 414, 343, 592, 593, 0, + 644, 860, 833, 834, 835, 771, 836, 830, 831, 772, + 832, 861, 824, 857, 858, 800, 827, 837, 856, 838, + 859, 862, 863, 903, 904, 844, 828, 257, 905, 841, + 864, 855, 854, 839, 825, 865, 866, 807, 802, 842, + 843, 829, 848, 849, 850, 773, 821, 822, 823, 845, + 846, 803, 804, 805, 806, 0, 0, 0, 478, 479, 480, 502, 0, 464, 526, 650, 0, 0, 0, 0, 0, 0, 0, 576, 588, 622, 0, 632, 633, 635, - 637, 853, 639, 438, 439, 0, 849, 642, 643, 640, - 374, 425, 444, 432, 819, 656, 517, 518, 657, 628, - 0, 768, 0, 401, 0, 0, 532, 565, 554, 638, - 520, 0, 0, 1742, 0, 0, 0, 771, 0, 0, + 637, 851, 639, 438, 439, 0, 847, 642, 643, 640, + 374, 425, 444, 432, 817, 656, 517, 518, 657, 628, + 0, 766, 0, 401, 0, 0, 532, 565, 554, 638, + 520, 0, 0, 0, 0, 0, 0, 769, 0, 0, 0, 336, 0, 0, 369, 569, 551, 561, 552, 537, 538, 539, 546, 348, 540, 541, 542, 512, 543, 513, - 544, 545, 810, 568, 519, 434, 385, 586, 585, 0, - 0, 879, 887, 0, 0, 0, 0, 0, 0, 0, - 0, 875, 0, 0, 0, 0, 763, 0, 0, 800, - 855, 854, 787, 797, 0, 0, 309, 229, 514, 634, - 516, 515, 788, 0, 789, 793, 796, 792, 790, 791, - 0, 870, 0, 0, 0, 0, 0, 0, 0, 767, - 0, 772, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 764, 765, 0, 0, 0, - 0, 820, 0, 766, 0, 0, 815, 794, 798, 0, + 544, 545, 808, 568, 519, 434, 385, 586, 585, 0, + 0, 877, 885, 0, 0, 0, 0, 0, 0, 0, + 0, 873, 0, 0, 0, 0, 761, 0, 0, 798, + 853, 852, 785, 795, 0, 0, 309, 229, 514, 634, + 516, 515, 786, 0, 787, 791, 794, 790, 788, 789, + 0, 868, 0, 0, 0, 0, 0, 0, 0, 765, + 0, 770, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 762, 763, 0, 0, 0, + 0, 818, 0, 764, 0, 0, 813, 792, 796, 0, 0, 0, 0, 299, 441, 460, 310, 429, 473, 315, 437, 452, 305, 400, 426, 0, 0, 301, 458, 436, 382, 359, 360, 300, 0, 420, 334, 350, 331, 398, - 795, 818, 822, 330, 893, 816, 468, 303, 0, 467, + 793, 816, 820, 330, 891, 814, 468, 303, 0, 467, 397, 454, 459, 383, 376, 0, 302, 456, 381, 375, - 363, 340, 894, 364, 365, 354, 409, 373, 410, 355, + 363, 340, 892, 364, 365, 354, 409, 373, 410, 355, 387, 386, 388, 0, 0, 0, 0, 0, 496, 497, 0, 0, 645, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 627, 813, 0, 631, 0, 470, - 0, 0, 877, 0, 0, 0, 440, 0, 0, 366, - 0, 0, 0, 817, 0, 423, 403, 890, 0, 0, + 0, 0, 0, 0, 627, 811, 0, 631, 0, 470, + 0, 0, 875, 0, 0, 0, 440, 0, 0, 366, + 0, 0, 0, 815, 0, 423, 403, 888, 0, 0, 421, 371, 455, 411, 461, 442, 469, 417, 412, 294, 443, 333, 384, 306, 308, 328, 335, 337, 341, 342, 393, 394, 406, 428, 445, 446, 447, 332, 316, 422, 317, 352, 318, 295, 324, 322, 325, 430, 326, 297, 407, 451, 0, 347, 418, 379, 298, 378, 408, 450, - 449, 307, 477, 1743, 1744, 573, 0, 489, 660, 661, + 449, 307, 477, 483, 484, 573, 0, 489, 660, 661, 662, 498, 0, 413, 503, 504, 505, 507, 508, 509, 510, 574, 591, 558, 528, 491, 582, 525, 529, 530, 357, 594, 0, 0, 0, 482, 367, 368, 0, 339, - 338, 380, 416, 345, 291, 292, 655, 874, 399, 596, - 629, 630, 521, 0, 889, 869, 871, 872, 876, 880, - 881, 882, 883, 884, 886, 888, 892, 654, 0, 575, + 338, 380, 416, 345, 291, 292, 655, 872, 399, 596, + 629, 630, 521, 0, 887, 867, 869, 870, 874, 878, + 879, 880, 881, 882, 884, 886, 890, 654, 0, 575, 590, 658, 589, 651, 405, 0, 427, 587, 534, 0, 579, 553, 0, 580, 549, 584, 0, 523, 0, 435, 463, 475, 492, 495, 524, 609, 610, 611, 296, 494, - 613, 614, 615, 616, 617, 618, 619, 612, 891, 556, - 533, 559, 474, 536, 535, 0, 0, 570, 821, 571, - 572, 389, 390, 391, 392, 878, 597, 314, 493, 415, + 613, 614, 615, 616, 617, 618, 619, 612, 889, 556, + 533, 559, 474, 536, 535, 0, 0, 570, 819, 571, + 572, 389, 390, 391, 392, 876, 597, 314, 493, 415, 0, 557, 0, 0, 0, 0, 0, 0, 0, 0, 562, 563, 560, 663, 0, 620, 621, 0, 0, 487, 488, 344, 351, 506, 353, 313, 404, 346, 472, 361, 0, 499, 564, 500, 623, 626, 624, 625, 396, 356, 358, 431, 362, 372, 419, 471, 402, 424, 311, 462, - 433, 377, 550, 577, 900, 873, 899, 901, 902, 898, - 903, 904, 885, 776, 0, 828, 896, 895, 897, 0, + 433, 377, 550, 577, 898, 871, 897, 899, 900, 896, + 901, 902, 883, 774, 0, 826, 894, 893, 895, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 605, 604, 603, 602, 601, 600, 599, 598, 0, 0, 547, 448, 323, 285, 319, 320, 327, 652, 649, 453, - 653, 783, 293, 527, 370, 0, 414, 343, 592, 593, - 0, 644, 862, 835, 836, 837, 773, 838, 832, 833, - 774, 834, 863, 826, 859, 860, 802, 829, 839, 858, - 840, 861, 864, 865, 905, 906, 846, 830, 257, 907, - 843, 866, 857, 856, 841, 827, 867, 868, 809, 804, - 844, 845, 831, 850, 851, 852, 775, 823, 824, 825, - 847, 848, 805, 806, 807, 808, 0, 0, 0, 478, + 653, 781, 293, 527, 370, 0, 414, 343, 592, 593, + 0, 644, 860, 833, 834, 835, 771, 836, 830, 831, + 772, 832, 861, 824, 857, 858, 800, 827, 837, 856, + 838, 859, 862, 863, 903, 904, 844, 828, 257, 905, + 841, 864, 855, 854, 839, 825, 865, 866, 807, 802, + 842, 843, 829, 848, 849, 850, 773, 821, 822, 823, + 845, 846, 803, 804, 805, 806, 0, 0, 0, 478, 479, 480, 502, 0, 464, 526, 650, 0, 0, 0, 0, 0, 0, 0, 576, 588, 622, 0, 632, 633, - 635, 637, 853, 639, 438, 439, 0, 849, 642, 643, - 640, 374, 425, 444, 432, 819, 656, 517, 518, 657, - 628, 0, 768, 0, 401, 0, 0, 532, 565, 554, - 638, 520, 0, 0, 0, 0, 0, 0, 771, 0, + 635, 637, 851, 639, 438, 439, 0, 847, 642, 643, + 640, 374, 425, 444, 432, 817, 656, 517, 518, 657, + 628, 0, 766, 0, 401, 0, 0, 532, 565, 554, + 638, 520, 0, 0, 0, 0, 0, 0, 769, 0, 0, 0, 336, 0, 0, 369, 569, 551, 561, 552, 537, 538, 539, 546, 348, 540, 541, 542, 512, 543, - 513, 544, 545, 810, 568, 519, 434, 385, 586, 585, - 0, 0, 879, 887, 0, 0, 0, 0, 0, 0, - 0, 0, 875, 0, 0, 0, 0, 763, 0, 0, - 800, 855, 854, 787, 797, 0, 0, 309, 229, 514, - 634, 516, 515, 788, 0, 789, 793, 796, 792, 790, - 791, 0, 870, 0, 0, 0, 0, 0, 0, 0, - 767, 0, 772, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 764, 765, 0, 0, - 0, 0, 820, 0, 766, 0, 0, 815, 794, 798, + 513, 544, 545, 808, 568, 519, 434, 385, 586, 585, + 0, 0, 877, 885, 0, 0, 0, 0, 0, 0, + 0, 0, 873, 0, 0, 0, 0, 0, 0, 0, + 798, 853, 852, 785, 795, 0, 0, 309, 229, 514, + 634, 516, 515, 786, 0, 787, 791, 794, 790, 788, + 789, 0, 868, 0, 0, 0, 0, 0, 0, 753, + 765, 0, 770, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 762, 763, 0, 0, + 0, 0, 818, 0, 764, 0, 0, 813, 792, 796, 0, 0, 0, 0, 299, 441, 460, 310, 429, 473, 315, 437, 452, 305, 400, 426, 0, 0, 301, 458, 436, 382, 359, 360, 300, 0, 420, 334, 350, 331, - 398, 795, 818, 822, 330, 893, 816, 468, 303, 0, + 398, 793, 816, 820, 330, 891, 814, 468, 303, 0, 467, 397, 454, 459, 383, 376, 0, 302, 456, 381, - 375, 363, 340, 894, 364, 365, 354, 409, 373, 410, + 375, 363, 340, 892, 364, 365, 354, 409, 373, 410, 355, 387, 386, 388, 0, 0, 0, 0, 0, 496, 497, 0, 0, 645, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 627, 813, 0, 631, 0, - 470, 0, 0, 877, 0, 0, 0, 440, 0, 0, - 366, 0, 0, 0, 817, 0, 423, 403, 890, 0, + 0, 0, 0, 0, 0, 627, 811, 0, 631, 0, + 470, 0, 0, 875, 0, 0, 0, 440, 0, 0, + 366, 0, 0, 0, 815, 0, 423, 403, 888, 0, 0, 421, 371, 455, 411, 461, 442, 469, 417, 412, 294, 443, 333, 384, 306, 308, 328, 335, 337, 341, 342, 393, 394, 406, 428, 445, 446, 447, 332, 316, @@ -3225,4221 +3297,4092 @@ var yyAct = [...]int{ 661, 662, 498, 0, 413, 503, 504, 505, 507, 508, 509, 510, 574, 591, 558, 528, 491, 582, 525, 529, 530, 357, 594, 0, 0, 0, 482, 367, 368, 0, - 339, 338, 380, 416, 345, 291, 292, 655, 874, 399, - 596, 629, 630, 521, 0, 889, 869, 871, 872, 876, - 880, 881, 882, 883, 884, 886, 888, 892, 654, 0, + 339, 338, 380, 416, 345, 291, 292, 655, 872, 399, + 596, 629, 630, 521, 0, 887, 867, 869, 870, 874, + 878, 879, 880, 881, 882, 884, 886, 890, 654, 0, 575, 590, 658, 589, 651, 405, 0, 427, 587, 534, 0, 579, 553, 0, 580, 549, 584, 0, 523, 0, 435, 463, 475, 492, 495, 524, 609, 610, 611, 296, - 494, 613, 614, 615, 616, 617, 618, 619, 612, 891, - 556, 533, 559, 474, 536, 535, 0, 0, 570, 821, - 571, 572, 389, 390, 391, 392, 878, 597, 314, 493, + 494, 613, 614, 615, 616, 617, 618, 619, 612, 889, + 556, 533, 559, 474, 536, 535, 0, 0, 570, 819, + 571, 572, 389, 390, 391, 392, 876, 597, 314, 493, 415, 0, 557, 0, 0, 0, 0, 0, 0, 0, 0, 562, 563, 560, 663, 0, 620, 621, 0, 0, 487, 488, 344, 351, 506, 353, 313, 404, 346, 472, 361, 0, 499, 564, 500, 623, 626, 624, 625, 396, 356, 358, 431, 362, 372, 419, 471, 402, 424, 311, - 462, 433, 377, 550, 577, 900, 873, 899, 901, 902, - 898, 903, 904, 885, 776, 0, 828, 896, 895, 897, + 462, 433, 377, 550, 577, 898, 871, 897, 899, 900, + 896, 901, 902, 883, 774, 0, 826, 894, 893, 895, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 605, 604, 603, 602, 601, 600, 599, 598, 0, 0, 547, 448, 323, 285, 319, 320, 327, 652, 649, - 453, 653, 783, 293, 527, 370, 0, 414, 343, 592, - 593, 0, 644, 862, 835, 836, 837, 773, 838, 832, - 833, 774, 834, 863, 826, 859, 860, 802, 829, 839, - 858, 840, 861, 864, 865, 905, 906, 846, 830, 257, - 907, 843, 866, 857, 856, 841, 827, 867, 868, 809, - 804, 844, 845, 831, 850, 851, 852, 775, 823, 824, - 825, 847, 848, 805, 806, 807, 808, 0, 0, 0, + 453, 653, 781, 293, 527, 370, 0, 414, 343, 592, + 593, 0, 644, 860, 833, 834, 835, 771, 836, 830, + 831, 772, 832, 861, 824, 857, 858, 800, 827, 837, + 856, 838, 859, 862, 863, 903, 904, 844, 828, 257, + 905, 841, 864, 855, 854, 839, 825, 865, 866, 807, + 802, 842, 843, 829, 848, 849, 850, 773, 821, 822, + 823, 845, 846, 803, 804, 805, 806, 0, 0, 0, 478, 479, 480, 502, 0, 464, 526, 650, 0, 0, 0, 0, 0, 0, 0, 576, 588, 622, 0, 632, - 633, 635, 637, 853, 639, 438, 439, 0, 849, 642, - 643, 640, 374, 425, 444, 432, 819, 656, 517, 518, - 657, 628, 0, 768, 0, 401, 0, 0, 532, 565, - 554, 638, 520, 0, 0, 0, 0, 0, 0, 771, - 0, 0, 0, 336, 0, 0, 369, 569, 551, 561, - 552, 537, 538, 539, 546, 348, 540, 541, 542, 512, - 543, 513, 544, 545, 810, 568, 519, 434, 385, 586, - 585, 0, 0, 879, 887, 0, 0, 0, 0, 0, - 0, 0, 0, 875, 0, 0, 0, 0, 0, 0, - 0, 800, 855, 854, 787, 797, 0, 0, 309, 229, - 514, 634, 516, 515, 788, 0, 789, 793, 796, 792, - 790, 791, 0, 870, 0, 0, 0, 0, 0, 0, - 755, 767, 0, 772, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 764, 765, 0, - 0, 0, 0, 820, 0, 766, 0, 0, 815, 794, - 798, 0, 0, 0, 0, 299, 441, 460, 310, 429, - 473, 315, 437, 452, 305, 400, 426, 0, 0, 301, - 458, 436, 382, 359, 360, 300, 0, 420, 334, 350, - 331, 398, 795, 818, 822, 330, 893, 816, 468, 303, - 0, 467, 397, 454, 459, 383, 376, 0, 302, 456, - 381, 375, 363, 340, 894, 364, 365, 354, 409, 373, - 410, 355, 387, 386, 388, 0, 0, 0, 0, 0, - 496, 497, 0, 0, 645, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 627, 813, 0, 631, - 0, 470, 0, 0, 877, 0, 0, 0, 440, 0, - 0, 366, 0, 0, 0, 817, 0, 423, 403, 890, - 0, 0, 421, 371, 455, 411, 461, 442, 469, 417, - 412, 294, 443, 333, 384, 306, 308, 328, 335, 337, - 341, 342, 393, 394, 406, 428, 445, 446, 447, 332, - 316, 422, 317, 352, 318, 295, 324, 322, 325, 430, - 326, 297, 407, 451, 0, 347, 418, 379, 298, 378, - 408, 450, 449, 307, 477, 483, 484, 573, 0, 489, - 660, 661, 662, 498, 0, 413, 503, 504, 505, 507, - 508, 509, 510, 574, 591, 558, 528, 491, 582, 525, - 529, 530, 357, 594, 0, 0, 0, 482, 367, 368, - 0, 339, 338, 380, 416, 345, 291, 292, 655, 874, - 399, 596, 629, 630, 521, 0, 889, 869, 871, 872, - 876, 880, 881, 882, 883, 884, 886, 888, 892, 654, - 0, 575, 590, 658, 589, 651, 405, 0, 427, 587, - 534, 0, 579, 553, 0, 580, 549, 584, 0, 523, - 0, 435, 463, 475, 492, 495, 524, 609, 610, 611, - 296, 494, 613, 614, 615, 616, 617, 618, 619, 612, - 891, 556, 533, 559, 474, 536, 535, 0, 0, 570, - 821, 571, 572, 389, 390, 391, 392, 878, 597, 314, - 493, 415, 0, 557, 0, 0, 0, 0, 0, 0, - 0, 0, 562, 563, 560, 663, 0, 620, 621, 0, - 0, 487, 488, 344, 351, 506, 353, 313, 404, 346, - 472, 361, 0, 499, 564, 500, 623, 626, 624, 625, - 396, 356, 358, 431, 362, 372, 419, 471, 402, 424, - 311, 462, 433, 377, 550, 577, 900, 873, 899, 901, - 902, 898, 903, 904, 885, 776, 0, 828, 896, 895, - 897, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 605, 604, 603, 602, 601, 600, 599, 598, - 0, 0, 547, 448, 323, 285, 319, 320, 327, 652, - 649, 453, 653, 783, 293, 527, 370, 0, 414, 343, - 592, 593, 0, 644, 862, 835, 836, 837, 773, 838, - 832, 833, 774, 834, 863, 826, 859, 860, 802, 829, - 839, 858, 840, 861, 864, 865, 905, 906, 846, 830, - 257, 907, 843, 866, 857, 856, 841, 827, 867, 868, - 809, 804, 844, 845, 831, 850, 851, 852, 775, 823, - 824, 825, 847, 848, 805, 806, 807, 808, 0, 0, - 0, 478, 479, 480, 502, 0, 464, 526, 650, 0, - 0, 0, 0, 0, 0, 0, 576, 588, 622, 0, - 632, 633, 635, 637, 853, 639, 438, 439, 0, 849, - 642, 643, 640, 374, 425, 444, 432, 0, 656, 517, - 518, 657, 628, 0, 768, 206, 64, 197, 168, 0, - 0, 0, 0, 0, 0, 401, 0, 0, 532, 565, - 554, 638, 520, 0, 198, 0, 0, 0, 0, 0, - 0, 189, 0, 336, 0, 199, 369, 569, 551, 561, - 552, 537, 538, 539, 546, 348, 540, 541, 542, 512, - 543, 513, 544, 545, 140, 568, 519, 434, 385, 586, - 585, 0, 0, 0, 0, 0, 0, 0, 0, 126, - 0, 0, 0, 0, 0, 0, 0, 0, 202, 0, - 0, 228, 0, 0, 0, 0, 0, 0, 309, 229, - 514, 634, 516, 515, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 312, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 220, 0, 0, 0, 0, 0, 0, + 633, 635, 637, 851, 639, 438, 439, 0, 847, 642, + 643, 640, 374, 425, 444, 432, 0, 656, 517, 518, + 657, 628, 0, 766, 206, 64, 197, 168, 0, 0, + 0, 0, 0, 0, 401, 0, 0, 532, 565, 554, + 638, 520, 0, 198, 0, 0, 0, 0, 0, 0, + 189, 0, 336, 0, 199, 369, 569, 551, 561, 552, + 537, 538, 539, 546, 348, 540, 541, 542, 512, 543, + 513, 544, 545, 140, 568, 519, 434, 385, 586, 585, + 0, 0, 0, 0, 0, 0, 0, 0, 126, 0, + 0, 0, 0, 0, 0, 0, 0, 202, 0, 0, + 228, 0, 0, 0, 0, 0, 0, 309, 229, 514, + 634, 516, 515, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 312, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 220, 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, 299, 441, 460, 310, 429, - 473, 315, 437, 452, 305, 400, 426, 0, 0, 301, - 458, 436, 382, 359, 360, 300, 0, 420, 334, 350, - 331, 398, 0, 457, 485, 330, 476, 0, 468, 303, - 0, 467, 397, 454, 459, 383, 376, 0, 302, 456, - 381, 375, 363, 340, 501, 364, 365, 354, 409, 373, - 410, 355, 387, 386, 388, 0, 0, 0, 0, 0, - 496, 497, 0, 0, 645, 0, 0, 0, 0, 167, - 195, 204, 196, 124, 0, 0, 627, 0, 0, 631, - 0, 470, 0, 0, 221, 0, 0, 0, 440, 0, - 0, 366, 194, 188, 187, 486, 0, 423, 403, 233, - 0, 0, 421, 371, 455, 411, 461, 442, 469, 417, - 412, 294, 443, 333, 384, 306, 308, 328, 335, 337, - 341, 342, 393, 394, 406, 428, 445, 446, 447, 332, - 316, 422, 317, 352, 318, 295, 324, 322, 325, 430, - 326, 297, 407, 451, 0, 347, 418, 379, 298, 378, - 408, 450, 449, 307, 477, 483, 484, 573, 0, 489, - 606, 607, 608, 498, 0, 413, 503, 504, 505, 507, - 508, 509, 510, 574, 591, 558, 528, 491, 582, 525, - 529, 530, 357, 594, 0, 0, 0, 482, 367, 368, - 0, 339, 338, 380, 416, 345, 291, 292, 465, 329, - 399, 596, 629, 630, 521, 0, 583, 522, 531, 321, - 555, 567, 566, 395, 481, 224, 578, 581, 511, 234, - 0, 575, 590, 548, 589, 235, 405, 0, 427, 587, - 534, 0, 579, 553, 0, 580, 549, 584, 0, 523, - 0, 435, 463, 475, 492, 495, 524, 609, 610, 611, - 296, 494, 613, 614, 615, 616, 617, 618, 619, 612, - 466, 556, 533, 559, 474, 536, 535, 0, 0, 570, - 490, 571, 572, 389, 390, 391, 392, 349, 597, 314, - 493, 415, 138, 557, 0, 0, 0, 0, 0, 0, - 0, 0, 562, 563, 560, 232, 0, 620, 621, 0, - 0, 487, 488, 344, 351, 506, 353, 313, 404, 346, - 472, 361, 0, 499, 564, 500, 623, 626, 624, 625, - 396, 356, 358, 431, 362, 372, 419, 471, 402, 424, - 311, 462, 433, 377, 550, 577, 0, 0, 0, 0, - 0, 0, 0, 0, 65, 0, 0, 280, 0, 0, + 0, 0, 0, 0, 299, 441, 460, 310, 429, 473, + 315, 437, 452, 305, 400, 426, 0, 0, 301, 458, + 436, 382, 359, 360, 300, 0, 420, 334, 350, 331, + 398, 0, 457, 485, 330, 476, 0, 468, 303, 0, + 467, 397, 454, 459, 383, 376, 0, 302, 456, 381, + 375, 363, 340, 501, 364, 365, 354, 409, 373, 410, + 355, 387, 386, 388, 0, 0, 0, 0, 0, 496, + 497, 0, 0, 645, 0, 0, 0, 0, 167, 195, + 204, 196, 124, 0, 0, 627, 0, 0, 631, 0, + 470, 0, 0, 221, 0, 0, 0, 440, 0, 0, + 366, 194, 188, 187, 486, 0, 423, 403, 233, 0, + 0, 421, 371, 455, 411, 461, 442, 469, 417, 412, + 294, 443, 333, 384, 306, 308, 328, 335, 337, 341, + 342, 393, 394, 406, 428, 445, 446, 447, 332, 316, + 422, 317, 352, 318, 295, 324, 322, 325, 430, 326, + 297, 407, 451, 0, 347, 418, 379, 298, 378, 408, + 450, 449, 307, 477, 483, 484, 573, 0, 489, 606, + 607, 608, 498, 0, 413, 503, 504, 505, 507, 508, + 509, 510, 574, 591, 558, 528, 491, 582, 525, 529, + 530, 357, 594, 0, 0, 0, 482, 367, 368, 0, + 339, 338, 380, 416, 345, 291, 292, 465, 329, 399, + 596, 629, 630, 521, 0, 583, 522, 531, 321, 555, + 567, 566, 395, 481, 224, 578, 581, 511, 234, 0, + 575, 590, 548, 589, 235, 405, 0, 427, 587, 534, + 0, 579, 553, 0, 580, 549, 584, 0, 523, 0, + 435, 463, 475, 492, 495, 524, 609, 610, 611, 296, + 494, 613, 614, 615, 616, 617, 618, 619, 612, 466, + 556, 533, 559, 474, 536, 535, 0, 0, 570, 490, + 571, 572, 389, 390, 391, 392, 349, 597, 314, 493, + 415, 138, 557, 0, 0, 0, 0, 0, 0, 0, + 0, 562, 563, 560, 232, 0, 620, 621, 0, 0, + 487, 488, 344, 351, 506, 353, 313, 404, 346, 472, + 361, 0, 499, 564, 500, 623, 626, 624, 625, 396, + 356, 358, 431, 362, 372, 419, 471, 402, 424, 311, + 462, 433, 377, 550, 577, 0, 0, 0, 0, 0, + 0, 0, 0, 65, 0, 0, 280, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 605, 604, 603, 602, 601, 600, 599, 598, - 0, 0, 547, 448, 323, 285, 319, 320, 327, 239, - 304, 453, 240, 0, 293, 527, 370, 169, 414, 343, - 592, 593, 61, 644, 241, 242, 243, 244, 245, 246, - 247, 248, 286, 249, 250, 251, 252, 253, 254, 255, - 258, 259, 260, 261, 262, 263, 264, 265, 595, 256, - 257, 266, 267, 268, 269, 270, 271, 272, 273, 274, - 275, 276, 277, 278, 279, 0, 0, 0, 287, 288, - 289, 290, 0, 0, 281, 282, 283, 284, 0, 0, - 0, 478, 479, 480, 502, 0, 464, 526, 236, 45, - 222, 225, 227, 226, 0, 62, 576, 588, 622, 5, - 632, 633, 635, 637, 636, 639, 438, 439, 0, 641, - 642, 643, 640, 374, 425, 444, 432, 143, 237, 517, - 518, 238, 628, 206, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 401, 0, 0, 532, 565, 554, 638, - 520, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 336, 0, 0, 369, 569, 551, 561, 552, 537, - 538, 539, 546, 348, 540, 541, 542, 512, 543, 513, - 544, 545, 140, 568, 519, 434, 385, 586, 585, 0, + 0, 605, 604, 603, 602, 601, 600, 599, 598, 0, + 0, 547, 448, 323, 285, 319, 320, 327, 239, 304, + 453, 240, 0, 293, 527, 370, 169, 414, 343, 592, + 593, 61, 644, 241, 242, 243, 244, 245, 246, 247, + 248, 286, 249, 250, 251, 252, 253, 254, 255, 258, + 259, 260, 261, 262, 263, 264, 265, 595, 256, 257, + 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, + 276, 277, 278, 279, 0, 0, 0, 287, 288, 289, + 290, 0, 0, 281, 282, 283, 284, 0, 0, 0, + 478, 479, 480, 502, 0, 464, 526, 236, 45, 222, + 225, 227, 226, 0, 62, 576, 588, 622, 5, 632, + 633, 635, 637, 636, 639, 438, 439, 0, 641, 642, + 643, 640, 374, 425, 444, 432, 143, 237, 517, 518, + 238, 628, 206, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 401, 0, 0, 532, 565, 554, 638, 520, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 202, 0, 0, 228, - 0, 0, 0, 0, 0, 0, 309, 229, 514, 634, - 516, 515, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 312, 2434, 2437, 0, 0, 0, 0, 0, 0, + 336, 0, 0, 369, 569, 551, 561, 552, 537, 538, + 539, 546, 348, 540, 541, 542, 512, 543, 513, 544, + 545, 140, 568, 519, 434, 385, 586, 585, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 202, 0, 0, 228, 0, + 0, 0, 0, 0, 0, 309, 229, 514, 634, 516, + 515, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 312, 2422, 2425, 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, 299, 441, 460, 310, 429, 473, 315, - 437, 452, 305, 400, 426, 0, 0, 301, 458, 436, - 382, 359, 360, 300, 0, 420, 334, 350, 331, 398, - 0, 457, 485, 330, 476, 0, 468, 303, 0, 467, - 397, 454, 459, 383, 376, 0, 302, 456, 381, 375, - 363, 340, 501, 364, 365, 354, 409, 373, 410, 355, - 387, 386, 388, 0, 0, 0, 0, 0, 496, 497, - 0, 0, 645, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 627, 0, 0, 631, 2438, 470, - 0, 0, 0, 2433, 0, 2432, 440, 2430, 2435, 366, - 0, 0, 0, 486, 0, 423, 403, 659, 0, 0, - 421, 371, 455, 411, 461, 442, 469, 417, 412, 294, - 443, 333, 384, 306, 308, 328, 335, 337, 341, 342, - 393, 394, 406, 428, 445, 446, 447, 332, 316, 422, - 317, 352, 318, 295, 324, 322, 325, 430, 326, 297, - 407, 451, 2436, 347, 418, 379, 298, 378, 408, 450, - 449, 307, 477, 483, 484, 573, 0, 489, 660, 661, - 662, 498, 0, 413, 503, 504, 505, 507, 508, 509, - 510, 574, 591, 558, 528, 491, 582, 525, 529, 530, - 357, 594, 0, 0, 0, 482, 367, 368, 0, 339, - 338, 380, 416, 345, 291, 292, 655, 329, 399, 596, - 629, 630, 521, 0, 583, 522, 531, 321, 555, 567, - 566, 395, 481, 0, 578, 581, 511, 654, 0, 575, - 590, 658, 589, 651, 405, 0, 427, 587, 534, 0, - 579, 553, 0, 580, 549, 584, 0, 523, 0, 435, - 463, 475, 492, 495, 524, 609, 610, 611, 296, 494, - 613, 614, 615, 616, 617, 618, 619, 612, 466, 556, - 533, 559, 474, 536, 535, 0, 0, 570, 490, 571, - 572, 389, 390, 391, 392, 349, 597, 314, 493, 415, - 0, 557, 0, 0, 0, 0, 0, 0, 0, 0, - 562, 563, 560, 663, 0, 620, 621, 0, 0, 487, - 488, 344, 351, 506, 353, 313, 404, 346, 472, 361, - 0, 499, 564, 500, 623, 626, 624, 625, 396, 356, - 358, 431, 362, 372, 419, 471, 402, 424, 311, 462, - 433, 377, 550, 577, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 280, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 605, 604, 603, 602, 601, 600, 599, 598, 0, 0, - 547, 448, 323, 285, 319, 320, 327, 652, 649, 453, - 653, 0, 293, 527, 370, 169, 414, 343, 592, 593, - 0, 644, 241, 242, 243, 244, 245, 246, 247, 248, - 286, 249, 250, 251, 252, 253, 254, 255, 258, 259, - 260, 261, 262, 263, 264, 265, 595, 256, 257, 266, - 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, - 277, 278, 279, 0, 0, 0, 287, 288, 289, 290, - 0, 0, 281, 282, 283, 284, 0, 0, 0, 478, - 479, 480, 502, 0, 464, 526, 650, 0, 0, 0, - 0, 0, 0, 0, 576, 588, 622, 0, 632, 633, - 635, 637, 636, 639, 438, 439, 0, 641, 642, 643, - 640, 374, 425, 444, 432, 0, 656, 517, 518, 657, - 628, 401, 0, 0, 532, 565, 554, 638, 520, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 336, - 0, 0, 369, 569, 551, 561, 552, 537, 538, 539, - 546, 348, 540, 541, 542, 512, 543, 513, 544, 545, - 0, 568, 519, 434, 385, 586, 585, 0, 0, 0, + 0, 0, 299, 441, 460, 310, 429, 473, 315, 437, + 452, 305, 400, 426, 0, 0, 301, 458, 436, 382, + 359, 360, 300, 0, 420, 334, 350, 331, 398, 0, + 457, 485, 330, 476, 0, 468, 303, 0, 467, 397, + 454, 459, 383, 376, 0, 302, 456, 381, 375, 363, + 340, 501, 364, 365, 354, 409, 373, 410, 355, 387, + 386, 388, 0, 0, 0, 0, 0, 496, 497, 0, + 0, 645, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 627, 0, 0, 631, 2426, 470, 0, + 0, 0, 2421, 0, 2420, 440, 2418, 2423, 366, 0, + 0, 0, 486, 0, 423, 403, 659, 0, 0, 421, + 371, 455, 411, 461, 442, 469, 417, 412, 294, 443, + 333, 384, 306, 308, 328, 335, 337, 341, 342, 393, + 394, 406, 428, 445, 446, 447, 332, 316, 422, 317, + 352, 318, 295, 324, 322, 325, 430, 326, 297, 407, + 451, 2424, 347, 418, 379, 298, 378, 408, 450, 449, + 307, 477, 483, 484, 573, 0, 489, 660, 661, 662, + 498, 0, 413, 503, 504, 505, 507, 508, 509, 510, + 574, 591, 558, 528, 491, 582, 525, 529, 530, 357, + 594, 0, 0, 0, 482, 367, 368, 0, 339, 338, + 380, 416, 345, 291, 292, 655, 329, 399, 596, 629, + 630, 521, 0, 583, 522, 531, 321, 555, 567, 566, + 395, 481, 0, 578, 581, 511, 654, 0, 575, 590, + 658, 589, 651, 405, 0, 427, 587, 534, 0, 579, + 553, 0, 580, 549, 584, 0, 523, 0, 435, 463, + 475, 492, 495, 524, 609, 610, 611, 296, 494, 613, + 614, 615, 616, 617, 618, 619, 612, 466, 556, 533, + 559, 474, 536, 535, 0, 0, 570, 490, 571, 572, + 389, 390, 391, 392, 349, 597, 314, 493, 415, 0, + 557, 0, 0, 0, 0, 0, 0, 0, 0, 562, + 563, 560, 663, 0, 620, 621, 0, 0, 487, 488, + 344, 351, 506, 353, 313, 404, 346, 472, 361, 0, + 499, 564, 500, 623, 626, 624, 625, 396, 356, 358, + 431, 362, 372, 419, 471, 402, 424, 311, 462, 433, + 377, 550, 577, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 280, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 605, + 604, 603, 602, 601, 600, 599, 598, 0, 0, 547, + 448, 323, 285, 319, 320, 327, 652, 649, 453, 653, + 0, 293, 527, 370, 169, 414, 343, 592, 593, 0, + 644, 241, 242, 243, 244, 245, 246, 247, 248, 286, + 249, 250, 251, 252, 253, 254, 255, 258, 259, 260, + 261, 262, 263, 264, 265, 595, 256, 257, 266, 267, + 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, + 278, 279, 0, 0, 0, 287, 288, 289, 290, 0, + 0, 281, 282, 283, 284, 0, 0, 0, 478, 479, + 480, 502, 0, 464, 526, 650, 0, 0, 0, 0, + 0, 0, 0, 576, 588, 622, 0, 632, 633, 635, + 637, 636, 639, 438, 439, 0, 641, 642, 643, 640, + 374, 425, 444, 432, 0, 656, 517, 518, 657, 628, + 401, 0, 0, 532, 565, 554, 638, 520, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 336, 0, + 0, 369, 569, 551, 561, 552, 537, 538, 539, 546, + 348, 540, 541, 542, 512, 543, 513, 544, 545, 0, + 568, 519, 434, 385, 586, 585, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1336, 0, 0, 228, 0, 0, - 787, 797, 0, 0, 309, 229, 514, 634, 516, 515, - 788, 0, 789, 793, 796, 792, 790, 791, 0, 312, + 0, 0, 0, 1331, 0, 0, 228, 0, 0, 785, + 795, 0, 0, 309, 229, 514, 634, 516, 515, 786, + 0, 787, 791, 794, 790, 788, 789, 0, 312, 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, 0, 0, 0, 0, 794, 0, 0, 0, 0, - 0, 299, 441, 460, 310, 429, 473, 315, 437, 452, - 305, 400, 426, 0, 0, 301, 458, 436, 382, 359, - 360, 300, 0, 420, 334, 350, 331, 398, 795, 457, - 485, 330, 476, 0, 468, 303, 0, 467, 397, 454, - 459, 383, 376, 0, 302, 456, 381, 375, 363, 340, - 501, 364, 365, 354, 409, 373, 410, 355, 387, 386, - 388, 0, 0, 0, 0, 0, 496, 497, 0, 0, - 645, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 627, 0, 0, 631, 0, 470, 0, 0, - 0, 0, 0, 0, 440, 0, 0, 366, 0, 0, - 0, 486, 0, 423, 403, 659, 0, 0, 421, 371, - 455, 411, 461, 442, 469, 417, 412, 294, 443, 333, - 384, 306, 308, 328, 335, 337, 341, 342, 393, 394, - 406, 428, 445, 446, 447, 332, 316, 422, 317, 352, - 318, 295, 324, 322, 325, 430, 326, 297, 407, 451, - 0, 347, 418, 379, 298, 378, 408, 450, 449, 307, - 477, 483, 484, 573, 0, 489, 660, 661, 662, 498, - 0, 413, 503, 504, 505, 507, 508, 509, 510, 574, - 591, 558, 528, 491, 582, 525, 529, 530, 357, 594, - 0, 0, 0, 482, 367, 368, 0, 339, 338, 380, - 416, 345, 291, 292, 655, 329, 399, 596, 629, 630, - 521, 0, 583, 522, 531, 321, 555, 567, 566, 395, - 481, 0, 578, 581, 511, 654, 0, 575, 590, 658, - 589, 651, 405, 0, 427, 587, 534, 0, 579, 553, - 0, 580, 549, 584, 0, 523, 0, 435, 463, 475, - 492, 495, 524, 609, 610, 611, 296, 494, 613, 614, - 615, 616, 617, 618, 619, 612, 466, 556, 533, 559, - 474, 536, 535, 0, 0, 570, 490, 571, 572, 389, - 390, 391, 392, 349, 597, 314, 493, 415, 0, 557, - 0, 0, 0, 0, 0, 0, 0, 0, 562, 563, - 560, 663, 0, 620, 621, 0, 0, 487, 488, 344, - 351, 506, 353, 313, 404, 346, 472, 361, 0, 499, - 564, 500, 623, 626, 624, 625, 396, 356, 358, 431, - 362, 372, 419, 471, 402, 424, 311, 462, 433, 377, - 550, 577, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 280, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 605, 604, - 603, 602, 601, 600, 599, 598, 0, 0, 547, 448, - 323, 285, 319, 320, 327, 652, 649, 453, 653, 0, - 293, 527, 370, 0, 414, 343, 592, 593, 0, 644, - 241, 242, 243, 244, 245, 246, 247, 248, 286, 249, - 250, 251, 252, 253, 254, 255, 258, 259, 260, 261, - 262, 263, 264, 265, 595, 256, 257, 266, 267, 268, - 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, - 279, 0, 0, 0, 287, 288, 289, 290, 0, 0, - 281, 282, 283, 284, 0, 0, 0, 478, 479, 480, - 502, 0, 464, 526, 650, 0, 0, 0, 0, 0, - 0, 0, 576, 588, 622, 0, 632, 633, 635, 637, - 636, 639, 438, 439, 0, 641, 642, 643, 640, 374, - 425, 444, 432, 0, 656, 517, 518, 657, 628, 206, - 64, 197, 168, 0, 0, 0, 0, 0, 0, 401, - 684, 0, 532, 565, 554, 638, 520, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 336, 0, 0, - 369, 569, 551, 561, 552, 537, 538, 539, 546, 348, - 540, 541, 542, 512, 543, 513, 544, 545, 0, 568, - 519, 434, 385, 586, 585, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 691, 0, 0, 0, 0, 0, - 0, 0, 690, 0, 0, 228, 0, 0, 0, 0, - 0, 0, 309, 229, 514, 634, 516, 515, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 312, 0, 0, + 0, 0, 0, 0, 792, 0, 0, 0, 0, 0, + 299, 441, 460, 310, 429, 473, 315, 437, 452, 305, + 400, 426, 0, 0, 301, 458, 436, 382, 359, 360, + 300, 0, 420, 334, 350, 331, 398, 793, 457, 485, + 330, 476, 0, 468, 303, 0, 467, 397, 454, 459, + 383, 376, 0, 302, 456, 381, 375, 363, 340, 501, + 364, 365, 354, 409, 373, 410, 355, 387, 386, 388, + 0, 0, 0, 0, 0, 496, 497, 0, 0, 645, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 627, 0, 0, 631, 0, 470, 0, 0, 0, + 0, 0, 0, 440, 0, 0, 366, 0, 0, 0, + 486, 0, 423, 403, 659, 0, 0, 421, 371, 455, + 411, 461, 442, 469, 417, 412, 294, 443, 333, 384, + 306, 308, 328, 335, 337, 341, 342, 393, 394, 406, + 428, 445, 446, 447, 332, 316, 422, 317, 352, 318, + 295, 324, 322, 325, 430, 326, 297, 407, 451, 0, + 347, 418, 379, 298, 378, 408, 450, 449, 307, 477, + 483, 484, 573, 0, 489, 660, 661, 662, 498, 0, + 413, 503, 504, 505, 507, 508, 509, 510, 574, 591, + 558, 528, 491, 582, 525, 529, 530, 357, 594, 0, + 0, 0, 482, 367, 368, 0, 339, 338, 380, 416, + 345, 291, 292, 655, 329, 399, 596, 629, 630, 521, + 0, 583, 522, 531, 321, 555, 567, 566, 395, 481, + 0, 578, 581, 511, 654, 0, 575, 590, 658, 589, + 651, 405, 0, 427, 587, 534, 0, 579, 553, 0, + 580, 549, 584, 0, 523, 0, 435, 463, 475, 492, + 495, 524, 609, 610, 611, 296, 494, 613, 614, 615, + 616, 617, 618, 619, 612, 466, 556, 533, 559, 474, + 536, 535, 0, 0, 570, 490, 571, 572, 389, 390, + 391, 392, 349, 597, 314, 493, 415, 0, 557, 0, + 0, 0, 0, 0, 0, 0, 0, 562, 563, 560, + 663, 0, 620, 621, 0, 0, 487, 488, 344, 351, + 506, 353, 313, 404, 346, 472, 361, 0, 499, 564, + 500, 623, 626, 624, 625, 396, 356, 358, 431, 362, + 372, 419, 471, 402, 424, 311, 462, 433, 377, 550, + 577, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 280, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 605, 604, 603, + 602, 601, 600, 599, 598, 0, 0, 547, 448, 323, + 285, 319, 320, 327, 652, 649, 453, 653, 0, 293, + 527, 370, 0, 414, 343, 592, 593, 0, 644, 241, + 242, 243, 244, 245, 246, 247, 248, 286, 249, 250, + 251, 252, 253, 254, 255, 258, 259, 260, 261, 262, + 263, 264, 265, 595, 256, 257, 266, 267, 268, 269, + 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, + 0, 0, 0, 287, 288, 289, 290, 0, 0, 281, + 282, 283, 284, 0, 0, 0, 478, 479, 480, 502, + 0, 464, 526, 650, 0, 0, 0, 0, 0, 0, + 0, 576, 588, 622, 0, 632, 633, 635, 637, 636, + 639, 438, 439, 0, 641, 642, 643, 640, 374, 425, + 444, 432, 0, 656, 517, 518, 657, 628, 206, 64, + 197, 168, 0, 0, 0, 0, 0, 0, 401, 682, + 0, 532, 565, 554, 638, 520, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 336, 0, 0, 369, + 569, 551, 561, 552, 537, 538, 539, 546, 348, 540, + 541, 542, 512, 543, 513, 544, 545, 0, 568, 519, + 434, 385, 586, 585, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 689, 0, 0, 0, 0, 0, 0, + 0, 688, 0, 0, 228, 0, 0, 0, 0, 0, + 0, 309, 229, 514, 634, 516, 515, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 312, 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, 299, - 441, 460, 310, 429, 473, 315, 437, 452, 305, 400, - 426, 0, 0, 301, 458, 436, 382, 359, 360, 300, - 0, 420, 334, 350, 331, 398, 0, 457, 485, 330, - 476, 0, 468, 303, 0, 467, 397, 454, 459, 383, - 376, 0, 302, 456, 381, 375, 363, 340, 501, 364, - 365, 354, 409, 373, 410, 355, 387, 386, 388, 0, - 0, 0, 0, 0, 496, 497, 0, 0, 645, 0, - 0, 0, 0, 0, 0, 0, 0, 688, 689, 0, - 627, 0, 0, 631, 0, 470, 0, 0, 0, 0, - 0, 0, 440, 0, 0, 366, 0, 0, 0, 486, - 0, 423, 403, 659, 0, 0, 421, 371, 455, 411, - 461, 442, 469, 417, 412, 294, 443, 333, 384, 306, - 308, 328, 335, 337, 341, 342, 393, 394, 406, 428, - 445, 446, 447, 332, 316, 422, 317, 352, 318, 295, - 324, 322, 325, 430, 326, 297, 407, 451, 0, 347, - 418, 379, 298, 378, 408, 450, 449, 307, 477, 483, - 484, 573, 0, 489, 660, 661, 662, 498, 0, 413, - 503, 504, 505, 507, 508, 509, 510, 574, 591, 558, - 528, 491, 582, 525, 529, 530, 357, 594, 0, 0, - 0, 482, 367, 368, 0, 339, 338, 380, 416, 345, - 291, 292, 655, 329, 399, 596, 629, 630, 521, 0, - 583, 522, 531, 321, 555, 567, 566, 395, 481, 0, - 578, 581, 511, 654, 0, 575, 590, 658, 589, 651, - 405, 0, 427, 587, 534, 0, 579, 553, 0, 580, - 549, 584, 0, 523, 0, 435, 463, 475, 492, 495, - 524, 609, 610, 611, 296, 494, 613, 614, 615, 616, - 617, 618, 619, 612, 466, 556, 533, 559, 474, 536, - 535, 0, 0, 570, 490, 571, 572, 389, 390, 391, - 392, 685, 687, 314, 493, 415, 699, 557, 0, 0, - 0, 0, 0, 0, 0, 0, 562, 563, 560, 663, - 0, 620, 621, 0, 0, 487, 488, 344, 351, 506, - 353, 313, 404, 346, 472, 361, 0, 499, 564, 500, - 623, 626, 624, 625, 396, 356, 358, 431, 362, 372, - 419, 471, 402, 424, 311, 462, 433, 377, 550, 577, - 0, 0, 0, 0, 0, 0, 0, 0, 65, 0, - 0, 280, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 605, 604, 603, 602, - 601, 600, 599, 598, 0, 0, 547, 448, 323, 285, - 319, 320, 327, 652, 649, 453, 653, 0, 293, 527, - 370, 169, 414, 343, 592, 593, 0, 644, 241, 242, - 243, 244, 245, 246, 247, 248, 286, 249, 250, 251, - 252, 253, 254, 255, 258, 259, 260, 261, 262, 263, - 264, 265, 595, 256, 257, 266, 267, 268, 269, 270, - 271, 272, 273, 274, 275, 276, 277, 278, 279, 0, - 0, 0, 287, 288, 289, 290, 0, 0, 281, 282, - 283, 284, 0, 0, 0, 478, 479, 480, 502, 0, - 464, 526, 650, 0, 0, 0, 0, 0, 0, 0, - 576, 588, 622, 0, 632, 633, 635, 637, 636, 639, - 438, 439, 0, 641, 642, 643, 640, 374, 425, 444, - 432, 0, 656, 517, 518, 657, 628, 401, 0, 0, - 532, 565, 554, 638, 520, 0, 1142, 0, 0, 0, - 0, 0, 0, 0, 0, 336, 0, 0, 369, 569, - 551, 561, 552, 537, 538, 539, 546, 348, 540, 541, - 542, 512, 543, 513, 544, 545, 0, 568, 519, 434, - 385, 586, 585, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 228, 0, 0, 0, 0, 0, 0, - 309, 229, 514, 634, 516, 515, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 312, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 299, 441, + 460, 310, 429, 473, 315, 437, 452, 305, 400, 426, + 0, 0, 301, 458, 436, 382, 359, 360, 300, 0, + 420, 334, 350, 331, 398, 0, 457, 485, 330, 476, + 0, 468, 303, 0, 467, 397, 454, 459, 383, 376, + 0, 302, 456, 381, 375, 363, 340, 501, 364, 365, + 354, 409, 373, 410, 355, 387, 386, 388, 0, 0, + 0, 0, 0, 496, 497, 0, 0, 645, 0, 0, + 0, 0, 0, 0, 0, 0, 686, 687, 0, 627, + 0, 0, 631, 0, 470, 0, 0, 0, 0, 0, + 0, 440, 0, 0, 366, 0, 0, 0, 486, 0, + 423, 403, 659, 0, 0, 421, 371, 455, 411, 461, + 442, 469, 417, 412, 294, 443, 333, 384, 306, 308, + 328, 335, 337, 341, 342, 393, 394, 406, 428, 445, + 446, 447, 332, 316, 422, 317, 352, 318, 295, 324, + 322, 325, 430, 326, 297, 407, 451, 0, 347, 418, + 379, 298, 378, 408, 450, 449, 307, 477, 483, 484, + 573, 0, 489, 660, 661, 662, 498, 0, 413, 503, + 504, 505, 507, 508, 509, 510, 574, 591, 558, 528, + 491, 582, 525, 529, 530, 357, 594, 0, 0, 0, + 482, 367, 368, 0, 339, 338, 380, 416, 345, 291, + 292, 655, 329, 399, 596, 629, 630, 521, 0, 583, + 522, 531, 321, 555, 567, 566, 395, 481, 0, 578, + 581, 511, 654, 0, 575, 590, 658, 589, 651, 405, + 0, 427, 587, 534, 0, 579, 553, 0, 580, 549, + 584, 0, 523, 0, 435, 463, 475, 492, 495, 524, + 609, 610, 611, 296, 494, 613, 614, 615, 616, 617, + 618, 619, 612, 466, 556, 533, 559, 474, 536, 535, + 0, 0, 570, 490, 571, 572, 389, 390, 391, 392, + 683, 685, 314, 493, 415, 697, 557, 0, 0, 0, + 0, 0, 0, 0, 0, 562, 563, 560, 663, 0, + 620, 621, 0, 0, 487, 488, 344, 351, 506, 353, + 313, 404, 346, 472, 361, 0, 499, 564, 500, 623, + 626, 624, 625, 396, 356, 358, 431, 362, 372, 419, + 471, 402, 424, 311, 462, 433, 377, 550, 577, 0, + 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, + 280, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 605, 604, 603, 602, 601, + 600, 599, 598, 0, 0, 547, 448, 323, 285, 319, + 320, 327, 652, 649, 453, 653, 0, 293, 527, 370, + 169, 414, 343, 592, 593, 0, 644, 241, 242, 243, + 244, 245, 246, 247, 248, 286, 249, 250, 251, 252, + 253, 254, 255, 258, 259, 260, 261, 262, 263, 264, + 265, 595, 256, 257, 266, 267, 268, 269, 270, 271, + 272, 273, 274, 275, 276, 277, 278, 279, 0, 0, + 0, 287, 288, 289, 290, 0, 0, 281, 282, 283, + 284, 0, 0, 0, 478, 479, 480, 502, 0, 464, + 526, 650, 0, 0, 0, 0, 0, 0, 0, 576, + 588, 622, 0, 632, 633, 635, 637, 636, 639, 438, + 439, 0, 641, 642, 643, 640, 374, 425, 444, 432, + 0, 656, 517, 518, 657, 628, 401, 0, 0, 532, + 565, 554, 638, 520, 0, 1139, 0, 0, 0, 0, + 0, 0, 0, 0, 336, 0, 0, 369, 569, 551, + 561, 552, 537, 538, 539, 546, 348, 540, 541, 542, + 512, 543, 513, 544, 545, 0, 568, 519, 434, 385, + 586, 585, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 228, 0, 0, 0, 0, 0, 0, 309, + 229, 514, 634, 516, 515, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 312, 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, - 1127, 0, 0, 0, 0, 0, 0, 299, 441, 460, - 310, 429, 473, 315, 437, 452, 305, 400, 426, 0, - 0, 2598, 2601, 2602, 2603, 2604, 2605, 2606, 0, 2611, - 2607, 2608, 2609, 2610, 0, 2593, 2594, 2595, 2596, 1125, - 2577, 2599, 0, 2578, 397, 2579, 2580, 2581, 2582, 1129, - 2583, 2584, 2585, 2586, 2587, 2590, 2591, 2588, 2589, 2597, - 409, 373, 410, 355, 387, 386, 388, 1153, 1155, 1157, - 1159, 1162, 496, 497, 0, 0, 645, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 627, 0, - 0, 631, 0, 470, 0, 0, 0, 0, 0, 0, - 440, 0, 0, 366, 0, 0, 0, 2592, 0, 423, - 403, 659, 0, 0, 421, 371, 455, 411, 461, 442, - 469, 417, 412, 294, 443, 333, 384, 306, 308, 328, - 335, 337, 341, 342, 393, 394, 406, 428, 445, 446, - 447, 332, 316, 422, 317, 352, 318, 295, 324, 322, - 325, 430, 326, 297, 407, 451, 0, 347, 418, 379, - 298, 378, 408, 450, 449, 307, 477, 483, 484, 573, - 0, 489, 660, 661, 662, 498, 0, 413, 503, 504, - 505, 507, 508, 509, 510, 574, 591, 558, 528, 491, - 582, 525, 529, 530, 357, 594, 0, 0, 0, 482, - 367, 368, 0, 339, 338, 380, 416, 345, 291, 292, - 655, 329, 399, 596, 629, 630, 521, 0, 583, 522, - 531, 321, 555, 567, 566, 395, 481, 0, 578, 581, - 511, 654, 0, 575, 590, 658, 589, 651, 405, 0, - 427, 587, 534, 0, 579, 553, 0, 580, 549, 584, - 0, 523, 0, 435, 463, 475, 492, 495, 524, 609, - 610, 611, 296, 494, 613, 614, 615, 616, 617, 618, - 619, 612, 466, 556, 533, 559, 474, 536, 535, 0, - 0, 570, 490, 571, 572, 389, 390, 391, 392, 349, - 597, 314, 493, 415, 0, 557, 0, 0, 0, 0, - 0, 0, 0, 0, 562, 563, 560, 663, 0, 620, - 621, 0, 0, 487, 488, 344, 351, 506, 353, 313, - 404, 346, 472, 361, 0, 499, 564, 500, 623, 626, - 624, 625, 396, 356, 358, 431, 362, 372, 419, 471, - 402, 424, 311, 462, 433, 377, 550, 577, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 280, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1124, + 0, 0, 0, 0, 0, 0, 299, 441, 460, 310, + 429, 473, 315, 437, 452, 305, 400, 426, 0, 0, + 2586, 2589, 2590, 2591, 2592, 2593, 2594, 0, 2599, 2595, + 2596, 2597, 2598, 0, 2581, 2582, 2583, 2584, 1122, 2565, + 2587, 0, 2566, 397, 2567, 2568, 2569, 2570, 1126, 2571, + 2572, 2573, 2574, 2575, 2578, 2579, 2576, 2577, 2585, 409, + 373, 410, 355, 387, 386, 388, 1150, 1152, 1154, 1156, + 1159, 496, 497, 0, 0, 645, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 627, 0, 0, + 631, 0, 470, 0, 0, 0, 0, 0, 0, 440, + 0, 0, 366, 0, 0, 0, 2580, 0, 423, 403, + 659, 0, 0, 421, 371, 455, 411, 461, 442, 469, + 417, 412, 294, 443, 333, 384, 306, 308, 328, 335, + 337, 341, 342, 393, 394, 406, 428, 445, 446, 447, + 332, 316, 422, 317, 352, 318, 295, 324, 322, 325, + 430, 326, 297, 407, 451, 0, 347, 418, 379, 298, + 378, 408, 450, 449, 307, 477, 483, 484, 573, 0, + 489, 660, 661, 662, 498, 0, 413, 503, 504, 505, + 507, 508, 509, 510, 574, 591, 558, 528, 491, 582, + 525, 529, 530, 357, 594, 0, 0, 0, 482, 367, + 368, 0, 339, 338, 380, 416, 345, 291, 292, 655, + 329, 399, 596, 629, 630, 521, 0, 583, 522, 531, + 321, 555, 567, 566, 395, 481, 0, 578, 581, 511, + 654, 0, 575, 590, 658, 589, 651, 405, 0, 427, + 587, 534, 0, 579, 553, 0, 580, 549, 584, 0, + 523, 0, 435, 463, 475, 492, 495, 524, 609, 610, + 611, 296, 494, 613, 614, 615, 616, 617, 618, 619, + 612, 466, 556, 533, 559, 474, 536, 535, 0, 0, + 570, 490, 571, 572, 389, 390, 391, 392, 349, 597, + 314, 493, 415, 0, 557, 0, 0, 0, 0, 0, + 0, 0, 0, 562, 563, 560, 663, 0, 620, 621, + 0, 0, 487, 488, 344, 351, 506, 353, 313, 404, + 346, 472, 361, 0, 499, 564, 500, 623, 626, 624, + 625, 396, 356, 358, 431, 362, 372, 419, 471, 402, + 424, 311, 462, 433, 377, 550, 577, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 280, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 605, 604, 603, 602, 601, 600, - 599, 598, 0, 0, 547, 448, 323, 285, 319, 320, - 327, 652, 649, 453, 653, 0, 293, 2600, 370, 0, - 414, 343, 592, 593, 0, 644, 241, 242, 243, 244, - 245, 246, 247, 248, 286, 249, 250, 251, 252, 253, - 254, 255, 258, 259, 260, 261, 262, 263, 264, 265, - 595, 256, 257, 266, 267, 268, 269, 270, 271, 272, - 273, 274, 275, 276, 277, 278, 279, 0, 0, 0, - 287, 288, 289, 290, 0, 0, 281, 282, 283, 284, - 0, 0, 0, 478, 479, 480, 502, 0, 464, 526, - 650, 0, 0, 0, 0, 0, 0, 0, 576, 588, - 622, 0, 632, 633, 635, 637, 636, 639, 438, 439, - 0, 641, 642, 643, 640, 374, 425, 444, 432, 0, - 656, 517, 518, 657, 628, 401, 0, 0, 532, 565, - 554, 638, 520, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 336, 0, 0, 369, 569, 551, 561, - 552, 537, 538, 539, 546, 348, 540, 541, 542, 512, - 543, 513, 544, 545, 0, 568, 519, 434, 385, 586, - 585, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 605, 604, 603, 602, 601, 600, 599, + 598, 0, 0, 547, 448, 323, 285, 319, 320, 327, + 652, 649, 453, 653, 0, 293, 2588, 370, 0, 414, + 343, 592, 593, 0, 644, 241, 242, 243, 244, 245, + 246, 247, 248, 286, 249, 250, 251, 252, 253, 254, + 255, 258, 259, 260, 261, 262, 263, 264, 265, 595, + 256, 257, 266, 267, 268, 269, 270, 271, 272, 273, + 274, 275, 276, 277, 278, 279, 0, 0, 0, 287, + 288, 289, 290, 0, 0, 281, 282, 283, 284, 0, + 0, 0, 478, 479, 480, 502, 0, 464, 526, 650, + 0, 0, 0, 0, 0, 0, 0, 576, 588, 622, + 0, 632, 633, 635, 637, 636, 639, 438, 439, 0, + 641, 642, 643, 640, 374, 425, 444, 432, 0, 656, + 517, 518, 657, 628, 401, 0, 0, 532, 565, 554, + 638, 520, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 336, 0, 0, 369, 569, 551, 561, 552, + 537, 538, 539, 546, 348, 540, 541, 542, 512, 543, + 513, 544, 545, 0, 568, 519, 434, 385, 586, 585, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 228, 0, 0, 0, 0, 0, 0, 309, 229, - 514, 634, 516, 515, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 312, 2434, 2437, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 228, 0, 0, 0, 0, 0, 0, 309, 229, 514, + 634, 516, 515, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 312, 2422, 2425, 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, 299, 441, 460, 310, 429, - 473, 315, 437, 452, 305, 400, 426, 0, 0, 301, - 458, 436, 382, 359, 360, 300, 0, 420, 334, 350, - 331, 398, 0, 457, 485, 330, 476, 0, 468, 303, - 0, 467, 397, 454, 459, 383, 376, 0, 302, 456, - 381, 375, 363, 340, 501, 364, 365, 354, 409, 373, - 410, 355, 387, 386, 388, 0, 0, 0, 0, 0, - 496, 497, 0, 0, 645, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 627, 0, 0, 631, - 2438, 470, 0, 0, 0, 2433, 0, 2432, 440, 2430, - 2435, 366, 0, 0, 0, 486, 0, 423, 403, 659, - 0, 0, 421, 371, 455, 411, 461, 442, 469, 417, - 412, 294, 443, 333, 384, 306, 308, 328, 335, 337, - 341, 342, 393, 394, 406, 428, 445, 446, 447, 332, - 316, 422, 317, 352, 318, 295, 324, 322, 325, 430, - 326, 297, 407, 451, 2436, 347, 418, 379, 298, 378, - 408, 450, 449, 307, 477, 483, 484, 573, 0, 489, - 660, 661, 662, 498, 0, 413, 503, 504, 505, 507, - 508, 509, 510, 574, 591, 558, 528, 491, 582, 525, - 529, 530, 357, 594, 0, 0, 0, 482, 367, 368, - 0, 339, 338, 380, 416, 345, 291, 292, 655, 329, - 399, 596, 629, 630, 521, 0, 583, 522, 531, 321, - 555, 567, 566, 395, 481, 0, 578, 581, 511, 654, - 0, 575, 590, 658, 589, 651, 405, 0, 427, 587, - 534, 0, 579, 553, 0, 580, 549, 584, 0, 523, - 0, 435, 463, 475, 492, 495, 524, 609, 610, 611, - 296, 494, 613, 614, 615, 616, 617, 618, 619, 612, - 466, 556, 533, 559, 474, 536, 535, 0, 0, 570, - 490, 571, 572, 389, 390, 391, 392, 349, 597, 314, - 493, 415, 0, 557, 0, 0, 0, 0, 0, 0, - 0, 0, 562, 563, 560, 663, 0, 620, 621, 0, - 0, 487, 488, 344, 351, 506, 353, 313, 404, 346, - 472, 361, 0, 499, 564, 500, 623, 626, 624, 625, - 396, 356, 358, 431, 362, 372, 419, 471, 402, 424, - 311, 462, 433, 377, 550, 577, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 280, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 605, 604, 603, 602, 601, 600, 599, 598, - 0, 0, 547, 448, 323, 285, 319, 320, 327, 652, - 649, 453, 653, 0, 293, 527, 370, 0, 414, 343, - 592, 593, 0, 644, 241, 242, 243, 244, 245, 246, - 247, 248, 286, 249, 250, 251, 252, 253, 254, 255, - 258, 259, 260, 261, 262, 263, 264, 265, 595, 256, - 257, 266, 267, 268, 269, 270, 271, 272, 273, 274, - 275, 276, 277, 278, 279, 0, 0, 0, 287, 288, - 289, 290, 0, 0, 281, 282, 283, 284, 0, 0, - 0, 478, 479, 480, 502, 0, 464, 526, 650, 0, - 0, 0, 0, 0, 0, 0, 576, 588, 622, 0, - 632, 633, 635, 637, 636, 639, 438, 439, 0, 641, - 642, 643, 640, 374, 425, 444, 432, 0, 656, 517, - 518, 657, 628, 401, 0, 0, 532, 565, 554, 638, - 520, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 336, 0, 0, 369, 569, 551, 561, 552, 537, - 538, 539, 546, 348, 540, 541, 542, 512, 543, 513, - 544, 545, 0, 568, 519, 434, 385, 586, 585, 0, + 0, 0, 0, 0, 299, 441, 460, 310, 429, 473, + 315, 437, 452, 305, 400, 426, 0, 0, 301, 458, + 436, 382, 359, 360, 300, 0, 420, 334, 350, 331, + 398, 0, 457, 485, 330, 476, 0, 468, 303, 0, + 467, 397, 454, 459, 383, 376, 0, 302, 456, 381, + 375, 363, 340, 501, 364, 365, 354, 409, 373, 410, + 355, 387, 386, 388, 0, 0, 0, 0, 0, 496, + 497, 0, 0, 645, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 627, 0, 0, 631, 2426, + 470, 0, 0, 0, 2421, 0, 2420, 440, 2418, 2423, + 366, 0, 0, 0, 486, 0, 423, 403, 659, 0, + 0, 421, 371, 455, 411, 461, 442, 469, 417, 412, + 294, 443, 333, 384, 306, 308, 328, 335, 337, 341, + 342, 393, 394, 406, 428, 445, 446, 447, 332, 316, + 422, 317, 352, 318, 295, 324, 322, 325, 430, 326, + 297, 407, 451, 2424, 347, 418, 379, 298, 378, 408, + 450, 449, 307, 477, 483, 484, 573, 0, 489, 660, + 661, 662, 498, 0, 413, 503, 504, 505, 507, 508, + 509, 510, 574, 591, 558, 528, 491, 582, 525, 529, + 530, 357, 594, 0, 0, 0, 482, 367, 368, 0, + 339, 338, 380, 416, 345, 291, 292, 655, 329, 399, + 596, 629, 630, 521, 0, 583, 522, 531, 321, 555, + 567, 566, 395, 481, 0, 578, 581, 511, 654, 0, + 575, 590, 658, 589, 651, 405, 0, 427, 587, 534, + 0, 579, 553, 0, 580, 549, 584, 0, 523, 0, + 435, 463, 475, 492, 495, 524, 609, 610, 611, 296, + 494, 613, 614, 615, 616, 617, 618, 619, 612, 466, + 556, 533, 559, 474, 536, 535, 0, 0, 570, 490, + 571, 572, 389, 390, 391, 392, 349, 597, 314, 493, + 415, 0, 557, 0, 0, 0, 0, 0, 0, 0, + 0, 562, 563, 560, 663, 0, 620, 621, 0, 0, + 487, 488, 344, 351, 506, 353, 313, 404, 346, 472, + 361, 0, 499, 564, 500, 623, 626, 624, 625, 396, + 356, 358, 431, 362, 372, 419, 471, 402, 424, 311, + 462, 433, 377, 550, 577, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 280, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 228, - 0, 0, 0, 0, 0, 0, 309, 229, 514, 634, - 516, 515, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 312, 0, 2455, 0, 0, 0, 0, 0, 0, + 0, 605, 604, 603, 602, 601, 600, 599, 598, 0, + 0, 547, 448, 323, 285, 319, 320, 327, 652, 649, + 453, 653, 0, 293, 527, 370, 0, 414, 343, 592, + 593, 0, 644, 241, 242, 243, 244, 245, 246, 247, + 248, 286, 249, 250, 251, 252, 253, 254, 255, 258, + 259, 260, 261, 262, 263, 264, 265, 595, 256, 257, + 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, + 276, 277, 278, 279, 0, 0, 0, 287, 288, 289, + 290, 0, 0, 281, 282, 283, 284, 0, 0, 0, + 478, 479, 480, 502, 0, 464, 526, 650, 0, 0, + 0, 0, 0, 0, 0, 576, 588, 622, 0, 632, + 633, 635, 637, 636, 639, 438, 439, 0, 641, 642, + 643, 640, 374, 425, 444, 432, 0, 656, 517, 518, + 657, 628, 401, 0, 0, 532, 565, 554, 638, 520, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 336, 0, 0, 369, 569, 551, 561, 552, 537, 538, + 539, 546, 348, 540, 541, 542, 512, 543, 513, 544, + 545, 0, 568, 519, 434, 385, 586, 585, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 228, 0, + 0, 0, 0, 0, 0, 309, 229, 514, 634, 516, + 515, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 312, 0, 2443, 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, 299, 441, 460, 310, 429, 473, 315, - 437, 452, 305, 400, 426, 0, 0, 301, 458, 436, - 382, 359, 360, 300, 0, 420, 334, 350, 331, 398, - 0, 457, 485, 330, 476, 0, 468, 303, 0, 467, - 397, 454, 459, 383, 376, 0, 302, 456, 381, 375, - 363, 340, 501, 364, 365, 354, 409, 373, 410, 355, - 387, 386, 388, 0, 0, 0, 0, 0, 496, 497, - 0, 0, 645, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 627, 0, 0, 631, 2454, 470, - 0, 0, 0, 2460, 2457, 2459, 440, 0, 2458, 366, - 0, 0, 0, 486, 0, 423, 403, 659, 0, 2452, - 421, 371, 455, 411, 461, 442, 469, 417, 412, 294, - 443, 333, 384, 306, 308, 328, 335, 337, 341, 342, - 393, 394, 406, 428, 445, 446, 447, 332, 316, 422, - 317, 352, 318, 295, 324, 322, 325, 430, 326, 297, - 407, 451, 0, 347, 418, 379, 298, 378, 408, 450, - 449, 307, 477, 483, 484, 573, 0, 489, 660, 661, - 662, 498, 0, 413, 503, 504, 505, 507, 508, 509, - 510, 574, 591, 558, 528, 491, 582, 525, 529, 530, - 357, 594, 0, 0, 0, 482, 367, 368, 0, 339, - 338, 380, 416, 345, 291, 292, 655, 329, 399, 596, - 629, 630, 521, 0, 583, 522, 531, 321, 555, 567, - 566, 395, 481, 0, 578, 581, 511, 654, 0, 575, - 590, 658, 589, 651, 405, 0, 427, 587, 534, 0, - 579, 553, 0, 580, 549, 584, 0, 523, 0, 435, - 463, 475, 492, 495, 524, 609, 610, 611, 296, 494, - 613, 614, 615, 616, 617, 618, 619, 612, 466, 556, - 533, 559, 474, 536, 535, 0, 0, 570, 490, 571, - 572, 389, 390, 391, 392, 349, 597, 314, 493, 415, - 0, 557, 0, 0, 0, 0, 0, 0, 0, 0, - 562, 563, 560, 663, 0, 620, 621, 0, 0, 487, - 488, 344, 351, 506, 353, 313, 404, 346, 472, 361, - 0, 499, 564, 500, 623, 626, 624, 625, 396, 356, - 358, 431, 362, 372, 419, 471, 402, 424, 311, 462, - 433, 377, 550, 577, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 280, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 605, 604, 603, 602, 601, 600, 599, 598, 0, 0, - 547, 448, 323, 285, 319, 320, 327, 652, 649, 453, - 653, 0, 293, 527, 370, 0, 414, 343, 592, 593, - 0, 644, 241, 242, 243, 244, 245, 246, 247, 248, - 286, 249, 250, 251, 252, 253, 254, 255, 258, 259, - 260, 261, 262, 263, 264, 265, 595, 256, 257, 266, - 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, - 277, 278, 279, 0, 0, 0, 287, 288, 289, 290, - 0, 0, 281, 282, 283, 284, 0, 0, 0, 478, - 479, 480, 502, 0, 464, 526, 650, 0, 0, 0, - 0, 0, 0, 0, 576, 588, 622, 0, 632, 633, - 635, 637, 636, 639, 438, 439, 0, 641, 642, 643, - 640, 374, 425, 444, 432, 0, 656, 517, 518, 657, - 628, 401, 0, 0, 532, 565, 554, 638, 520, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 336, - 0, 0, 369, 569, 551, 561, 552, 537, 538, 539, - 546, 348, 540, 541, 542, 512, 543, 513, 544, 545, - 0, 568, 519, 434, 385, 586, 585, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 228, 0, 0, - 0, 0, 0, 0, 309, 229, 514, 634, 516, 515, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 312, - 0, 2455, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 299, 441, 460, 310, 429, 473, 315, 437, + 452, 305, 400, 426, 0, 0, 301, 458, 436, 382, + 359, 360, 300, 0, 420, 334, 350, 331, 398, 0, + 457, 485, 330, 476, 0, 468, 303, 0, 467, 397, + 454, 459, 383, 376, 0, 302, 456, 381, 375, 363, + 340, 501, 364, 365, 354, 409, 373, 410, 355, 387, + 386, 388, 0, 0, 0, 0, 0, 496, 497, 0, + 0, 645, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 627, 0, 0, 631, 2442, 470, 0, + 0, 0, 2448, 2445, 2447, 440, 0, 2446, 366, 0, + 0, 0, 486, 0, 423, 403, 659, 0, 2440, 421, + 371, 455, 411, 461, 442, 469, 417, 412, 294, 443, + 333, 384, 306, 308, 328, 335, 337, 341, 342, 393, + 394, 406, 428, 445, 446, 447, 332, 316, 422, 317, + 352, 318, 295, 324, 322, 325, 430, 326, 297, 407, + 451, 0, 347, 418, 379, 298, 378, 408, 450, 449, + 307, 477, 483, 484, 573, 0, 489, 660, 661, 662, + 498, 0, 413, 503, 504, 505, 507, 508, 509, 510, + 574, 591, 558, 528, 491, 582, 525, 529, 530, 357, + 594, 0, 0, 0, 482, 367, 368, 0, 339, 338, + 380, 416, 345, 291, 292, 655, 329, 399, 596, 629, + 630, 521, 0, 583, 522, 531, 321, 555, 567, 566, + 395, 481, 0, 578, 581, 511, 654, 0, 575, 590, + 658, 589, 651, 405, 0, 427, 587, 534, 0, 579, + 553, 0, 580, 549, 584, 0, 523, 0, 435, 463, + 475, 492, 495, 524, 609, 610, 611, 296, 494, 613, + 614, 615, 616, 617, 618, 619, 612, 466, 556, 533, + 559, 474, 536, 535, 0, 0, 570, 490, 571, 572, + 389, 390, 391, 392, 349, 597, 314, 493, 415, 0, + 557, 0, 0, 0, 0, 0, 0, 0, 0, 562, + 563, 560, 663, 0, 620, 621, 0, 0, 487, 488, + 344, 351, 506, 353, 313, 404, 346, 472, 361, 0, + 499, 564, 500, 623, 626, 624, 625, 396, 356, 358, + 431, 362, 372, 419, 471, 402, 424, 311, 462, 433, + 377, 550, 577, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 280, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 605, + 604, 603, 602, 601, 600, 599, 598, 0, 0, 547, + 448, 323, 285, 319, 320, 327, 652, 649, 453, 653, + 0, 293, 527, 370, 0, 414, 343, 592, 593, 0, + 644, 241, 242, 243, 244, 245, 246, 247, 248, 286, + 249, 250, 251, 252, 253, 254, 255, 258, 259, 260, + 261, 262, 263, 264, 265, 595, 256, 257, 266, 267, + 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, + 278, 279, 0, 0, 0, 287, 288, 289, 290, 0, + 0, 281, 282, 283, 284, 0, 0, 0, 478, 479, + 480, 502, 0, 464, 526, 650, 0, 0, 0, 0, + 0, 0, 0, 576, 588, 622, 0, 632, 633, 635, + 637, 636, 639, 438, 439, 0, 641, 642, 643, 640, + 374, 425, 444, 432, 0, 656, 517, 518, 657, 628, + 401, 0, 0, 532, 565, 554, 638, 520, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 336, 0, + 0, 369, 569, 551, 561, 552, 537, 538, 539, 546, + 348, 540, 541, 542, 512, 543, 513, 544, 545, 0, + 568, 519, 434, 385, 586, 585, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 228, 0, 0, 0, + 0, 0, 0, 309, 229, 514, 634, 516, 515, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 312, 0, + 2443, 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, 299, 441, 460, 310, 429, 473, 315, 437, 452, - 305, 400, 426, 0, 0, 301, 458, 436, 382, 359, - 360, 300, 0, 420, 334, 350, 331, 398, 0, 457, - 485, 330, 476, 0, 468, 303, 0, 467, 397, 454, - 459, 383, 376, 0, 302, 456, 381, 375, 363, 340, - 501, 364, 365, 354, 409, 373, 410, 355, 387, 386, - 388, 0, 0, 0, 0, 0, 496, 497, 0, 0, - 645, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 627, 0, 0, 631, 2454, 470, 0, 0, - 0, 2460, 2457, 2459, 440, 0, 2458, 366, 0, 0, - 0, 486, 0, 423, 403, 659, 0, 0, 421, 371, - 455, 411, 461, 442, 469, 417, 412, 294, 443, 333, - 384, 306, 308, 328, 335, 337, 341, 342, 393, 394, - 406, 428, 445, 446, 447, 332, 316, 422, 317, 352, - 318, 295, 324, 322, 325, 430, 326, 297, 407, 451, - 0, 347, 418, 379, 298, 378, 408, 450, 449, 307, - 477, 483, 484, 573, 0, 489, 660, 661, 662, 498, - 0, 413, 503, 504, 505, 507, 508, 509, 510, 574, - 591, 558, 528, 491, 582, 525, 529, 530, 357, 594, - 0, 0, 0, 482, 367, 368, 0, 339, 338, 380, - 416, 345, 291, 292, 655, 329, 399, 596, 629, 630, - 521, 0, 583, 522, 531, 321, 555, 567, 566, 395, - 481, 0, 578, 581, 511, 654, 0, 575, 590, 658, - 589, 651, 405, 0, 427, 587, 534, 0, 579, 553, - 0, 580, 549, 584, 0, 523, 0, 435, 463, 475, - 492, 495, 524, 609, 610, 611, 296, 494, 613, 614, - 615, 616, 617, 618, 619, 612, 466, 556, 533, 559, - 474, 536, 535, 0, 0, 570, 490, 571, 572, 389, - 390, 391, 392, 349, 597, 314, 493, 415, 0, 557, - 0, 0, 0, 0, 0, 0, 0, 0, 562, 563, - 560, 663, 0, 620, 621, 0, 0, 487, 488, 344, - 351, 506, 353, 313, 404, 346, 472, 361, 0, 499, - 564, 500, 623, 626, 624, 625, 396, 356, 358, 431, - 362, 372, 419, 471, 402, 424, 311, 462, 433, 377, - 550, 577, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 280, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 605, 604, - 603, 602, 601, 600, 599, 598, 0, 0, 547, 448, - 323, 285, 319, 320, 327, 652, 649, 453, 653, 0, - 293, 527, 370, 0, 414, 343, 592, 593, 0, 644, - 241, 242, 243, 244, 245, 246, 247, 248, 286, 249, - 250, 251, 252, 253, 254, 255, 258, 259, 260, 261, - 262, 263, 264, 265, 595, 256, 257, 266, 267, 268, - 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, - 279, 0, 0, 0, 287, 288, 289, 290, 0, 0, - 281, 282, 283, 284, 0, 0, 0, 478, 479, 480, - 502, 0, 464, 526, 650, 0, 0, 0, 0, 0, - 0, 0, 576, 588, 622, 0, 632, 633, 635, 637, - 636, 639, 438, 439, 0, 641, 642, 643, 640, 374, - 425, 444, 432, 0, 656, 517, 518, 657, 628, 401, - 0, 0, 532, 565, 554, 638, 520, 0, 0, 0, - 0, 0, 2144, 0, 0, 0, 0, 336, 0, 0, - 369, 569, 551, 561, 552, 537, 538, 539, 546, 348, - 540, 541, 542, 512, 543, 513, 544, 545, 0, 568, - 519, 434, 385, 586, 585, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 228, 0, 0, 2145, 0, - 0, 0, 309, 229, 514, 634, 516, 515, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 312, 0, 0, - 1265, 1266, 1267, 1264, 0, 0, 0, 0, 0, 0, + 299, 441, 460, 310, 429, 473, 315, 437, 452, 305, + 400, 426, 0, 0, 301, 458, 436, 382, 359, 360, + 300, 0, 420, 334, 350, 331, 398, 0, 457, 485, + 330, 476, 0, 468, 303, 0, 467, 397, 454, 459, + 383, 376, 0, 302, 456, 381, 375, 363, 340, 501, + 364, 365, 354, 409, 373, 410, 355, 387, 386, 388, + 0, 0, 0, 0, 0, 496, 497, 0, 0, 645, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 627, 0, 0, 631, 2442, 470, 0, 0, 0, + 2448, 2445, 2447, 440, 0, 2446, 366, 0, 0, 0, + 486, 0, 423, 403, 659, 0, 0, 421, 371, 455, + 411, 461, 442, 469, 417, 412, 294, 443, 333, 384, + 306, 308, 328, 335, 337, 341, 342, 393, 394, 406, + 428, 445, 446, 447, 332, 316, 422, 317, 352, 318, + 295, 324, 322, 325, 430, 326, 297, 407, 451, 0, + 347, 418, 379, 298, 378, 408, 450, 449, 307, 477, + 483, 484, 573, 0, 489, 660, 661, 662, 498, 0, + 413, 503, 504, 505, 507, 508, 509, 510, 574, 591, + 558, 528, 491, 582, 525, 529, 530, 357, 594, 0, + 0, 0, 482, 367, 368, 0, 339, 338, 380, 416, + 345, 291, 292, 655, 329, 399, 596, 629, 630, 521, + 0, 583, 522, 531, 321, 555, 567, 566, 395, 481, + 0, 578, 581, 511, 654, 0, 575, 590, 658, 589, + 651, 405, 0, 427, 587, 534, 0, 579, 553, 0, + 580, 549, 584, 0, 523, 0, 435, 463, 475, 492, + 495, 524, 609, 610, 611, 296, 494, 613, 614, 615, + 616, 617, 618, 619, 612, 466, 556, 533, 559, 474, + 536, 535, 0, 0, 570, 490, 571, 572, 389, 390, + 391, 392, 349, 597, 314, 493, 415, 0, 557, 0, + 0, 0, 0, 0, 0, 0, 0, 562, 563, 560, + 663, 0, 620, 621, 0, 0, 487, 488, 344, 351, + 506, 353, 313, 404, 346, 472, 361, 0, 499, 564, + 500, 623, 626, 624, 625, 396, 356, 358, 431, 362, + 372, 419, 471, 402, 424, 311, 462, 433, 377, 550, + 577, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 280, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 605, 604, 603, + 602, 601, 600, 599, 598, 0, 0, 547, 448, 323, + 285, 319, 320, 327, 652, 649, 453, 653, 0, 293, + 527, 370, 0, 414, 343, 592, 593, 0, 644, 241, + 242, 243, 244, 245, 246, 247, 248, 286, 249, 250, + 251, 252, 253, 254, 255, 258, 259, 260, 261, 262, + 263, 264, 265, 595, 256, 257, 266, 267, 268, 269, + 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, + 0, 0, 0, 287, 288, 289, 290, 0, 0, 281, + 282, 283, 284, 0, 0, 0, 478, 479, 480, 502, + 0, 464, 526, 650, 0, 0, 0, 0, 0, 0, + 0, 576, 588, 622, 0, 632, 633, 635, 637, 636, + 639, 438, 439, 0, 641, 642, 643, 640, 374, 425, + 444, 432, 0, 656, 517, 518, 657, 628, 401, 0, + 0, 532, 565, 554, 638, 520, 0, 0, 0, 0, + 0, 2135, 0, 0, 0, 0, 336, 0, 0, 369, + 569, 551, 561, 552, 537, 538, 539, 546, 348, 540, + 541, 542, 512, 543, 513, 544, 545, 0, 568, 519, + 434, 385, 586, 585, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 228, 0, 0, 2136, 0, 0, + 0, 309, 229, 514, 634, 516, 515, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 312, 0, 0, 1260, + 1261, 1262, 1259, 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, 299, - 441, 460, 310, 429, 473, 315, 437, 452, 305, 400, - 426, 0, 0, 301, 458, 436, 382, 359, 360, 300, - 0, 420, 334, 350, 331, 398, 0, 457, 485, 330, - 476, 0, 468, 303, 0, 467, 397, 454, 459, 383, - 376, 0, 302, 456, 381, 375, 363, 340, 501, 364, - 365, 354, 409, 373, 410, 355, 387, 386, 388, 0, - 0, 0, 0, 0, 496, 497, 0, 0, 645, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 627, 0, 0, 631, 0, 470, 0, 0, 0, 0, - 0, 0, 440, 0, 0, 366, 0, 0, 0, 486, - 0, 423, 403, 659, 0, 0, 421, 371, 455, 411, - 461, 442, 469, 417, 412, 294, 443, 333, 384, 306, - 308, 328, 335, 337, 341, 342, 393, 394, 406, 428, - 445, 446, 447, 332, 316, 422, 317, 352, 318, 295, - 324, 322, 325, 430, 326, 297, 407, 451, 0, 347, - 418, 379, 298, 378, 408, 450, 449, 307, 477, 483, - 484, 573, 0, 489, 660, 661, 662, 498, 0, 413, - 503, 504, 505, 507, 508, 509, 510, 574, 591, 558, - 528, 491, 582, 525, 529, 530, 357, 594, 0, 0, - 0, 482, 367, 368, 0, 339, 338, 380, 416, 345, - 291, 292, 655, 329, 399, 596, 629, 630, 521, 0, - 583, 522, 531, 321, 555, 567, 566, 395, 481, 0, - 578, 581, 511, 654, 0, 575, 590, 658, 589, 651, - 405, 0, 427, 587, 534, 0, 579, 553, 0, 580, - 549, 584, 0, 523, 0, 435, 463, 475, 492, 495, - 524, 609, 610, 611, 296, 494, 613, 614, 615, 616, - 617, 618, 619, 612, 466, 556, 533, 559, 474, 536, - 535, 0, 0, 570, 490, 571, 572, 389, 390, 391, - 392, 349, 597, 314, 493, 415, 0, 557, 0, 0, - 0, 0, 0, 0, 0, 0, 562, 563, 560, 663, - 0, 620, 621, 0, 0, 487, 488, 344, 351, 506, - 353, 313, 404, 346, 472, 361, 0, 499, 564, 500, - 623, 626, 624, 625, 396, 356, 358, 431, 362, 372, - 419, 471, 402, 424, 311, 462, 433, 377, 550, 577, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 280, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 605, 604, 603, 602, - 601, 600, 599, 598, 0, 0, 547, 448, 323, 285, - 319, 320, 327, 652, 649, 453, 653, 0, 293, 527, - 370, 0, 414, 343, 592, 593, 0, 644, 241, 242, - 243, 244, 245, 246, 247, 248, 286, 249, 250, 251, - 252, 253, 254, 255, 258, 259, 260, 261, 262, 263, - 264, 265, 595, 256, 257, 266, 267, 268, 269, 270, - 271, 272, 273, 274, 275, 276, 277, 278, 279, 0, - 0, 0, 287, 288, 289, 290, 0, 0, 281, 282, - 283, 284, 0, 0, 0, 478, 479, 480, 502, 0, - 464, 526, 650, 0, 0, 0, 0, 0, 0, 0, - 576, 588, 622, 0, 632, 633, 635, 637, 636, 639, - 438, 439, 0, 641, 642, 643, 640, 374, 425, 444, - 432, 206, 656, 517, 518, 657, 628, 0, 0, 0, - 0, 401, 0, 0, 532, 565, 554, 638, 520, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 336, - 0, 0, 369, 569, 551, 561, 552, 537, 538, 539, - 546, 348, 540, 541, 542, 512, 543, 513, 544, 545, - 140, 568, 519, 434, 385, 586, 585, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 299, 441, + 460, 310, 429, 473, 315, 437, 452, 305, 400, 426, + 0, 0, 301, 458, 436, 382, 359, 360, 300, 0, + 420, 334, 350, 331, 398, 0, 457, 485, 330, 476, + 0, 468, 303, 0, 467, 397, 454, 459, 383, 376, + 0, 302, 456, 381, 375, 363, 340, 501, 364, 365, + 354, 409, 373, 410, 355, 387, 386, 388, 0, 0, + 0, 0, 0, 496, 497, 0, 0, 645, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 627, + 0, 0, 631, 0, 470, 0, 0, 0, 0, 0, + 0, 440, 0, 0, 366, 0, 0, 0, 486, 0, + 423, 403, 659, 0, 0, 421, 371, 455, 411, 461, + 442, 469, 417, 412, 294, 443, 333, 384, 306, 308, + 328, 335, 337, 341, 342, 393, 394, 406, 428, 445, + 446, 447, 332, 316, 422, 317, 352, 318, 295, 324, + 322, 325, 430, 326, 297, 407, 451, 0, 347, 418, + 379, 298, 378, 408, 450, 449, 307, 477, 483, 484, + 573, 0, 489, 660, 661, 662, 498, 0, 413, 503, + 504, 505, 507, 508, 509, 510, 574, 591, 558, 528, + 491, 582, 525, 529, 530, 357, 594, 0, 0, 0, + 482, 367, 368, 0, 339, 338, 380, 416, 345, 291, + 292, 655, 329, 399, 596, 629, 630, 521, 0, 583, + 522, 531, 321, 555, 567, 566, 395, 481, 0, 578, + 581, 511, 654, 0, 575, 590, 658, 589, 651, 405, + 0, 427, 587, 534, 0, 579, 553, 0, 580, 549, + 584, 0, 523, 0, 435, 463, 475, 492, 495, 524, + 609, 610, 611, 296, 494, 613, 614, 615, 616, 617, + 618, 619, 612, 466, 556, 533, 559, 474, 536, 535, + 0, 0, 570, 490, 571, 572, 389, 390, 391, 392, + 349, 597, 314, 493, 415, 0, 557, 0, 0, 0, + 0, 0, 0, 0, 0, 562, 563, 560, 663, 0, + 620, 621, 0, 0, 487, 488, 344, 351, 506, 353, + 313, 404, 346, 472, 361, 0, 499, 564, 500, 623, + 626, 624, 625, 396, 356, 358, 431, 362, 372, 419, + 471, 402, 424, 311, 462, 433, 377, 550, 577, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 202, 2195, 0, 228, 0, 0, - 0, 0, 0, 0, 309, 229, 514, 634, 516, 515, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 312, + 280, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 605, 604, 603, 602, 601, + 600, 599, 598, 0, 0, 547, 448, 323, 285, 319, + 320, 327, 652, 649, 453, 653, 0, 293, 527, 370, + 0, 414, 343, 592, 593, 0, 644, 241, 242, 243, + 244, 245, 246, 247, 248, 286, 249, 250, 251, 252, + 253, 254, 255, 258, 259, 260, 261, 262, 263, 264, + 265, 595, 256, 257, 266, 267, 268, 269, 270, 271, + 272, 273, 274, 275, 276, 277, 278, 279, 0, 0, + 0, 287, 288, 289, 290, 0, 0, 281, 282, 283, + 284, 0, 0, 0, 478, 479, 480, 502, 0, 464, + 526, 650, 0, 0, 0, 0, 0, 0, 0, 576, + 588, 622, 0, 632, 633, 635, 637, 636, 639, 438, + 439, 0, 641, 642, 643, 640, 374, 425, 444, 432, + 206, 656, 517, 518, 657, 628, 0, 0, 0, 0, + 401, 0, 0, 532, 565, 554, 638, 520, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 336, 0, + 0, 369, 569, 551, 561, 552, 537, 538, 539, 546, + 348, 540, 541, 542, 512, 543, 513, 544, 545, 140, + 568, 519, 434, 385, 586, 585, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 202, 2185, 0, 228, 0, 0, 0, + 0, 0, 0, 309, 229, 514, 634, 516, 515, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 312, 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, 299, 441, 460, 310, 429, 473, 315, 437, 452, - 305, 400, 426, 0, 0, 301, 458, 436, 382, 359, - 360, 300, 0, 420, 334, 350, 331, 398, 0, 457, - 485, 330, 476, 0, 468, 303, 0, 467, 397, 454, - 459, 383, 376, 0, 302, 456, 381, 375, 363, 340, - 501, 364, 365, 354, 409, 373, 410, 355, 387, 386, - 388, 0, 0, 0, 0, 0, 496, 497, 0, 0, - 645, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 627, 0, 0, 631, 0, 470, 0, 0, - 0, 0, 0, 0, 440, 0, 0, 366, 0, 0, - 0, 486, 0, 423, 403, 659, 0, 0, 421, 371, - 455, 411, 461, 442, 469, 417, 412, 294, 443, 333, - 384, 306, 308, 328, 335, 337, 341, 342, 393, 394, - 406, 428, 445, 446, 447, 332, 316, 422, 317, 352, - 318, 295, 324, 322, 325, 430, 326, 297, 407, 451, - 0, 347, 418, 379, 298, 378, 408, 450, 449, 307, - 477, 483, 484, 573, 0, 489, 660, 661, 662, 498, - 0, 413, 503, 504, 505, 507, 508, 509, 510, 574, - 591, 558, 528, 491, 582, 525, 529, 530, 357, 594, - 0, 0, 0, 482, 367, 368, 0, 339, 338, 380, - 416, 345, 291, 292, 655, 329, 399, 596, 629, 630, - 521, 0, 583, 522, 531, 321, 555, 567, 566, 395, - 481, 0, 578, 581, 511, 654, 0, 575, 590, 658, - 589, 651, 405, 0, 427, 587, 534, 0, 579, 553, - 0, 580, 549, 584, 0, 523, 0, 435, 463, 475, - 492, 495, 524, 609, 610, 611, 296, 494, 613, 614, - 615, 616, 617, 618, 619, 612, 466, 556, 533, 559, - 474, 536, 535, 0, 0, 570, 490, 571, 572, 389, - 390, 391, 392, 349, 597, 314, 493, 415, 0, 557, - 0, 0, 0, 0, 0, 0, 0, 0, 562, 563, - 560, 663, 0, 620, 621, 0, 0, 487, 488, 344, - 351, 506, 353, 313, 404, 346, 472, 361, 0, 499, - 564, 500, 623, 626, 624, 625, 396, 356, 358, 431, - 362, 372, 419, 471, 402, 424, 311, 462, 433, 377, - 550, 577, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 280, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 605, 604, - 603, 602, 601, 600, 599, 598, 0, 0, 547, 448, - 323, 285, 319, 320, 327, 652, 649, 453, 653, 0, - 293, 527, 370, 169, 414, 343, 592, 593, 0, 644, - 241, 242, 243, 244, 245, 246, 247, 248, 286, 249, - 250, 251, 252, 253, 254, 255, 258, 259, 260, 261, - 262, 263, 264, 265, 595, 256, 257, 266, 267, 268, - 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, - 279, 0, 0, 0, 287, 288, 289, 290, 0, 0, - 281, 282, 283, 284, 0, 0, 0, 478, 479, 480, - 502, 0, 464, 526, 650, 0, 0, 0, 0, 0, - 0, 0, 576, 588, 622, 0, 632, 633, 635, 637, - 636, 639, 438, 439, 0, 641, 642, 643, 640, 374, - 425, 444, 432, 206, 656, 517, 518, 657, 628, 0, - 0, 0, 0, 401, 0, 0, 532, 565, 554, 638, - 520, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 336, 0, 0, 369, 569, 551, 561, 552, 537, - 538, 539, 546, 348, 540, 541, 542, 512, 543, 513, - 544, 545, 140, 568, 519, 434, 385, 586, 585, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 202, 2179, 0, 228, - 0, 0, 0, 0, 0, 0, 309, 229, 514, 634, - 516, 515, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 312, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 299, 441, 460, 310, 429, 473, 315, 437, 452, 305, + 400, 426, 0, 0, 301, 458, 436, 382, 359, 360, + 300, 0, 420, 334, 350, 331, 398, 0, 457, 485, + 330, 476, 0, 468, 303, 0, 467, 397, 454, 459, + 383, 376, 0, 302, 456, 381, 375, 363, 340, 501, + 364, 365, 354, 409, 373, 410, 355, 387, 386, 388, + 0, 0, 0, 0, 0, 496, 497, 0, 0, 645, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 627, 0, 0, 631, 0, 470, 0, 0, 0, + 0, 0, 0, 440, 0, 0, 366, 0, 0, 0, + 486, 0, 423, 403, 659, 0, 0, 421, 371, 455, + 411, 461, 442, 469, 417, 412, 294, 443, 333, 384, + 306, 308, 328, 335, 337, 341, 342, 393, 394, 406, + 428, 445, 446, 447, 332, 316, 422, 317, 352, 318, + 295, 324, 322, 325, 430, 326, 297, 407, 451, 0, + 347, 418, 379, 298, 378, 408, 450, 449, 307, 477, + 483, 484, 573, 0, 489, 660, 661, 662, 498, 0, + 413, 503, 504, 505, 507, 508, 509, 510, 574, 591, + 558, 528, 491, 582, 525, 529, 530, 357, 594, 0, + 0, 0, 482, 367, 368, 0, 339, 338, 380, 416, + 345, 291, 292, 655, 329, 399, 596, 629, 630, 521, + 0, 583, 522, 531, 321, 555, 567, 566, 395, 481, + 0, 578, 581, 511, 654, 0, 575, 590, 658, 589, + 651, 405, 0, 427, 587, 534, 0, 579, 553, 0, + 580, 549, 584, 0, 523, 0, 435, 463, 475, 492, + 495, 524, 609, 610, 611, 296, 494, 613, 614, 615, + 616, 617, 618, 619, 612, 466, 556, 533, 559, 474, + 536, 535, 0, 0, 570, 490, 571, 572, 389, 390, + 391, 392, 349, 597, 314, 493, 415, 0, 557, 0, + 0, 0, 0, 0, 0, 0, 0, 562, 563, 560, + 663, 0, 620, 621, 0, 0, 487, 488, 344, 351, + 506, 353, 313, 404, 346, 472, 361, 0, 499, 564, + 500, 623, 626, 624, 625, 396, 356, 358, 431, 362, + 372, 419, 471, 402, 424, 311, 462, 433, 377, 550, + 577, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 280, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 605, 604, 603, + 602, 601, 600, 599, 598, 0, 0, 547, 448, 323, + 285, 319, 320, 327, 652, 649, 453, 653, 0, 293, + 527, 370, 169, 414, 343, 592, 593, 0, 644, 241, + 242, 243, 244, 245, 246, 247, 248, 286, 249, 250, + 251, 252, 253, 254, 255, 258, 259, 260, 261, 262, + 263, 264, 265, 595, 256, 257, 266, 267, 268, 269, + 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, + 0, 0, 0, 287, 288, 289, 290, 0, 0, 281, + 282, 283, 284, 0, 0, 0, 478, 479, 480, 502, + 0, 464, 526, 650, 0, 0, 0, 0, 0, 0, + 0, 576, 588, 622, 0, 632, 633, 635, 637, 636, + 639, 438, 439, 0, 641, 642, 643, 640, 374, 425, + 444, 432, 206, 656, 517, 518, 657, 628, 0, 0, + 0, 0, 401, 0, 0, 532, 565, 554, 638, 520, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 336, 0, 0, 369, 569, 551, 561, 552, 537, 538, + 539, 546, 348, 540, 541, 542, 512, 543, 513, 544, + 545, 140, 568, 519, 434, 385, 586, 585, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 299, 441, 460, 310, 429, 473, 315, - 437, 452, 305, 400, 426, 0, 0, 301, 458, 436, - 382, 359, 360, 300, 0, 420, 334, 350, 331, 398, - 0, 457, 485, 330, 476, 0, 468, 303, 0, 467, - 397, 454, 459, 383, 376, 0, 302, 456, 381, 375, - 363, 340, 501, 364, 365, 354, 409, 373, 410, 355, - 387, 386, 388, 0, 0, 0, 0, 0, 496, 497, - 0, 0, 645, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 627, 0, 0, 631, 0, 470, - 0, 0, 0, 0, 0, 0, 440, 0, 0, 366, - 0, 0, 0, 486, 0, 423, 403, 659, 0, 0, - 421, 371, 455, 411, 461, 442, 469, 417, 412, 294, - 443, 333, 384, 306, 308, 328, 335, 337, 341, 342, - 393, 394, 406, 428, 445, 446, 447, 332, 316, 422, - 317, 352, 318, 295, 324, 322, 325, 430, 326, 297, - 407, 451, 0, 347, 418, 379, 298, 378, 408, 450, - 449, 307, 477, 483, 484, 573, 0, 489, 660, 661, - 662, 498, 0, 413, 503, 504, 505, 507, 508, 509, - 510, 574, 591, 558, 528, 491, 582, 525, 529, 530, - 357, 594, 0, 0, 0, 482, 367, 368, 0, 339, - 338, 380, 416, 345, 291, 292, 655, 329, 399, 596, - 629, 630, 521, 0, 583, 522, 531, 321, 555, 567, - 566, 395, 481, 0, 578, 581, 511, 654, 0, 575, - 590, 658, 589, 651, 405, 0, 427, 587, 534, 0, - 579, 553, 0, 580, 549, 584, 0, 523, 0, 435, - 463, 475, 492, 495, 524, 609, 610, 611, 296, 494, - 613, 614, 615, 616, 617, 618, 619, 612, 466, 556, - 533, 559, 474, 536, 535, 0, 0, 570, 490, 571, - 572, 389, 390, 391, 392, 349, 597, 314, 493, 415, - 0, 557, 0, 0, 0, 0, 0, 0, 0, 0, - 562, 563, 560, 663, 0, 620, 621, 0, 0, 487, - 488, 344, 351, 506, 353, 313, 404, 346, 472, 361, - 0, 499, 564, 500, 623, 626, 624, 625, 396, 356, - 358, 431, 362, 372, 419, 471, 402, 424, 311, 462, - 433, 377, 550, 577, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 280, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 202, 2170, 0, 228, 0, + 0, 0, 0, 0, 0, 309, 229, 514, 634, 516, + 515, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 312, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 605, 604, 603, 602, 601, 600, 599, 598, 0, 0, - 547, 448, 323, 285, 319, 320, 327, 652, 649, 453, - 653, 0, 293, 527, 370, 169, 414, 343, 592, 593, - 0, 644, 241, 242, 243, 244, 245, 246, 247, 248, - 286, 249, 250, 251, 252, 253, 254, 255, 258, 259, - 260, 261, 262, 263, 264, 265, 595, 256, 257, 266, - 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, - 277, 278, 279, 0, 0, 0, 287, 288, 289, 290, - 0, 0, 281, 282, 283, 284, 0, 0, 0, 478, - 479, 480, 502, 0, 464, 526, 650, 0, 0, 0, - 0, 0, 0, 0, 576, 588, 622, 0, 632, 633, - 635, 637, 636, 639, 438, 439, 0, 641, 642, 643, - 640, 374, 425, 444, 432, 0, 656, 517, 518, 657, - 628, 401, 0, 0, 532, 565, 554, 638, 520, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 336, - 1053, 0, 369, 569, 551, 561, 552, 537, 538, 539, - 546, 348, 540, 541, 542, 512, 543, 513, 544, 545, - 0, 568, 519, 434, 385, 586, 585, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 228, 1060, 1061, - 0, 0, 0, 0, 309, 229, 514, 634, 516, 515, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1064, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 299, 441, 460, 310, 429, 473, 315, 437, + 452, 305, 400, 426, 0, 0, 301, 458, 436, 382, + 359, 360, 300, 0, 420, 334, 350, 331, 398, 0, + 457, 485, 330, 476, 0, 468, 303, 0, 467, 397, + 454, 459, 383, 376, 0, 302, 456, 381, 375, 363, + 340, 501, 364, 365, 354, 409, 373, 410, 355, 387, + 386, 388, 0, 0, 0, 0, 0, 496, 497, 0, + 0, 645, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 627, 0, 0, 631, 0, 470, 0, + 0, 0, 0, 0, 0, 440, 0, 0, 366, 0, + 0, 0, 486, 0, 423, 403, 659, 0, 0, 421, + 371, 455, 411, 461, 442, 469, 417, 412, 294, 443, + 333, 384, 306, 308, 328, 335, 337, 341, 342, 393, + 394, 406, 428, 445, 446, 447, 332, 316, 422, 317, + 352, 318, 295, 324, 322, 325, 430, 326, 297, 407, + 451, 0, 347, 418, 379, 298, 378, 408, 450, 449, + 307, 477, 483, 484, 573, 0, 489, 660, 661, 662, + 498, 0, 413, 503, 504, 505, 507, 508, 509, 510, + 574, 591, 558, 528, 491, 582, 525, 529, 530, 357, + 594, 0, 0, 0, 482, 367, 368, 0, 339, 338, + 380, 416, 345, 291, 292, 655, 329, 399, 596, 629, + 630, 521, 0, 583, 522, 531, 321, 555, 567, 566, + 395, 481, 0, 578, 581, 511, 654, 0, 575, 590, + 658, 589, 651, 405, 0, 427, 587, 534, 0, 579, + 553, 0, 580, 549, 584, 0, 523, 0, 435, 463, + 475, 492, 495, 524, 609, 610, 611, 296, 494, 613, + 614, 615, 616, 617, 618, 619, 612, 466, 556, 533, + 559, 474, 536, 535, 0, 0, 570, 490, 571, 572, + 389, 390, 391, 392, 349, 597, 314, 493, 415, 0, + 557, 0, 0, 0, 0, 0, 0, 0, 0, 562, + 563, 560, 663, 0, 620, 621, 0, 0, 487, 488, + 344, 351, 506, 353, 313, 404, 346, 472, 361, 0, + 499, 564, 500, 623, 626, 624, 625, 396, 356, 358, + 431, 362, 372, 419, 471, 402, 424, 311, 462, 433, + 377, 550, 577, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 280, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 605, + 604, 603, 602, 601, 600, 599, 598, 0, 0, 547, + 448, 323, 285, 319, 320, 327, 652, 649, 453, 653, + 0, 293, 527, 370, 169, 414, 343, 592, 593, 0, + 644, 241, 242, 243, 244, 245, 246, 247, 248, 286, + 249, 250, 251, 252, 253, 254, 255, 258, 259, 260, + 261, 262, 263, 264, 265, 595, 256, 257, 266, 267, + 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, + 278, 279, 0, 0, 0, 287, 288, 289, 290, 0, + 0, 281, 282, 283, 284, 0, 0, 0, 478, 479, + 480, 502, 0, 464, 526, 650, 0, 0, 0, 0, + 0, 0, 0, 576, 588, 622, 0, 632, 633, 635, + 637, 636, 639, 438, 439, 0, 641, 642, 643, 640, + 374, 425, 444, 432, 0, 656, 517, 518, 657, 628, + 401, 0, 0, 532, 565, 554, 638, 520, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 336, 1050, + 0, 369, 569, 551, 561, 552, 537, 538, 539, 546, + 348, 540, 541, 542, 512, 543, 513, 544, 545, 0, + 568, 519, 434, 385, 586, 585, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 228, 1057, 1058, 0, + 0, 0, 0, 309, 229, 514, 634, 516, 515, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1061, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 299, 441, 1047, 310, 429, 473, 315, 437, 452, - 305, 400, 426, 0, 0, 301, 458, 436, 382, 359, - 360, 300, 0, 420, 334, 350, 331, 398, 0, 457, - 485, 330, 476, 1034, 468, 303, 1033, 467, 397, 454, - 459, 383, 376, 0, 302, 456, 381, 375, 363, 340, - 501, 364, 365, 354, 409, 373, 410, 355, 387, 386, - 388, 0, 0, 0, 0, 0, 496, 497, 0, 0, - 645, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 627, 0, 0, 631, 0, 470, 0, 0, - 0, 0, 0, 0, 440, 0, 0, 366, 0, 0, - 0, 486, 0, 423, 403, 659, 0, 0, 421, 371, - 455, 411, 461, 442, 469, 1051, 412, 294, 443, 333, - 384, 306, 308, 328, 335, 337, 341, 342, 393, 394, - 406, 428, 445, 446, 447, 332, 316, 422, 317, 352, - 318, 295, 324, 322, 325, 430, 326, 297, 407, 451, - 0, 347, 418, 379, 298, 378, 408, 450, 449, 307, - 477, 483, 484, 573, 0, 489, 660, 661, 662, 498, - 0, 413, 503, 504, 505, 507, 508, 509, 510, 574, - 591, 558, 528, 491, 582, 525, 529, 530, 357, 594, - 0, 0, 0, 482, 367, 368, 0, 339, 338, 380, - 416, 345, 291, 292, 655, 329, 399, 596, 629, 630, - 521, 0, 583, 522, 531, 321, 555, 567, 566, 395, - 481, 0, 578, 581, 511, 654, 0, 575, 590, 658, - 589, 651, 405, 0, 427, 587, 534, 0, 579, 553, - 0, 580, 549, 584, 0, 523, 0, 435, 463, 475, - 492, 495, 524, 609, 610, 611, 296, 494, 613, 614, - 615, 616, 617, 618, 1052, 612, 466, 556, 533, 559, - 474, 536, 535, 0, 0, 570, 1055, 571, 572, 389, - 390, 391, 392, 349, 597, 1050, 493, 415, 0, 557, - 0, 0, 0, 0, 0, 0, 0, 0, 562, 563, - 560, 663, 0, 620, 621, 0, 0, 487, 488, 344, - 351, 506, 353, 313, 404, 346, 472, 361, 0, 499, - 564, 500, 623, 626, 624, 625, 1062, 1048, 1058, 1049, - 362, 372, 419, 471, 402, 424, 311, 462, 433, 1059, - 550, 577, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 280, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 605, 604, - 603, 602, 601, 600, 599, 598, 0, 0, 547, 448, - 323, 285, 319, 320, 327, 652, 649, 453, 653, 0, - 293, 527, 370, 0, 414, 343, 592, 593, 0, 644, - 241, 242, 243, 244, 245, 246, 247, 248, 286, 249, - 250, 251, 252, 253, 254, 255, 258, 259, 260, 261, - 262, 263, 264, 265, 595, 256, 257, 266, 267, 268, - 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, - 279, 0, 0, 0, 287, 288, 289, 290, 0, 0, - 281, 282, 283, 284, 0, 0, 0, 478, 479, 480, - 502, 0, 464, 526, 650, 0, 0, 0, 0, 0, - 0, 0, 576, 588, 622, 0, 632, 633, 635, 637, - 636, 639, 438, 439, 0, 641, 642, 643, 640, 1046, - 425, 444, 432, 206, 656, 517, 518, 657, 628, 0, - 0, 0, 0, 401, 0, 0, 532, 565, 554, 638, - 520, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 336, 0, 0, 369, 569, 551, 561, 552, 537, - 538, 539, 546, 348, 540, 541, 542, 512, 543, 513, - 544, 545, 140, 568, 519, 434, 385, 586, 585, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 2076, 0, 0, 228, - 0, 0, 0, 0, 0, 0, 309, 229, 514, 634, - 516, 515, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 312, 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, + 299, 441, 1044, 310, 429, 473, 315, 437, 452, 305, + 400, 426, 0, 0, 301, 458, 436, 382, 359, 360, + 300, 0, 420, 334, 350, 331, 398, 0, 457, 485, + 330, 476, 1031, 468, 303, 1030, 467, 397, 454, 459, + 383, 376, 0, 302, 456, 381, 375, 363, 340, 501, + 364, 365, 354, 409, 373, 410, 355, 387, 386, 388, + 0, 0, 0, 0, 0, 496, 497, 0, 0, 645, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 627, 0, 0, 631, 0, 470, 0, 0, 0, + 0, 0, 0, 440, 0, 0, 366, 0, 0, 0, + 486, 0, 423, 403, 659, 0, 0, 421, 371, 455, + 411, 461, 442, 469, 1048, 412, 294, 443, 333, 384, + 306, 308, 328, 335, 337, 341, 342, 393, 394, 406, + 428, 445, 446, 447, 332, 316, 422, 317, 352, 318, + 295, 324, 322, 325, 430, 326, 297, 407, 451, 0, + 347, 418, 379, 298, 378, 408, 450, 449, 307, 477, + 483, 484, 573, 0, 489, 660, 661, 662, 498, 0, + 413, 503, 504, 505, 507, 508, 509, 510, 574, 591, + 558, 528, 491, 582, 525, 529, 530, 357, 594, 0, + 0, 0, 482, 367, 368, 0, 339, 338, 380, 416, + 345, 291, 292, 655, 329, 399, 596, 629, 630, 521, + 0, 583, 522, 531, 321, 555, 567, 566, 395, 481, + 0, 578, 581, 511, 654, 0, 575, 590, 658, 589, + 651, 405, 0, 427, 587, 534, 0, 579, 553, 0, + 580, 549, 584, 0, 523, 0, 435, 463, 475, 492, + 495, 524, 609, 610, 611, 296, 494, 613, 614, 615, + 616, 617, 618, 1049, 612, 466, 556, 533, 559, 474, + 536, 535, 0, 0, 570, 1052, 571, 572, 389, 390, + 391, 392, 349, 597, 1047, 493, 415, 0, 557, 0, + 0, 0, 0, 0, 0, 0, 0, 562, 563, 560, + 663, 0, 620, 621, 0, 0, 487, 488, 344, 351, + 506, 353, 313, 404, 346, 472, 361, 0, 499, 564, + 500, 623, 626, 624, 625, 1059, 1045, 1055, 1046, 362, + 372, 419, 471, 402, 424, 311, 462, 433, 1056, 550, + 577, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 280, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 605, 604, 603, + 602, 601, 600, 599, 598, 0, 0, 547, 448, 323, + 285, 319, 320, 327, 652, 649, 453, 653, 0, 293, + 527, 370, 0, 414, 343, 592, 593, 0, 644, 241, + 242, 243, 244, 245, 246, 247, 248, 286, 249, 250, + 251, 252, 253, 254, 255, 258, 259, 260, 261, 262, + 263, 264, 265, 595, 256, 257, 266, 267, 268, 269, + 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, + 0, 0, 0, 287, 288, 289, 290, 0, 0, 281, + 282, 283, 284, 0, 0, 0, 478, 479, 480, 502, + 0, 464, 526, 650, 0, 0, 0, 0, 0, 0, + 0, 576, 588, 622, 0, 632, 633, 635, 637, 636, + 639, 438, 439, 0, 641, 642, 643, 640, 1043, 425, + 444, 432, 206, 656, 517, 518, 657, 628, 0, 0, + 0, 0, 401, 0, 0, 532, 565, 554, 638, 520, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 299, 441, 460, 310, 429, 473, 315, - 437, 452, 305, 400, 426, 0, 0, 301, 458, 436, - 382, 359, 360, 300, 0, 420, 334, 350, 331, 398, - 0, 457, 485, 330, 476, 0, 468, 303, 0, 467, - 397, 454, 459, 383, 376, 0, 302, 456, 381, 375, - 363, 340, 501, 364, 365, 354, 409, 373, 410, 355, - 387, 386, 388, 0, 0, 0, 0, 0, 496, 497, - 0, 0, 645, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 627, 0, 0, 631, 0, 470, - 0, 0, 0, 0, 0, 0, 440, 0, 0, 366, - 0, 0, 0, 486, 0, 423, 403, 659, 0, 0, - 421, 371, 455, 411, 461, 442, 469, 417, 412, 294, - 443, 333, 384, 306, 308, 328, 335, 337, 341, 342, - 393, 394, 406, 428, 445, 446, 447, 332, 316, 422, - 317, 352, 318, 295, 324, 322, 325, 430, 326, 297, - 407, 451, 0, 347, 418, 379, 298, 378, 408, 450, - 449, 307, 477, 483, 484, 573, 0, 489, 660, 661, - 662, 498, 0, 413, 503, 504, 505, 507, 508, 509, - 510, 574, 591, 558, 528, 491, 582, 525, 529, 530, - 357, 594, 0, 0, 0, 482, 367, 368, 0, 339, - 338, 380, 416, 345, 291, 292, 655, 329, 399, 596, - 629, 630, 521, 0, 583, 522, 531, 321, 555, 567, - 566, 395, 481, 0, 578, 581, 511, 654, 0, 575, - 590, 658, 589, 651, 405, 0, 427, 587, 534, 0, - 579, 553, 0, 580, 549, 584, 0, 523, 0, 435, - 463, 475, 492, 495, 524, 609, 610, 611, 296, 494, - 613, 614, 615, 616, 617, 618, 619, 612, 466, 556, - 533, 559, 474, 536, 535, 0, 0, 570, 490, 571, - 572, 389, 390, 391, 392, 349, 597, 314, 493, 415, - 0, 557, 0, 0, 0, 0, 0, 0, 0, 0, - 562, 563, 560, 663, 0, 620, 621, 0, 0, 487, - 488, 344, 351, 506, 353, 313, 404, 346, 472, 361, - 0, 499, 564, 500, 623, 626, 624, 625, 396, 356, - 358, 431, 362, 372, 419, 471, 402, 424, 311, 462, - 433, 377, 550, 577, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 280, 0, 0, 0, 0, + 336, 0, 0, 369, 569, 551, 561, 552, 537, 538, + 539, 546, 348, 540, 541, 542, 512, 543, 513, 544, + 545, 140, 568, 519, 434, 385, 586, 585, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 605, 604, 603, 602, 601, 600, 599, 598, 0, 0, - 547, 448, 323, 285, 319, 320, 327, 652, 649, 453, - 653, 0, 293, 527, 370, 169, 414, 343, 592, 593, - 0, 644, 241, 242, 243, 244, 245, 246, 247, 248, - 286, 249, 250, 251, 252, 253, 254, 255, 258, 259, - 260, 261, 262, 263, 264, 265, 595, 256, 257, 266, - 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, - 277, 278, 279, 0, 0, 0, 287, 288, 289, 290, - 0, 0, 281, 282, 283, 284, 0, 0, 0, 478, - 479, 480, 502, 0, 464, 526, 650, 0, 0, 0, - 0, 0, 0, 0, 576, 588, 622, 0, 632, 633, - 635, 637, 636, 639, 438, 439, 0, 641, 642, 643, - 640, 374, 425, 444, 432, 0, 656, 517, 518, 657, - 628, 401, 0, 0, 532, 565, 554, 638, 520, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 336, - 0, 0, 369, 569, 551, 561, 552, 537, 538, 539, - 546, 348, 540, 541, 542, 512, 543, 513, 544, 545, - 0, 568, 519, 434, 385, 586, 585, 0, 0, 0, + 0, 0, 0, 0, 0, 2067, 0, 0, 228, 0, + 0, 0, 0, 0, 0, 309, 229, 514, 634, 516, + 515, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 312, 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, 228, 1060, 1061, - 0, 0, 0, 0, 309, 229, 514, 634, 516, 515, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1064, 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, 299, 441, 460, 310, 429, 473, 315, 437, + 452, 305, 400, 426, 0, 0, 301, 458, 436, 382, + 359, 360, 300, 0, 420, 334, 350, 331, 398, 0, + 457, 485, 330, 476, 0, 468, 303, 0, 467, 397, + 454, 459, 383, 376, 0, 302, 456, 381, 375, 363, + 340, 501, 364, 365, 354, 409, 373, 410, 355, 387, + 386, 388, 0, 0, 0, 0, 0, 496, 497, 0, + 0, 645, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 627, 0, 0, 631, 0, 470, 0, + 0, 0, 0, 0, 0, 440, 0, 0, 366, 0, + 0, 0, 486, 0, 423, 403, 659, 0, 0, 421, + 371, 455, 411, 461, 442, 469, 417, 412, 294, 443, + 333, 384, 306, 308, 328, 335, 337, 341, 342, 393, + 394, 406, 428, 445, 446, 447, 332, 316, 422, 317, + 352, 318, 295, 324, 322, 325, 430, 326, 297, 407, + 451, 0, 347, 418, 379, 298, 378, 408, 450, 449, + 307, 477, 483, 484, 573, 0, 489, 660, 661, 662, + 498, 0, 413, 503, 504, 505, 507, 508, 509, 510, + 574, 591, 558, 528, 491, 582, 525, 529, 530, 357, + 594, 0, 0, 0, 482, 367, 368, 0, 339, 338, + 380, 416, 345, 291, 292, 655, 329, 399, 596, 629, + 630, 521, 0, 583, 522, 531, 321, 555, 567, 566, + 395, 481, 0, 578, 581, 511, 654, 0, 575, 590, + 658, 589, 651, 405, 0, 427, 587, 534, 0, 579, + 553, 0, 580, 549, 584, 0, 523, 0, 435, 463, + 475, 492, 495, 524, 609, 610, 611, 296, 494, 613, + 614, 615, 616, 617, 618, 619, 612, 466, 556, 533, + 559, 474, 536, 535, 0, 0, 570, 490, 571, 572, + 389, 390, 391, 392, 349, 597, 314, 493, 415, 0, + 557, 0, 0, 0, 0, 0, 0, 0, 0, 562, + 563, 560, 663, 0, 620, 621, 0, 0, 487, 488, + 344, 351, 506, 353, 313, 404, 346, 472, 361, 0, + 499, 564, 500, 623, 626, 624, 625, 396, 356, 358, + 431, 362, 372, 419, 471, 402, 424, 311, 462, 433, + 377, 550, 577, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 280, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 605, + 604, 603, 602, 601, 600, 599, 598, 0, 0, 547, + 448, 323, 285, 319, 320, 327, 652, 649, 453, 653, + 0, 293, 527, 370, 169, 414, 343, 592, 593, 0, + 644, 241, 242, 243, 244, 245, 246, 247, 248, 286, + 249, 250, 251, 252, 253, 254, 255, 258, 259, 260, + 261, 262, 263, 264, 265, 595, 256, 257, 266, 267, + 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, + 278, 279, 0, 0, 0, 287, 288, 289, 290, 0, + 0, 281, 282, 283, 284, 0, 0, 0, 478, 479, + 480, 502, 0, 464, 526, 650, 0, 0, 0, 0, + 0, 0, 0, 576, 588, 622, 0, 632, 633, 635, + 637, 636, 639, 438, 439, 0, 641, 642, 643, 640, + 374, 425, 444, 432, 0, 656, 517, 518, 657, 628, + 401, 0, 0, 532, 565, 554, 638, 520, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 336, 0, + 0, 369, 569, 551, 561, 552, 537, 538, 539, 546, + 348, 540, 541, 542, 512, 543, 513, 544, 545, 0, + 568, 519, 434, 385, 586, 585, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 228, 1057, 1058, 0, + 0, 0, 0, 309, 229, 514, 634, 516, 515, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1061, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 299, 441, 460, 310, 429, 473, 315, 437, 452, - 305, 400, 426, 0, 0, 301, 458, 436, 382, 359, - 360, 300, 0, 420, 334, 350, 331, 398, 0, 457, - 485, 330, 476, 1034, 468, 303, 1033, 467, 397, 454, - 459, 383, 376, 0, 302, 456, 381, 375, 363, 340, - 501, 364, 365, 354, 409, 373, 410, 355, 387, 386, - 388, 0, 0, 0, 0, 0, 496, 497, 0, 0, - 645, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 627, 0, 0, 631, 0, 470, 0, 0, - 0, 0, 0, 0, 440, 0, 0, 366, 0, 0, - 0, 486, 0, 423, 403, 659, 0, 0, 421, 371, - 455, 411, 461, 442, 469, 417, 412, 294, 443, 333, - 384, 306, 308, 328, 335, 337, 341, 342, 393, 394, - 406, 428, 445, 446, 447, 332, 316, 422, 317, 352, - 318, 295, 324, 322, 325, 430, 326, 297, 407, 451, - 0, 347, 418, 379, 298, 378, 408, 450, 449, 307, - 477, 483, 484, 573, 0, 489, 660, 661, 662, 498, - 0, 413, 503, 504, 505, 507, 508, 509, 510, 574, - 591, 558, 528, 491, 582, 525, 529, 530, 357, 594, - 0, 0, 0, 482, 367, 368, 0, 339, 338, 380, - 416, 345, 291, 292, 655, 329, 399, 596, 629, 630, - 521, 0, 583, 522, 531, 321, 555, 567, 566, 395, - 481, 0, 578, 581, 511, 654, 0, 575, 590, 658, - 589, 651, 405, 0, 427, 587, 534, 0, 579, 553, - 0, 580, 549, 584, 0, 523, 0, 435, 463, 475, - 492, 495, 524, 609, 610, 611, 296, 494, 613, 614, - 615, 616, 617, 618, 619, 612, 466, 556, 533, 559, - 474, 536, 535, 0, 0, 570, 490, 571, 572, 389, - 390, 391, 392, 349, 597, 314, 493, 415, 0, 557, - 0, 0, 0, 0, 0, 0, 0, 0, 562, 563, - 560, 663, 0, 620, 621, 0, 0, 487, 488, 344, - 351, 506, 353, 313, 404, 346, 472, 361, 0, 499, - 564, 500, 623, 626, 624, 625, 1062, 2097, 1058, 2098, - 362, 372, 419, 471, 402, 424, 311, 462, 433, 1059, - 550, 577, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 280, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 605, 604, - 603, 602, 601, 600, 599, 598, 0, 0, 547, 448, - 323, 285, 319, 320, 327, 652, 649, 453, 653, 0, - 293, 527, 370, 0, 414, 343, 592, 593, 0, 644, - 241, 242, 243, 244, 245, 246, 247, 248, 286, 249, - 250, 251, 252, 253, 254, 255, 258, 259, 260, 261, - 262, 263, 264, 265, 595, 256, 257, 266, 267, 268, - 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, - 279, 0, 0, 0, 287, 288, 289, 290, 0, 0, - 281, 282, 283, 284, 0, 0, 0, 478, 479, 480, - 502, 0, 464, 526, 650, 0, 0, 0, 0, 0, - 0, 0, 576, 588, 622, 0, 632, 633, 635, 637, - 636, 639, 438, 439, 0, 641, 642, 643, 640, 374, - 425, 444, 432, 0, 656, 517, 518, 657, 628, 401, - 0, 0, 532, 565, 554, 638, 520, 0, 0, 2991, - 0, 0, 0, 0, 0, 0, 0, 336, 0, 0, - 369, 569, 551, 561, 552, 537, 538, 539, 546, 348, - 540, 541, 542, 512, 543, 513, 544, 545, 0, 568, - 519, 434, 385, 586, 585, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 228, 0, 0, 0, 0, - 0, 0, 309, 229, 514, 634, 516, 515, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 312, 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, + 299, 441, 460, 310, 429, 473, 315, 437, 452, 305, + 400, 426, 0, 0, 301, 458, 436, 382, 359, 360, + 300, 0, 420, 334, 350, 331, 398, 0, 457, 485, + 330, 476, 1031, 468, 303, 1030, 467, 397, 454, 459, + 383, 376, 0, 302, 456, 381, 375, 363, 340, 501, + 364, 365, 354, 409, 373, 410, 355, 387, 386, 388, + 0, 0, 0, 0, 0, 496, 497, 0, 0, 645, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 299, - 441, 460, 310, 429, 473, 315, 437, 452, 305, 400, - 426, 0, 0, 301, 458, 436, 382, 359, 360, 300, - 0, 420, 334, 350, 331, 398, 0, 457, 485, 330, - 476, 0, 468, 303, 0, 467, 397, 454, 459, 383, - 376, 0, 302, 456, 381, 375, 363, 340, 501, 364, - 365, 354, 409, 373, 410, 355, 387, 386, 388, 0, - 0, 0, 0, 0, 496, 497, 0, 0, 645, 0, - 0, 0, 0, 0, 0, 2994, 0, 0, 0, 2993, - 627, 0, 0, 631, 0, 470, 0, 0, 0, 0, - 0, 0, 440, 0, 0, 366, 0, 0, 0, 486, - 0, 423, 403, 659, 0, 0, 421, 371, 455, 411, - 461, 442, 469, 417, 412, 294, 443, 333, 384, 306, - 308, 328, 335, 337, 341, 342, 393, 394, 406, 428, - 445, 446, 447, 332, 316, 422, 317, 352, 318, 295, - 324, 322, 325, 430, 326, 297, 407, 451, 0, 347, - 418, 379, 298, 378, 408, 450, 449, 307, 477, 483, - 484, 573, 0, 489, 660, 661, 662, 498, 0, 413, - 503, 504, 505, 507, 508, 509, 510, 574, 591, 558, - 528, 491, 582, 525, 529, 530, 357, 594, 0, 0, - 0, 482, 367, 368, 0, 339, 338, 380, 416, 345, - 291, 292, 655, 329, 399, 596, 629, 630, 521, 0, - 583, 522, 531, 321, 555, 567, 566, 395, 481, 0, - 578, 581, 511, 654, 0, 575, 590, 658, 589, 651, - 405, 0, 427, 587, 534, 0, 579, 553, 0, 580, - 549, 584, 0, 523, 0, 435, 463, 475, 492, 495, - 524, 609, 610, 611, 296, 494, 613, 614, 615, 616, - 617, 618, 619, 612, 466, 556, 533, 559, 474, 536, - 535, 0, 0, 570, 490, 571, 572, 389, 390, 391, - 392, 349, 597, 314, 493, 415, 0, 557, 0, 0, - 0, 0, 0, 0, 0, 0, 562, 563, 560, 663, - 0, 620, 621, 0, 0, 487, 488, 344, 351, 506, - 353, 313, 404, 346, 472, 361, 0, 499, 564, 500, - 623, 626, 624, 625, 396, 356, 358, 431, 362, 372, - 419, 471, 402, 424, 311, 462, 433, 377, 550, 577, + 0, 627, 0, 0, 631, 0, 470, 0, 0, 0, + 0, 0, 0, 440, 0, 0, 366, 0, 0, 0, + 486, 0, 423, 403, 659, 0, 0, 421, 371, 455, + 411, 461, 442, 469, 417, 412, 294, 443, 333, 384, + 306, 308, 328, 335, 337, 341, 342, 393, 394, 406, + 428, 445, 446, 447, 332, 316, 422, 317, 352, 318, + 295, 324, 322, 325, 430, 326, 297, 407, 451, 0, + 347, 418, 379, 298, 378, 408, 450, 449, 307, 477, + 483, 484, 573, 0, 489, 660, 661, 662, 498, 0, + 413, 503, 504, 505, 507, 508, 509, 510, 574, 591, + 558, 528, 491, 582, 525, 529, 530, 357, 594, 0, + 0, 0, 482, 367, 368, 0, 339, 338, 380, 416, + 345, 291, 292, 655, 329, 399, 596, 629, 630, 521, + 0, 583, 522, 531, 321, 555, 567, 566, 395, 481, + 0, 578, 581, 511, 654, 0, 575, 590, 658, 589, + 651, 405, 0, 427, 587, 534, 0, 579, 553, 0, + 580, 549, 584, 0, 523, 0, 435, 463, 475, 492, + 495, 524, 609, 610, 611, 296, 494, 613, 614, 615, + 616, 617, 618, 619, 612, 466, 556, 533, 559, 474, + 536, 535, 0, 0, 570, 490, 571, 572, 389, 390, + 391, 392, 349, 597, 314, 493, 415, 0, 557, 0, + 0, 0, 0, 0, 0, 0, 0, 562, 563, 560, + 663, 0, 620, 621, 0, 0, 487, 488, 344, 351, + 506, 353, 313, 404, 346, 472, 361, 0, 499, 564, + 500, 623, 626, 624, 625, 1059, 2088, 1055, 2089, 362, + 372, 419, 471, 402, 424, 311, 462, 433, 1056, 550, + 577, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 280, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 605, 604, 603, + 602, 601, 600, 599, 598, 0, 0, 547, 448, 323, + 285, 319, 320, 327, 652, 649, 453, 653, 0, 293, + 527, 370, 0, 414, 343, 592, 593, 0, 644, 241, + 242, 243, 244, 245, 246, 247, 248, 286, 249, 250, + 251, 252, 253, 254, 255, 258, 259, 260, 261, 262, + 263, 264, 265, 595, 256, 257, 266, 267, 268, 269, + 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, + 0, 0, 0, 287, 288, 289, 290, 0, 0, 281, + 282, 283, 284, 0, 0, 0, 478, 479, 480, 502, + 0, 464, 526, 650, 0, 0, 0, 0, 0, 0, + 0, 576, 588, 622, 0, 632, 633, 635, 637, 636, + 639, 438, 439, 0, 641, 642, 643, 640, 374, 425, + 444, 432, 0, 656, 517, 518, 657, 628, 401, 0, + 0, 532, 565, 554, 638, 520, 0, 0, 2977, 0, + 0, 0, 0, 0, 0, 0, 336, 0, 0, 369, + 569, 551, 561, 552, 537, 538, 539, 546, 348, 540, + 541, 542, 512, 543, 513, 544, 545, 0, 568, 519, + 434, 385, 586, 585, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 280, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 605, 604, 603, 602, - 601, 600, 599, 598, 0, 0, 547, 448, 323, 285, - 319, 320, 327, 652, 649, 453, 653, 0, 293, 527, - 370, 0, 414, 343, 592, 593, 0, 644, 241, 242, - 243, 244, 245, 246, 247, 248, 286, 249, 250, 251, - 252, 253, 254, 255, 258, 259, 260, 261, 262, 263, - 264, 265, 595, 256, 257, 266, 267, 268, 269, 270, - 271, 272, 273, 274, 275, 276, 277, 278, 279, 0, - 0, 0, 287, 288, 289, 290, 0, 0, 281, 282, - 283, 284, 0, 0, 0, 478, 479, 480, 502, 0, - 464, 526, 650, 0, 0, 0, 0, 0, 0, 0, - 576, 588, 622, 0, 632, 633, 635, 637, 636, 639, - 438, 439, 0, 641, 642, 643, 640, 374, 425, 444, - 432, 0, 656, 517, 518, 657, 628, 401, 0, 0, - 532, 565, 554, 638, 520, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 336, 1562, 0, 369, 569, - 551, 561, 552, 537, 538, 539, 546, 348, 540, 541, - 542, 512, 543, 513, 544, 545, 0, 568, 519, 434, - 385, 586, 585, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 228, 0, 0, 0, 0, 0, + 0, 309, 229, 514, 634, 516, 515, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 312, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 228, 0, 0, 1560, 0, 0, 0, - 309, 229, 514, 634, 516, 515, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 312, 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, 299, 441, + 460, 310, 429, 473, 315, 437, 452, 305, 400, 426, + 0, 0, 301, 458, 436, 382, 359, 360, 300, 0, + 420, 334, 350, 331, 398, 0, 457, 485, 330, 476, + 0, 468, 303, 0, 467, 397, 454, 459, 383, 376, + 0, 302, 456, 381, 375, 363, 340, 501, 364, 365, + 354, 409, 373, 410, 355, 387, 386, 388, 0, 0, + 0, 0, 0, 496, 497, 0, 0, 645, 0, 0, + 0, 0, 0, 0, 2980, 0, 0, 0, 2979, 627, + 0, 0, 631, 0, 470, 0, 0, 0, 0, 0, + 0, 440, 0, 0, 366, 0, 0, 0, 486, 0, + 423, 403, 659, 0, 0, 421, 371, 455, 411, 461, + 442, 469, 417, 412, 294, 443, 333, 384, 306, 308, + 328, 335, 337, 341, 342, 393, 394, 406, 428, 445, + 446, 447, 332, 316, 422, 317, 352, 318, 295, 324, + 322, 325, 430, 326, 297, 407, 451, 0, 347, 418, + 379, 298, 378, 408, 450, 449, 307, 477, 483, 484, + 573, 0, 489, 660, 661, 662, 498, 0, 413, 503, + 504, 505, 507, 508, 509, 510, 574, 591, 558, 528, + 491, 582, 525, 529, 530, 357, 594, 0, 0, 0, + 482, 367, 368, 0, 339, 338, 380, 416, 345, 291, + 292, 655, 329, 399, 596, 629, 630, 521, 0, 583, + 522, 531, 321, 555, 567, 566, 395, 481, 0, 578, + 581, 511, 654, 0, 575, 590, 658, 589, 651, 405, + 0, 427, 587, 534, 0, 579, 553, 0, 580, 549, + 584, 0, 523, 0, 435, 463, 475, 492, 495, 524, + 609, 610, 611, 296, 494, 613, 614, 615, 616, 617, + 618, 619, 612, 466, 556, 533, 559, 474, 536, 535, + 0, 0, 570, 490, 571, 572, 389, 390, 391, 392, + 349, 597, 314, 493, 415, 0, 557, 0, 0, 0, + 0, 0, 0, 0, 0, 562, 563, 560, 663, 0, + 620, 621, 0, 0, 487, 488, 344, 351, 506, 353, + 313, 404, 346, 472, 361, 0, 499, 564, 500, 623, + 626, 624, 625, 396, 356, 358, 431, 362, 372, 419, + 471, 402, 424, 311, 462, 433, 377, 550, 577, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1558, 0, 0, 0, 0, 0, 0, 299, 441, 460, - 310, 429, 473, 315, 437, 452, 305, 400, 426, 0, - 0, 301, 458, 436, 382, 359, 360, 300, 0, 420, - 334, 350, 331, 398, 0, 457, 485, 330, 476, 0, - 468, 303, 0, 467, 397, 454, 459, 383, 376, 0, - 302, 456, 381, 375, 363, 340, 501, 364, 365, 354, - 409, 373, 410, 355, 387, 386, 388, 0, 0, 0, - 0, 0, 496, 497, 0, 0, 645, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 627, 0, - 0, 631, 0, 470, 0, 0, 0, 0, 0, 0, - 440, 0, 0, 366, 0, 0, 0, 486, 0, 423, - 403, 659, 0, 0, 421, 371, 455, 411, 461, 442, - 469, 417, 412, 294, 443, 333, 384, 306, 308, 328, - 335, 337, 341, 342, 393, 394, 406, 428, 445, 446, - 447, 332, 316, 422, 317, 352, 318, 295, 324, 322, - 325, 430, 326, 297, 407, 451, 0, 347, 418, 379, - 298, 378, 408, 450, 449, 307, 477, 483, 484, 573, - 0, 489, 660, 661, 662, 498, 0, 413, 503, 504, - 505, 507, 508, 509, 510, 574, 591, 558, 528, 491, - 582, 525, 529, 530, 357, 594, 0, 0, 0, 482, - 367, 368, 0, 339, 338, 380, 416, 345, 291, 292, - 655, 329, 399, 596, 629, 630, 521, 0, 583, 522, - 531, 321, 555, 567, 566, 395, 481, 0, 578, 581, - 511, 654, 0, 575, 590, 658, 589, 651, 405, 0, - 427, 587, 534, 0, 579, 553, 0, 580, 549, 584, - 0, 523, 0, 435, 463, 475, 492, 495, 524, 609, - 610, 611, 296, 494, 613, 614, 615, 616, 617, 618, - 619, 612, 466, 556, 533, 559, 474, 536, 535, 0, - 0, 570, 490, 571, 572, 389, 390, 391, 392, 349, - 597, 314, 493, 415, 0, 557, 0, 0, 0, 0, - 0, 0, 0, 0, 562, 563, 560, 663, 0, 620, - 621, 0, 0, 487, 488, 344, 351, 506, 353, 313, - 404, 346, 472, 361, 0, 499, 564, 500, 623, 626, - 624, 625, 396, 356, 358, 431, 362, 372, 419, 471, - 402, 424, 311, 462, 433, 377, 550, 577, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 280, + 280, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 605, 604, 603, 602, 601, + 600, 599, 598, 0, 0, 547, 448, 323, 285, 319, + 320, 327, 652, 649, 453, 653, 0, 293, 527, 370, + 0, 414, 343, 592, 593, 0, 644, 241, 242, 243, + 244, 245, 246, 247, 248, 286, 249, 250, 251, 252, + 253, 254, 255, 258, 259, 260, 261, 262, 263, 264, + 265, 595, 256, 257, 266, 267, 268, 269, 270, 271, + 272, 273, 274, 275, 276, 277, 278, 279, 0, 0, + 0, 287, 288, 289, 290, 0, 0, 281, 282, 283, + 284, 0, 0, 0, 478, 479, 480, 502, 0, 464, + 526, 650, 0, 0, 0, 0, 0, 0, 0, 576, + 588, 622, 0, 632, 633, 635, 637, 636, 639, 438, + 439, 0, 641, 642, 643, 640, 374, 425, 444, 432, + 0, 656, 517, 518, 657, 628, 401, 0, 0, 532, + 565, 554, 638, 520, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 336, 1556, 0, 369, 569, 551, + 561, 552, 537, 538, 539, 546, 348, 540, 541, 542, + 512, 543, 513, 544, 545, 0, 568, 519, 434, 385, + 586, 585, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 605, 604, 603, 602, 601, 600, - 599, 598, 0, 0, 547, 448, 323, 285, 319, 320, - 327, 652, 649, 453, 653, 0, 293, 527, 370, 0, - 414, 343, 592, 593, 0, 644, 241, 242, 243, 244, - 245, 246, 247, 248, 286, 249, 250, 251, 252, 253, - 254, 255, 258, 259, 260, 261, 262, 263, 264, 265, - 595, 256, 257, 266, 267, 268, 269, 270, 271, 272, - 273, 274, 275, 276, 277, 278, 279, 0, 0, 0, - 287, 288, 289, 290, 0, 0, 281, 282, 283, 284, - 0, 0, 0, 478, 479, 480, 502, 0, 464, 526, - 650, 0, 0, 0, 0, 0, 0, 0, 576, 588, - 622, 0, 632, 633, 635, 637, 636, 639, 438, 439, - 0, 641, 642, 643, 640, 374, 425, 444, 432, 0, - 656, 517, 518, 657, 628, 401, 0, 0, 532, 565, - 554, 638, 520, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 336, 1556, 0, 369, 569, 551, 561, - 552, 537, 538, 539, 546, 348, 540, 541, 542, 512, - 543, 513, 544, 545, 0, 568, 519, 434, 385, 586, - 585, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 228, 0, 0, 1554, 0, 0, 0, 309, + 229, 514, 634, 516, 515, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 312, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 228, 0, 0, 1560, 0, 0, 0, 309, 229, - 514, 634, 516, 515, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 312, 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, 1552, + 0, 0, 0, 0, 0, 0, 299, 441, 460, 310, + 429, 473, 315, 437, 452, 305, 400, 426, 0, 0, + 301, 458, 436, 382, 359, 360, 300, 0, 420, 334, + 350, 331, 398, 0, 457, 485, 330, 476, 0, 468, + 303, 0, 467, 397, 454, 459, 383, 376, 0, 302, + 456, 381, 375, 363, 340, 501, 364, 365, 354, 409, + 373, 410, 355, 387, 386, 388, 0, 0, 0, 0, + 0, 496, 497, 0, 0, 645, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 627, 0, 0, + 631, 0, 470, 0, 0, 0, 0, 0, 0, 440, + 0, 0, 366, 0, 0, 0, 486, 0, 423, 403, + 659, 0, 0, 421, 371, 455, 411, 461, 442, 469, + 417, 412, 294, 443, 333, 384, 306, 308, 328, 335, + 337, 341, 342, 393, 394, 406, 428, 445, 446, 447, + 332, 316, 422, 317, 352, 318, 295, 324, 322, 325, + 430, 326, 297, 407, 451, 0, 347, 418, 379, 298, + 378, 408, 450, 449, 307, 477, 483, 484, 573, 0, + 489, 660, 661, 662, 498, 0, 413, 503, 504, 505, + 507, 508, 509, 510, 574, 591, 558, 528, 491, 582, + 525, 529, 530, 357, 594, 0, 0, 0, 482, 367, + 368, 0, 339, 338, 380, 416, 345, 291, 292, 655, + 329, 399, 596, 629, 630, 521, 0, 583, 522, 531, + 321, 555, 567, 566, 395, 481, 0, 578, 581, 511, + 654, 0, 575, 590, 658, 589, 651, 405, 0, 427, + 587, 534, 0, 579, 553, 0, 580, 549, 584, 0, + 523, 0, 435, 463, 475, 492, 495, 524, 609, 610, + 611, 296, 494, 613, 614, 615, 616, 617, 618, 619, + 612, 466, 556, 533, 559, 474, 536, 535, 0, 0, + 570, 490, 571, 572, 389, 390, 391, 392, 349, 597, + 314, 493, 415, 0, 557, 0, 0, 0, 0, 0, + 0, 0, 0, 562, 563, 560, 663, 0, 620, 621, + 0, 0, 487, 488, 344, 351, 506, 353, 313, 404, + 346, 472, 361, 0, 499, 564, 500, 623, 626, 624, + 625, 396, 356, 358, 431, 362, 372, 419, 471, 402, + 424, 311, 462, 433, 377, 550, 577, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 280, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1558, 0, - 0, 0, 0, 0, 0, 299, 441, 460, 310, 429, - 473, 315, 437, 452, 305, 400, 426, 0, 0, 301, - 458, 436, 382, 359, 360, 300, 0, 420, 334, 350, - 331, 398, 0, 457, 485, 330, 476, 0, 468, 303, - 0, 467, 397, 454, 459, 383, 376, 0, 302, 456, - 381, 375, 363, 340, 501, 364, 365, 354, 409, 373, - 410, 355, 387, 386, 388, 0, 0, 0, 0, 0, - 496, 497, 0, 0, 645, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 627, 0, 0, 631, - 0, 470, 0, 0, 0, 0, 0, 0, 440, 0, - 0, 366, 0, 0, 0, 486, 0, 423, 403, 659, - 0, 0, 421, 371, 455, 411, 461, 442, 469, 417, - 412, 294, 443, 333, 384, 306, 308, 328, 335, 337, - 341, 342, 393, 394, 406, 428, 445, 446, 447, 332, - 316, 422, 317, 352, 318, 295, 324, 322, 325, 430, - 326, 297, 407, 451, 0, 347, 418, 379, 298, 378, - 408, 450, 449, 307, 477, 483, 484, 573, 0, 489, - 660, 661, 662, 498, 0, 413, 503, 504, 505, 507, - 508, 509, 510, 574, 591, 558, 528, 491, 582, 525, - 529, 530, 357, 594, 0, 0, 0, 482, 367, 368, - 0, 339, 338, 380, 416, 345, 291, 292, 655, 329, - 399, 596, 629, 630, 521, 0, 583, 522, 531, 321, - 555, 567, 566, 395, 481, 0, 578, 581, 511, 654, - 0, 575, 590, 658, 589, 651, 405, 0, 427, 587, - 534, 0, 579, 553, 0, 580, 549, 584, 0, 523, - 0, 435, 463, 475, 492, 495, 524, 609, 610, 611, - 296, 494, 613, 614, 615, 616, 617, 618, 619, 612, - 466, 556, 533, 559, 474, 536, 535, 0, 0, 570, - 490, 571, 572, 389, 390, 391, 392, 349, 597, 314, - 493, 415, 0, 557, 0, 0, 0, 0, 0, 0, - 0, 0, 562, 563, 560, 663, 0, 620, 621, 0, - 0, 487, 488, 344, 351, 506, 353, 313, 404, 346, - 472, 361, 0, 499, 564, 500, 623, 626, 624, 625, - 396, 356, 358, 431, 362, 372, 419, 471, 402, 424, - 311, 462, 433, 377, 550, 577, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 280, 0, 0, + 0, 0, 0, 605, 604, 603, 602, 601, 600, 599, + 598, 0, 0, 547, 448, 323, 285, 319, 320, 327, + 652, 649, 453, 653, 0, 293, 527, 370, 0, 414, + 343, 592, 593, 0, 644, 241, 242, 243, 244, 245, + 246, 247, 248, 286, 249, 250, 251, 252, 253, 254, + 255, 258, 259, 260, 261, 262, 263, 264, 265, 595, + 256, 257, 266, 267, 268, 269, 270, 271, 272, 273, + 274, 275, 276, 277, 278, 279, 0, 0, 0, 287, + 288, 289, 290, 0, 0, 281, 282, 283, 284, 0, + 0, 0, 478, 479, 480, 502, 0, 464, 526, 650, + 0, 0, 0, 0, 0, 0, 0, 576, 588, 622, + 0, 632, 633, 635, 637, 636, 639, 438, 439, 0, + 641, 642, 643, 640, 374, 425, 444, 432, 0, 656, + 517, 518, 657, 628, 401, 0, 0, 532, 565, 554, + 638, 520, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 336, 1550, 0, 369, 569, 551, 561, 552, + 537, 538, 539, 546, 348, 540, 541, 542, 512, 543, + 513, 544, 545, 0, 568, 519, 434, 385, 586, 585, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 605, 604, 603, 602, 601, 600, 599, 598, - 0, 0, 547, 448, 323, 285, 319, 320, 327, 652, - 649, 453, 653, 0, 293, 527, 370, 0, 414, 343, - 592, 593, 0, 644, 241, 242, 243, 244, 245, 246, - 247, 248, 286, 249, 250, 251, 252, 253, 254, 255, - 258, 259, 260, 261, 262, 263, 264, 265, 595, 256, - 257, 266, 267, 268, 269, 270, 271, 272, 273, 274, - 275, 276, 277, 278, 279, 0, 0, 0, 287, 288, - 289, 290, 0, 0, 281, 282, 283, 284, 0, 0, - 0, 478, 479, 480, 502, 0, 464, 526, 650, 0, - 0, 0, 0, 0, 0, 0, 576, 588, 622, 0, - 632, 633, 635, 637, 636, 639, 438, 439, 0, 641, - 642, 643, 640, 374, 425, 444, 432, 0, 656, 517, - 518, 657, 628, 401, 0, 0, 532, 565, 554, 638, - 520, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 671, 336, 0, 0, 369, 569, 551, 561, 552, 537, - 538, 539, 546, 348, 540, 541, 542, 512, 543, 513, - 544, 545, 0, 568, 519, 434, 385, 586, 585, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 228, - 0, 0, 0, 0, 0, 0, 309, 229, 514, 634, - 516, 515, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 312, 0, 0, 0, 0, 0, 0, 0, 0, + 228, 0, 0, 1554, 0, 0, 0, 309, 229, 514, + 634, 516, 515, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 312, 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, 0, 0, 1552, 0, 0, + 0, 0, 0, 0, 299, 441, 460, 310, 429, 473, + 315, 437, 452, 305, 400, 426, 0, 0, 301, 458, + 436, 382, 359, 360, 300, 0, 420, 334, 350, 331, + 398, 0, 457, 485, 330, 476, 0, 468, 303, 0, + 467, 397, 454, 459, 383, 376, 0, 302, 456, 381, + 375, 363, 340, 501, 364, 365, 354, 409, 373, 410, + 355, 387, 386, 388, 0, 0, 0, 0, 0, 496, + 497, 0, 0, 645, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 627, 0, 0, 631, 0, + 470, 0, 0, 0, 0, 0, 0, 440, 0, 0, + 366, 0, 0, 0, 486, 0, 423, 403, 659, 0, + 0, 421, 371, 455, 411, 461, 442, 469, 417, 412, + 294, 443, 333, 384, 306, 308, 328, 335, 337, 341, + 342, 393, 394, 406, 428, 445, 446, 447, 332, 316, + 422, 317, 352, 318, 295, 324, 322, 325, 430, 326, + 297, 407, 451, 0, 347, 418, 379, 298, 378, 408, + 450, 449, 307, 477, 483, 484, 573, 0, 489, 660, + 661, 662, 498, 0, 413, 503, 504, 505, 507, 508, + 509, 510, 574, 591, 558, 528, 491, 582, 525, 529, + 530, 357, 594, 0, 0, 0, 482, 367, 368, 0, + 339, 338, 380, 416, 345, 291, 292, 655, 329, 399, + 596, 629, 630, 521, 0, 583, 522, 531, 321, 555, + 567, 566, 395, 481, 0, 578, 581, 511, 654, 0, + 575, 590, 658, 589, 651, 405, 0, 427, 587, 534, + 0, 579, 553, 0, 580, 549, 584, 0, 523, 0, + 435, 463, 475, 492, 495, 524, 609, 610, 611, 296, + 494, 613, 614, 615, 616, 617, 618, 619, 612, 466, + 556, 533, 559, 474, 536, 535, 0, 0, 570, 490, + 571, 572, 389, 390, 391, 392, 349, 597, 314, 493, + 415, 0, 557, 0, 0, 0, 0, 0, 0, 0, + 0, 562, 563, 560, 663, 0, 620, 621, 0, 0, + 487, 488, 344, 351, 506, 353, 313, 404, 346, 472, + 361, 0, 499, 564, 500, 623, 626, 624, 625, 396, + 356, 358, 431, 362, 372, 419, 471, 402, 424, 311, + 462, 433, 377, 550, 577, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 280, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 299, 441, 460, 310, 429, 473, 315, - 437, 452, 305, 400, 426, 0, 0, 301, 458, 436, - 382, 359, 360, 300, 0, 420, 334, 350, 331, 398, - 0, 457, 485, 330, 476, 0, 468, 303, 0, 467, - 397, 454, 459, 383, 376, 0, 302, 456, 381, 375, - 363, 340, 501, 364, 365, 354, 409, 373, 410, 355, - 387, 386, 388, 0, 0, 0, 0, 0, 496, 497, - 0, 0, 645, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 627, 0, 0, 631, 0, 470, - 0, 669, 0, 0, 0, 0, 440, 0, 0, 366, - 0, 0, 0, 486, 0, 423, 403, 659, 0, 0, - 421, 371, 455, 411, 461, 442, 469, 417, 412, 294, - 443, 333, 384, 306, 308, 328, 335, 337, 341, 342, - 393, 394, 406, 428, 445, 446, 447, 332, 316, 422, - 317, 352, 318, 295, 324, 322, 325, 430, 326, 297, - 407, 451, 0, 347, 418, 379, 298, 378, 408, 450, - 449, 307, 477, 483, 484, 573, 0, 489, 660, 661, - 662, 498, 0, 413, 503, 504, 505, 507, 508, 509, - 510, 574, 591, 558, 528, 491, 582, 525, 529, 530, - 357, 594, 0, 0, 0, 482, 367, 368, 0, 339, - 338, 380, 416, 345, 291, 292, 655, 329, 399, 596, - 629, 630, 521, 0, 583, 522, 531, 321, 555, 567, - 566, 395, 481, 0, 578, 581, 511, 654, 0, 575, - 590, 658, 589, 651, 405, 0, 427, 587, 534, 0, - 579, 553, 0, 580, 549, 584, 0, 523, 0, 435, - 463, 475, 492, 495, 524, 609, 610, 611, 296, 494, - 613, 614, 615, 616, 617, 618, 619, 612, 466, 556, - 533, 559, 474, 536, 535, 0, 0, 570, 490, 571, - 572, 389, 390, 391, 392, 349, 597, 314, 493, 415, - 0, 557, 0, 0, 0, 0, 0, 0, 0, 0, - 562, 563, 560, 663, 0, 620, 621, 0, 0, 487, - 488, 344, 351, 506, 353, 313, 404, 346, 472, 361, - 0, 499, 564, 500, 623, 626, 624, 625, 396, 356, - 358, 431, 362, 372, 419, 471, 402, 424, 311, 462, - 433, 377, 550, 577, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 280, 0, 0, 0, 0, + 0, 605, 604, 603, 602, 601, 600, 599, 598, 0, + 0, 547, 448, 323, 285, 319, 320, 327, 652, 649, + 453, 653, 0, 293, 527, 370, 0, 414, 343, 592, + 593, 0, 644, 241, 242, 243, 244, 245, 246, 247, + 248, 286, 249, 250, 251, 252, 253, 254, 255, 258, + 259, 260, 261, 262, 263, 264, 265, 595, 256, 257, + 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, + 276, 277, 278, 279, 0, 0, 0, 287, 288, 289, + 290, 0, 0, 281, 282, 283, 284, 0, 0, 0, + 478, 479, 480, 502, 0, 464, 526, 650, 0, 0, + 0, 0, 0, 0, 0, 576, 588, 622, 0, 632, + 633, 635, 637, 636, 639, 438, 439, 0, 641, 642, + 643, 640, 374, 425, 444, 432, 0, 656, 517, 518, + 657, 628, 401, 0, 0, 532, 565, 554, 638, 520, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 605, 604, 603, 602, 601, 600, 599, 598, 0, 0, - 547, 448, 323, 285, 319, 320, 327, 652, 649, 453, - 653, 0, 293, 527, 370, 0, 414, 343, 592, 593, - 0, 644, 241, 242, 243, 244, 245, 246, 247, 248, - 286, 249, 250, 251, 252, 253, 254, 255, 258, 259, - 260, 261, 262, 263, 264, 265, 595, 256, 257, 266, - 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, - 277, 278, 279, 0, 0, 0, 287, 288, 289, 290, - 0, 0, 281, 282, 283, 284, 0, 0, 0, 478, - 479, 480, 502, 0, 464, 526, 650, 0, 0, 0, - 0, 0, 0, 0, 576, 588, 622, 0, 632, 633, - 635, 637, 636, 639, 438, 439, 670, 641, 642, 643, - 640, 374, 425, 444, 432, 0, 656, 517, 518, 657, - 628, 401, 0, 0, 532, 565, 554, 638, 520, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 336, - 0, 0, 369, 569, 551, 561, 552, 537, 538, 539, - 546, 348, 540, 541, 542, 512, 543, 513, 544, 545, - 0, 568, 519, 434, 385, 586, 585, 0, 0, 0, + 336, 0, 0, 369, 569, 551, 561, 552, 537, 538, + 539, 546, 348, 540, 541, 542, 512, 543, 513, 544, + 545, 0, 568, 519, 434, 385, 586, 585, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 4086, 0, 228, 855, 0, - 0, 0, 0, 0, 309, 229, 514, 634, 516, 515, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 312, + 0, 0, 0, 0, 0, 0, 4066, 0, 228, 853, + 0, 0, 0, 0, 0, 309, 229, 514, 634, 516, + 515, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 312, 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, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 299, 441, 460, 310, 429, 473, 315, 437, + 452, 305, 400, 426, 0, 0, 301, 458, 436, 382, + 359, 360, 300, 0, 420, 334, 350, 331, 398, 0, + 457, 485, 330, 476, 0, 468, 303, 0, 467, 397, + 454, 459, 383, 376, 0, 302, 456, 381, 375, 363, + 340, 501, 364, 365, 354, 409, 373, 410, 355, 387, + 386, 388, 0, 0, 0, 0, 0, 496, 497, 0, + 0, 645, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 627, 0, 0, 631, 0, 470, 0, + 0, 0, 0, 0, 0, 440, 0, 0, 366, 0, + 0, 0, 486, 0, 423, 403, 659, 0, 0, 421, + 371, 455, 411, 461, 442, 469, 417, 412, 294, 443, + 333, 384, 306, 308, 328, 335, 337, 341, 342, 393, + 394, 406, 428, 445, 446, 447, 332, 316, 422, 317, + 352, 318, 295, 324, 322, 325, 430, 326, 297, 407, + 451, 0, 347, 418, 379, 298, 378, 408, 450, 449, + 307, 477, 483, 484, 573, 0, 489, 660, 661, 662, + 498, 0, 413, 503, 504, 505, 507, 508, 509, 510, + 574, 591, 558, 528, 491, 582, 525, 529, 530, 357, + 594, 0, 0, 0, 482, 367, 368, 0, 339, 338, + 380, 416, 345, 291, 292, 655, 329, 399, 596, 629, + 630, 521, 0, 583, 522, 531, 321, 555, 567, 566, + 395, 481, 0, 578, 581, 511, 654, 0, 575, 590, + 658, 589, 651, 405, 0, 427, 587, 534, 0, 579, + 553, 0, 580, 549, 584, 0, 523, 0, 435, 463, + 475, 492, 495, 524, 609, 610, 611, 296, 494, 613, + 614, 615, 616, 617, 618, 619, 612, 466, 556, 533, + 559, 474, 536, 535, 0, 0, 570, 490, 571, 572, + 389, 390, 391, 392, 349, 597, 314, 493, 415, 0, + 557, 0, 0, 0, 0, 0, 0, 0, 0, 562, + 563, 560, 663, 0, 620, 621, 0, 0, 487, 488, + 344, 351, 506, 353, 313, 404, 346, 472, 361, 0, + 499, 564, 500, 623, 626, 624, 625, 396, 356, 358, + 431, 362, 372, 419, 471, 402, 424, 311, 462, 433, + 377, 550, 577, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 280, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 605, + 604, 603, 602, 601, 600, 599, 598, 0, 0, 547, + 448, 323, 285, 319, 320, 327, 652, 649, 453, 653, + 0, 293, 527, 370, 0, 414, 343, 592, 593, 0, + 644, 241, 242, 243, 244, 245, 246, 247, 248, 286, + 249, 250, 251, 252, 253, 254, 255, 258, 259, 260, + 261, 262, 263, 264, 265, 595, 256, 257, 266, 267, + 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, + 278, 279, 0, 0, 0, 287, 288, 289, 290, 0, + 0, 281, 282, 283, 284, 0, 0, 0, 478, 479, + 480, 502, 0, 464, 526, 650, 0, 0, 0, 0, + 0, 0, 0, 576, 588, 622, 0, 632, 633, 635, + 637, 636, 639, 438, 439, 0, 641, 642, 643, 640, + 374, 425, 444, 432, 0, 656, 517, 518, 657, 628, + 401, 0, 0, 532, 565, 554, 638, 520, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 336, 0, + 0, 369, 569, 551, 561, 552, 537, 538, 539, 546, + 348, 540, 541, 542, 512, 543, 513, 544, 545, 0, + 568, 519, 434, 385, 586, 585, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 299, 441, 460, 310, 429, 473, 315, 437, 452, - 305, 400, 426, 0, 0, 301, 458, 436, 382, 359, - 360, 300, 0, 420, 334, 350, 331, 398, 0, 457, - 485, 330, 476, 0, 468, 303, 0, 467, 397, 454, - 459, 383, 376, 0, 302, 456, 381, 375, 363, 340, - 501, 364, 365, 354, 409, 373, 410, 355, 387, 386, - 388, 0, 0, 0, 0, 0, 496, 497, 0, 0, - 645, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 627, 0, 0, 631, 0, 470, 0, 0, - 0, 0, 0, 0, 440, 0, 0, 366, 0, 0, - 0, 486, 0, 423, 403, 659, 0, 0, 421, 371, - 455, 411, 461, 442, 469, 417, 412, 294, 443, 333, - 384, 306, 308, 328, 335, 337, 341, 342, 393, 394, - 406, 428, 445, 446, 447, 332, 316, 422, 317, 352, - 318, 295, 324, 322, 325, 430, 326, 297, 407, 451, - 0, 347, 418, 379, 298, 378, 408, 450, 449, 307, - 477, 483, 484, 573, 0, 489, 660, 661, 662, 498, - 0, 413, 503, 504, 505, 507, 508, 509, 510, 574, - 591, 558, 528, 491, 582, 525, 529, 530, 357, 594, - 0, 0, 0, 482, 367, 368, 0, 339, 338, 380, - 416, 345, 291, 292, 655, 329, 399, 596, 629, 630, - 521, 0, 583, 522, 531, 321, 555, 567, 566, 395, - 481, 0, 578, 581, 511, 654, 0, 575, 590, 658, - 589, 651, 405, 0, 427, 587, 534, 0, 579, 553, - 0, 580, 549, 584, 0, 523, 0, 435, 463, 475, - 492, 495, 524, 609, 610, 611, 296, 494, 613, 614, - 615, 616, 617, 618, 619, 612, 466, 556, 533, 559, - 474, 536, 535, 0, 0, 570, 490, 571, 572, 389, - 390, 391, 392, 349, 597, 314, 493, 415, 0, 557, - 0, 0, 0, 0, 0, 0, 0, 0, 562, 563, - 560, 663, 0, 620, 621, 0, 0, 487, 488, 344, - 351, 506, 353, 313, 404, 346, 472, 361, 0, 499, - 564, 500, 623, 626, 624, 625, 396, 356, 358, 431, - 362, 372, 419, 471, 402, 424, 311, 462, 433, 377, - 550, 577, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 280, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 605, 604, - 603, 602, 601, 600, 599, 598, 0, 0, 547, 448, - 323, 285, 319, 320, 327, 652, 649, 453, 653, 0, - 293, 527, 370, 0, 414, 343, 592, 593, 0, 644, - 241, 242, 243, 244, 245, 246, 247, 248, 286, 249, - 250, 251, 252, 253, 254, 255, 258, 259, 260, 261, - 262, 263, 264, 265, 595, 256, 257, 266, 267, 268, - 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, - 279, 0, 0, 0, 287, 288, 289, 290, 0, 0, - 281, 282, 283, 284, 0, 0, 0, 478, 479, 480, - 502, 0, 464, 526, 650, 0, 0, 0, 0, 0, - 0, 0, 576, 588, 622, 0, 632, 633, 635, 637, - 636, 639, 438, 439, 0, 641, 642, 643, 640, 374, - 425, 444, 432, 0, 656, 517, 518, 657, 628, 401, - 0, 0, 532, 565, 554, 638, 520, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 336, 0, 0, - 369, 569, 551, 561, 552, 537, 538, 539, 546, 348, - 540, 541, 542, 512, 543, 513, 544, 545, 0, 568, - 519, 434, 385, 586, 585, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 228, 0, 0, 1554, + 0, 0, 0, 309, 229, 514, 634, 516, 515, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 312, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 228, 0, 0, 1560, 0, - 0, 0, 309, 229, 514, 634, 516, 515, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 312, 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, 1552, 0, 0, 0, 0, 0, 0, + 299, 441, 460, 310, 429, 473, 315, 437, 452, 305, + 400, 426, 0, 0, 301, 458, 436, 382, 359, 360, + 300, 0, 420, 334, 350, 331, 398, 0, 457, 485, + 330, 476, 0, 468, 303, 0, 467, 397, 454, 459, + 383, 376, 0, 302, 456, 381, 375, 363, 340, 501, + 364, 365, 354, 409, 373, 410, 355, 387, 386, 388, + 0, 0, 0, 0, 0, 496, 497, 0, 0, 645, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1558, 0, 0, 0, 0, 0, 0, 299, - 441, 460, 310, 429, 473, 315, 437, 452, 305, 400, - 426, 0, 0, 301, 458, 436, 382, 359, 360, 300, - 0, 420, 334, 350, 331, 398, 0, 457, 485, 330, - 476, 0, 468, 303, 0, 467, 397, 454, 459, 383, - 376, 0, 302, 456, 381, 375, 363, 340, 501, 364, - 365, 354, 409, 373, 410, 355, 387, 386, 388, 0, - 0, 0, 0, 0, 496, 497, 0, 0, 645, 0, + 0, 627, 0, 0, 631, 0, 470, 0, 0, 0, + 0, 0, 0, 440, 0, 0, 366, 0, 0, 0, + 486, 0, 423, 403, 659, 0, 0, 421, 371, 455, + 411, 461, 442, 469, 417, 412, 294, 443, 333, 384, + 306, 308, 328, 335, 337, 341, 342, 393, 394, 406, + 428, 445, 446, 447, 332, 316, 422, 317, 352, 318, + 295, 324, 322, 325, 430, 326, 297, 407, 451, 0, + 347, 418, 379, 298, 378, 408, 450, 449, 307, 477, + 483, 484, 573, 0, 489, 660, 661, 662, 498, 0, + 413, 503, 504, 505, 507, 508, 509, 510, 574, 591, + 558, 528, 491, 582, 525, 529, 530, 357, 594, 0, + 0, 0, 482, 367, 368, 0, 339, 338, 380, 416, + 345, 291, 292, 655, 329, 399, 596, 629, 630, 521, + 0, 583, 522, 531, 321, 555, 567, 566, 395, 481, + 0, 578, 581, 511, 654, 0, 575, 590, 658, 589, + 651, 405, 0, 427, 587, 534, 0, 579, 553, 0, + 580, 549, 584, 0, 523, 0, 435, 463, 475, 492, + 495, 524, 609, 610, 611, 296, 494, 613, 614, 615, + 616, 617, 618, 619, 612, 466, 556, 533, 559, 474, + 536, 535, 0, 0, 570, 490, 571, 572, 389, 390, + 391, 392, 349, 597, 314, 493, 415, 0, 557, 0, + 0, 0, 0, 0, 0, 0, 0, 562, 563, 560, + 663, 0, 620, 621, 0, 0, 487, 488, 344, 351, + 506, 353, 313, 404, 346, 472, 361, 0, 499, 564, + 500, 623, 626, 624, 625, 396, 356, 358, 431, 362, + 372, 419, 471, 402, 424, 311, 462, 433, 377, 550, + 577, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 280, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 605, 604, 603, + 602, 601, 600, 599, 598, 0, 0, 547, 448, 323, + 285, 319, 320, 327, 652, 649, 453, 653, 0, 293, + 527, 370, 0, 414, 343, 592, 593, 0, 644, 241, + 242, 243, 244, 245, 246, 247, 248, 286, 249, 250, + 251, 252, 253, 254, 255, 258, 259, 260, 261, 262, + 263, 264, 265, 595, 256, 257, 266, 267, 268, 269, + 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, + 0, 0, 0, 287, 288, 289, 290, 0, 0, 281, + 282, 283, 284, 0, 0, 0, 478, 479, 480, 502, + 0, 464, 526, 650, 0, 0, 0, 0, 0, 0, + 0, 576, 588, 622, 0, 632, 633, 635, 637, 636, + 639, 438, 439, 0, 641, 642, 643, 640, 374, 425, + 444, 432, 0, 656, 517, 518, 657, 628, 401, 0, + 0, 532, 565, 554, 638, 520, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 336, 0, 0, 369, + 569, 551, 561, 552, 537, 538, 539, 546, 348, 540, + 541, 542, 512, 543, 513, 544, 545, 0, 568, 519, + 434, 385, 586, 585, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 627, 0, 0, 631, 0, 470, 0, 0, 0, 0, - 0, 0, 440, 0, 0, 366, 0, 0, 0, 486, - 0, 423, 403, 659, 0, 0, 421, 371, 455, 411, - 461, 442, 469, 417, 412, 294, 443, 333, 384, 306, - 308, 328, 335, 337, 341, 342, 393, 394, 406, 428, - 445, 446, 447, 332, 316, 422, 317, 352, 318, 295, - 324, 322, 325, 430, 326, 297, 407, 451, 0, 347, - 418, 379, 298, 378, 408, 450, 449, 307, 477, 483, - 484, 573, 0, 489, 660, 661, 662, 498, 0, 413, - 503, 504, 505, 507, 508, 509, 510, 574, 591, 558, - 528, 491, 582, 525, 529, 530, 357, 594, 0, 0, - 0, 482, 367, 368, 0, 339, 338, 380, 416, 345, - 291, 292, 655, 329, 399, 596, 629, 630, 521, 0, - 583, 522, 531, 321, 555, 567, 566, 395, 481, 0, - 578, 581, 511, 654, 0, 575, 590, 658, 589, 651, - 405, 0, 427, 587, 534, 0, 579, 553, 0, 580, - 549, 584, 0, 523, 0, 435, 463, 475, 492, 495, - 524, 609, 610, 611, 296, 494, 613, 614, 615, 616, - 617, 618, 619, 612, 466, 556, 533, 559, 474, 536, - 535, 0, 0, 570, 490, 571, 572, 389, 390, 391, - 392, 349, 597, 314, 493, 415, 0, 557, 0, 0, - 0, 0, 0, 0, 0, 0, 562, 563, 560, 663, - 0, 620, 621, 0, 0, 487, 488, 344, 351, 506, - 353, 313, 404, 346, 472, 361, 0, 499, 564, 500, - 623, 626, 624, 625, 396, 356, 358, 431, 362, 372, - 419, 471, 402, 424, 311, 462, 433, 377, 550, 577, + 0, 0, 0, 0, 228, 0, 0, 0, 0, 0, + 0, 309, 229, 514, 634, 516, 515, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 312, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 280, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 605, 604, 603, 602, - 601, 600, 599, 598, 0, 0, 547, 448, 323, 285, - 319, 320, 327, 652, 649, 453, 653, 0, 293, 527, - 370, 0, 414, 343, 592, 593, 0, 644, 241, 242, - 243, 244, 245, 246, 247, 248, 286, 249, 250, 251, - 252, 253, 254, 255, 258, 259, 260, 261, 262, 263, - 264, 265, 595, 256, 257, 266, 267, 268, 269, 270, - 271, 272, 273, 274, 275, 276, 277, 278, 279, 0, - 0, 0, 287, 288, 289, 290, 0, 0, 281, 282, - 283, 284, 0, 0, 0, 478, 479, 480, 502, 0, - 464, 526, 650, 0, 0, 0, 0, 0, 0, 0, - 576, 588, 622, 0, 632, 633, 635, 637, 636, 639, - 438, 439, 0, 641, 642, 643, 640, 374, 425, 444, - 432, 0, 656, 517, 518, 657, 628, 401, 0, 0, - 532, 565, 554, 638, 520, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 336, 0, 0, 369, 569, - 551, 561, 552, 537, 538, 539, 546, 348, 540, 541, - 542, 512, 543, 513, 544, 545, 0, 568, 519, 434, - 385, 586, 585, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 228, 0, 0, 0, 0, 0, 0, - 309, 229, 514, 634, 516, 515, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 312, 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, 299, 441, + 460, 310, 429, 473, 315, 437, 452, 305, 400, 426, + 0, 0, 301, 458, 436, 382, 359, 360, 300, 0, + 420, 334, 350, 331, 398, 0, 457, 485, 330, 476, + 0, 468, 303, 0, 467, 397, 454, 459, 383, 376, + 0, 302, 456, 381, 375, 363, 340, 501, 364, 365, + 354, 409, 373, 410, 355, 387, 386, 388, 0, 0, + 0, 0, 0, 496, 497, 0, 0, 645, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 627, + 0, 0, 631, 0, 470, 0, 0, 0, 0, 0, + 0, 440, 0, 0, 366, 0, 0, 0, 486, 0, + 423, 403, 659, 0, 0, 421, 371, 455, 411, 461, + 442, 469, 417, 412, 294, 443, 333, 384, 306, 308, + 328, 335, 337, 341, 342, 393, 394, 406, 428, 445, + 446, 447, 332, 316, 422, 317, 352, 318, 295, 324, + 322, 325, 430, 326, 297, 407, 451, 0, 347, 418, + 379, 298, 378, 408, 450, 449, 307, 477, 483, 484, + 573, 0, 489, 660, 661, 662, 498, 2487, 413, 503, + 504, 505, 507, 508, 509, 510, 574, 591, 558, 528, + 491, 582, 525, 529, 530, 357, 594, 0, 0, 0, + 482, 367, 368, 0, 339, 338, 380, 416, 345, 291, + 292, 655, 329, 399, 596, 629, 630, 521, 0, 583, + 522, 531, 321, 555, 567, 566, 395, 481, 0, 578, + 581, 511, 654, 0, 575, 590, 658, 589, 651, 405, + 0, 427, 587, 534, 0, 579, 553, 0, 580, 549, + 584, 0, 523, 0, 435, 463, 475, 492, 495, 524, + 609, 610, 611, 296, 494, 613, 614, 615, 616, 617, + 618, 619, 612, 466, 556, 533, 559, 474, 536, 535, + 0, 0, 570, 490, 571, 572, 389, 390, 391, 392, + 349, 597, 314, 493, 415, 0, 557, 0, 0, 0, + 0, 0, 0, 0, 0, 562, 563, 560, 663, 0, + 620, 621, 0, 0, 487, 488, 344, 351, 506, 353, + 313, 404, 346, 472, 361, 0, 499, 564, 500, 623, + 626, 624, 625, 396, 356, 358, 431, 362, 372, 419, + 471, 402, 424, 311, 462, 433, 377, 550, 577, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 280, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 605, 604, 603, 602, 601, + 600, 599, 598, 979, 0, 547, 448, 323, 285, 319, + 320, 327, 652, 649, 453, 653, 0, 293, 527, 370, + 0, 414, 343, 592, 593, 0, 644, 241, 242, 243, + 244, 245, 246, 247, 248, 286, 249, 250, 251, 252, + 253, 254, 255, 258, 259, 260, 261, 262, 263, 264, + 265, 595, 256, 257, 266, 267, 268, 269, 270, 271, + 272, 273, 274, 275, 276, 277, 278, 279, 0, 0, + 0, 287, 288, 289, 290, 0, 0, 281, 282, 283, + 284, 0, 0, 0, 478, 479, 480, 502, 0, 464, + 526, 650, 0, 0, 0, 0, 0, 0, 0, 576, + 588, 622, 0, 632, 633, 635, 637, 636, 639, 438, + 439, 0, 641, 642, 643, 640, 374, 425, 444, 432, + 0, 656, 517, 518, 657, 628, 401, 0, 0, 532, + 565, 554, 638, 520, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 336, 0, 0, 369, 569, 551, + 561, 552, 537, 538, 539, 546, 348, 540, 541, 542, + 512, 543, 513, 544, 545, 0, 568, 519, 434, 385, + 586, 585, 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, 299, 441, 460, - 310, 429, 473, 315, 437, 452, 305, 400, 426, 0, - 0, 301, 458, 436, 382, 359, 360, 300, 0, 420, - 334, 350, 331, 398, 0, 457, 485, 330, 476, 0, - 468, 303, 0, 467, 397, 454, 459, 383, 376, 0, - 302, 456, 381, 375, 363, 340, 501, 364, 365, 354, - 409, 373, 410, 355, 387, 386, 388, 0, 0, 0, - 0, 0, 496, 497, 0, 0, 645, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 627, 0, - 0, 631, 0, 470, 0, 0, 0, 0, 0, 0, - 440, 0, 0, 366, 0, 0, 0, 486, 0, 423, - 403, 659, 0, 0, 421, 371, 455, 411, 461, 442, - 469, 417, 412, 294, 443, 333, 384, 306, 308, 328, - 335, 337, 341, 342, 393, 394, 406, 428, 445, 446, - 447, 332, 316, 422, 317, 352, 318, 295, 324, 322, - 325, 430, 326, 297, 407, 451, 0, 347, 418, 379, - 298, 378, 408, 450, 449, 307, 477, 483, 484, 573, - 0, 489, 660, 661, 662, 498, 2499, 413, 503, 504, - 505, 507, 508, 509, 510, 574, 591, 558, 528, 491, - 582, 525, 529, 530, 357, 594, 0, 0, 0, 482, - 367, 368, 0, 339, 338, 380, 416, 345, 291, 292, - 655, 329, 399, 596, 629, 630, 521, 0, 583, 522, - 531, 321, 555, 567, 566, 395, 481, 0, 578, 581, - 511, 654, 0, 575, 590, 658, 589, 651, 405, 0, - 427, 587, 534, 0, 579, 553, 0, 580, 549, 584, - 0, 523, 0, 435, 463, 475, 492, 495, 524, 609, - 610, 611, 296, 494, 613, 614, 615, 616, 617, 618, - 619, 612, 466, 556, 533, 559, 474, 536, 535, 0, - 0, 570, 490, 571, 572, 389, 390, 391, 392, 349, - 597, 314, 493, 415, 0, 557, 0, 0, 0, 0, - 0, 0, 0, 0, 562, 563, 560, 663, 0, 620, - 621, 0, 0, 487, 488, 344, 351, 506, 353, 313, - 404, 346, 472, 361, 0, 499, 564, 500, 623, 626, - 624, 625, 396, 356, 358, 431, 362, 372, 419, 471, - 402, 424, 311, 462, 433, 377, 550, 577, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 280, + 0, 0, 228, 0, 0, 1554, 0, 0, 0, 309, + 229, 514, 634, 516, 515, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 312, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 605, 604, 603, 602, 601, 600, - 599, 598, 982, 0, 547, 448, 323, 285, 319, 320, - 327, 652, 649, 453, 653, 0, 293, 527, 370, 0, - 414, 343, 592, 593, 0, 644, 241, 242, 243, 244, - 245, 246, 247, 248, 286, 249, 250, 251, 252, 253, - 254, 255, 258, 259, 260, 261, 262, 263, 264, 265, - 595, 256, 257, 266, 267, 268, 269, 270, 271, 272, - 273, 274, 275, 276, 277, 278, 279, 0, 0, 0, - 287, 288, 289, 290, 0, 0, 281, 282, 283, 284, - 0, 0, 0, 478, 479, 480, 502, 0, 464, 526, - 650, 0, 0, 0, 0, 0, 0, 0, 576, 588, - 622, 0, 632, 633, 635, 637, 636, 639, 438, 439, - 0, 641, 642, 643, 640, 374, 425, 444, 432, 0, - 656, 517, 518, 657, 628, 401, 0, 0, 532, 565, - 554, 638, 520, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 336, 0, 0, 369, 569, 551, 561, - 552, 537, 538, 539, 546, 348, 540, 541, 542, 512, - 543, 513, 544, 545, 0, 568, 519, 434, 385, 586, - 585, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 228, 0, 0, 1560, 0, 0, 0, 309, 229, - 514, 634, 516, 515, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 312, 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, 1764, + 0, 0, 0, 0, 0, 0, 299, 441, 460, 310, + 429, 473, 315, 437, 452, 305, 400, 426, 0, 0, + 301, 458, 436, 382, 359, 360, 300, 0, 420, 334, + 350, 331, 398, 0, 457, 485, 330, 476, 0, 468, + 303, 0, 467, 397, 454, 459, 383, 376, 0, 302, + 456, 381, 375, 363, 340, 501, 364, 365, 354, 409, + 373, 410, 355, 387, 386, 388, 0, 0, 0, 0, + 0, 496, 497, 0, 0, 645, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 627, 0, 0, + 631, 0, 470, 0, 0, 0, 0, 0, 0, 440, + 0, 0, 366, 0, 0, 0, 486, 0, 423, 403, + 659, 0, 0, 421, 371, 455, 411, 461, 442, 469, + 417, 412, 294, 443, 333, 384, 306, 308, 328, 335, + 337, 341, 342, 393, 394, 406, 428, 445, 446, 447, + 332, 316, 422, 317, 352, 318, 295, 324, 322, 325, + 430, 326, 297, 407, 451, 0, 347, 418, 379, 298, + 378, 408, 450, 449, 307, 477, 483, 484, 573, 0, + 489, 660, 661, 662, 498, 0, 413, 503, 504, 505, + 507, 508, 509, 510, 574, 591, 558, 528, 491, 582, + 525, 529, 530, 357, 594, 0, 0, 0, 482, 367, + 368, 0, 339, 338, 380, 416, 345, 291, 292, 655, + 329, 399, 596, 629, 630, 521, 0, 583, 522, 531, + 321, 555, 567, 566, 395, 481, 0, 578, 581, 511, + 654, 0, 575, 590, 658, 589, 651, 405, 0, 427, + 587, 534, 0, 579, 553, 0, 580, 549, 584, 0, + 523, 0, 435, 463, 475, 492, 495, 524, 609, 610, + 611, 296, 494, 613, 614, 615, 616, 617, 618, 619, + 612, 466, 556, 533, 559, 474, 536, 535, 0, 0, + 570, 490, 571, 572, 389, 390, 391, 392, 349, 597, + 314, 493, 415, 0, 557, 0, 0, 0, 0, 0, + 0, 0, 0, 562, 563, 560, 663, 0, 620, 621, + 0, 0, 487, 488, 344, 351, 506, 353, 313, 404, + 346, 472, 361, 0, 499, 564, 500, 623, 626, 624, + 625, 396, 356, 358, 431, 362, 372, 419, 471, 402, + 424, 311, 462, 433, 377, 550, 577, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 280, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 605, 604, 603, 602, 601, 600, 599, + 598, 0, 0, 547, 448, 323, 285, 319, 320, 327, + 652, 649, 453, 653, 0, 293, 527, 370, 0, 414, + 343, 592, 593, 0, 644, 241, 242, 243, 244, 245, + 246, 247, 248, 286, 249, 250, 251, 252, 253, 254, + 255, 258, 259, 260, 261, 262, 263, 264, 265, 595, + 256, 257, 266, 267, 268, 269, 270, 271, 272, 273, + 274, 275, 276, 277, 278, 279, 0, 0, 0, 287, + 288, 289, 290, 0, 0, 281, 282, 283, 284, 0, + 0, 0, 478, 479, 480, 502, 0, 464, 526, 650, + 0, 0, 0, 0, 0, 0, 0, 576, 588, 622, + 0, 632, 633, 635, 637, 636, 639, 438, 439, 0, + 641, 642, 643, 640, 374, 425, 444, 432, 0, 656, + 517, 518, 657, 628, 401, 0, 0, 532, 565, 554, + 638, 520, 0, 0, 0, 0, 0, 2527, 0, 0, + 0, 0, 336, 0, 0, 369, 569, 551, 561, 552, + 537, 538, 539, 546, 348, 540, 541, 542, 512, 543, + 513, 544, 545, 0, 568, 519, 434, 385, 586, 585, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1772, 0, - 0, 0, 0, 0, 0, 299, 441, 460, 310, 429, - 473, 315, 437, 452, 305, 400, 426, 0, 0, 301, - 458, 436, 382, 359, 360, 300, 0, 420, 334, 350, - 331, 398, 0, 457, 485, 330, 476, 0, 468, 303, - 0, 467, 397, 454, 459, 383, 376, 0, 302, 456, - 381, 375, 363, 340, 501, 364, 365, 354, 409, 373, - 410, 355, 387, 386, 388, 0, 0, 0, 0, 0, - 496, 497, 0, 0, 645, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 627, 0, 0, 631, - 0, 470, 0, 0, 0, 0, 0, 0, 440, 0, - 0, 366, 0, 0, 0, 486, 0, 423, 403, 659, - 0, 0, 421, 371, 455, 411, 461, 442, 469, 417, - 412, 294, 443, 333, 384, 306, 308, 328, 335, 337, - 341, 342, 393, 394, 406, 428, 445, 446, 447, 332, - 316, 422, 317, 352, 318, 295, 324, 322, 325, 430, - 326, 297, 407, 451, 0, 347, 418, 379, 298, 378, - 408, 450, 449, 307, 477, 483, 484, 573, 0, 489, - 660, 661, 662, 498, 0, 413, 503, 504, 505, 507, - 508, 509, 510, 574, 591, 558, 528, 491, 582, 525, - 529, 530, 357, 594, 0, 0, 0, 482, 367, 368, - 0, 339, 338, 380, 416, 345, 291, 292, 655, 329, - 399, 596, 629, 630, 521, 0, 583, 522, 531, 321, - 555, 567, 566, 395, 481, 0, 578, 581, 511, 654, - 0, 575, 590, 658, 589, 651, 405, 0, 427, 587, - 534, 0, 579, 553, 0, 580, 549, 584, 0, 523, - 0, 435, 463, 475, 492, 495, 524, 609, 610, 611, - 296, 494, 613, 614, 615, 616, 617, 618, 619, 612, - 466, 556, 533, 559, 474, 536, 535, 0, 0, 570, - 490, 571, 572, 389, 390, 391, 392, 349, 597, 314, - 493, 415, 0, 557, 0, 0, 0, 0, 0, 0, - 0, 0, 562, 563, 560, 663, 0, 620, 621, 0, - 0, 487, 488, 344, 351, 506, 353, 313, 404, 346, - 472, 361, 0, 499, 564, 500, 623, 626, 624, 625, - 396, 356, 358, 431, 362, 372, 419, 471, 402, 424, - 311, 462, 433, 377, 550, 577, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 280, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 605, 604, 603, 602, 601, 600, 599, 598, - 0, 0, 547, 448, 323, 285, 319, 320, 327, 652, - 649, 453, 653, 0, 293, 527, 370, 0, 414, 343, - 592, 593, 0, 644, 241, 242, 243, 244, 245, 246, - 247, 248, 286, 249, 250, 251, 252, 253, 254, 255, - 258, 259, 260, 261, 262, 263, 264, 265, 595, 256, - 257, 266, 267, 268, 269, 270, 271, 272, 273, 274, - 275, 276, 277, 278, 279, 0, 0, 0, 287, 288, - 289, 290, 0, 0, 281, 282, 283, 284, 0, 0, - 0, 478, 479, 480, 502, 0, 464, 526, 650, 0, - 0, 0, 0, 0, 0, 0, 576, 588, 622, 0, - 632, 633, 635, 637, 636, 639, 438, 439, 0, 641, - 642, 643, 640, 374, 425, 444, 432, 0, 656, 517, - 518, 657, 628, 401, 0, 0, 532, 565, 554, 638, - 520, 0, 0, 0, 0, 0, 2539, 0, 0, 0, - 0, 336, 0, 0, 369, 569, 551, 561, 552, 537, - 538, 539, 546, 348, 540, 541, 542, 512, 543, 513, - 544, 545, 0, 568, 519, 434, 385, 586, 585, 0, + 228, 0, 0, 2529, 0, 0, 0, 309, 229, 514, + 634, 516, 515, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 312, 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, 228, - 0, 0, 2541, 0, 0, 0, 309, 229, 514, 634, - 516, 515, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 312, 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, 299, 441, 460, 310, 429, 473, + 315, 437, 452, 305, 400, 426, 0, 0, 301, 458, + 436, 382, 359, 360, 300, 0, 420, 334, 350, 331, + 398, 0, 457, 485, 330, 476, 0, 468, 303, 0, + 467, 397, 454, 459, 383, 376, 0, 302, 456, 381, + 375, 363, 340, 501, 364, 365, 354, 409, 373, 410, + 355, 387, 386, 388, 0, 0, 0, 0, 0, 496, + 497, 0, 0, 645, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 627, 0, 0, 631, 0, + 470, 0, 0, 0, 0, 0, 0, 440, 0, 0, + 366, 0, 0, 0, 486, 0, 423, 403, 659, 0, + 0, 421, 371, 455, 411, 461, 442, 469, 417, 412, + 294, 443, 333, 384, 306, 308, 328, 335, 337, 341, + 342, 393, 394, 406, 428, 445, 446, 447, 332, 316, + 422, 317, 352, 318, 295, 324, 322, 325, 430, 326, + 297, 407, 451, 0, 347, 418, 379, 298, 378, 408, + 450, 449, 307, 477, 483, 484, 573, 0, 489, 660, + 661, 662, 498, 0, 413, 503, 504, 505, 507, 508, + 509, 510, 574, 591, 558, 528, 491, 582, 525, 529, + 530, 357, 594, 0, 0, 0, 482, 367, 368, 0, + 339, 338, 380, 416, 345, 291, 292, 655, 329, 399, + 596, 629, 630, 521, 0, 583, 522, 531, 321, 555, + 567, 566, 395, 481, 0, 578, 581, 511, 654, 0, + 575, 590, 658, 589, 651, 405, 0, 427, 587, 534, + 0, 579, 553, 0, 580, 549, 584, 0, 523, 0, + 435, 463, 475, 492, 495, 524, 609, 610, 611, 296, + 494, 613, 614, 615, 616, 617, 618, 619, 612, 466, + 556, 533, 559, 474, 536, 535, 0, 0, 570, 490, + 571, 572, 389, 390, 391, 392, 349, 597, 314, 493, + 415, 0, 557, 0, 0, 0, 0, 0, 0, 0, + 0, 562, 563, 560, 663, 0, 620, 621, 0, 0, + 487, 488, 344, 351, 506, 353, 313, 404, 346, 472, + 361, 0, 499, 564, 500, 623, 626, 624, 625, 396, + 356, 358, 431, 362, 372, 419, 471, 402, 424, 311, + 462, 433, 377, 550, 577, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 280, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 299, 441, 460, 310, 429, 473, 315, - 437, 452, 305, 400, 426, 0, 0, 301, 458, 436, - 382, 359, 360, 300, 0, 420, 334, 350, 331, 398, - 0, 457, 485, 330, 476, 0, 468, 303, 0, 467, - 397, 454, 459, 383, 376, 0, 302, 456, 381, 375, - 363, 340, 501, 364, 365, 354, 409, 373, 410, 355, - 387, 386, 388, 0, 0, 0, 0, 0, 496, 497, - 0, 0, 645, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 627, 0, 0, 631, 0, 470, - 0, 0, 0, 0, 0, 0, 440, 0, 0, 366, - 0, 0, 0, 486, 0, 423, 403, 659, 0, 0, - 421, 371, 455, 411, 461, 442, 469, 417, 412, 294, - 443, 333, 384, 306, 308, 328, 335, 337, 341, 342, - 393, 394, 406, 428, 445, 446, 447, 332, 316, 422, - 317, 352, 318, 295, 324, 322, 325, 430, 326, 297, - 407, 451, 0, 347, 418, 379, 298, 378, 408, 450, - 449, 307, 477, 483, 484, 573, 0, 489, 660, 661, - 662, 498, 0, 413, 503, 504, 505, 507, 508, 509, - 510, 574, 591, 558, 528, 491, 582, 525, 529, 530, - 357, 594, 0, 0, 0, 482, 367, 368, 0, 339, - 338, 380, 416, 345, 291, 292, 655, 329, 399, 596, - 629, 630, 521, 0, 583, 522, 531, 321, 555, 567, - 566, 395, 481, 0, 578, 581, 511, 654, 0, 575, - 590, 658, 589, 651, 405, 0, 427, 587, 534, 0, - 579, 553, 0, 580, 549, 584, 0, 523, 0, 435, - 463, 475, 492, 495, 524, 609, 610, 611, 296, 494, - 613, 614, 615, 616, 617, 618, 619, 612, 466, 556, - 533, 559, 474, 536, 535, 0, 0, 570, 490, 571, - 572, 389, 390, 391, 392, 349, 597, 314, 493, 415, - 0, 557, 0, 0, 0, 0, 0, 0, 0, 0, - 562, 563, 560, 663, 0, 620, 621, 0, 0, 487, - 488, 344, 351, 506, 353, 313, 404, 346, 472, 361, - 0, 499, 564, 500, 623, 626, 624, 625, 396, 356, - 358, 431, 362, 372, 419, 471, 402, 424, 311, 462, - 433, 377, 550, 577, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 280, 0, 0, 0, 0, + 0, 605, 604, 603, 602, 601, 600, 599, 598, 0, + 0, 547, 448, 323, 285, 319, 320, 327, 652, 649, + 453, 653, 0, 293, 527, 370, 0, 414, 343, 592, + 593, 0, 644, 241, 242, 243, 244, 245, 246, 247, + 248, 286, 249, 250, 251, 252, 253, 254, 255, 258, + 259, 260, 261, 262, 263, 264, 265, 595, 256, 257, + 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, + 276, 277, 278, 279, 0, 0, 0, 287, 288, 289, + 290, 0, 0, 281, 282, 283, 284, 0, 0, 0, + 478, 479, 480, 502, 0, 464, 526, 650, 0, 0, + 0, 0, 0, 0, 0, 576, 588, 622, 0, 632, + 633, 635, 637, 636, 639, 438, 439, 0, 641, 642, + 643, 640, 374, 425, 444, 432, 0, 656, 517, 518, + 657, 628, 401, 0, 0, 532, 565, 554, 638, 520, + 0, 0, 0, 0, 0, 2135, 0, 0, 0, 0, + 336, 0, 0, 369, 569, 551, 561, 552, 537, 538, + 539, 546, 348, 540, 541, 542, 512, 543, 513, 544, + 545, 0, 568, 519, 434, 385, 586, 585, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 605, 604, 603, 602, 601, 600, 599, 598, 0, 0, - 547, 448, 323, 285, 319, 320, 327, 652, 649, 453, - 653, 0, 293, 527, 370, 0, 414, 343, 592, 593, - 0, 644, 241, 242, 243, 244, 245, 246, 247, 248, - 286, 249, 250, 251, 252, 253, 254, 255, 258, 259, - 260, 261, 262, 263, 264, 265, 595, 256, 257, 266, - 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, - 277, 278, 279, 0, 0, 0, 287, 288, 289, 290, - 0, 0, 281, 282, 283, 284, 0, 0, 0, 478, - 479, 480, 502, 0, 464, 526, 650, 0, 0, 0, - 0, 0, 0, 0, 576, 588, 622, 0, 632, 633, - 635, 637, 636, 639, 438, 439, 0, 641, 642, 643, - 640, 374, 425, 444, 432, 0, 656, 517, 518, 657, - 628, 401, 0, 0, 532, 565, 554, 638, 520, 0, - 0, 0, 0, 0, 2144, 0, 0, 0, 0, 336, - 0, 0, 369, 569, 551, 561, 552, 537, 538, 539, - 546, 348, 540, 541, 542, 512, 543, 513, 544, 545, - 0, 568, 519, 434, 385, 586, 585, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 228, 0, + 0, 2136, 0, 0, 0, 309, 229, 514, 634, 516, + 515, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 312, 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, 228, 0, 0, - 2145, 0, 0, 0, 309, 229, 514, 634, 516, 515, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 312, 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, 299, 441, 460, 310, 429, 473, 315, 437, + 452, 305, 400, 426, 0, 0, 301, 458, 436, 382, + 359, 360, 300, 0, 420, 334, 350, 331, 398, 0, + 457, 485, 330, 476, 0, 468, 303, 0, 467, 397, + 454, 459, 383, 376, 0, 302, 456, 381, 375, 363, + 340, 501, 364, 365, 354, 409, 373, 410, 355, 387, + 386, 388, 0, 0, 0, 0, 0, 496, 497, 0, + 0, 645, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 627, 0, 0, 631, 0, 470, 0, + 0, 0, 0, 0, 0, 440, 0, 0, 366, 0, + 0, 0, 486, 0, 423, 403, 659, 0, 0, 421, + 371, 455, 411, 461, 442, 469, 417, 412, 294, 443, + 333, 384, 306, 308, 328, 335, 337, 341, 342, 393, + 394, 406, 428, 445, 446, 447, 332, 316, 422, 317, + 352, 318, 295, 324, 322, 325, 430, 326, 297, 407, + 451, 0, 347, 418, 379, 298, 378, 408, 450, 449, + 307, 477, 483, 484, 573, 0, 489, 660, 661, 662, + 498, 0, 413, 503, 504, 505, 507, 508, 509, 510, + 574, 591, 558, 528, 491, 582, 525, 529, 530, 357, + 594, 0, 0, 0, 482, 367, 368, 0, 339, 338, + 380, 416, 345, 291, 292, 655, 329, 399, 596, 629, + 630, 521, 0, 583, 522, 531, 321, 555, 567, 566, + 395, 481, 0, 578, 581, 511, 654, 0, 575, 590, + 658, 589, 651, 405, 0, 427, 587, 534, 0, 579, + 553, 0, 580, 549, 584, 0, 523, 0, 435, 463, + 475, 492, 495, 524, 609, 610, 611, 296, 494, 613, + 614, 615, 616, 617, 618, 619, 612, 466, 556, 533, + 559, 474, 536, 535, 0, 0, 570, 490, 571, 572, + 389, 390, 391, 392, 349, 597, 314, 493, 415, 0, + 557, 0, 0, 0, 0, 0, 0, 0, 0, 562, + 563, 560, 663, 0, 620, 621, 0, 0, 487, 488, + 344, 351, 506, 353, 313, 404, 346, 472, 361, 0, + 499, 564, 500, 623, 626, 624, 625, 396, 356, 358, + 431, 362, 372, 419, 471, 402, 424, 311, 462, 433, + 377, 550, 577, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 280, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 605, + 604, 603, 602, 601, 600, 599, 598, 0, 0, 547, + 448, 323, 285, 319, 320, 327, 652, 649, 453, 653, + 0, 293, 527, 370, 0, 414, 343, 592, 593, 0, + 644, 241, 242, 243, 244, 245, 246, 247, 248, 286, + 249, 250, 251, 252, 253, 254, 255, 258, 259, 260, + 261, 262, 263, 264, 265, 595, 256, 257, 266, 267, + 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, + 278, 279, 0, 0, 0, 287, 288, 289, 290, 0, + 0, 281, 282, 283, 284, 0, 0, 0, 478, 479, + 480, 502, 0, 464, 526, 650, 0, 0, 0, 0, + 0, 0, 0, 576, 588, 622, 0, 632, 633, 635, + 637, 636, 639, 438, 439, 0, 641, 642, 643, 640, + 374, 425, 444, 432, 0, 656, 517, 518, 657, 628, + 401, 0, 0, 532, 565, 554, 638, 520, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 336, 0, + 0, 369, 569, 551, 561, 552, 537, 538, 539, 546, + 348, 540, 541, 542, 512, 543, 513, 544, 545, 0, + 568, 519, 434, 385, 586, 585, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 228, 0, 0, 3196, + 3198, 0, 0, 309, 229, 514, 634, 516, 515, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 312, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 299, 441, 460, 310, 429, 473, 315, 437, 452, - 305, 400, 426, 0, 0, 301, 458, 436, 382, 359, - 360, 300, 0, 420, 334, 350, 331, 398, 0, 457, - 485, 330, 476, 0, 468, 303, 0, 467, 397, 454, - 459, 383, 376, 0, 302, 456, 381, 375, 363, 340, - 501, 364, 365, 354, 409, 373, 410, 355, 387, 386, - 388, 0, 0, 0, 0, 0, 496, 497, 0, 0, - 645, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 627, 0, 0, 631, 0, 470, 0, 0, - 0, 0, 0, 0, 440, 0, 0, 366, 0, 0, - 0, 486, 0, 423, 403, 659, 0, 0, 421, 371, - 455, 411, 461, 442, 469, 417, 412, 294, 443, 333, - 384, 306, 308, 328, 335, 337, 341, 342, 393, 394, - 406, 428, 445, 446, 447, 332, 316, 422, 317, 352, - 318, 295, 324, 322, 325, 430, 326, 297, 407, 451, - 0, 347, 418, 379, 298, 378, 408, 450, 449, 307, - 477, 483, 484, 573, 0, 489, 660, 661, 662, 498, - 0, 413, 503, 504, 505, 507, 508, 509, 510, 574, - 591, 558, 528, 491, 582, 525, 529, 530, 357, 594, - 0, 0, 0, 482, 367, 368, 0, 339, 338, 380, - 416, 345, 291, 292, 655, 329, 399, 596, 629, 630, - 521, 0, 583, 522, 531, 321, 555, 567, 566, 395, - 481, 0, 578, 581, 511, 654, 0, 575, 590, 658, - 589, 651, 405, 0, 427, 587, 534, 0, 579, 553, - 0, 580, 549, 584, 0, 523, 0, 435, 463, 475, - 492, 495, 524, 609, 610, 611, 296, 494, 613, 614, - 615, 616, 617, 618, 619, 612, 466, 556, 533, 559, - 474, 536, 535, 0, 0, 570, 490, 571, 572, 389, - 390, 391, 392, 349, 597, 314, 493, 415, 0, 557, - 0, 0, 0, 0, 0, 0, 0, 0, 562, 563, - 560, 663, 0, 620, 621, 0, 0, 487, 488, 344, - 351, 506, 353, 313, 404, 346, 472, 361, 0, 499, - 564, 500, 623, 626, 624, 625, 396, 356, 358, 431, - 362, 372, 419, 471, 402, 424, 311, 462, 433, 377, - 550, 577, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 280, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 605, 604, - 603, 602, 601, 600, 599, 598, 0, 0, 547, 448, - 323, 285, 319, 320, 327, 652, 649, 453, 653, 0, - 293, 527, 370, 0, 414, 343, 592, 593, 0, 644, - 241, 242, 243, 244, 245, 246, 247, 248, 286, 249, - 250, 251, 252, 253, 254, 255, 258, 259, 260, 261, - 262, 263, 264, 265, 595, 256, 257, 266, 267, 268, - 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, - 279, 0, 0, 0, 287, 288, 289, 290, 0, 0, - 281, 282, 283, 284, 0, 0, 0, 478, 479, 480, - 502, 0, 464, 526, 650, 0, 0, 0, 0, 0, - 0, 0, 576, 588, 622, 0, 632, 633, 635, 637, - 636, 639, 438, 439, 0, 641, 642, 643, 640, 374, - 425, 444, 432, 0, 656, 517, 518, 657, 628, 401, - 0, 0, 532, 565, 554, 638, 520, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 336, 0, 0, - 369, 569, 551, 561, 552, 537, 538, 539, 546, 348, - 540, 541, 542, 512, 543, 513, 544, 545, 0, 568, - 519, 434, 385, 586, 585, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 228, 0, 0, 3210, 3212, - 0, 0, 309, 229, 514, 634, 516, 515, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 312, 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, + 299, 441, 460, 310, 429, 473, 315, 437, 452, 305, + 400, 426, 0, 0, 301, 458, 436, 382, 359, 360, + 300, 0, 420, 334, 350, 331, 398, 0, 457, 485, + 330, 476, 0, 468, 303, 0, 467, 397, 454, 459, + 383, 376, 0, 302, 456, 381, 375, 363, 340, 501, + 364, 365, 354, 409, 373, 410, 355, 387, 386, 388, + 0, 0, 0, 0, 0, 496, 497, 0, 0, 645, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 299, - 441, 460, 310, 429, 473, 315, 437, 452, 305, 400, - 426, 0, 0, 301, 458, 436, 382, 359, 360, 300, - 0, 420, 334, 350, 331, 398, 0, 457, 485, 330, - 476, 0, 468, 303, 0, 467, 397, 454, 459, 383, - 376, 0, 302, 456, 381, 375, 363, 340, 501, 364, - 365, 354, 409, 373, 410, 355, 387, 386, 388, 0, - 0, 0, 0, 0, 496, 497, 0, 0, 645, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 627, 0, 0, 631, 0, 470, 0, 0, 0, 0, - 0, 0, 440, 0, 0, 366, 0, 0, 0, 486, - 0, 423, 403, 659, 0, 0, 421, 371, 455, 411, - 461, 442, 469, 417, 412, 294, 443, 333, 384, 306, - 308, 328, 335, 337, 341, 342, 393, 394, 406, 428, - 445, 446, 447, 332, 316, 422, 317, 352, 318, 295, - 324, 322, 325, 430, 326, 297, 407, 451, 0, 347, - 418, 379, 298, 378, 408, 450, 449, 307, 477, 483, - 484, 573, 0, 489, 660, 661, 662, 498, 0, 413, - 503, 504, 505, 507, 508, 509, 510, 574, 591, 558, - 528, 491, 582, 525, 529, 530, 357, 594, 0, 0, - 0, 482, 367, 368, 0, 339, 338, 380, 416, 345, - 291, 292, 655, 329, 399, 596, 629, 630, 521, 0, - 583, 522, 531, 321, 555, 567, 566, 395, 481, 0, - 578, 581, 511, 654, 0, 575, 590, 658, 589, 651, - 405, 0, 427, 587, 534, 0, 579, 553, 0, 580, - 549, 584, 0, 523, 0, 435, 463, 475, 492, 495, - 524, 609, 610, 611, 296, 494, 613, 614, 615, 616, - 617, 618, 619, 612, 466, 556, 533, 559, 474, 536, - 535, 0, 0, 570, 490, 571, 572, 389, 390, 391, - 392, 349, 597, 314, 493, 415, 0, 557, 0, 0, - 0, 0, 0, 0, 0, 0, 562, 563, 560, 663, - 0, 620, 621, 0, 0, 487, 488, 344, 351, 506, - 353, 313, 404, 346, 472, 361, 0, 499, 564, 500, - 623, 626, 624, 625, 396, 356, 358, 431, 362, 372, - 419, 471, 402, 424, 311, 462, 433, 377, 550, 577, + 0, 627, 0, 0, 631, 0, 470, 0, 0, 0, + 0, 0, 0, 440, 0, 0, 366, 0, 0, 0, + 486, 0, 423, 403, 659, 0, 0, 421, 371, 455, + 411, 461, 442, 469, 417, 412, 294, 443, 333, 384, + 306, 308, 328, 335, 337, 341, 342, 393, 394, 406, + 428, 445, 446, 447, 332, 316, 422, 317, 352, 318, + 295, 324, 322, 325, 430, 326, 297, 407, 451, 0, + 347, 418, 379, 298, 378, 408, 450, 449, 307, 477, + 483, 484, 573, 0, 489, 660, 661, 662, 498, 0, + 413, 503, 504, 505, 507, 508, 509, 510, 574, 591, + 558, 528, 491, 582, 525, 529, 530, 357, 594, 0, + 0, 0, 482, 367, 368, 0, 339, 338, 380, 416, + 345, 291, 292, 655, 329, 399, 596, 629, 630, 521, + 0, 583, 522, 531, 321, 555, 567, 566, 395, 481, + 0, 578, 581, 511, 654, 0, 575, 590, 658, 589, + 651, 405, 0, 427, 587, 534, 0, 579, 553, 0, + 580, 549, 584, 0, 523, 0, 435, 463, 475, 492, + 495, 524, 609, 610, 611, 296, 494, 613, 614, 615, + 616, 617, 618, 619, 612, 466, 556, 533, 559, 474, + 536, 535, 0, 0, 570, 490, 571, 572, 389, 390, + 391, 392, 349, 597, 314, 493, 415, 0, 557, 0, + 0, 0, 0, 0, 0, 0, 0, 562, 563, 560, + 663, 0, 620, 621, 0, 0, 487, 488, 344, 351, + 506, 353, 313, 404, 346, 472, 361, 0, 499, 564, + 500, 623, 626, 624, 625, 396, 356, 358, 431, 362, + 372, 419, 471, 402, 424, 311, 462, 433, 377, 550, + 577, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 280, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 605, 604, 603, + 602, 601, 600, 599, 598, 0, 0, 547, 448, 323, + 285, 319, 320, 327, 652, 649, 453, 653, 0, 293, + 527, 370, 0, 414, 343, 592, 593, 0, 644, 241, + 242, 243, 244, 245, 246, 247, 248, 286, 249, 250, + 251, 252, 253, 254, 255, 258, 259, 260, 261, 262, + 263, 264, 265, 595, 256, 257, 266, 267, 268, 269, + 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, + 0, 0, 0, 287, 288, 289, 290, 0, 0, 281, + 282, 283, 284, 0, 0, 0, 478, 479, 480, 502, + 0, 464, 526, 650, 0, 0, 0, 0, 0, 0, + 0, 576, 588, 622, 0, 632, 633, 635, 637, 636, + 639, 438, 439, 0, 641, 642, 643, 640, 374, 425, + 444, 432, 0, 656, 517, 518, 657, 628, 401, 0, + 0, 532, 565, 554, 638, 520, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 336, 2550, 0, 369, + 569, 551, 561, 552, 537, 538, 539, 546, 348, 540, + 541, 542, 512, 543, 513, 544, 545, 0, 568, 519, + 434, 385, 586, 585, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 280, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 605, 604, 603, 602, - 601, 600, 599, 598, 0, 0, 547, 448, 323, 285, - 319, 320, 327, 652, 649, 453, 653, 0, 293, 527, - 370, 0, 414, 343, 592, 593, 0, 644, 241, 242, - 243, 244, 245, 246, 247, 248, 286, 249, 250, 251, - 252, 253, 254, 255, 258, 259, 260, 261, 262, 263, - 264, 265, 595, 256, 257, 266, 267, 268, 269, 270, - 271, 272, 273, 274, 275, 276, 277, 278, 279, 0, - 0, 0, 287, 288, 289, 290, 0, 0, 281, 282, - 283, 284, 0, 0, 0, 478, 479, 480, 502, 0, - 464, 526, 650, 0, 0, 0, 0, 0, 0, 0, - 576, 588, 622, 0, 632, 633, 635, 637, 636, 639, - 438, 439, 0, 641, 642, 643, 640, 374, 425, 444, - 432, 0, 656, 517, 518, 657, 628, 401, 0, 0, - 532, 565, 554, 638, 520, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 336, 2562, 0, 369, 569, - 551, 561, 552, 537, 538, 539, 546, 348, 540, 541, - 542, 512, 543, 513, 544, 545, 0, 568, 519, 434, - 385, 586, 585, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 228, 0, 0, 1554, 0, 0, + 0, 309, 229, 514, 634, 516, 515, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 312, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 228, 0, 0, 1560, 0, 0, 0, - 309, 229, 514, 634, 516, 515, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 312, 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, 299, 441, + 460, 310, 429, 473, 315, 437, 452, 305, 400, 426, + 0, 0, 301, 458, 436, 382, 359, 360, 300, 0, + 420, 334, 350, 331, 398, 0, 457, 485, 330, 476, + 0, 468, 303, 0, 467, 397, 454, 459, 383, 376, + 0, 302, 456, 381, 375, 363, 340, 501, 364, 365, + 354, 409, 373, 410, 355, 387, 386, 388, 0, 0, + 0, 0, 0, 496, 497, 0, 0, 645, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 627, + 0, 0, 631, 0, 470, 0, 0, 0, 0, 0, + 0, 440, 0, 0, 366, 0, 0, 0, 486, 0, + 423, 403, 659, 0, 0, 421, 371, 455, 411, 461, + 442, 469, 417, 412, 294, 443, 333, 384, 306, 308, + 328, 335, 337, 341, 342, 393, 394, 406, 428, 445, + 446, 447, 332, 316, 422, 317, 352, 318, 295, 324, + 322, 325, 430, 326, 297, 407, 451, 0, 347, 418, + 379, 298, 378, 408, 450, 449, 307, 477, 483, 484, + 573, 0, 489, 660, 661, 662, 498, 0, 413, 503, + 504, 505, 507, 508, 509, 510, 574, 591, 558, 528, + 491, 582, 525, 529, 530, 357, 594, 0, 0, 0, + 482, 367, 368, 0, 339, 338, 380, 416, 345, 291, + 292, 655, 329, 399, 596, 629, 630, 521, 0, 583, + 522, 531, 321, 555, 567, 566, 395, 481, 0, 578, + 581, 511, 654, 0, 575, 590, 658, 589, 651, 405, + 0, 427, 587, 534, 0, 579, 553, 0, 580, 549, + 584, 0, 523, 0, 435, 463, 475, 492, 495, 524, + 609, 610, 611, 296, 494, 613, 614, 615, 616, 617, + 618, 619, 612, 466, 556, 533, 559, 474, 536, 535, + 0, 0, 570, 490, 571, 572, 389, 390, 391, 392, + 349, 597, 314, 493, 415, 0, 557, 0, 0, 0, + 0, 0, 0, 0, 0, 562, 563, 560, 663, 0, + 620, 621, 0, 0, 487, 488, 344, 351, 506, 353, + 313, 404, 346, 472, 361, 0, 499, 564, 500, 623, + 626, 624, 625, 396, 356, 358, 431, 362, 372, 419, + 471, 402, 424, 311, 462, 433, 377, 550, 577, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 299, 441, 460, - 310, 429, 473, 315, 437, 452, 305, 400, 426, 0, - 0, 301, 458, 436, 382, 359, 360, 300, 0, 420, - 334, 350, 331, 398, 0, 457, 485, 330, 476, 0, - 468, 303, 0, 467, 397, 454, 459, 383, 376, 0, - 302, 456, 381, 375, 363, 340, 501, 364, 365, 354, - 409, 373, 410, 355, 387, 386, 388, 0, 0, 0, - 0, 0, 496, 497, 0, 0, 645, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 627, 0, - 0, 631, 0, 470, 0, 0, 0, 0, 0, 0, - 440, 0, 0, 366, 0, 0, 0, 486, 0, 423, - 403, 659, 0, 0, 421, 371, 455, 411, 461, 442, - 469, 417, 412, 294, 443, 333, 384, 306, 308, 328, - 335, 337, 341, 342, 393, 394, 406, 428, 445, 446, - 447, 332, 316, 422, 317, 352, 318, 295, 324, 322, - 325, 430, 326, 297, 407, 451, 0, 347, 418, 379, - 298, 378, 408, 450, 449, 307, 477, 483, 484, 573, - 0, 489, 660, 661, 662, 498, 0, 413, 503, 504, - 505, 507, 508, 509, 510, 574, 591, 558, 528, 491, - 582, 525, 529, 530, 357, 594, 0, 0, 0, 482, - 367, 368, 0, 339, 338, 380, 416, 345, 291, 292, - 655, 329, 399, 596, 629, 630, 521, 0, 583, 522, - 531, 321, 555, 567, 566, 395, 481, 0, 578, 581, - 511, 654, 0, 575, 590, 658, 589, 651, 405, 0, - 427, 587, 534, 0, 579, 553, 0, 580, 549, 584, - 0, 523, 0, 435, 463, 475, 492, 495, 524, 609, - 610, 611, 296, 494, 613, 614, 615, 616, 617, 618, - 619, 612, 466, 556, 533, 559, 474, 536, 535, 0, - 0, 570, 490, 571, 572, 389, 390, 391, 392, 349, - 597, 314, 493, 415, 0, 557, 0, 0, 0, 0, - 0, 0, 0, 0, 562, 563, 560, 663, 0, 620, - 621, 0, 0, 487, 488, 344, 351, 506, 353, 313, - 404, 346, 472, 361, 0, 499, 564, 500, 623, 626, - 624, 625, 396, 356, 358, 431, 362, 372, 419, 471, - 402, 424, 311, 462, 433, 377, 550, 577, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 280, + 280, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 605, 604, 603, 602, 601, + 600, 599, 598, 0, 0, 547, 448, 323, 285, 319, + 320, 327, 652, 649, 453, 653, 0, 293, 527, 370, + 0, 414, 343, 592, 593, 0, 644, 241, 242, 243, + 244, 245, 246, 247, 248, 286, 249, 250, 251, 252, + 253, 254, 255, 258, 259, 260, 261, 262, 263, 264, + 265, 595, 256, 257, 266, 267, 268, 269, 270, 271, + 272, 273, 274, 275, 276, 277, 278, 279, 0, 0, + 0, 287, 288, 289, 290, 0, 0, 281, 282, 283, + 284, 0, 0, 0, 478, 479, 480, 502, 0, 464, + 526, 650, 0, 0, 0, 0, 0, 0, 0, 576, + 588, 622, 0, 632, 633, 635, 637, 636, 639, 438, + 439, 0, 641, 642, 643, 640, 374, 425, 444, 432, + 0, 656, 517, 518, 657, 628, 401, 0, 0, 532, + 565, 554, 638, 520, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 670, 336, 0, 0, 369, 569, 551, + 561, 552, 537, 538, 539, 546, 348, 540, 541, 542, + 512, 543, 513, 544, 545, 0, 568, 519, 434, 385, + 586, 585, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 605, 604, 603, 602, 601, 600, - 599, 598, 0, 0, 547, 448, 323, 285, 319, 320, - 327, 652, 649, 453, 653, 0, 293, 527, 370, 0, - 414, 343, 592, 593, 0, 644, 241, 242, 243, 244, - 245, 246, 247, 248, 286, 249, 250, 251, 252, 253, - 254, 255, 258, 259, 260, 261, 262, 263, 264, 265, - 595, 256, 257, 266, 267, 268, 269, 270, 271, 272, - 273, 274, 275, 276, 277, 278, 279, 0, 0, 0, - 287, 288, 289, 290, 0, 0, 281, 282, 283, 284, - 0, 0, 0, 478, 479, 480, 502, 0, 464, 526, - 650, 0, 0, 0, 0, 0, 0, 0, 576, 588, - 622, 0, 632, 633, 635, 637, 636, 639, 438, 439, - 0, 641, 642, 643, 640, 374, 425, 444, 432, 0, - 656, 517, 518, 657, 628, 401, 0, 0, 532, 565, - 554, 638, 520, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 671, 336, 0, 0, 369, 569, 551, 561, - 552, 537, 538, 539, 546, 348, 540, 541, 542, 512, - 543, 513, 544, 545, 0, 568, 519, 434, 385, 586, - 585, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 228, 0, 0, 0, 0, 0, 0, 309, + 229, 514, 634, 516, 515, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 312, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 228, 0, 0, 0, 0, 0, 0, 309, 229, - 514, 634, 516, 515, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 312, 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, 299, 441, 460, 310, + 429, 473, 315, 437, 452, 305, 400, 426, 0, 0, + 301, 458, 436, 382, 359, 360, 300, 0, 420, 334, + 350, 331, 398, 0, 457, 485, 330, 476, 0, 468, + 303, 0, 467, 397, 454, 459, 383, 376, 0, 302, + 456, 381, 375, 363, 340, 501, 364, 365, 354, 409, + 373, 410, 355, 387, 386, 388, 0, 0, 0, 0, + 0, 496, 497, 0, 0, 645, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 627, 0, 0, + 631, 0, 470, 0, 669, 0, 0, 0, 0, 440, + 0, 0, 366, 0, 0, 0, 486, 0, 423, 403, + 659, 0, 0, 421, 371, 455, 411, 461, 442, 469, + 417, 412, 294, 443, 333, 384, 306, 308, 328, 335, + 337, 341, 342, 393, 394, 406, 428, 445, 446, 447, + 332, 316, 422, 317, 352, 318, 295, 324, 322, 325, + 430, 326, 297, 407, 451, 0, 347, 418, 379, 298, + 378, 408, 450, 449, 307, 477, 483, 484, 573, 0, + 489, 660, 661, 662, 498, 0, 413, 503, 504, 505, + 507, 508, 509, 510, 574, 591, 558, 528, 491, 582, + 525, 529, 530, 357, 594, 0, 0, 0, 482, 367, + 368, 0, 339, 338, 380, 416, 345, 291, 292, 655, + 329, 399, 596, 629, 630, 521, 0, 583, 522, 531, + 321, 555, 567, 566, 395, 481, 0, 578, 581, 511, + 654, 0, 575, 590, 658, 589, 651, 405, 0, 427, + 587, 534, 0, 579, 553, 0, 580, 549, 584, 0, + 523, 0, 435, 463, 475, 492, 495, 524, 609, 610, + 611, 296, 494, 613, 614, 615, 616, 617, 618, 619, + 612, 466, 556, 533, 559, 474, 536, 535, 0, 0, + 570, 490, 571, 572, 389, 390, 391, 392, 349, 597, + 314, 493, 415, 0, 557, 0, 0, 0, 0, 0, + 0, 0, 0, 562, 563, 560, 663, 0, 620, 621, + 0, 0, 487, 488, 344, 351, 506, 353, 313, 404, + 346, 472, 361, 0, 499, 564, 500, 623, 626, 624, + 625, 396, 356, 358, 431, 362, 372, 419, 471, 402, + 424, 311, 462, 433, 377, 550, 577, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 280, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 299, 441, 460, 310, 429, - 473, 315, 437, 452, 305, 400, 426, 0, 0, 301, - 458, 436, 382, 359, 360, 300, 0, 420, 334, 350, - 331, 398, 0, 457, 485, 330, 476, 0, 468, 303, - 0, 467, 397, 454, 459, 383, 376, 0, 302, 456, - 381, 375, 363, 340, 501, 364, 365, 354, 409, 373, - 410, 355, 387, 386, 388, 0, 0, 0, 0, 0, - 496, 497, 0, 0, 645, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 627, 0, 0, 631, - 0, 470, 0, 0, 0, 0, 0, 0, 440, 0, - 0, 366, 0, 0, 0, 486, 0, 423, 403, 659, - 0, 0, 421, 371, 455, 411, 461, 442, 469, 417, - 412, 294, 443, 333, 384, 306, 308, 328, 335, 337, - 341, 342, 393, 394, 406, 428, 445, 446, 447, 332, - 316, 422, 317, 352, 318, 295, 324, 322, 325, 430, - 326, 297, 407, 451, 0, 347, 418, 379, 298, 378, - 408, 450, 449, 307, 477, 483, 484, 573, 0, 489, - 660, 661, 662, 498, 0, 413, 503, 504, 505, 507, - 508, 509, 510, 574, 591, 558, 528, 491, 582, 525, - 529, 530, 357, 594, 0, 0, 0, 482, 367, 368, - 0, 339, 338, 380, 416, 345, 291, 292, 655, 329, - 399, 596, 629, 630, 521, 0, 583, 522, 531, 321, - 555, 567, 566, 395, 481, 0, 578, 581, 511, 654, - 0, 575, 590, 658, 589, 651, 405, 0, 427, 587, - 534, 0, 579, 553, 0, 580, 549, 584, 0, 523, - 0, 435, 463, 475, 492, 495, 524, 609, 610, 611, - 296, 494, 613, 614, 615, 616, 617, 618, 619, 612, - 466, 556, 533, 559, 474, 536, 535, 0, 0, 570, - 490, 571, 572, 389, 390, 391, 392, 349, 597, 314, - 493, 415, 0, 557, 0, 0, 0, 0, 0, 0, - 0, 0, 562, 563, 560, 663, 0, 620, 621, 0, - 0, 487, 488, 344, 351, 506, 353, 313, 404, 346, - 472, 361, 0, 499, 564, 500, 623, 626, 624, 625, - 396, 356, 358, 431, 362, 372, 419, 471, 402, 424, - 311, 462, 433, 377, 550, 577, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 280, 0, 0, + 0, 0, 0, 605, 604, 603, 602, 601, 600, 599, + 598, 0, 0, 547, 448, 323, 285, 319, 320, 327, + 652, 649, 453, 653, 0, 293, 527, 370, 0, 414, + 343, 592, 593, 0, 644, 241, 242, 243, 244, 245, + 246, 247, 248, 286, 249, 250, 251, 252, 253, 254, + 255, 258, 259, 260, 261, 262, 263, 264, 265, 595, + 256, 257, 266, 267, 268, 269, 270, 271, 272, 273, + 274, 275, 276, 277, 278, 279, 0, 0, 0, 287, + 288, 289, 290, 0, 0, 281, 282, 283, 284, 0, + 0, 0, 478, 479, 480, 502, 0, 464, 526, 650, + 0, 0, 0, 0, 0, 0, 0, 576, 588, 622, + 0, 632, 633, 635, 637, 636, 639, 438, 439, 0, + 641, 642, 643, 640, 374, 425, 444, 432, 0, 656, + 517, 518, 657, 628, 401, 0, 0, 532, 565, 554, + 638, 520, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 336, 0, 0, 369, 569, 551, 561, 552, + 537, 538, 539, 546, 348, 540, 541, 542, 512, 543, + 513, 544, 545, 0, 568, 519, 434, 385, 586, 585, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 605, 604, 603, 602, 601, 600, 599, 598, - 0, 0, 547, 448, 323, 285, 319, 320, 327, 652, - 649, 453, 653, 0, 293, 527, 370, 0, 414, 343, - 592, 593, 0, 644, 241, 242, 243, 244, 245, 246, - 247, 248, 286, 249, 250, 251, 252, 253, 254, 255, - 258, 259, 260, 261, 262, 263, 264, 265, 595, 256, - 257, 266, 267, 268, 269, 270, 271, 272, 273, 274, - 275, 276, 277, 278, 279, 0, 0, 0, 287, 288, - 289, 290, 0, 0, 281, 282, 283, 284, 0, 0, - 0, 478, 479, 480, 502, 0, 464, 526, 650, 0, - 0, 0, 0, 0, 0, 0, 576, 588, 622, 0, - 632, 633, 635, 637, 636, 639, 438, 439, 675, 641, - 642, 643, 640, 374, 425, 444, 432, 0, 656, 517, - 518, 657, 628, 401, 0, 0, 532, 565, 554, 638, - 520, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 336, 0, 0, 369, 569, 551, 561, 552, 537, - 538, 539, 546, 348, 540, 541, 542, 512, 543, 513, - 544, 545, 0, 568, 519, 434, 385, 586, 585, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 228, - 855, 0, 0, 0, 0, 0, 309, 229, 514, 634, - 516, 515, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 312, 0, 0, 0, 0, 0, 0, 0, 0, + 228, 853, 0, 0, 0, 0, 0, 309, 229, 514, + 634, 516, 515, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 312, 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, 0, 0, 0, 0, 0, - 0, 0, 0, 299, 441, 460, 310, 429, 473, 315, - 437, 452, 305, 400, 426, 0, 0, 301, 458, 436, - 382, 359, 360, 300, 0, 420, 334, 350, 331, 398, - 0, 457, 485, 330, 476, 0, 468, 303, 0, 467, - 397, 454, 459, 383, 376, 0, 302, 456, 381, 375, - 363, 340, 501, 364, 365, 354, 409, 373, 410, 355, - 387, 386, 388, 0, 0, 0, 0, 0, 496, 497, - 0, 0, 645, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 627, 0, 0, 631, 0, 470, - 0, 0, 0, 0, 0, 0, 440, 0, 0, 366, - 0, 0, 0, 486, 0, 423, 403, 659, 0, 0, - 421, 371, 455, 411, 461, 442, 469, 417, 412, 294, - 443, 333, 384, 306, 308, 328, 335, 337, 341, 342, - 393, 394, 406, 428, 445, 446, 447, 332, 316, 422, - 317, 352, 318, 295, 324, 322, 325, 430, 326, 297, - 407, 451, 0, 347, 418, 379, 298, 378, 408, 450, - 449, 307, 477, 483, 484, 573, 0, 489, 660, 661, - 662, 498, 0, 413, 503, 504, 505, 507, 508, 509, - 510, 574, 591, 558, 528, 491, 582, 525, 529, 530, - 357, 594, 0, 0, 0, 482, 367, 368, 0, 339, - 338, 380, 416, 345, 291, 292, 655, 329, 399, 596, - 629, 630, 521, 0, 583, 522, 531, 321, 555, 567, - 566, 395, 481, 0, 578, 581, 511, 654, 0, 575, - 590, 658, 589, 651, 405, 0, 427, 587, 534, 0, - 579, 553, 0, 580, 549, 584, 0, 523, 0, 435, - 463, 475, 492, 495, 524, 609, 610, 611, 296, 494, - 613, 614, 615, 616, 617, 618, 619, 612, 466, 556, - 533, 559, 474, 536, 535, 0, 0, 570, 490, 571, - 572, 389, 390, 391, 392, 349, 597, 314, 493, 415, - 0, 557, 0, 0, 0, 0, 0, 0, 0, 0, - 562, 563, 560, 663, 0, 620, 621, 0, 0, 487, - 488, 344, 351, 506, 353, 313, 404, 346, 472, 361, - 0, 499, 564, 500, 623, 626, 624, 625, 396, 356, - 358, 431, 362, 372, 419, 471, 402, 424, 311, 462, - 433, 377, 550, 577, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 280, 0, 0, 0, 0, + 0, 0, 0, 0, 299, 441, 460, 310, 429, 473, + 315, 437, 452, 305, 400, 426, 0, 0, 301, 458, + 436, 382, 359, 360, 300, 0, 420, 334, 350, 331, + 398, 0, 457, 485, 330, 476, 0, 468, 303, 0, + 467, 397, 454, 459, 383, 376, 0, 302, 456, 381, + 375, 363, 340, 501, 364, 365, 354, 409, 373, 410, + 355, 387, 386, 388, 0, 0, 0, 0, 0, 496, + 497, 0, 0, 645, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 627, 0, 0, 631, 0, + 470, 0, 0, 0, 0, 0, 0, 440, 0, 0, + 366, 0, 0, 0, 486, 0, 423, 403, 659, 0, + 0, 421, 371, 455, 411, 461, 442, 469, 417, 412, + 294, 443, 333, 384, 306, 308, 328, 335, 337, 341, + 342, 393, 394, 406, 428, 445, 446, 447, 332, 316, + 422, 317, 352, 318, 295, 324, 322, 325, 430, 326, + 297, 407, 451, 0, 347, 418, 379, 298, 378, 408, + 450, 449, 307, 477, 483, 484, 573, 0, 489, 660, + 661, 662, 498, 0, 413, 503, 504, 505, 507, 508, + 509, 510, 574, 591, 558, 528, 491, 582, 525, 529, + 530, 357, 594, 0, 0, 0, 482, 367, 368, 0, + 339, 338, 380, 416, 345, 291, 292, 655, 329, 399, + 596, 629, 630, 521, 0, 583, 522, 531, 321, 555, + 567, 566, 395, 481, 0, 578, 581, 511, 654, 0, + 575, 590, 658, 589, 651, 405, 0, 427, 587, 534, + 0, 579, 553, 0, 580, 549, 584, 0, 523, 0, + 435, 463, 475, 492, 495, 524, 609, 610, 611, 296, + 494, 613, 614, 615, 616, 617, 618, 619, 612, 466, + 556, 533, 559, 474, 536, 535, 0, 0, 570, 490, + 571, 572, 389, 390, 391, 392, 349, 597, 314, 493, + 415, 0, 557, 0, 0, 0, 0, 0, 0, 0, + 0, 562, 563, 560, 663, 0, 620, 621, 0, 0, + 487, 488, 344, 351, 506, 353, 313, 404, 346, 472, + 361, 0, 499, 564, 500, 623, 626, 624, 625, 396, + 356, 358, 431, 362, 372, 419, 471, 402, 424, 311, + 462, 433, 377, 550, 577, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 280, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 605, 604, 603, 602, 601, 600, 599, 598, 0, 0, - 547, 448, 323, 285, 319, 320, 327, 652, 649, 453, - 653, 0, 293, 527, 370, 0, 414, 343, 592, 593, - 0, 644, 241, 242, 243, 244, 245, 246, 247, 248, - 286, 249, 250, 251, 252, 253, 254, 255, 258, 259, - 260, 261, 262, 263, 264, 265, 595, 256, 257, 266, - 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, - 277, 278, 279, 0, 0, 0, 287, 288, 289, 290, - 0, 0, 281, 282, 283, 284, 0, 0, 0, 478, - 479, 480, 502, 0, 464, 526, 650, 0, 0, 0, - 0, 0, 0, 0, 576, 588, 622, 0, 632, 633, - 635, 637, 636, 639, 438, 439, 0, 641, 642, 643, - 640, 374, 425, 444, 432, 0, 656, 517, 518, 657, - 628, 401, 0, 0, 532, 565, 554, 638, 520, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 336, - 0, 0, 369, 569, 551, 561, 552, 537, 538, 539, - 546, 348, 540, 541, 542, 512, 543, 513, 544, 545, - 0, 568, 519, 434, 385, 586, 585, 0, 0, 0, + 0, 605, 604, 603, 602, 601, 600, 599, 598, 0, + 0, 547, 448, 323, 285, 319, 320, 327, 652, 649, + 453, 653, 0, 293, 527, 370, 0, 414, 343, 592, + 593, 0, 644, 241, 242, 243, 244, 245, 246, 247, + 248, 286, 249, 250, 251, 252, 253, 254, 255, 258, + 259, 260, 261, 262, 263, 264, 265, 595, 256, 257, + 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, + 276, 277, 278, 279, 0, 0, 0, 287, 288, 289, + 290, 0, 0, 281, 282, 283, 284, 0, 0, 0, + 478, 479, 480, 502, 0, 464, 526, 650, 0, 0, + 0, 0, 0, 0, 0, 576, 588, 622, 0, 632, + 633, 635, 637, 636, 639, 438, 439, 0, 641, 642, + 643, 640, 374, 425, 444, 432, 0, 656, 517, 518, + 657, 628, 401, 0, 0, 532, 565, 554, 638, 520, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 4063, 0, 0, 228, 0, 0, - 0, 0, 0, 0, 309, 229, 514, 634, 516, 515, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 312, + 336, 0, 0, 369, 569, 551, 561, 552, 537, 538, + 539, 546, 348, 540, 541, 542, 512, 543, 513, 544, + 545, 0, 568, 519, 434, 385, 586, 585, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 4043, 0, 0, 228, 0, + 0, 0, 0, 0, 0, 309, 229, 514, 634, 516, + 515, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 312, 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, 0, 0, 0, 0, 0, 0, 0, - 0, 299, 441, 460, 310, 429, 473, 315, 437, 452, - 305, 400, 426, 0, 0, 301, 458, 436, 382, 359, - 360, 300, 0, 420, 334, 350, 331, 398, 0, 457, - 485, 330, 476, 0, 468, 303, 0, 467, 397, 454, - 459, 383, 376, 0, 302, 456, 381, 375, 363, 340, - 501, 364, 365, 354, 409, 373, 410, 355, 387, 386, - 388, 0, 0, 0, 0, 0, 496, 497, 0, 0, - 645, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 627, 0, 0, 631, 0, 470, 0, 0, - 0, 0, 0, 0, 440, 0, 0, 366, 0, 0, - 0, 486, 0, 423, 403, 659, 0, 0, 421, 371, - 455, 411, 461, 442, 469, 417, 412, 294, 443, 333, - 384, 306, 308, 328, 335, 337, 341, 342, 393, 394, - 406, 428, 445, 446, 447, 332, 316, 422, 317, 352, - 318, 295, 324, 322, 325, 430, 326, 297, 407, 451, - 0, 347, 418, 379, 298, 378, 408, 450, 449, 307, - 477, 483, 484, 573, 0, 489, 660, 661, 662, 498, - 0, 413, 503, 504, 505, 507, 508, 509, 510, 574, - 591, 558, 528, 491, 582, 525, 529, 530, 357, 594, - 0, 0, 0, 482, 367, 368, 0, 339, 338, 380, - 416, 345, 291, 292, 655, 329, 399, 596, 629, 630, - 521, 0, 583, 522, 531, 321, 555, 567, 566, 395, - 481, 0, 578, 581, 511, 654, 0, 575, 590, 658, - 589, 651, 405, 0, 427, 587, 534, 0, 579, 553, - 0, 580, 549, 584, 0, 523, 0, 435, 463, 475, - 492, 495, 524, 609, 610, 611, 296, 494, 613, 614, - 615, 616, 617, 618, 619, 612, 466, 556, 533, 559, - 474, 536, 535, 0, 0, 570, 490, 571, 572, 389, - 390, 391, 392, 349, 597, 314, 493, 415, 0, 557, - 0, 0, 0, 0, 0, 0, 0, 0, 562, 563, - 560, 663, 0, 620, 621, 0, 0, 487, 488, 344, - 351, 506, 353, 313, 404, 346, 472, 361, 0, 499, - 564, 500, 623, 626, 624, 625, 396, 356, 358, 431, - 362, 372, 419, 471, 402, 424, 311, 462, 433, 377, - 550, 577, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 280, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 605, 604, - 603, 602, 601, 600, 599, 598, 0, 0, 547, 448, - 323, 285, 319, 320, 327, 652, 649, 453, 653, 0, - 293, 527, 370, 0, 414, 343, 592, 593, 0, 644, - 241, 242, 243, 244, 245, 246, 247, 248, 286, 249, - 250, 251, 252, 253, 254, 255, 258, 259, 260, 261, - 262, 263, 264, 265, 595, 256, 257, 266, 267, 268, - 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, - 279, 0, 0, 0, 287, 288, 289, 290, 0, 0, - 281, 282, 283, 284, 0, 0, 0, 478, 479, 480, - 502, 0, 464, 526, 650, 0, 0, 0, 0, 0, - 0, 0, 576, 588, 622, 0, 632, 633, 635, 637, - 636, 639, 438, 439, 0, 641, 642, 643, 640, 374, - 425, 444, 432, 0, 656, 517, 518, 657, 628, 401, - 0, 0, 532, 565, 554, 638, 520, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 336, 0, 0, - 369, 569, 551, 561, 552, 537, 538, 539, 546, 348, - 540, 541, 542, 512, 543, 513, 544, 545, 0, 568, - 519, 434, 385, 586, 585, 0, 0, 0, 0, 0, + 0, 0, 299, 441, 460, 310, 429, 473, 315, 437, + 452, 305, 400, 426, 0, 0, 301, 458, 436, 382, + 359, 360, 300, 0, 420, 334, 350, 331, 398, 0, + 457, 485, 330, 476, 0, 468, 303, 0, 467, 397, + 454, 459, 383, 376, 0, 302, 456, 381, 375, 363, + 340, 501, 364, 365, 354, 409, 373, 410, 355, 387, + 386, 388, 0, 0, 0, 0, 0, 496, 497, 0, + 0, 645, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 627, 0, 0, 631, 0, 470, 0, + 0, 0, 0, 0, 0, 440, 0, 0, 366, 0, + 0, 0, 486, 0, 423, 403, 659, 0, 0, 421, + 371, 455, 411, 461, 442, 469, 417, 412, 294, 443, + 333, 384, 306, 308, 328, 335, 337, 341, 342, 393, + 394, 406, 428, 445, 446, 447, 332, 316, 422, 317, + 352, 318, 295, 324, 322, 325, 430, 326, 297, 407, + 451, 0, 347, 418, 379, 298, 378, 408, 450, 449, + 307, 477, 483, 484, 573, 0, 489, 660, 661, 662, + 498, 0, 413, 503, 504, 505, 507, 508, 509, 510, + 574, 591, 558, 528, 491, 582, 525, 529, 530, 357, + 594, 0, 0, 0, 482, 367, 368, 0, 339, 338, + 380, 416, 345, 291, 292, 655, 329, 399, 596, 629, + 630, 521, 0, 583, 522, 531, 321, 555, 567, 566, + 395, 481, 0, 578, 581, 511, 654, 0, 575, 590, + 658, 589, 651, 405, 0, 427, 587, 534, 0, 579, + 553, 0, 580, 549, 584, 0, 523, 0, 435, 463, + 475, 492, 495, 524, 609, 610, 611, 296, 494, 613, + 614, 615, 616, 617, 618, 619, 612, 466, 556, 533, + 559, 474, 536, 535, 0, 0, 570, 490, 571, 572, + 389, 390, 391, 392, 349, 597, 314, 493, 415, 0, + 557, 0, 0, 0, 0, 0, 0, 0, 0, 562, + 563, 560, 663, 0, 620, 621, 0, 0, 487, 488, + 344, 351, 506, 353, 313, 404, 346, 472, 361, 0, + 499, 564, 500, 623, 626, 624, 625, 396, 356, 358, + 431, 362, 372, 419, 471, 402, 424, 311, 462, 433, + 377, 550, 577, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 280, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 605, + 604, 603, 602, 601, 600, 599, 598, 0, 0, 547, + 448, 323, 285, 319, 320, 327, 652, 649, 453, 653, + 0, 293, 527, 370, 0, 414, 343, 592, 593, 0, + 644, 241, 242, 243, 244, 245, 246, 247, 248, 286, + 249, 250, 251, 252, 253, 254, 255, 258, 259, 260, + 261, 262, 263, 264, 265, 595, 256, 257, 266, 267, + 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, + 278, 279, 0, 0, 0, 287, 288, 289, 290, 0, + 0, 281, 282, 283, 284, 0, 0, 0, 478, 479, + 480, 502, 0, 464, 526, 650, 0, 0, 0, 0, + 0, 0, 0, 576, 588, 622, 0, 632, 633, 635, + 637, 636, 639, 438, 439, 0, 641, 642, 643, 640, + 374, 425, 444, 432, 0, 656, 517, 518, 657, 628, + 401, 0, 0, 532, 565, 554, 638, 520, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 336, 0, + 0, 369, 569, 551, 561, 552, 537, 538, 539, 546, + 348, 540, 541, 542, 512, 543, 513, 544, 545, 0, + 568, 519, 434, 385, 586, 585, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 228, 0, 0, 3819, 0, - 0, 0, 309, 229, 514, 634, 516, 515, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 312, 0, 0, + 0, 0, 0, 0, 0, 0, 228, 0, 0, 3802, + 0, 0, 0, 309, 229, 514, 634, 516, 515, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 312, 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, 0, 0, 0, 0, 0, 0, 0, 0, 299, - 441, 460, 310, 429, 473, 315, 437, 452, 305, 400, - 426, 0, 0, 301, 458, 436, 382, 359, 360, 300, - 0, 420, 334, 350, 331, 398, 0, 457, 485, 330, - 476, 0, 468, 303, 0, 467, 397, 454, 459, 383, - 376, 0, 302, 456, 381, 375, 363, 340, 501, 364, - 365, 354, 409, 373, 410, 355, 387, 386, 388, 0, - 0, 0, 0, 0, 496, 497, 0, 0, 645, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 627, 0, 0, 631, 0, 470, 0, 0, 0, 0, - 0, 0, 440, 0, 0, 366, 0, 0, 0, 486, - 0, 423, 403, 659, 0, 0, 421, 371, 455, 411, - 461, 442, 469, 417, 412, 294, 443, 333, 384, 306, - 308, 328, 335, 337, 341, 342, 393, 394, 406, 428, - 445, 446, 447, 332, 316, 422, 317, 352, 318, 295, - 324, 322, 325, 430, 326, 297, 407, 451, 0, 347, - 418, 379, 298, 378, 408, 450, 449, 307, 477, 483, - 484, 573, 0, 489, 660, 661, 662, 498, 0, 413, - 503, 504, 505, 507, 508, 509, 510, 574, 591, 558, - 528, 491, 582, 525, 529, 530, 357, 594, 0, 0, - 0, 482, 367, 368, 0, 339, 338, 380, 416, 345, - 291, 292, 655, 329, 399, 596, 629, 630, 521, 0, - 583, 522, 531, 321, 555, 567, 566, 395, 481, 0, - 578, 581, 511, 654, 0, 575, 590, 658, 589, 651, - 405, 0, 427, 587, 534, 0, 579, 553, 0, 580, - 549, 584, 0, 523, 0, 435, 463, 475, 492, 495, - 524, 609, 610, 611, 296, 494, 613, 614, 615, 616, - 617, 618, 619, 612, 466, 556, 533, 559, 474, 536, - 535, 0, 0, 570, 490, 571, 572, 389, 390, 391, - 392, 349, 597, 314, 493, 415, 0, 557, 0, 0, - 0, 0, 0, 0, 0, 0, 562, 563, 560, 663, - 0, 620, 621, 0, 0, 487, 488, 344, 351, 506, - 353, 313, 404, 346, 472, 361, 0, 499, 564, 500, - 623, 626, 624, 625, 396, 356, 358, 431, 362, 372, - 419, 471, 402, 424, 311, 462, 433, 377, 550, 577, + 299, 441, 460, 310, 429, 473, 315, 437, 452, 305, + 400, 426, 0, 0, 301, 458, 436, 382, 359, 360, + 300, 0, 420, 334, 350, 331, 398, 0, 457, 485, + 330, 476, 0, 468, 303, 0, 467, 397, 454, 459, + 383, 376, 0, 302, 456, 381, 375, 363, 340, 501, + 364, 365, 354, 409, 373, 410, 355, 387, 386, 388, + 0, 0, 0, 0, 0, 496, 497, 0, 0, 645, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 280, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 605, 604, 603, 602, - 601, 600, 599, 598, 0, 0, 547, 448, 323, 285, - 319, 320, 327, 652, 649, 453, 653, 0, 293, 527, - 370, 0, 414, 343, 592, 593, 0, 644, 241, 242, - 243, 244, 245, 246, 247, 248, 286, 249, 250, 251, - 252, 253, 254, 255, 258, 259, 260, 261, 262, 263, - 264, 265, 595, 256, 257, 266, 267, 268, 269, 270, - 271, 272, 273, 274, 275, 276, 277, 278, 279, 0, - 0, 0, 287, 288, 289, 290, 0, 0, 281, 282, - 283, 284, 0, 0, 0, 478, 479, 480, 502, 0, - 464, 526, 650, 0, 0, 0, 0, 0, 0, 0, - 576, 588, 622, 0, 632, 633, 635, 637, 636, 639, - 438, 439, 0, 641, 642, 643, 640, 374, 425, 444, - 432, 0, 656, 517, 518, 657, 628, 401, 0, 0, - 532, 565, 554, 638, 520, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 336, 0, 0, 369, 569, - 551, 561, 552, 537, 538, 539, 546, 348, 540, 541, - 542, 512, 543, 513, 544, 545, 0, 568, 519, 434, - 385, 586, 585, 0, 0, 0, 0, 0, 0, 0, + 0, 627, 0, 0, 631, 0, 470, 0, 0, 0, + 0, 0, 0, 440, 0, 0, 366, 0, 0, 0, + 486, 0, 423, 403, 659, 0, 0, 421, 371, 455, + 411, 461, 442, 469, 417, 412, 294, 443, 333, 384, + 306, 308, 328, 335, 337, 341, 342, 393, 394, 406, + 428, 445, 446, 447, 332, 316, 422, 317, 352, 318, + 295, 324, 322, 325, 430, 326, 297, 407, 451, 0, + 347, 418, 379, 298, 378, 408, 450, 449, 307, 477, + 483, 484, 573, 0, 489, 660, 661, 662, 498, 0, + 413, 503, 504, 505, 507, 508, 509, 510, 574, 591, + 558, 528, 491, 582, 525, 529, 530, 357, 594, 0, + 0, 0, 482, 367, 368, 0, 339, 338, 380, 416, + 345, 291, 292, 655, 329, 399, 596, 629, 630, 521, + 0, 583, 522, 531, 321, 555, 567, 566, 395, 481, + 0, 578, 581, 511, 654, 0, 575, 590, 658, 589, + 651, 405, 0, 427, 587, 534, 0, 579, 553, 0, + 580, 549, 584, 0, 523, 0, 435, 463, 475, 492, + 495, 524, 609, 610, 611, 296, 494, 613, 614, 615, + 616, 617, 618, 619, 612, 466, 556, 533, 559, 474, + 536, 535, 0, 0, 570, 490, 571, 572, 389, 390, + 391, 392, 349, 597, 314, 493, 415, 0, 557, 0, + 0, 0, 0, 0, 0, 0, 0, 562, 563, 560, + 663, 0, 620, 621, 0, 0, 487, 488, 344, 351, + 506, 353, 313, 404, 346, 472, 361, 0, 499, 564, + 500, 623, 626, 624, 625, 396, 356, 358, 431, 362, + 372, 419, 471, 402, 424, 311, 462, 433, 377, 550, + 577, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 280, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 605, 604, 603, + 602, 601, 600, 599, 598, 0, 0, 547, 448, 323, + 285, 319, 320, 327, 652, 649, 453, 653, 0, 293, + 527, 370, 0, 414, 343, 592, 593, 0, 644, 241, + 242, 243, 244, 245, 246, 247, 248, 286, 249, 250, + 251, 252, 253, 254, 255, 258, 259, 260, 261, 262, + 263, 264, 265, 595, 256, 257, 266, 267, 268, 269, + 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, + 0, 0, 0, 287, 288, 289, 290, 0, 0, 281, + 282, 283, 284, 0, 0, 0, 478, 479, 480, 502, + 0, 464, 526, 650, 0, 0, 0, 0, 0, 0, + 0, 576, 588, 622, 0, 632, 633, 635, 637, 636, + 639, 438, 439, 0, 641, 642, 643, 640, 374, 425, + 444, 432, 0, 656, 517, 518, 657, 628, 401, 0, + 0, 532, 565, 554, 638, 520, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 336, 0, 0, 369, + 569, 551, 561, 552, 537, 538, 539, 546, 348, 540, + 541, 542, 512, 543, 513, 544, 545, 0, 568, 519, + 434, 385, 586, 585, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 228, 0, 0, 0, 0, 0, 0, - 309, 229, 514, 634, 516, 515, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 312, 0, 0, 0, 0, + 0, 0, 0, 0, 228, 0, 0, 0, 0, 0, + 0, 309, 229, 514, 634, 516, 515, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 312, 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, 0, - 0, 0, 0, 0, 0, 0, 0, 299, 441, 460, - 310, 429, 473, 315, 437, 452, 305, 400, 426, 0, - 0, 301, 458, 436, 382, 359, 360, 300, 0, 420, - 334, 350, 331, 398, 0, 457, 485, 330, 476, 0, - 468, 303, 0, 467, 397, 454, 459, 383, 376, 0, - 302, 456, 381, 375, 363, 340, 501, 364, 365, 354, - 409, 373, 410, 355, 387, 386, 388, 0, 0, 0, - 0, 0, 496, 497, 0, 0, 645, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 627, 0, - 0, 631, 0, 470, 0, 0, 0, 3955, 0, 0, - 440, 0, 0, 366, 0, 0, 0, 486, 0, 423, - 403, 659, 0, 0, 421, 371, 455, 411, 461, 442, - 469, 417, 412, 294, 443, 333, 384, 306, 308, 328, - 335, 337, 341, 342, 393, 394, 406, 428, 445, 446, - 447, 332, 316, 422, 317, 352, 318, 295, 324, 322, - 325, 430, 326, 297, 407, 451, 0, 347, 418, 379, - 298, 378, 408, 450, 449, 307, 477, 483, 484, 573, - 0, 489, 660, 661, 662, 498, 0, 413, 503, 504, - 505, 507, 508, 509, 510, 574, 591, 558, 528, 491, - 582, 525, 529, 530, 357, 594, 0, 0, 0, 482, - 367, 368, 0, 339, 338, 380, 416, 345, 291, 292, - 655, 329, 399, 596, 629, 630, 521, 0, 583, 522, - 531, 321, 555, 567, 566, 395, 481, 0, 578, 581, - 511, 654, 0, 575, 590, 658, 589, 651, 405, 0, - 427, 587, 534, 0, 579, 553, 0, 580, 549, 584, - 0, 523, 0, 435, 463, 475, 492, 495, 524, 609, - 610, 611, 296, 494, 613, 614, 615, 616, 617, 618, - 619, 612, 466, 556, 533, 559, 474, 536, 535, 0, - 0, 570, 490, 571, 572, 389, 390, 391, 392, 349, - 597, 314, 493, 415, 0, 557, 0, 0, 0, 0, - 0, 0, 0, 0, 562, 563, 560, 663, 0, 620, - 621, 0, 0, 487, 488, 344, 351, 506, 353, 313, - 404, 346, 472, 361, 0, 499, 564, 500, 623, 626, - 624, 625, 396, 356, 358, 431, 362, 372, 419, 471, - 402, 424, 311, 462, 433, 377, 550, 577, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 280, + 0, 0, 0, 0, 0, 0, 0, 0, 299, 441, + 460, 310, 429, 473, 315, 437, 452, 305, 400, 426, + 0, 0, 301, 458, 436, 382, 359, 360, 300, 0, + 420, 334, 350, 331, 398, 0, 457, 485, 330, 476, + 0, 468, 303, 0, 467, 397, 454, 459, 383, 376, + 0, 302, 456, 381, 375, 363, 340, 501, 364, 365, + 354, 409, 373, 410, 355, 387, 386, 388, 0, 0, + 0, 0, 0, 496, 497, 0, 0, 645, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 627, + 0, 0, 631, 0, 470, 0, 0, 0, 3936, 0, + 0, 440, 0, 0, 366, 0, 0, 0, 486, 0, + 423, 403, 659, 0, 0, 421, 371, 455, 411, 461, + 442, 469, 417, 412, 294, 443, 333, 384, 306, 308, + 328, 335, 337, 341, 342, 393, 394, 406, 428, 445, + 446, 447, 332, 316, 422, 317, 352, 318, 295, 324, + 322, 325, 430, 326, 297, 407, 451, 0, 347, 418, + 379, 298, 378, 408, 450, 449, 307, 477, 483, 484, + 573, 0, 489, 660, 661, 662, 498, 0, 413, 503, + 504, 505, 507, 508, 509, 510, 574, 591, 558, 528, + 491, 582, 525, 529, 530, 357, 594, 0, 0, 0, + 482, 367, 368, 0, 339, 338, 380, 416, 345, 291, + 292, 655, 329, 399, 596, 629, 630, 521, 0, 583, + 522, 531, 321, 555, 567, 566, 395, 481, 0, 578, + 581, 511, 654, 0, 575, 590, 658, 589, 651, 405, + 0, 427, 587, 534, 0, 579, 553, 0, 580, 549, + 584, 0, 523, 0, 435, 463, 475, 492, 495, 524, + 609, 610, 611, 296, 494, 613, 614, 615, 616, 617, + 618, 619, 612, 466, 556, 533, 559, 474, 536, 535, + 0, 0, 570, 490, 571, 572, 389, 390, 391, 392, + 349, 597, 314, 493, 415, 0, 557, 0, 0, 0, + 0, 0, 0, 0, 0, 562, 563, 560, 663, 0, + 620, 621, 0, 0, 487, 488, 344, 351, 506, 353, + 313, 404, 346, 472, 361, 0, 499, 564, 500, 623, + 626, 624, 625, 396, 356, 358, 431, 362, 372, 419, + 471, 402, 424, 311, 462, 433, 377, 550, 577, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 605, 604, 603, 602, 601, 600, - 599, 598, 0, 0, 547, 448, 323, 285, 319, 320, - 327, 652, 649, 453, 653, 0, 293, 527, 370, 0, - 414, 343, 592, 593, 0, 644, 241, 242, 243, 244, - 245, 246, 247, 248, 286, 249, 250, 251, 252, 253, - 254, 255, 258, 259, 260, 261, 262, 263, 264, 265, - 595, 256, 257, 266, 267, 268, 269, 270, 271, 272, - 273, 274, 275, 276, 277, 278, 279, 0, 0, 0, - 287, 288, 289, 290, 0, 0, 281, 282, 283, 284, - 0, 0, 0, 478, 479, 480, 502, 0, 464, 526, - 650, 0, 0, 0, 0, 0, 0, 0, 576, 588, - 622, 0, 632, 633, 635, 637, 636, 639, 438, 439, - 0, 641, 642, 643, 640, 374, 425, 444, 432, 0, - 656, 517, 518, 657, 628, 401, 0, 0, 532, 565, - 554, 638, 520, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 336, 0, 0, 369, 569, 551, 561, - 552, 537, 538, 539, 546, 348, 540, 541, 542, 512, - 543, 513, 544, 545, 0, 568, 519, 434, 385, 586, - 585, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1786, 0, - 0, 228, 0, 0, 0, 0, 0, 0, 309, 229, - 514, 634, 516, 515, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 312, 0, 0, 0, 0, 0, 0, + 280, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 605, 604, 603, 602, 601, + 600, 599, 598, 0, 0, 547, 448, 323, 285, 319, + 320, 327, 652, 649, 453, 653, 0, 293, 527, 370, + 0, 414, 343, 592, 593, 0, 644, 241, 242, 243, + 244, 245, 246, 247, 248, 286, 249, 250, 251, 252, + 253, 254, 255, 258, 259, 260, 261, 262, 263, 264, + 265, 595, 256, 257, 266, 267, 268, 269, 270, 271, + 272, 273, 274, 275, 276, 277, 278, 279, 0, 0, + 0, 287, 288, 289, 290, 0, 0, 281, 282, 283, + 284, 0, 0, 0, 478, 479, 480, 502, 0, 464, + 526, 650, 0, 0, 0, 0, 0, 0, 0, 576, + 588, 622, 0, 632, 633, 635, 637, 636, 639, 438, + 439, 0, 641, 642, 643, 640, 374, 425, 444, 432, + 0, 656, 517, 518, 657, 628, 401, 0, 0, 532, + 565, 554, 638, 520, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 336, 0, 0, 369, 569, 551, + 561, 552, 537, 538, 539, 546, 348, 540, 541, 542, + 512, 543, 513, 544, 545, 0, 568, 519, 434, 385, + 586, 585, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1778, + 0, 0, 228, 0, 0, 0, 0, 0, 0, 309, + 229, 514, 634, 516, 515, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 312, 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, 0, 0, 0, - 0, 0, 0, 0, 0, 299, 441, 460, 310, 429, - 473, 315, 437, 452, 305, 400, 426, 0, 0, 301, - 458, 436, 382, 359, 360, 300, 0, 420, 334, 350, - 331, 398, 0, 457, 485, 330, 476, 0, 468, 303, - 0, 467, 397, 454, 459, 383, 376, 0, 302, 456, - 381, 375, 363, 340, 501, 364, 365, 354, 409, 373, - 410, 355, 387, 386, 388, 0, 0, 0, 0, 0, - 496, 497, 0, 0, 645, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 627, 0, 0, 631, - 0, 470, 0, 0, 0, 0, 0, 0, 440, 0, - 0, 366, 0, 0, 0, 486, 0, 423, 403, 659, - 0, 0, 421, 371, 455, 411, 461, 442, 469, 417, - 412, 294, 443, 333, 384, 306, 308, 328, 335, 337, - 341, 342, 393, 394, 406, 428, 445, 446, 447, 332, - 316, 422, 317, 352, 318, 295, 324, 322, 325, 430, - 326, 297, 407, 451, 0, 347, 418, 379, 298, 378, - 408, 450, 449, 307, 477, 483, 484, 573, 0, 489, - 660, 661, 662, 498, 0, 413, 503, 504, 505, 507, - 508, 509, 510, 574, 591, 558, 528, 491, 582, 525, - 529, 530, 357, 594, 0, 0, 0, 482, 367, 368, - 0, 339, 338, 380, 416, 345, 291, 292, 655, 329, - 399, 596, 629, 630, 521, 0, 583, 522, 531, 321, - 555, 567, 566, 395, 481, 0, 578, 581, 511, 654, - 0, 575, 590, 658, 589, 651, 405, 0, 427, 587, - 534, 0, 579, 553, 0, 580, 549, 584, 0, 523, - 0, 435, 463, 475, 492, 495, 524, 609, 610, 611, - 296, 494, 613, 614, 615, 616, 617, 618, 619, 612, - 466, 556, 533, 559, 474, 536, 535, 0, 0, 570, - 490, 571, 572, 389, 390, 391, 392, 349, 597, 314, - 493, 415, 0, 557, 0, 0, 0, 0, 0, 0, - 0, 0, 562, 563, 560, 663, 0, 620, 621, 0, - 0, 487, 488, 344, 351, 506, 353, 313, 404, 346, - 472, 361, 0, 499, 564, 500, 623, 626, 624, 625, - 396, 356, 358, 431, 362, 372, 419, 471, 402, 424, - 311, 462, 433, 377, 550, 577, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 280, 0, 0, + 0, 0, 0, 0, 0, 0, 299, 441, 460, 310, + 429, 473, 315, 437, 452, 305, 400, 426, 0, 0, + 301, 458, 436, 382, 359, 360, 300, 0, 420, 334, + 350, 331, 398, 0, 457, 485, 330, 476, 0, 468, + 303, 0, 467, 397, 454, 459, 383, 376, 0, 302, + 456, 381, 375, 363, 340, 501, 364, 365, 354, 409, + 373, 410, 355, 387, 386, 388, 0, 0, 0, 0, + 0, 496, 497, 0, 0, 645, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 627, 0, 0, + 631, 0, 470, 0, 0, 0, 0, 0, 0, 440, + 0, 0, 366, 0, 0, 0, 486, 0, 423, 403, + 659, 0, 0, 421, 371, 455, 411, 461, 442, 469, + 417, 412, 294, 443, 333, 384, 306, 308, 328, 335, + 337, 341, 342, 393, 394, 406, 428, 445, 446, 447, + 332, 316, 422, 317, 352, 318, 295, 324, 322, 325, + 430, 326, 297, 407, 451, 0, 347, 418, 379, 298, + 378, 408, 450, 449, 307, 477, 483, 484, 573, 0, + 489, 660, 661, 662, 498, 0, 413, 503, 504, 505, + 507, 508, 509, 510, 574, 591, 558, 528, 491, 582, + 525, 529, 530, 357, 594, 0, 0, 0, 482, 367, + 368, 0, 339, 338, 380, 416, 345, 291, 292, 655, + 329, 399, 596, 629, 630, 521, 0, 583, 522, 531, + 321, 555, 567, 566, 395, 481, 0, 578, 581, 511, + 654, 0, 575, 590, 658, 589, 651, 405, 0, 427, + 587, 534, 0, 579, 553, 0, 580, 549, 584, 0, + 523, 0, 435, 463, 475, 492, 495, 524, 609, 610, + 611, 296, 494, 613, 614, 615, 616, 617, 618, 619, + 612, 466, 556, 533, 559, 474, 536, 535, 0, 0, + 570, 490, 571, 572, 389, 390, 391, 392, 349, 597, + 314, 493, 415, 0, 557, 0, 0, 0, 0, 0, + 0, 0, 0, 562, 563, 560, 663, 0, 620, 621, + 0, 0, 487, 488, 344, 351, 506, 353, 313, 404, + 346, 472, 361, 0, 499, 564, 500, 623, 626, 624, + 625, 396, 356, 358, 431, 362, 372, 419, 471, 402, + 424, 311, 462, 433, 377, 550, 577, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 280, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 605, 604, 603, 602, 601, 600, 599, 598, - 0, 0, 547, 448, 323, 285, 319, 320, 327, 652, - 649, 453, 653, 0, 293, 527, 370, 0, 414, 343, - 592, 593, 0, 644, 241, 242, 243, 244, 245, 246, - 247, 248, 286, 249, 250, 251, 252, 253, 254, 255, - 258, 259, 260, 261, 262, 263, 264, 265, 595, 256, - 257, 266, 267, 268, 269, 270, 271, 272, 273, 274, - 275, 276, 277, 278, 279, 0, 0, 0, 287, 288, - 289, 290, 0, 0, 281, 282, 283, 284, 0, 0, - 0, 478, 479, 480, 502, 0, 464, 526, 650, 0, - 0, 0, 0, 0, 0, 0, 576, 588, 622, 0, - 632, 633, 635, 637, 636, 639, 438, 439, 0, 641, - 642, 643, 640, 374, 425, 444, 432, 0, 656, 517, - 518, 657, 628, 401, 0, 0, 532, 565, 554, 638, - 520, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 336, 0, 0, 369, 569, 551, 561, 552, 537, - 538, 539, 546, 348, 540, 541, 542, 512, 543, 513, - 544, 545, 0, 568, 519, 434, 385, 586, 585, 0, + 0, 0, 0, 605, 604, 603, 602, 601, 600, 599, + 598, 0, 0, 547, 448, 323, 285, 319, 320, 327, + 652, 649, 453, 653, 0, 293, 527, 370, 0, 414, + 343, 592, 593, 0, 644, 241, 242, 243, 244, 245, + 246, 247, 248, 286, 249, 250, 251, 252, 253, 254, + 255, 258, 259, 260, 261, 262, 263, 264, 265, 595, + 256, 257, 266, 267, 268, 269, 270, 271, 272, 273, + 274, 275, 276, 277, 278, 279, 0, 0, 0, 287, + 288, 289, 290, 0, 0, 281, 282, 283, 284, 0, + 0, 0, 478, 479, 480, 502, 0, 464, 526, 650, + 0, 0, 0, 0, 0, 0, 0, 576, 588, 622, + 0, 632, 633, 635, 637, 636, 639, 438, 439, 0, + 641, 642, 643, 640, 374, 425, 444, 432, 0, 656, + 517, 518, 657, 628, 401, 0, 0, 532, 565, 554, + 638, 520, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 336, 0, 0, 369, 569, 551, 561, 552, + 537, 538, 539, 546, 348, 540, 541, 542, 512, 543, + 513, 544, 545, 0, 568, 519, 434, 385, 586, 585, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 3835, 0, 228, - 0, 0, 0, 0, 0, 0, 309, 229, 514, 634, - 516, 515, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 312, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 3817, 0, + 228, 0, 0, 0, 0, 0, 0, 309, 229, 514, + 634, 516, 515, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 312, 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, 0, 0, 0, 0, 0, - 0, 0, 0, 299, 441, 460, 310, 429, 473, 315, - 437, 452, 305, 400, 426, 0, 0, 301, 458, 436, - 382, 359, 360, 300, 0, 420, 334, 350, 331, 398, - 0, 457, 485, 330, 476, 0, 468, 303, 0, 467, - 397, 454, 459, 383, 376, 0, 302, 456, 381, 375, - 363, 340, 501, 364, 365, 354, 409, 373, 410, 355, - 387, 386, 388, 0, 0, 0, 0, 0, 496, 497, - 0, 0, 645, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 627, 0, 0, 631, 0, 470, - 0, 0, 0, 0, 0, 0, 440, 0, 0, 366, - 0, 0, 0, 486, 0, 423, 403, 659, 0, 0, - 421, 371, 455, 411, 461, 442, 469, 417, 412, 294, - 443, 333, 384, 306, 308, 328, 335, 337, 341, 342, - 393, 394, 406, 428, 445, 446, 447, 332, 316, 422, - 317, 352, 318, 295, 324, 322, 325, 430, 326, 297, - 407, 451, 0, 347, 418, 379, 298, 378, 408, 450, - 449, 307, 477, 483, 484, 573, 0, 489, 660, 661, - 662, 498, 0, 413, 503, 504, 505, 507, 508, 509, - 510, 574, 591, 558, 528, 491, 582, 525, 529, 530, - 357, 594, 0, 0, 0, 482, 367, 368, 0, 339, - 338, 380, 416, 345, 291, 292, 655, 329, 399, 596, - 629, 630, 521, 0, 583, 522, 531, 321, 555, 567, - 566, 395, 481, 0, 578, 581, 511, 654, 0, 575, - 590, 658, 589, 651, 405, 0, 427, 587, 534, 0, - 579, 553, 0, 580, 549, 584, 0, 523, 0, 435, - 463, 475, 492, 495, 524, 609, 610, 611, 296, 494, - 613, 614, 615, 616, 617, 618, 619, 612, 466, 556, - 533, 559, 474, 536, 535, 0, 0, 570, 490, 571, - 572, 389, 390, 391, 392, 349, 597, 314, 493, 415, - 0, 557, 0, 0, 0, 0, 0, 0, 0, 0, - 562, 563, 560, 663, 0, 620, 621, 0, 0, 487, - 488, 344, 351, 506, 353, 313, 404, 346, 472, 361, - 0, 499, 564, 500, 623, 626, 624, 625, 396, 356, - 358, 431, 362, 372, 419, 471, 402, 424, 311, 462, - 433, 377, 550, 577, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 280, 0, 0, 0, 0, + 0, 0, 0, 0, 299, 441, 460, 310, 429, 473, + 315, 437, 452, 305, 400, 426, 0, 0, 301, 458, + 436, 382, 359, 360, 300, 0, 420, 334, 350, 331, + 398, 0, 457, 485, 330, 476, 0, 468, 303, 0, + 467, 397, 454, 459, 383, 376, 0, 302, 456, 381, + 375, 363, 340, 501, 364, 365, 354, 409, 373, 410, + 355, 387, 386, 388, 0, 0, 0, 0, 0, 496, + 497, 0, 0, 645, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 627, 0, 0, 631, 0, + 470, 0, 0, 0, 0, 0, 0, 440, 0, 0, + 366, 0, 0, 0, 486, 0, 423, 403, 659, 0, + 0, 421, 371, 455, 411, 461, 442, 469, 417, 412, + 294, 443, 333, 384, 306, 308, 328, 335, 337, 341, + 342, 393, 394, 406, 428, 445, 446, 447, 332, 316, + 422, 317, 352, 318, 295, 324, 322, 325, 430, 326, + 297, 407, 451, 0, 347, 418, 379, 298, 378, 408, + 450, 449, 307, 477, 483, 484, 573, 0, 489, 660, + 661, 662, 498, 0, 413, 503, 504, 505, 507, 508, + 509, 510, 574, 591, 558, 528, 491, 582, 525, 529, + 530, 357, 594, 0, 0, 0, 482, 367, 368, 0, + 339, 338, 380, 416, 345, 291, 292, 655, 329, 399, + 596, 629, 630, 521, 0, 583, 522, 531, 321, 555, + 567, 566, 395, 481, 0, 578, 581, 511, 654, 0, + 575, 590, 658, 589, 651, 405, 0, 427, 587, 534, + 0, 579, 553, 0, 580, 549, 584, 0, 523, 0, + 435, 463, 475, 492, 495, 524, 609, 610, 611, 296, + 494, 613, 614, 615, 616, 617, 618, 619, 612, 466, + 556, 533, 559, 474, 536, 535, 0, 0, 570, 490, + 571, 572, 389, 390, 391, 392, 349, 597, 314, 493, + 415, 0, 557, 0, 0, 0, 0, 0, 0, 0, + 0, 562, 563, 560, 663, 0, 620, 621, 0, 0, + 487, 488, 344, 351, 506, 353, 313, 404, 346, 472, + 361, 0, 499, 564, 500, 623, 626, 624, 625, 396, + 356, 358, 431, 362, 372, 419, 471, 402, 424, 311, + 462, 433, 377, 550, 577, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 280, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 605, 604, 603, 602, 601, 600, 599, 598, 0, 0, - 547, 448, 323, 285, 319, 320, 327, 652, 649, 453, - 653, 0, 293, 527, 370, 0, 414, 343, 592, 593, - 0, 644, 241, 242, 243, 244, 245, 246, 247, 248, - 286, 249, 250, 251, 252, 253, 254, 255, 258, 259, - 260, 261, 262, 263, 264, 265, 595, 256, 257, 266, - 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, - 277, 278, 279, 0, 0, 0, 287, 288, 289, 290, - 0, 0, 281, 282, 283, 284, 0, 0, 0, 478, - 479, 480, 502, 0, 464, 526, 650, 0, 0, 0, - 0, 0, 0, 0, 576, 588, 622, 0, 632, 633, - 635, 637, 636, 639, 438, 439, 0, 641, 642, 643, - 640, 374, 425, 444, 432, 0, 656, 517, 518, 657, - 628, 401, 0, 0, 532, 565, 554, 638, 520, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 336, - 0, 0, 369, 569, 551, 561, 552, 537, 538, 539, - 546, 348, 540, 541, 542, 512, 543, 513, 544, 545, - 0, 568, 519, 434, 385, 586, 585, 0, 0, 0, + 0, 605, 604, 603, 602, 601, 600, 599, 598, 0, + 0, 547, 448, 323, 285, 319, 320, 327, 652, 649, + 453, 653, 0, 293, 527, 370, 0, 414, 343, 592, + 593, 0, 644, 241, 242, 243, 244, 245, 246, 247, + 248, 286, 249, 250, 251, 252, 253, 254, 255, 258, + 259, 260, 261, 262, 263, 264, 265, 595, 256, 257, + 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, + 276, 277, 278, 279, 0, 0, 0, 287, 288, 289, + 290, 0, 0, 281, 282, 283, 284, 0, 0, 0, + 478, 479, 480, 502, 0, 464, 526, 650, 0, 0, + 0, 0, 0, 0, 0, 576, 588, 622, 0, 632, + 633, 635, 637, 636, 639, 438, 439, 0, 641, 642, + 643, 640, 374, 425, 444, 432, 0, 656, 517, 518, + 657, 628, 401, 0, 0, 532, 565, 554, 638, 520, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 228, 0, 0, - 0, 0, 0, 0, 309, 229, 514, 634, 516, 515, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 312, + 336, 0, 0, 369, 569, 551, 561, 552, 537, 538, + 539, 546, 348, 540, 541, 542, 512, 543, 513, 544, + 545, 0, 568, 519, 434, 385, 586, 585, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 228, 0, + 0, 0, 0, 0, 0, 309, 229, 514, 634, 516, + 515, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 312, 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, 0, 0, 0, 0, 0, 0, 0, - 0, 299, 441, 460, 310, 429, 473, 315, 437, 452, - 305, 400, 426, 0, 0, 301, 458, 436, 382, 359, - 360, 300, 0, 420, 334, 350, 331, 398, 0, 457, - 485, 330, 476, 0, 468, 303, 0, 467, 397, 454, - 459, 383, 376, 0, 302, 456, 381, 375, 363, 340, - 501, 364, 365, 354, 409, 373, 410, 355, 387, 386, - 388, 0, 0, 0, 0, 0, 496, 497, 0, 0, - 645, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 627, 0, 0, 631, 0, 470, 0, 0, - 0, 3745, 0, 0, 440, 0, 0, 366, 0, 0, - 0, 486, 0, 423, 403, 659, 0, 0, 421, 371, - 455, 411, 461, 442, 469, 417, 412, 294, 443, 333, - 384, 306, 308, 328, 335, 337, 341, 342, 393, 394, - 406, 428, 445, 446, 447, 332, 316, 422, 317, 352, - 318, 295, 324, 322, 325, 430, 326, 297, 407, 451, - 0, 347, 418, 379, 298, 378, 408, 450, 449, 307, - 477, 483, 484, 573, 0, 489, 660, 661, 662, 498, - 0, 413, 503, 504, 505, 507, 508, 509, 510, 574, - 591, 558, 528, 491, 582, 525, 529, 530, 357, 594, - 0, 0, 0, 482, 367, 368, 0, 339, 338, 380, - 416, 345, 291, 292, 655, 329, 399, 596, 629, 630, - 521, 0, 583, 522, 531, 321, 555, 567, 566, 395, - 481, 0, 578, 581, 511, 654, 0, 575, 590, 658, - 589, 651, 405, 0, 427, 587, 534, 0, 579, 553, - 0, 580, 549, 584, 0, 523, 0, 435, 463, 475, - 492, 495, 524, 609, 610, 611, 296, 494, 613, 614, - 615, 616, 617, 618, 619, 612, 466, 556, 533, 559, - 474, 536, 535, 0, 0, 570, 490, 571, 572, 389, - 390, 391, 392, 349, 597, 314, 493, 415, 0, 557, - 0, 0, 0, 0, 0, 0, 0, 0, 562, 563, - 560, 663, 0, 620, 621, 0, 0, 487, 488, 344, - 351, 506, 353, 313, 404, 346, 472, 361, 0, 499, - 564, 500, 623, 626, 624, 625, 396, 356, 358, 431, - 362, 372, 419, 471, 402, 424, 311, 462, 433, 377, - 550, 577, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 280, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 605, 604, - 603, 602, 601, 600, 599, 598, 0, 0, 547, 448, - 323, 285, 319, 320, 327, 652, 649, 453, 653, 0, - 293, 527, 370, 0, 414, 343, 592, 593, 0, 644, - 241, 242, 243, 244, 245, 246, 247, 248, 286, 249, - 250, 251, 252, 253, 254, 255, 258, 259, 260, 261, - 262, 263, 264, 265, 595, 256, 257, 266, 267, 268, - 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, - 279, 0, 0, 0, 287, 288, 289, 290, 0, 0, - 281, 282, 283, 284, 0, 0, 0, 478, 479, 480, - 502, 0, 464, 526, 650, 0, 0, 0, 0, 0, - 0, 0, 576, 588, 622, 0, 632, 633, 635, 637, - 636, 639, 438, 439, 0, 641, 642, 643, 640, 374, - 425, 444, 432, 0, 656, 517, 518, 657, 628, 401, - 0, 0, 532, 565, 554, 638, 520, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 336, 0, 0, - 369, 569, 551, 561, 552, 537, 538, 539, 546, 348, - 540, 541, 542, 512, 543, 513, 544, 545, 0, 568, - 519, 434, 385, 586, 585, 0, 0, 0, 0, 0, + 0, 0, 299, 441, 460, 310, 429, 473, 315, 437, + 452, 305, 400, 426, 0, 0, 301, 458, 436, 382, + 359, 360, 300, 0, 420, 334, 350, 331, 398, 0, + 457, 485, 330, 476, 0, 468, 303, 0, 467, 397, + 454, 459, 383, 376, 0, 302, 456, 381, 375, 363, + 340, 501, 364, 365, 354, 409, 373, 410, 355, 387, + 386, 388, 0, 0, 0, 0, 0, 496, 497, 0, + 0, 645, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 627, 0, 0, 631, 0, 470, 0, + 0, 0, 3728, 0, 0, 440, 0, 0, 366, 0, + 0, 0, 486, 0, 423, 403, 659, 0, 0, 421, + 371, 455, 411, 461, 442, 469, 417, 412, 294, 443, + 333, 384, 306, 308, 328, 335, 337, 341, 342, 393, + 394, 406, 428, 445, 446, 447, 332, 316, 422, 317, + 352, 318, 295, 324, 322, 325, 430, 326, 297, 407, + 451, 0, 347, 418, 379, 298, 378, 408, 450, 449, + 307, 477, 483, 484, 573, 0, 489, 660, 661, 662, + 498, 0, 413, 503, 504, 505, 507, 508, 509, 510, + 574, 591, 558, 528, 491, 582, 525, 529, 530, 357, + 594, 0, 0, 0, 482, 367, 368, 0, 339, 338, + 380, 416, 345, 291, 292, 655, 329, 399, 596, 629, + 630, 521, 0, 583, 522, 531, 321, 555, 567, 566, + 395, 481, 0, 578, 581, 511, 654, 0, 575, 590, + 658, 589, 651, 405, 0, 427, 587, 534, 0, 579, + 553, 0, 580, 549, 584, 0, 523, 0, 435, 463, + 475, 492, 495, 524, 609, 610, 611, 296, 494, 613, + 614, 615, 616, 617, 618, 619, 612, 466, 556, 533, + 559, 474, 536, 535, 0, 0, 570, 490, 571, 572, + 389, 390, 391, 392, 349, 597, 314, 493, 415, 0, + 557, 0, 0, 0, 0, 0, 0, 0, 0, 562, + 563, 560, 663, 0, 620, 621, 0, 0, 487, 488, + 344, 351, 506, 353, 313, 404, 346, 472, 361, 0, + 499, 564, 500, 623, 626, 624, 625, 396, 356, 358, + 431, 362, 372, 419, 471, 402, 424, 311, 462, 433, + 377, 550, 577, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 280, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 605, + 604, 603, 602, 601, 600, 599, 598, 0, 0, 547, + 448, 323, 285, 319, 320, 327, 652, 649, 453, 653, + 0, 293, 527, 370, 0, 414, 343, 592, 593, 0, + 644, 241, 242, 243, 244, 245, 246, 247, 248, 286, + 249, 250, 251, 252, 253, 254, 255, 258, 259, 260, + 261, 262, 263, 264, 265, 595, 256, 257, 266, 267, + 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, + 278, 279, 0, 0, 0, 287, 288, 289, 290, 0, + 0, 281, 282, 283, 284, 0, 0, 0, 478, 479, + 480, 502, 0, 464, 526, 650, 0, 0, 0, 0, + 0, 0, 0, 576, 588, 622, 0, 632, 633, 635, + 637, 636, 639, 438, 439, 0, 641, 642, 643, 640, + 374, 425, 444, 432, 0, 656, 517, 518, 657, 628, + 401, 0, 0, 532, 565, 554, 638, 520, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 336, 0, + 0, 369, 569, 551, 561, 552, 537, 538, 539, 546, + 348, 540, 541, 542, 512, 543, 513, 544, 545, 0, + 568, 519, 434, 385, 586, 585, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 228, 0, 0, 3242, 0, - 0, 0, 309, 229, 514, 634, 516, 515, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 312, 0, 0, + 0, 0, 0, 0, 0, 0, 228, 0, 0, 3228, + 0, 0, 0, 309, 229, 514, 634, 516, 515, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 312, 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, 0, 0, 0, 0, 0, 0, 0, 0, 299, - 441, 460, 310, 429, 473, 315, 437, 452, 305, 400, - 426, 0, 0, 301, 458, 436, 382, 359, 360, 300, - 0, 420, 334, 350, 331, 398, 0, 457, 485, 330, - 476, 0, 468, 303, 0, 467, 397, 454, 459, 383, - 376, 0, 302, 456, 381, 375, 363, 340, 501, 364, - 365, 354, 409, 373, 410, 355, 387, 386, 388, 0, - 0, 0, 0, 0, 496, 497, 0, 0, 645, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 627, 0, 0, 631, 0, 470, 0, 0, 0, 0, - 0, 0, 440, 0, 0, 366, 0, 0, 0, 486, - 0, 423, 403, 659, 0, 0, 421, 371, 455, 411, - 461, 442, 469, 417, 412, 294, 443, 333, 384, 306, - 308, 328, 335, 337, 341, 342, 393, 394, 406, 428, - 445, 446, 447, 332, 316, 422, 317, 352, 318, 295, - 324, 322, 325, 430, 326, 297, 407, 451, 0, 347, - 418, 379, 298, 378, 408, 450, 449, 307, 477, 483, - 484, 573, 0, 489, 660, 661, 662, 498, 0, 413, - 503, 504, 505, 507, 508, 509, 510, 574, 591, 558, - 528, 491, 582, 525, 529, 530, 357, 594, 0, 0, - 0, 482, 367, 368, 0, 339, 338, 380, 416, 345, - 291, 292, 655, 329, 399, 596, 629, 630, 521, 0, - 583, 522, 531, 321, 555, 567, 566, 395, 481, 0, - 578, 581, 511, 654, 0, 575, 590, 658, 589, 651, - 405, 0, 427, 587, 534, 0, 579, 553, 0, 580, - 549, 584, 0, 523, 0, 435, 463, 475, 492, 495, - 524, 609, 610, 611, 296, 494, 613, 614, 615, 616, - 617, 618, 619, 612, 466, 556, 533, 559, 474, 536, - 535, 0, 0, 570, 490, 571, 572, 389, 390, 391, - 392, 349, 597, 314, 493, 415, 0, 557, 0, 0, - 0, 0, 0, 0, 0, 0, 562, 563, 560, 663, - 0, 620, 621, 0, 0, 487, 488, 344, 351, 506, - 353, 313, 404, 346, 472, 361, 0, 499, 564, 500, - 623, 626, 624, 625, 396, 356, 358, 431, 362, 372, - 419, 471, 402, 424, 311, 462, 433, 377, 550, 577, + 299, 441, 460, 310, 429, 473, 315, 437, 452, 305, + 400, 426, 0, 0, 301, 458, 436, 382, 359, 360, + 300, 0, 420, 334, 350, 331, 398, 0, 457, 485, + 330, 476, 0, 468, 303, 0, 467, 397, 454, 459, + 383, 376, 0, 302, 456, 381, 375, 363, 340, 501, + 364, 365, 354, 409, 373, 410, 355, 387, 386, 388, + 0, 0, 0, 0, 0, 496, 497, 0, 0, 645, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 280, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 605, 604, 603, 602, - 601, 600, 599, 598, 0, 0, 547, 448, 323, 285, - 319, 320, 327, 652, 649, 453, 653, 0, 293, 527, - 370, 0, 414, 343, 592, 593, 0, 644, 241, 242, - 243, 244, 245, 246, 247, 248, 286, 249, 250, 251, - 252, 253, 254, 255, 258, 259, 260, 261, 262, 263, - 264, 265, 595, 256, 257, 266, 267, 268, 269, 270, - 271, 272, 273, 274, 275, 276, 277, 278, 279, 0, - 0, 0, 287, 288, 289, 290, 0, 0, 281, 282, - 283, 284, 0, 0, 0, 478, 479, 480, 502, 0, - 464, 526, 650, 0, 0, 0, 0, 0, 0, 0, - 576, 588, 622, 0, 632, 633, 635, 637, 636, 639, - 438, 439, 0, 641, 642, 643, 640, 374, 425, 444, - 432, 0, 656, 517, 518, 657, 628, 401, 0, 0, - 532, 565, 554, 638, 520, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 336, 0, 0, 369, 569, - 551, 561, 552, 537, 538, 539, 546, 348, 540, 541, - 542, 512, 543, 513, 544, 545, 0, 568, 519, 434, - 385, 586, 585, 0, 0, 0, 0, 0, 0, 0, + 0, 627, 0, 0, 631, 0, 470, 0, 0, 0, + 0, 0, 0, 440, 0, 0, 366, 0, 0, 0, + 486, 0, 423, 403, 659, 0, 0, 421, 371, 455, + 411, 461, 442, 469, 417, 412, 294, 443, 333, 384, + 306, 308, 328, 335, 337, 341, 342, 393, 394, 406, + 428, 445, 446, 447, 332, 316, 422, 317, 352, 318, + 295, 324, 322, 325, 430, 326, 297, 407, 451, 0, + 347, 418, 379, 298, 378, 408, 450, 449, 307, 477, + 483, 484, 573, 0, 489, 660, 661, 662, 498, 0, + 413, 503, 504, 505, 507, 508, 509, 510, 574, 591, + 558, 528, 491, 582, 525, 529, 530, 357, 594, 0, + 0, 0, 482, 367, 368, 0, 339, 338, 380, 416, + 345, 291, 292, 655, 329, 399, 596, 629, 630, 521, + 0, 583, 522, 531, 321, 555, 567, 566, 395, 481, + 0, 578, 581, 511, 654, 0, 575, 590, 658, 589, + 651, 405, 0, 427, 587, 534, 0, 579, 553, 0, + 580, 549, 584, 0, 523, 0, 435, 463, 475, 492, + 495, 524, 609, 610, 611, 296, 494, 613, 614, 615, + 616, 617, 618, 619, 612, 466, 556, 533, 559, 474, + 536, 535, 0, 0, 570, 490, 571, 572, 389, 390, + 391, 392, 349, 597, 314, 493, 415, 0, 557, 0, + 0, 0, 0, 0, 0, 0, 0, 562, 563, 560, + 663, 0, 620, 621, 0, 0, 487, 488, 344, 351, + 506, 353, 313, 404, 346, 472, 361, 0, 499, 564, + 500, 623, 626, 624, 625, 396, 356, 358, 431, 362, + 372, 419, 471, 402, 424, 311, 462, 433, 377, 550, + 577, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 280, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 605, 604, 603, + 602, 601, 600, 599, 598, 0, 0, 547, 448, 323, + 285, 319, 320, 327, 652, 649, 453, 653, 0, 293, + 527, 370, 0, 414, 343, 592, 593, 0, 644, 241, + 242, 243, 244, 245, 246, 247, 248, 286, 249, 250, + 251, 252, 253, 254, 255, 258, 259, 260, 261, 262, + 263, 264, 265, 595, 256, 257, 266, 267, 268, 269, + 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, + 0, 0, 0, 287, 288, 289, 290, 0, 0, 281, + 282, 283, 284, 0, 0, 0, 478, 479, 480, 502, + 0, 464, 526, 650, 0, 0, 0, 0, 0, 0, + 0, 576, 588, 622, 0, 632, 633, 635, 637, 636, + 639, 438, 439, 0, 641, 642, 643, 640, 374, 425, + 444, 432, 0, 656, 517, 518, 657, 628, 401, 0, + 0, 532, 565, 554, 638, 520, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 336, 0, 0, 369, + 569, 551, 561, 552, 537, 538, 539, 546, 348, 540, + 541, 542, 512, 543, 513, 544, 545, 0, 568, 519, + 434, 385, 586, 585, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 228, 0, 0, 0, 0, 0, 0, - 309, 229, 514, 634, 516, 515, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 312, 0, 0, 0, 0, + 0, 0, 0, 0, 228, 0, 0, 0, 0, 0, + 0, 309, 229, 514, 634, 516, 515, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 312, 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, 3260, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 299, 441, 460, - 310, 429, 473, 315, 437, 452, 305, 400, 426, 0, - 0, 301, 458, 436, 382, 359, 360, 300, 0, 420, - 334, 350, 331, 398, 0, 457, 485, 330, 476, 0, - 468, 303, 0, 467, 397, 454, 459, 383, 376, 0, - 302, 456, 381, 375, 363, 340, 501, 364, 365, 354, - 409, 373, 410, 355, 387, 386, 388, 0, 0, 0, - 0, 0, 496, 497, 0, 0, 645, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 627, 0, - 0, 631, 0, 470, 0, 0, 0, 0, 0, 0, - 440, 0, 0, 366, 0, 0, 0, 486, 0, 423, - 403, 659, 0, 0, 421, 371, 455, 411, 461, 442, - 469, 417, 412, 294, 443, 333, 384, 306, 308, 328, - 335, 337, 341, 342, 393, 394, 406, 428, 445, 446, - 447, 332, 316, 422, 317, 352, 318, 295, 324, 322, - 325, 430, 326, 297, 407, 451, 0, 347, 418, 379, - 298, 378, 408, 450, 449, 307, 477, 483, 484, 573, - 0, 489, 660, 661, 662, 498, 0, 413, 503, 504, - 505, 507, 508, 509, 510, 574, 591, 558, 528, 491, - 582, 525, 529, 530, 357, 594, 0, 0, 0, 482, - 367, 368, 0, 339, 338, 380, 416, 345, 291, 292, - 655, 329, 399, 596, 629, 630, 521, 0, 583, 522, - 531, 321, 555, 567, 566, 395, 481, 0, 578, 581, - 511, 654, 0, 575, 590, 658, 589, 651, 405, 0, - 427, 587, 534, 0, 579, 553, 0, 580, 549, 584, - 0, 523, 0, 435, 463, 475, 492, 495, 524, 609, - 610, 611, 296, 494, 613, 614, 615, 616, 617, 618, - 619, 612, 466, 556, 533, 559, 474, 536, 535, 0, - 0, 570, 490, 571, 572, 389, 390, 391, 392, 349, - 597, 314, 493, 415, 0, 557, 0, 0, 0, 0, - 0, 0, 0, 0, 562, 563, 560, 663, 0, 620, - 621, 0, 0, 487, 488, 344, 351, 506, 353, 313, - 404, 346, 472, 361, 0, 499, 564, 500, 623, 626, - 624, 625, 396, 356, 358, 431, 362, 372, 419, 471, - 402, 424, 311, 462, 433, 377, 550, 577, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 280, + 0, 0, 3246, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 299, 441, + 460, 310, 429, 473, 315, 437, 452, 305, 400, 426, + 0, 0, 301, 458, 436, 382, 359, 360, 300, 0, + 420, 334, 350, 331, 398, 0, 457, 485, 330, 476, + 0, 468, 303, 0, 467, 397, 454, 459, 383, 376, + 0, 302, 456, 381, 375, 363, 340, 501, 364, 365, + 354, 409, 373, 410, 355, 387, 386, 388, 0, 0, + 0, 0, 0, 496, 497, 0, 0, 645, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 627, + 0, 0, 631, 0, 470, 0, 0, 0, 0, 0, + 0, 440, 0, 0, 366, 0, 0, 0, 486, 0, + 423, 403, 659, 0, 0, 421, 371, 455, 411, 461, + 442, 469, 417, 412, 294, 443, 333, 384, 306, 308, + 328, 335, 337, 341, 342, 393, 394, 406, 428, 445, + 446, 447, 332, 316, 422, 317, 352, 318, 295, 324, + 322, 325, 430, 326, 297, 407, 451, 0, 347, 418, + 379, 298, 378, 408, 450, 449, 307, 477, 483, 484, + 573, 0, 489, 660, 661, 662, 498, 0, 413, 503, + 504, 505, 507, 508, 509, 510, 574, 591, 558, 528, + 491, 582, 525, 529, 530, 357, 594, 0, 0, 0, + 482, 367, 368, 0, 339, 338, 380, 416, 345, 291, + 292, 655, 329, 399, 596, 629, 630, 521, 0, 583, + 522, 531, 321, 555, 567, 566, 395, 481, 0, 578, + 581, 511, 654, 0, 575, 590, 658, 589, 651, 405, + 0, 427, 587, 534, 0, 579, 553, 0, 580, 549, + 584, 0, 523, 0, 435, 463, 475, 492, 495, 524, + 609, 610, 611, 296, 494, 613, 614, 615, 616, 617, + 618, 619, 612, 466, 556, 533, 559, 474, 536, 535, + 0, 0, 570, 490, 571, 572, 389, 390, 391, 392, + 349, 597, 314, 493, 415, 0, 557, 0, 0, 0, + 0, 0, 0, 0, 0, 562, 563, 560, 663, 0, + 620, 621, 0, 0, 487, 488, 344, 351, 506, 353, + 313, 404, 346, 472, 361, 0, 499, 564, 500, 623, + 626, 624, 625, 396, 356, 358, 431, 362, 372, 419, + 471, 402, 424, 311, 462, 433, 377, 550, 577, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 605, 604, 603, 602, 601, 600, - 599, 598, 0, 0, 547, 448, 323, 285, 319, 320, - 327, 652, 649, 453, 653, 0, 293, 527, 370, 0, - 414, 343, 592, 593, 0, 644, 241, 242, 243, 244, - 245, 246, 247, 248, 286, 249, 250, 251, 252, 253, - 254, 255, 258, 259, 260, 261, 262, 263, 264, 265, - 595, 256, 257, 266, 267, 268, 269, 270, 271, 272, - 273, 274, 275, 276, 277, 278, 279, 0, 0, 0, - 287, 288, 289, 290, 0, 0, 281, 282, 283, 284, - 0, 0, 0, 478, 479, 480, 502, 0, 464, 526, - 650, 0, 0, 0, 0, 0, 0, 0, 576, 588, - 622, 0, 632, 633, 635, 637, 636, 639, 438, 439, - 0, 641, 642, 643, 640, 374, 425, 444, 432, 0, - 656, 517, 518, 657, 628, 401, 0, 0, 532, 565, - 554, 638, 520, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 336, 0, 0, 369, 569, 551, 561, - 552, 537, 538, 539, 546, 348, 540, 541, 542, 512, - 543, 513, 544, 545, 0, 568, 519, 434, 385, 586, - 585, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 2076, 0, - 0, 228, 0, 0, 0, 0, 0, 0, 309, 229, - 514, 634, 516, 515, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 312, 0, 0, 0, 0, 0, 0, + 280, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 605, 604, 603, 602, 601, + 600, 599, 598, 0, 0, 547, 448, 323, 285, 319, + 320, 327, 652, 649, 453, 653, 0, 293, 527, 370, + 0, 414, 343, 592, 593, 0, 644, 241, 242, 243, + 244, 245, 246, 247, 248, 286, 249, 250, 251, 252, + 253, 254, 255, 258, 259, 260, 261, 262, 263, 264, + 265, 595, 256, 257, 266, 267, 268, 269, 270, 271, + 272, 273, 274, 275, 276, 277, 278, 279, 0, 0, + 0, 287, 288, 289, 290, 0, 0, 281, 282, 283, + 284, 0, 0, 0, 478, 479, 480, 502, 0, 464, + 526, 650, 0, 0, 0, 0, 0, 0, 0, 576, + 588, 622, 0, 632, 633, 635, 637, 636, 639, 438, + 439, 0, 641, 642, 643, 640, 374, 425, 444, 432, + 0, 656, 517, 518, 657, 628, 401, 0, 0, 532, + 565, 554, 638, 520, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 336, 0, 0, 369, 569, 551, + 561, 552, 537, 538, 539, 546, 348, 540, 541, 542, + 512, 543, 513, 544, 545, 0, 568, 519, 434, 385, + 586, 585, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 2067, + 0, 0, 228, 0, 0, 0, 0, 0, 0, 309, + 229, 514, 634, 516, 515, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 312, 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, 0, 0, 0, - 0, 0, 0, 0, 0, 299, 441, 460, 310, 429, - 473, 315, 437, 452, 305, 400, 426, 0, 0, 301, - 458, 436, 382, 359, 360, 300, 0, 420, 334, 350, - 331, 398, 0, 457, 485, 330, 476, 0, 468, 303, - 0, 467, 397, 454, 459, 383, 376, 0, 302, 456, - 381, 375, 363, 340, 501, 364, 365, 354, 409, 373, - 410, 355, 387, 386, 388, 0, 0, 0, 0, 0, - 496, 497, 0, 0, 645, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 627, 0, 0, 631, - 0, 470, 0, 0, 0, 0, 0, 0, 440, 0, - 0, 366, 0, 0, 0, 486, 0, 423, 403, 659, - 0, 0, 421, 371, 455, 411, 461, 442, 469, 417, - 412, 294, 443, 333, 384, 306, 308, 328, 335, 337, - 341, 342, 393, 394, 406, 428, 445, 446, 447, 332, - 316, 422, 317, 352, 318, 295, 324, 322, 325, 430, - 326, 297, 407, 451, 0, 347, 418, 379, 298, 378, - 408, 450, 449, 307, 477, 483, 484, 573, 0, 489, - 660, 661, 662, 498, 0, 413, 503, 504, 505, 507, - 508, 509, 510, 574, 591, 558, 528, 491, 582, 525, - 529, 530, 357, 594, 0, 0, 0, 482, 367, 368, - 0, 339, 338, 380, 416, 345, 291, 292, 655, 329, - 399, 596, 629, 630, 521, 0, 583, 522, 531, 321, - 555, 567, 566, 395, 481, 0, 578, 581, 511, 654, - 0, 575, 590, 658, 589, 651, 405, 0, 427, 587, - 534, 0, 579, 553, 0, 580, 549, 584, 0, 523, - 0, 435, 463, 475, 492, 495, 524, 609, 610, 611, - 296, 494, 613, 614, 615, 616, 617, 618, 619, 612, - 466, 556, 533, 559, 474, 536, 535, 0, 0, 570, - 490, 571, 572, 389, 390, 391, 392, 349, 597, 314, - 493, 415, 0, 557, 0, 0, 0, 0, 0, 0, - 0, 0, 562, 563, 560, 663, 0, 620, 621, 0, - 0, 487, 488, 344, 351, 506, 353, 313, 404, 346, - 472, 361, 0, 499, 564, 500, 623, 626, 624, 625, - 396, 356, 358, 431, 362, 372, 419, 471, 402, 424, - 311, 462, 433, 377, 550, 577, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 280, 0, 0, + 0, 0, 0, 0, 0, 0, 299, 441, 460, 310, + 429, 473, 315, 437, 452, 305, 400, 426, 0, 0, + 301, 458, 436, 382, 359, 360, 300, 0, 420, 334, + 350, 331, 398, 0, 457, 485, 330, 476, 0, 468, + 303, 0, 467, 397, 454, 459, 383, 376, 0, 302, + 456, 381, 375, 363, 340, 501, 364, 365, 354, 409, + 373, 410, 355, 387, 386, 388, 0, 0, 0, 0, + 0, 496, 497, 0, 0, 645, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 627, 0, 0, + 631, 0, 470, 0, 0, 0, 0, 0, 0, 440, + 0, 0, 366, 0, 0, 0, 486, 0, 423, 403, + 659, 0, 0, 421, 371, 455, 411, 461, 442, 469, + 417, 412, 294, 443, 333, 384, 306, 308, 328, 335, + 337, 341, 342, 393, 394, 406, 428, 445, 446, 447, + 332, 316, 422, 317, 352, 318, 295, 324, 322, 325, + 430, 326, 297, 407, 451, 0, 347, 418, 379, 298, + 378, 408, 450, 449, 307, 477, 483, 484, 573, 0, + 489, 660, 661, 662, 498, 0, 413, 503, 504, 505, + 507, 508, 509, 510, 574, 591, 558, 528, 491, 582, + 525, 529, 530, 357, 594, 0, 0, 0, 482, 367, + 368, 0, 339, 338, 380, 416, 345, 291, 292, 655, + 329, 399, 596, 629, 630, 521, 0, 583, 522, 531, + 321, 555, 567, 566, 395, 481, 0, 578, 581, 511, + 654, 0, 575, 590, 658, 589, 651, 405, 0, 427, + 587, 534, 0, 579, 553, 0, 580, 549, 584, 0, + 523, 0, 435, 463, 475, 492, 495, 524, 609, 610, + 611, 296, 494, 613, 614, 615, 616, 617, 618, 619, + 612, 466, 556, 533, 559, 474, 536, 535, 0, 0, + 570, 490, 571, 572, 389, 390, 391, 392, 349, 597, + 314, 493, 415, 0, 557, 0, 0, 0, 0, 0, + 0, 0, 0, 562, 563, 560, 663, 0, 620, 621, + 0, 0, 487, 488, 344, 351, 506, 353, 313, 404, + 346, 472, 361, 0, 499, 564, 500, 623, 626, 624, + 625, 396, 356, 358, 431, 362, 372, 419, 471, 402, + 424, 311, 462, 433, 377, 550, 577, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 280, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 605, 604, 603, 602, 601, 600, 599, 598, - 0, 0, 547, 448, 323, 285, 319, 320, 327, 652, - 649, 453, 653, 0, 293, 527, 370, 0, 414, 343, - 592, 593, 0, 644, 241, 242, 243, 244, 245, 246, - 247, 248, 286, 249, 250, 251, 252, 253, 254, 255, - 258, 259, 260, 261, 262, 263, 264, 265, 595, 256, - 257, 266, 267, 268, 269, 270, 271, 272, 273, 274, - 275, 276, 277, 278, 279, 0, 0, 0, 287, 288, - 289, 290, 0, 0, 281, 282, 283, 284, 0, 0, - 0, 478, 479, 480, 502, 0, 464, 526, 650, 0, - 0, 0, 0, 0, 0, 0, 576, 588, 622, 0, - 632, 633, 635, 637, 636, 639, 438, 439, 0, 641, - 642, 643, 640, 374, 425, 444, 432, 0, 656, 517, - 518, 657, 628, 401, 0, 0, 532, 565, 554, 638, - 520, 0, 0, 3458, 0, 0, 0, 0, 0, 0, - 0, 336, 0, 0, 369, 569, 551, 561, 552, 537, - 538, 539, 546, 348, 540, 541, 542, 512, 543, 513, - 544, 545, 0, 568, 519, 434, 385, 586, 585, 0, + 0, 0, 0, 605, 604, 603, 602, 601, 600, 599, + 598, 0, 0, 547, 448, 323, 285, 319, 320, 327, + 652, 649, 453, 653, 0, 293, 527, 370, 0, 414, + 343, 592, 593, 0, 644, 241, 242, 243, 244, 245, + 246, 247, 248, 286, 249, 250, 251, 252, 253, 254, + 255, 258, 259, 260, 261, 262, 263, 264, 265, 595, + 256, 257, 266, 267, 268, 269, 270, 271, 272, 273, + 274, 275, 276, 277, 278, 279, 0, 0, 0, 287, + 288, 289, 290, 0, 0, 281, 282, 283, 284, 0, + 0, 0, 478, 479, 480, 502, 0, 464, 526, 650, + 0, 0, 0, 0, 0, 0, 0, 576, 588, 622, + 0, 632, 633, 635, 637, 636, 639, 438, 439, 0, + 641, 642, 643, 640, 374, 425, 444, 432, 0, 656, + 517, 518, 657, 628, 401, 0, 0, 532, 565, 554, + 638, 520, 0, 0, 3443, 0, 0, 0, 0, 0, + 0, 0, 336, 0, 0, 369, 569, 551, 561, 552, + 537, 538, 539, 546, 348, 540, 541, 542, 512, 543, + 513, 544, 545, 0, 568, 519, 434, 385, 586, 585, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 228, - 0, 0, 0, 0, 0, 0, 309, 229, 514, 634, - 516, 515, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 312, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 228, 0, 0, 0, 0, 0, 0, 309, 229, 514, + 634, 516, 515, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 312, 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, 299, 441, 460, 310, 429, 473, 315, - 437, 452, 305, 400, 426, 0, 0, 301, 458, 436, - 382, 359, 360, 300, 0, 420, 334, 350, 331, 398, - 0, 457, 485, 330, 476, 0, 468, 303, 0, 467, - 397, 454, 459, 383, 376, 0, 302, 456, 381, 375, - 363, 340, 501, 364, 365, 354, 409, 373, 410, 355, - 387, 386, 388, 0, 0, 0, 0, 0, 496, 497, - 0, 0, 645, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 627, 0, 0, 631, 0, 470, - 0, 0, 0, 0, 0, 0, 440, 0, 0, 366, - 0, 0, 0, 486, 0, 423, 403, 659, 0, 0, - 421, 371, 455, 411, 461, 442, 469, 417, 412, 294, - 443, 333, 384, 306, 308, 328, 335, 337, 341, 342, - 393, 394, 406, 428, 445, 446, 447, 332, 316, 422, - 317, 352, 318, 295, 324, 322, 325, 430, 326, 297, - 407, 451, 0, 347, 418, 379, 298, 378, 408, 450, - 449, 307, 477, 483, 484, 573, 0, 489, 660, 661, - 662, 498, 0, 413, 503, 504, 505, 507, 508, 509, - 510, 574, 591, 558, 528, 491, 582, 525, 529, 530, - 357, 594, 0, 0, 0, 482, 367, 368, 0, 339, - 338, 380, 416, 345, 291, 292, 655, 329, 399, 596, - 629, 630, 521, 0, 583, 522, 531, 321, 555, 567, - 566, 395, 481, 0, 578, 581, 511, 654, 0, 575, - 590, 658, 589, 651, 405, 0, 427, 587, 534, 0, - 579, 553, 0, 580, 549, 584, 0, 523, 0, 435, - 463, 475, 492, 495, 524, 609, 610, 611, 296, 494, - 613, 614, 615, 616, 617, 618, 619, 612, 466, 556, - 533, 559, 474, 536, 535, 0, 0, 570, 490, 571, - 572, 389, 390, 391, 392, 349, 597, 314, 493, 415, - 0, 557, 0, 0, 0, 0, 0, 0, 0, 0, - 562, 563, 560, 663, 0, 620, 621, 0, 0, 487, - 488, 344, 351, 506, 353, 313, 404, 346, 472, 361, - 0, 499, 564, 500, 623, 626, 624, 625, 396, 356, - 358, 431, 362, 372, 419, 471, 402, 424, 311, 462, - 433, 377, 550, 577, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 280, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 605, 604, 603, 602, 601, 600, 599, 598, 0, 0, - 547, 448, 323, 285, 319, 320, 327, 652, 649, 453, - 653, 0, 293, 527, 370, 0, 414, 343, 592, 593, - 0, 644, 241, 242, 243, 244, 245, 246, 247, 248, - 286, 249, 250, 251, 252, 253, 254, 255, 258, 259, - 260, 261, 262, 263, 264, 265, 595, 256, 257, 266, - 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, - 277, 278, 279, 0, 0, 0, 287, 288, 289, 290, - 0, 0, 281, 282, 283, 284, 0, 0, 0, 478, - 479, 480, 502, 0, 464, 526, 650, 0, 0, 0, - 0, 0, 0, 0, 576, 588, 622, 0, 632, 633, - 635, 637, 636, 639, 438, 439, 0, 641, 642, 643, - 640, 374, 425, 444, 432, 0, 656, 517, 518, 657, - 628, 401, 0, 0, 532, 565, 554, 638, 520, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 336, - 0, 0, 369, 569, 551, 561, 552, 537, 538, 539, - 546, 348, 540, 541, 542, 512, 543, 513, 544, 545, - 0, 568, 519, 434, 385, 586, 585, 0, 0, 0, + 0, 0, 0, 0, 299, 441, 460, 310, 429, 473, + 315, 437, 452, 305, 400, 426, 0, 0, 301, 458, + 436, 382, 359, 360, 300, 0, 420, 334, 350, 331, + 398, 0, 457, 485, 330, 476, 0, 468, 303, 0, + 467, 397, 454, 459, 383, 376, 0, 302, 456, 381, + 375, 363, 340, 501, 364, 365, 354, 409, 373, 410, + 355, 387, 386, 388, 0, 0, 0, 0, 0, 496, + 497, 0, 0, 645, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 627, 0, 0, 631, 0, + 470, 0, 0, 0, 0, 0, 0, 440, 0, 0, + 366, 0, 0, 0, 486, 0, 423, 403, 659, 0, + 0, 421, 371, 455, 411, 461, 442, 469, 417, 412, + 294, 443, 333, 384, 306, 308, 328, 335, 337, 341, + 342, 393, 394, 406, 428, 445, 446, 447, 332, 316, + 422, 317, 352, 318, 295, 324, 322, 325, 430, 326, + 297, 407, 451, 0, 347, 418, 379, 298, 378, 408, + 450, 449, 307, 477, 483, 484, 573, 0, 489, 660, + 661, 662, 498, 0, 413, 503, 504, 505, 507, 508, + 509, 510, 574, 591, 558, 528, 491, 582, 525, 529, + 530, 357, 594, 0, 0, 0, 482, 367, 368, 0, + 339, 338, 380, 416, 345, 291, 292, 655, 329, 399, + 596, 629, 630, 521, 0, 583, 522, 531, 321, 555, + 567, 566, 395, 481, 0, 578, 581, 511, 654, 0, + 575, 590, 658, 589, 651, 405, 0, 427, 587, 534, + 0, 579, 553, 0, 580, 549, 584, 0, 523, 0, + 435, 463, 475, 492, 495, 524, 609, 610, 611, 296, + 494, 613, 614, 615, 616, 617, 618, 619, 612, 466, + 556, 533, 559, 474, 536, 535, 0, 0, 570, 490, + 571, 572, 389, 390, 391, 392, 349, 597, 314, 493, + 415, 0, 557, 0, 0, 0, 0, 0, 0, 0, + 0, 562, 563, 560, 663, 0, 620, 621, 0, 0, + 487, 488, 344, 351, 506, 353, 313, 404, 346, 472, + 361, 0, 499, 564, 500, 623, 626, 624, 625, 396, + 356, 358, 431, 362, 372, 419, 471, 402, 424, 311, + 462, 433, 377, 550, 577, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 280, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 605, 604, 603, 602, 601, 600, 599, 598, 0, + 0, 547, 448, 323, 285, 319, 320, 327, 652, 649, + 453, 653, 0, 293, 527, 370, 0, 414, 343, 592, + 593, 0, 644, 241, 242, 243, 244, 245, 246, 247, + 248, 286, 249, 250, 251, 252, 253, 254, 255, 258, + 259, 260, 261, 262, 263, 264, 265, 595, 256, 257, + 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, + 276, 277, 278, 279, 0, 0, 0, 287, 288, 289, + 290, 0, 0, 281, 282, 283, 284, 0, 0, 0, + 478, 479, 480, 502, 0, 464, 526, 650, 0, 0, + 0, 0, 0, 0, 0, 576, 588, 622, 0, 632, + 633, 635, 637, 636, 639, 438, 439, 0, 641, 642, + 643, 640, 374, 425, 444, 432, 0, 656, 517, 518, + 657, 628, 401, 0, 0, 532, 565, 554, 638, 520, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 336, 0, 0, 369, 569, 551, 561, 552, 537, 538, + 539, 546, 348, 540, 541, 542, 512, 543, 513, 544, + 545, 0, 568, 519, 434, 385, 586, 585, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 228, 0, 0, - 0, 0, 0, 0, 309, 229, 514, 634, 516, 515, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 312, + 0, 0, 0, 0, 0, 0, 0, 0, 228, 0, + 0, 0, 0, 0, 0, 309, 229, 514, 634, 516, + 515, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 312, 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, 3356, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 3371, 0, 0, 0, 0, + 0, 0, 299, 441, 460, 310, 429, 473, 315, 437, + 452, 305, 400, 426, 0, 0, 301, 458, 436, 382, + 359, 360, 300, 0, 420, 334, 350, 331, 398, 0, + 457, 485, 330, 476, 0, 468, 303, 0, 467, 397, + 454, 459, 383, 376, 0, 302, 456, 381, 375, 363, + 340, 501, 364, 365, 354, 409, 373, 410, 355, 387, + 386, 388, 0, 0, 0, 0, 0, 496, 497, 0, + 0, 645, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 627, 0, 0, 631, 0, 470, 0, + 0, 0, 0, 0, 0, 440, 0, 0, 366, 0, + 0, 0, 486, 0, 423, 403, 659, 0, 0, 421, + 371, 455, 411, 461, 442, 469, 417, 412, 294, 443, + 333, 384, 306, 308, 328, 335, 337, 341, 342, 393, + 394, 406, 428, 445, 446, 447, 332, 316, 422, 317, + 352, 318, 295, 324, 322, 325, 430, 326, 297, 407, + 451, 0, 347, 418, 379, 298, 378, 408, 450, 449, + 307, 477, 483, 484, 573, 0, 489, 660, 661, 662, + 498, 0, 413, 503, 504, 505, 507, 508, 509, 510, + 574, 591, 558, 528, 491, 582, 525, 529, 530, 357, + 594, 0, 0, 0, 482, 367, 368, 0, 339, 338, + 380, 416, 345, 291, 292, 655, 329, 399, 596, 629, + 630, 521, 0, 583, 522, 531, 321, 555, 567, 566, + 395, 481, 0, 578, 581, 511, 654, 0, 575, 590, + 658, 589, 651, 405, 0, 427, 587, 534, 0, 579, + 553, 0, 580, 549, 584, 0, 523, 0, 435, 463, + 475, 492, 495, 524, 609, 610, 611, 296, 494, 613, + 614, 615, 616, 617, 618, 619, 612, 466, 556, 533, + 559, 474, 536, 535, 0, 0, 570, 490, 571, 572, + 389, 390, 391, 392, 349, 597, 314, 493, 415, 0, + 557, 0, 0, 0, 0, 0, 0, 0, 0, 562, + 563, 560, 663, 0, 620, 621, 0, 0, 487, 488, + 344, 351, 506, 353, 313, 404, 346, 472, 361, 0, + 499, 564, 500, 623, 626, 624, 625, 396, 356, 358, + 431, 362, 372, 419, 471, 402, 424, 311, 462, 433, + 377, 550, 577, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 280, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 605, + 604, 603, 602, 601, 600, 599, 598, 0, 0, 547, + 448, 323, 285, 319, 320, 327, 652, 649, 453, 653, + 0, 293, 527, 370, 0, 414, 343, 592, 593, 0, + 644, 241, 242, 243, 244, 245, 246, 247, 248, 286, + 249, 250, 251, 252, 253, 254, 255, 258, 259, 260, + 261, 262, 263, 264, 265, 595, 256, 257, 266, 267, + 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, + 278, 279, 0, 0, 0, 287, 288, 289, 290, 0, + 0, 281, 282, 283, 284, 0, 0, 0, 478, 479, + 480, 502, 0, 464, 526, 650, 0, 0, 0, 0, + 0, 0, 0, 576, 588, 622, 0, 632, 633, 635, + 637, 636, 639, 438, 439, 0, 641, 642, 643, 640, + 374, 425, 444, 432, 0, 656, 517, 518, 657, 628, + 401, 0, 0, 532, 565, 554, 638, 520, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 336, 0, + 0, 369, 569, 551, 561, 552, 537, 538, 539, 546, + 348, 540, 541, 542, 512, 543, 513, 544, 545, 0, + 568, 519, 434, 385, 586, 585, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 299, 441, 460, 310, 429, 473, 315, 437, 452, - 305, 400, 426, 0, 0, 301, 458, 436, 382, 359, - 360, 300, 0, 420, 334, 350, 331, 398, 0, 457, - 485, 330, 476, 0, 468, 303, 0, 467, 397, 454, - 459, 383, 376, 0, 302, 456, 381, 375, 363, 340, - 501, 364, 365, 354, 409, 373, 410, 355, 387, 386, - 388, 0, 0, 0, 0, 0, 496, 497, 0, 0, - 645, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 627, 0, 0, 631, 0, 470, 0, 0, - 0, 0, 0, 0, 440, 0, 0, 366, 0, 0, - 0, 486, 0, 423, 403, 659, 0, 0, 421, 371, - 455, 411, 461, 442, 469, 417, 412, 294, 443, 333, - 384, 306, 308, 328, 335, 337, 341, 342, 393, 394, - 406, 428, 445, 446, 447, 332, 316, 422, 317, 352, - 318, 295, 324, 322, 325, 430, 326, 297, 407, 451, - 0, 347, 418, 379, 298, 378, 408, 450, 449, 307, - 477, 483, 484, 573, 0, 489, 660, 661, 662, 498, - 0, 413, 503, 504, 505, 507, 508, 509, 510, 574, - 591, 558, 528, 491, 582, 525, 529, 530, 357, 594, - 0, 0, 0, 482, 367, 368, 0, 339, 338, 380, - 416, 345, 291, 292, 655, 329, 399, 596, 629, 630, - 521, 0, 583, 522, 531, 321, 555, 567, 566, 395, - 481, 0, 578, 581, 511, 654, 0, 575, 590, 658, - 589, 651, 405, 0, 427, 587, 534, 0, 579, 553, - 0, 580, 549, 584, 0, 523, 0, 435, 463, 475, - 492, 495, 524, 609, 610, 611, 296, 494, 613, 614, - 615, 616, 617, 618, 619, 612, 466, 556, 533, 559, - 474, 536, 535, 0, 0, 570, 490, 571, 572, 389, - 390, 391, 392, 349, 597, 314, 493, 415, 0, 557, - 0, 0, 0, 0, 0, 0, 0, 0, 562, 563, - 560, 663, 0, 620, 621, 0, 0, 487, 488, 344, - 351, 506, 353, 313, 404, 346, 472, 361, 0, 499, - 564, 500, 623, 626, 624, 625, 396, 356, 358, 431, - 362, 372, 419, 471, 402, 424, 311, 462, 433, 377, - 550, 577, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 280, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 605, 604, - 603, 602, 601, 600, 599, 598, 0, 0, 547, 448, - 323, 285, 319, 320, 327, 652, 649, 453, 653, 0, - 293, 527, 370, 0, 414, 343, 592, 593, 0, 644, - 241, 242, 243, 244, 245, 246, 247, 248, 286, 249, - 250, 251, 252, 253, 254, 255, 258, 259, 260, 261, - 262, 263, 264, 265, 595, 256, 257, 266, 267, 268, - 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, - 279, 0, 0, 0, 287, 288, 289, 290, 0, 0, - 281, 282, 283, 284, 0, 0, 0, 478, 479, 480, - 502, 0, 464, 526, 650, 0, 0, 0, 0, 0, - 0, 0, 576, 588, 622, 0, 632, 633, 635, 637, - 636, 639, 438, 439, 0, 641, 642, 643, 640, 374, - 425, 444, 432, 0, 656, 517, 518, 657, 628, 401, - 0, 0, 532, 565, 554, 638, 520, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 336, 0, 0, - 369, 569, 551, 561, 552, 537, 538, 539, 546, 348, - 540, 541, 542, 512, 543, 513, 544, 545, 0, 568, - 519, 434, 385, 586, 585, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 228, 0, 0, 0, + 0, 0, 0, 309, 229, 514, 634, 516, 515, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 312, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 228, 0, 0, 0, 0, - 0, 0, 309, 229, 514, 634, 516, 515, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 312, 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, 3085, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 3099, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 299, - 441, 460, 310, 429, 473, 315, 437, 452, 305, 400, - 426, 0, 0, 301, 458, 436, 382, 359, 360, 300, - 0, 420, 334, 350, 331, 398, 0, 457, 485, 330, - 476, 0, 468, 303, 0, 467, 397, 454, 459, 383, - 376, 0, 302, 456, 381, 375, 363, 340, 501, 364, - 365, 354, 409, 373, 410, 355, 387, 386, 388, 0, - 0, 0, 0, 0, 496, 497, 0, 0, 645, 0, + 299, 441, 460, 310, 429, 473, 315, 437, 452, 305, + 400, 426, 0, 0, 301, 458, 436, 382, 359, 360, + 300, 0, 420, 334, 350, 331, 398, 0, 457, 485, + 330, 476, 0, 468, 303, 0, 467, 397, 454, 459, + 383, 376, 0, 302, 456, 381, 375, 363, 340, 501, + 364, 365, 354, 409, 373, 410, 355, 387, 386, 388, + 0, 0, 0, 0, 0, 496, 497, 0, 0, 645, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 627, 0, 0, 631, 0, 470, 0, 0, 0, 0, - 0, 0, 440, 0, 0, 366, 0, 0, 0, 486, - 0, 423, 403, 659, 0, 0, 421, 371, 455, 411, - 461, 442, 469, 417, 412, 294, 443, 333, 384, 306, - 308, 328, 335, 337, 341, 342, 393, 394, 406, 428, - 445, 446, 447, 332, 316, 422, 317, 352, 318, 295, - 324, 322, 325, 430, 326, 297, 407, 451, 0, 347, - 418, 379, 298, 378, 408, 450, 449, 307, 477, 483, - 484, 573, 0, 489, 660, 661, 662, 498, 0, 413, - 503, 504, 505, 507, 508, 509, 510, 574, 591, 558, - 528, 491, 582, 525, 529, 530, 357, 594, 0, 0, - 0, 482, 367, 368, 0, 339, 338, 380, 416, 345, - 291, 292, 655, 329, 399, 596, 629, 630, 521, 0, - 583, 522, 531, 321, 555, 567, 566, 395, 481, 0, - 578, 581, 511, 654, 0, 575, 590, 658, 589, 651, - 405, 0, 427, 587, 534, 0, 579, 553, 0, 580, - 549, 584, 0, 523, 0, 435, 463, 475, 492, 495, - 524, 609, 610, 611, 296, 494, 613, 614, 615, 616, - 617, 618, 619, 612, 466, 556, 533, 559, 474, 536, - 535, 0, 0, 570, 490, 571, 572, 389, 390, 391, - 392, 349, 597, 314, 493, 415, 0, 557, 0, 0, - 0, 0, 0, 0, 0, 0, 562, 563, 560, 663, - 0, 620, 621, 0, 0, 487, 488, 344, 351, 506, - 353, 313, 404, 346, 472, 361, 0, 499, 564, 500, - 623, 626, 624, 625, 396, 356, 358, 431, 362, 372, - 419, 471, 402, 424, 311, 462, 433, 377, 550, 577, + 0, 627, 0, 0, 631, 0, 470, 0, 0, 0, + 0, 0, 0, 440, 0, 0, 366, 0, 0, 0, + 486, 0, 423, 403, 659, 0, 0, 421, 371, 455, + 411, 461, 442, 469, 417, 412, 294, 443, 333, 384, + 306, 308, 328, 335, 337, 341, 342, 393, 394, 406, + 428, 445, 446, 447, 332, 316, 422, 317, 352, 318, + 295, 324, 322, 325, 430, 326, 297, 407, 451, 0, + 347, 418, 379, 298, 378, 408, 450, 449, 307, 477, + 483, 484, 573, 0, 489, 660, 661, 662, 498, 0, + 413, 503, 504, 505, 507, 508, 509, 510, 574, 591, + 558, 528, 491, 582, 525, 529, 530, 357, 594, 0, + 0, 0, 482, 367, 368, 0, 339, 338, 380, 416, + 345, 291, 292, 655, 329, 399, 596, 629, 630, 521, + 0, 583, 522, 531, 321, 555, 567, 566, 395, 481, + 0, 578, 581, 511, 654, 0, 575, 590, 658, 589, + 651, 405, 0, 427, 587, 534, 0, 579, 553, 0, + 580, 549, 584, 0, 523, 0, 435, 463, 475, 492, + 495, 524, 609, 610, 611, 296, 494, 613, 614, 615, + 616, 617, 618, 619, 612, 466, 556, 533, 559, 474, + 536, 535, 0, 0, 570, 490, 571, 572, 389, 390, + 391, 392, 349, 597, 314, 493, 415, 0, 557, 0, + 0, 0, 0, 0, 0, 0, 0, 562, 563, 560, + 663, 0, 620, 621, 0, 0, 487, 488, 344, 351, + 506, 353, 313, 404, 346, 472, 361, 0, 499, 564, + 500, 623, 626, 624, 625, 396, 356, 358, 431, 362, + 372, 419, 471, 402, 424, 311, 462, 433, 377, 550, + 577, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 280, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 605, 604, 603, + 602, 601, 600, 599, 598, 0, 0, 547, 448, 323, + 285, 319, 320, 327, 652, 649, 453, 653, 0, 293, + 527, 370, 0, 414, 343, 592, 593, 0, 644, 241, + 242, 243, 244, 245, 246, 247, 248, 286, 249, 250, + 251, 252, 253, 254, 255, 258, 259, 260, 261, 262, + 263, 264, 265, 595, 256, 257, 266, 267, 268, 269, + 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, + 0, 0, 0, 287, 288, 289, 290, 0, 0, 281, + 282, 283, 284, 0, 0, 0, 478, 479, 480, 502, + 0, 464, 526, 650, 0, 0, 0, 0, 0, 0, + 0, 576, 588, 622, 0, 632, 633, 635, 637, 636, + 639, 438, 439, 0, 641, 642, 643, 640, 374, 425, + 444, 432, 0, 656, 517, 518, 657, 628, 401, 0, + 0, 532, 565, 554, 638, 520, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 336, 0, 0, 369, + 569, 551, 561, 552, 537, 538, 539, 546, 348, 540, + 541, 542, 512, 543, 513, 544, 545, 0, 568, 519, + 434, 385, 586, 585, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 228, 0, 0, 1554, 0, 0, + 0, 309, 229, 514, 634, 516, 515, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 312, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 280, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 605, 604, 603, 602, - 601, 600, 599, 598, 0, 0, 547, 448, 323, 285, - 319, 320, 327, 652, 649, 453, 653, 0, 293, 527, - 370, 0, 414, 343, 592, 593, 0, 644, 241, 242, - 243, 244, 245, 246, 247, 248, 286, 249, 250, 251, - 252, 253, 254, 255, 258, 259, 260, 261, 262, 263, - 264, 265, 595, 256, 257, 266, 267, 268, 269, 270, - 271, 272, 273, 274, 275, 276, 277, 278, 279, 0, - 0, 0, 287, 288, 289, 290, 0, 0, 281, 282, - 283, 284, 0, 0, 0, 478, 479, 480, 502, 0, - 464, 526, 650, 0, 0, 0, 0, 0, 0, 0, - 576, 588, 622, 0, 632, 633, 635, 637, 636, 639, - 438, 439, 0, 641, 642, 643, 640, 374, 425, 444, - 432, 0, 656, 517, 518, 657, 628, 401, 0, 0, - 532, 565, 554, 638, 520, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 336, 0, 0, 369, 569, - 551, 561, 552, 537, 538, 539, 546, 348, 540, 541, - 542, 512, 543, 513, 544, 545, 0, 568, 519, 434, - 385, 586, 585, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 228, 0, 0, 1560, 0, 0, 0, - 309, 229, 514, 634, 516, 515, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 312, 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, 299, 441, + 460, 310, 429, 473, 315, 437, 452, 305, 400, 426, + 0, 0, 301, 458, 436, 382, 359, 360, 300, 0, + 420, 334, 350, 331, 398, 0, 457, 485, 330, 476, + 0, 468, 303, 0, 467, 397, 454, 459, 383, 376, + 0, 302, 456, 381, 375, 363, 340, 501, 364, 365, + 354, 409, 373, 410, 355, 387, 386, 388, 0, 0, + 0, 0, 0, 496, 497, 0, 0, 645, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 627, + 0, 0, 631, 0, 470, 0, 0, 0, 0, 0, + 0, 440, 0, 0, 366, 0, 0, 0, 486, 0, + 423, 403, 659, 0, 0, 421, 371, 455, 411, 461, + 442, 469, 417, 412, 294, 443, 333, 384, 306, 308, + 328, 335, 337, 341, 342, 393, 394, 406, 428, 445, + 446, 447, 332, 316, 422, 317, 352, 318, 295, 324, + 322, 325, 430, 326, 297, 407, 451, 0, 347, 418, + 379, 298, 378, 408, 450, 449, 307, 477, 483, 484, + 573, 0, 489, 660, 661, 662, 498, 0, 413, 503, + 504, 505, 507, 508, 509, 510, 574, 591, 558, 528, + 491, 582, 525, 529, 530, 357, 594, 0, 0, 0, + 482, 367, 368, 0, 339, 338, 380, 416, 345, 291, + 292, 655, 329, 399, 596, 629, 630, 521, 0, 583, + 522, 531, 321, 555, 567, 566, 395, 481, 0, 578, + 581, 511, 654, 0, 575, 590, 658, 589, 651, 405, + 0, 427, 587, 534, 0, 579, 553, 0, 580, 549, + 584, 0, 523, 0, 435, 463, 475, 492, 495, 524, + 609, 610, 611, 296, 494, 613, 614, 615, 616, 617, + 618, 619, 612, 466, 556, 533, 559, 474, 536, 535, + 0, 0, 570, 490, 571, 572, 389, 390, 391, 392, + 349, 597, 314, 493, 415, 0, 557, 0, 0, 0, + 0, 0, 0, 0, 0, 562, 563, 560, 663, 0, + 620, 621, 0, 0, 487, 488, 344, 351, 506, 353, + 313, 404, 346, 472, 361, 0, 499, 564, 500, 623, + 626, 624, 625, 396, 356, 358, 431, 362, 372, 419, + 471, 402, 424, 311, 462, 433, 377, 550, 577, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 280, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 605, 604, 603, 602, 601, + 600, 599, 598, 0, 0, 547, 448, 323, 285, 319, + 320, 327, 652, 649, 453, 653, 0, 293, 527, 370, + 0, 414, 343, 592, 593, 0, 644, 241, 242, 243, + 244, 245, 246, 247, 248, 286, 249, 250, 251, 252, + 253, 254, 255, 258, 259, 260, 261, 262, 263, 264, + 265, 595, 256, 257, 266, 267, 268, 269, 270, 271, + 272, 273, 274, 275, 276, 277, 278, 279, 0, 0, + 0, 287, 288, 289, 290, 0, 0, 281, 282, 283, + 284, 0, 0, 0, 478, 479, 480, 502, 0, 464, + 526, 650, 0, 0, 0, 0, 0, 0, 0, 576, + 588, 622, 0, 632, 633, 635, 637, 636, 639, 438, + 439, 0, 641, 642, 643, 640, 374, 425, 444, 432, + 0, 656, 517, 518, 657, 628, 401, 0, 0, 532, + 565, 554, 638, 520, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 336, 0, 0, 369, 569, 551, + 561, 552, 537, 538, 539, 546, 348, 540, 541, 542, + 512, 543, 513, 544, 545, 0, 568, 519, 434, 385, + 586, 585, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 228, 0, 0, 2529, 0, 0, 0, 309, + 229, 514, 634, 516, 515, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 312, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 299, 441, 460, - 310, 429, 473, 315, 437, 452, 305, 400, 426, 0, - 0, 301, 458, 436, 382, 359, 360, 300, 0, 420, - 334, 350, 331, 398, 0, 457, 485, 330, 476, 0, - 468, 303, 0, 467, 397, 454, 459, 383, 376, 0, - 302, 456, 381, 375, 363, 340, 501, 364, 365, 354, - 409, 373, 410, 355, 387, 386, 388, 0, 0, 0, - 0, 0, 496, 497, 0, 0, 645, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 627, 0, - 0, 631, 0, 470, 0, 0, 0, 0, 0, 0, - 440, 0, 0, 366, 0, 0, 0, 486, 0, 423, - 403, 659, 0, 0, 421, 371, 455, 411, 461, 442, - 469, 417, 412, 294, 443, 333, 384, 306, 308, 328, - 335, 337, 341, 342, 393, 394, 406, 428, 445, 446, - 447, 332, 316, 422, 317, 352, 318, 295, 324, 322, - 325, 430, 326, 297, 407, 451, 0, 347, 418, 379, - 298, 378, 408, 450, 449, 307, 477, 483, 484, 573, - 0, 489, 660, 661, 662, 498, 0, 413, 503, 504, - 505, 507, 508, 509, 510, 574, 591, 558, 528, 491, - 582, 525, 529, 530, 357, 594, 0, 0, 0, 482, - 367, 368, 0, 339, 338, 380, 416, 345, 291, 292, - 655, 329, 399, 596, 629, 630, 521, 0, 583, 522, - 531, 321, 555, 567, 566, 395, 481, 0, 578, 581, - 511, 654, 0, 575, 590, 658, 589, 651, 405, 0, - 427, 587, 534, 0, 579, 553, 0, 580, 549, 584, - 0, 523, 0, 435, 463, 475, 492, 495, 524, 609, - 610, 611, 296, 494, 613, 614, 615, 616, 617, 618, - 619, 612, 466, 556, 533, 559, 474, 536, 535, 0, - 0, 570, 490, 571, 572, 389, 390, 391, 392, 349, - 597, 314, 493, 415, 0, 557, 0, 0, 0, 0, - 0, 0, 0, 0, 562, 563, 560, 663, 0, 620, - 621, 0, 0, 487, 488, 344, 351, 506, 353, 313, - 404, 346, 472, 361, 0, 499, 564, 500, 623, 626, - 624, 625, 396, 356, 358, 431, 362, 372, 419, 471, - 402, 424, 311, 462, 433, 377, 550, 577, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 280, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 605, 604, 603, 602, 601, 600, - 599, 598, 0, 0, 547, 448, 323, 285, 319, 320, - 327, 652, 649, 453, 653, 0, 293, 527, 370, 0, - 414, 343, 592, 593, 0, 644, 241, 242, 243, 244, - 245, 246, 247, 248, 286, 249, 250, 251, 252, 253, - 254, 255, 258, 259, 260, 261, 262, 263, 264, 265, - 595, 256, 257, 266, 267, 268, 269, 270, 271, 272, - 273, 274, 275, 276, 277, 278, 279, 0, 0, 0, - 287, 288, 289, 290, 0, 0, 281, 282, 283, 284, - 0, 0, 0, 478, 479, 480, 502, 0, 464, 526, - 650, 0, 0, 0, 0, 0, 0, 0, 576, 588, - 622, 0, 632, 633, 635, 637, 636, 639, 438, 439, - 0, 641, 642, 643, 640, 374, 425, 444, 432, 0, - 656, 517, 518, 657, 628, 401, 0, 0, 532, 565, - 554, 638, 520, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 336, 0, 0, 369, 569, 551, 561, - 552, 537, 538, 539, 546, 348, 540, 541, 542, 512, - 543, 513, 544, 545, 0, 568, 519, 434, 385, 586, - 585, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 228, 0, 0, 2541, 0, 0, 0, 309, 229, - 514, 634, 516, 515, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 312, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 299, 441, 460, 310, + 429, 473, 315, 437, 452, 305, 400, 426, 0, 0, + 301, 458, 436, 382, 359, 360, 300, 0, 420, 334, + 350, 331, 398, 0, 457, 485, 330, 476, 0, 468, + 303, 0, 467, 397, 454, 459, 383, 376, 0, 302, + 456, 381, 375, 363, 340, 501, 364, 365, 354, 409, + 373, 410, 355, 387, 386, 388, 0, 0, 0, 0, + 0, 496, 497, 0, 0, 645, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 627, 0, 0, + 631, 0, 470, 0, 0, 0, 0, 0, 0, 440, + 0, 0, 366, 0, 0, 0, 486, 0, 423, 403, + 659, 0, 0, 421, 371, 455, 411, 461, 442, 469, + 417, 412, 294, 443, 333, 384, 306, 308, 328, 335, + 337, 341, 342, 393, 394, 406, 428, 445, 446, 447, + 332, 316, 422, 317, 352, 318, 295, 324, 322, 325, + 430, 326, 297, 407, 451, 0, 347, 418, 379, 298, + 378, 408, 450, 449, 307, 477, 483, 484, 573, 0, + 489, 660, 661, 662, 498, 0, 413, 503, 504, 505, + 507, 508, 509, 510, 574, 591, 558, 528, 491, 582, + 525, 529, 530, 357, 594, 0, 0, 0, 482, 367, + 368, 0, 339, 338, 380, 416, 345, 291, 292, 655, + 329, 399, 596, 629, 630, 521, 0, 583, 522, 531, + 321, 555, 567, 566, 395, 481, 0, 578, 581, 511, + 654, 0, 575, 590, 658, 589, 651, 405, 0, 427, + 587, 534, 0, 579, 553, 0, 580, 549, 584, 0, + 523, 0, 435, 463, 475, 492, 495, 524, 609, 610, + 611, 296, 494, 613, 614, 615, 616, 617, 618, 619, + 612, 466, 556, 533, 559, 474, 536, 535, 0, 0, + 570, 490, 571, 572, 389, 390, 391, 392, 349, 597, + 314, 493, 415, 0, 557, 0, 0, 0, 0, 0, + 0, 0, 0, 562, 563, 560, 663, 0, 620, 621, + 0, 0, 487, 488, 344, 351, 506, 353, 313, 404, + 346, 472, 361, 0, 499, 564, 500, 623, 626, 624, + 625, 396, 356, 358, 431, 362, 372, 419, 471, 402, + 424, 311, 462, 433, 377, 550, 577, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 280, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 605, 604, 603, 602, 601, 600, 599, + 598, 0, 0, 547, 448, 323, 285, 319, 320, 327, + 652, 649, 453, 653, 0, 293, 527, 370, 0, 414, + 343, 592, 593, 0, 644, 241, 242, 243, 244, 245, + 246, 247, 248, 286, 249, 250, 251, 252, 253, 254, + 255, 258, 259, 260, 261, 262, 263, 264, 265, 595, + 256, 257, 266, 267, 268, 269, 270, 271, 272, 273, + 274, 275, 276, 277, 278, 279, 0, 0, 0, 287, + 288, 289, 290, 0, 0, 281, 282, 283, 284, 0, + 0, 0, 478, 479, 480, 502, 0, 464, 526, 650, + 0, 0, 0, 0, 0, 0, 0, 576, 588, 622, + 0, 632, 633, 635, 637, 636, 639, 438, 439, 0, + 641, 642, 643, 640, 374, 425, 444, 432, 0, 656, + 517, 518, 657, 628, 401, 0, 0, 532, 565, 554, + 638, 520, 0, 0, 2895, 0, 0, 0, 0, 0, + 0, 0, 336, 0, 0, 369, 569, 551, 561, 552, + 537, 538, 539, 546, 348, 540, 541, 542, 512, 543, + 513, 544, 545, 0, 568, 519, 434, 385, 586, 585, 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, 299, 441, 460, 310, 429, - 473, 315, 437, 452, 305, 400, 426, 0, 0, 301, - 458, 436, 382, 359, 360, 300, 0, 420, 334, 350, - 331, 398, 0, 457, 485, 330, 476, 0, 468, 303, - 0, 467, 397, 454, 459, 383, 376, 0, 302, 456, - 381, 375, 363, 340, 501, 364, 365, 354, 409, 373, - 410, 355, 387, 386, 388, 0, 0, 0, 0, 0, - 496, 497, 0, 0, 645, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 627, 0, 0, 631, - 0, 470, 0, 0, 0, 0, 0, 0, 440, 0, - 0, 366, 0, 0, 0, 486, 0, 423, 403, 659, - 0, 0, 421, 371, 455, 411, 461, 442, 469, 417, - 412, 294, 443, 333, 384, 306, 308, 328, 335, 337, - 341, 342, 393, 394, 406, 428, 445, 446, 447, 332, - 316, 422, 317, 352, 318, 295, 324, 322, 325, 430, - 326, 297, 407, 451, 0, 347, 418, 379, 298, 378, - 408, 450, 449, 307, 477, 483, 484, 573, 0, 489, - 660, 661, 662, 498, 0, 413, 503, 504, 505, 507, - 508, 509, 510, 574, 591, 558, 528, 491, 582, 525, - 529, 530, 357, 594, 0, 0, 0, 482, 367, 368, - 0, 339, 338, 380, 416, 345, 291, 292, 655, 329, - 399, 596, 629, 630, 521, 0, 583, 522, 531, 321, - 555, 567, 566, 395, 481, 0, 578, 581, 511, 654, - 0, 575, 590, 658, 589, 651, 405, 0, 427, 587, - 534, 0, 579, 553, 0, 580, 549, 584, 0, 523, - 0, 435, 463, 475, 492, 495, 524, 609, 610, 611, - 296, 494, 613, 614, 615, 616, 617, 618, 619, 612, - 466, 556, 533, 559, 474, 536, 535, 0, 0, 570, - 490, 571, 572, 389, 390, 391, 392, 349, 597, 314, - 493, 415, 0, 557, 0, 0, 0, 0, 0, 0, - 0, 0, 562, 563, 560, 663, 0, 620, 621, 0, - 0, 487, 488, 344, 351, 506, 353, 313, 404, 346, - 472, 361, 0, 499, 564, 500, 623, 626, 624, 625, - 396, 356, 358, 431, 362, 372, 419, 471, 402, 424, - 311, 462, 433, 377, 550, 577, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 280, 0, 0, + 228, 0, 0, 0, 0, 0, 0, 309, 229, 514, + 634, 516, 515, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 312, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 605, 604, 603, 602, 601, 600, 599, 598, - 0, 0, 547, 448, 323, 285, 319, 320, 327, 652, - 649, 453, 653, 0, 293, 527, 370, 0, 414, 343, - 592, 593, 0, 644, 241, 242, 243, 244, 245, 246, - 247, 248, 286, 249, 250, 251, 252, 253, 254, 255, - 258, 259, 260, 261, 262, 263, 264, 265, 595, 256, - 257, 266, 267, 268, 269, 270, 271, 272, 273, 274, - 275, 276, 277, 278, 279, 0, 0, 0, 287, 288, - 289, 290, 0, 0, 281, 282, 283, 284, 0, 0, - 0, 478, 479, 480, 502, 0, 464, 526, 650, 0, - 0, 0, 0, 0, 0, 0, 576, 588, 622, 0, - 632, 633, 635, 637, 636, 639, 438, 439, 0, 641, - 642, 643, 640, 374, 425, 444, 432, 0, 656, 517, - 518, 657, 628, 401, 0, 0, 532, 565, 554, 638, - 520, 0, 0, 2909, 0, 0, 0, 0, 0, 0, - 0, 336, 0, 0, 369, 569, 551, 561, 552, 537, - 538, 539, 546, 348, 540, 541, 542, 512, 543, 513, - 544, 545, 0, 568, 519, 434, 385, 586, 585, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 228, - 0, 0, 0, 0, 0, 0, 309, 229, 514, 634, - 516, 515, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 312, 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, 299, 441, 460, 310, 429, 473, + 315, 437, 452, 305, 400, 426, 0, 0, 301, 458, + 436, 382, 359, 360, 300, 0, 420, 334, 350, 331, + 398, 0, 457, 485, 330, 476, 0, 468, 303, 0, + 467, 397, 454, 459, 383, 376, 0, 302, 456, 381, + 375, 363, 340, 501, 364, 365, 354, 409, 373, 410, + 355, 387, 386, 388, 0, 0, 0, 0, 0, 496, + 497, 0, 0, 645, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 627, 0, 0, 631, 0, + 470, 0, 0, 0, 0, 0, 0, 440, 0, 0, + 366, 0, 0, 0, 486, 0, 423, 403, 659, 0, + 0, 421, 371, 455, 411, 461, 442, 469, 417, 412, + 294, 443, 333, 384, 306, 308, 328, 335, 337, 341, + 342, 393, 394, 406, 428, 445, 446, 447, 332, 316, + 422, 317, 352, 318, 295, 324, 322, 325, 430, 326, + 297, 407, 451, 0, 347, 418, 379, 298, 378, 408, + 450, 449, 307, 477, 483, 484, 573, 0, 489, 660, + 661, 662, 498, 0, 413, 503, 504, 505, 507, 508, + 509, 510, 574, 591, 558, 528, 491, 582, 525, 529, + 530, 357, 594, 0, 0, 0, 482, 367, 368, 0, + 339, 338, 380, 416, 345, 291, 292, 655, 329, 399, + 596, 629, 630, 521, 0, 583, 522, 531, 321, 555, + 567, 566, 395, 481, 0, 578, 581, 511, 654, 0, + 575, 590, 658, 589, 651, 405, 0, 427, 587, 534, + 0, 579, 553, 0, 580, 549, 584, 0, 523, 0, + 435, 463, 475, 492, 495, 524, 609, 610, 611, 296, + 494, 613, 614, 615, 616, 617, 618, 619, 612, 466, + 556, 533, 559, 474, 536, 535, 0, 0, 570, 490, + 571, 572, 389, 390, 391, 392, 349, 597, 314, 493, + 415, 0, 557, 0, 0, 0, 0, 0, 0, 0, + 0, 562, 563, 560, 663, 0, 620, 621, 0, 0, + 487, 488, 344, 351, 506, 353, 313, 404, 346, 472, + 361, 0, 499, 564, 500, 623, 626, 624, 625, 396, + 356, 358, 431, 362, 372, 419, 471, 402, 424, 311, + 462, 433, 377, 550, 577, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 280, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 605, 604, 603, 602, 601, 600, 599, 598, 0, + 0, 547, 448, 323, 285, 319, 320, 327, 652, 649, + 453, 653, 0, 293, 527, 370, 0, 414, 343, 592, + 593, 0, 644, 241, 242, 243, 244, 245, 246, 247, + 248, 286, 249, 250, 251, 252, 253, 254, 255, 258, + 259, 260, 261, 262, 263, 264, 265, 595, 256, 257, + 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, + 276, 277, 278, 279, 0, 0, 0, 287, 288, 289, + 290, 0, 0, 281, 282, 283, 284, 0, 0, 0, + 478, 479, 480, 502, 0, 464, 526, 650, 0, 0, + 0, 0, 0, 0, 0, 576, 588, 622, 0, 632, + 633, 635, 637, 636, 639, 438, 439, 0, 641, 642, + 643, 640, 374, 425, 444, 432, 0, 656, 517, 518, + 657, 628, 401, 0, 0, 532, 565, 554, 638, 520, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 299, 441, 460, 310, 429, 473, 315, - 437, 452, 305, 400, 426, 0, 0, 301, 458, 436, - 382, 359, 360, 300, 0, 420, 334, 350, 331, 398, - 0, 457, 485, 330, 476, 0, 468, 303, 0, 467, - 397, 454, 459, 383, 376, 0, 302, 456, 381, 375, - 363, 340, 501, 364, 365, 354, 409, 373, 410, 355, - 387, 386, 388, 0, 0, 0, 0, 0, 496, 497, - 0, 0, 645, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 627, 0, 0, 631, 0, 470, - 0, 0, 0, 0, 0, 0, 440, 0, 0, 366, - 0, 0, 0, 486, 0, 423, 403, 659, 0, 0, - 421, 371, 455, 411, 461, 442, 469, 417, 412, 294, - 443, 333, 384, 306, 308, 328, 335, 337, 341, 342, - 393, 394, 406, 428, 445, 446, 447, 332, 316, 422, - 317, 352, 318, 295, 324, 322, 325, 430, 326, 297, - 407, 451, 0, 347, 418, 379, 298, 378, 408, 450, - 449, 307, 477, 483, 484, 573, 0, 489, 660, 661, - 662, 498, 0, 413, 503, 504, 505, 507, 508, 509, - 510, 574, 591, 558, 528, 491, 582, 525, 529, 530, - 357, 594, 0, 0, 0, 482, 367, 368, 0, 339, - 338, 380, 416, 345, 291, 292, 655, 329, 399, 596, - 629, 630, 521, 0, 583, 522, 531, 321, 555, 567, - 566, 395, 481, 0, 578, 581, 511, 654, 0, 575, - 590, 658, 589, 651, 405, 0, 427, 587, 534, 0, - 579, 553, 0, 580, 549, 584, 0, 523, 0, 435, - 463, 475, 492, 495, 524, 609, 610, 611, 296, 494, - 613, 614, 615, 616, 617, 618, 619, 612, 466, 556, - 533, 559, 474, 536, 535, 0, 0, 570, 490, 571, - 572, 389, 390, 391, 392, 349, 597, 314, 493, 415, - 0, 557, 0, 0, 0, 0, 0, 0, 0, 0, - 562, 563, 560, 663, 0, 620, 621, 0, 0, 487, - 488, 344, 351, 506, 353, 313, 404, 346, 472, 361, - 0, 499, 564, 500, 623, 626, 624, 625, 396, 356, - 358, 431, 362, 372, 419, 471, 402, 424, 311, 462, - 433, 377, 550, 577, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 280, 0, 0, 0, 0, + 336, 0, 0, 369, 569, 551, 561, 552, 537, 538, + 539, 546, 348, 540, 541, 542, 512, 543, 513, 544, + 545, 0, 568, 519, 434, 385, 586, 585, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 605, 604, 603, 602, 601, 600, 599, 598, 0, 0, - 547, 448, 323, 285, 319, 320, 327, 652, 649, 453, - 653, 0, 293, 527, 370, 0, 414, 343, 592, 593, - 0, 644, 241, 242, 243, 244, 245, 246, 247, 248, - 286, 249, 250, 251, 252, 253, 254, 255, 258, 259, - 260, 261, 262, 263, 264, 265, 595, 256, 257, 266, - 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, - 277, 278, 279, 0, 0, 0, 287, 288, 289, 290, - 0, 0, 281, 282, 283, 284, 0, 0, 0, 478, - 479, 480, 502, 0, 464, 526, 650, 0, 0, 0, - 0, 0, 0, 0, 576, 588, 622, 0, 632, 633, - 635, 637, 636, 639, 438, 439, 0, 641, 642, 643, - 640, 374, 425, 444, 432, 0, 656, 517, 518, 657, - 628, 401, 0, 0, 532, 565, 554, 638, 520, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 336, - 0, 0, 369, 569, 551, 561, 552, 537, 538, 539, - 546, 348, 540, 541, 542, 512, 543, 513, 544, 545, - 0, 568, 519, 434, 385, 586, 585, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 228, 0, + 0, 0, 0, 0, 0, 309, 229, 514, 634, 516, + 515, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 312, 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, 228, 0, 0, - 0, 0, 0, 0, 309, 229, 514, 634, 516, 515, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 312, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 2205, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 299, 441, 460, 310, 429, 473, 315, 437, + 452, 305, 400, 426, 0, 0, 301, 458, 436, 382, + 359, 360, 300, 0, 420, 334, 350, 331, 398, 0, + 457, 485, 330, 476, 0, 468, 303, 0, 467, 397, + 454, 459, 383, 376, 0, 302, 456, 381, 375, 363, + 340, 501, 364, 365, 354, 409, 373, 410, 355, 387, + 386, 388, 0, 0, 0, 0, 0, 496, 497, 0, + 0, 645, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 627, 0, 0, 631, 0, 470, 0, + 0, 0, 0, 0, 0, 440, 0, 0, 366, 0, + 0, 0, 486, 0, 423, 403, 659, 0, 0, 421, + 371, 455, 411, 461, 442, 469, 417, 412, 294, 443, + 333, 384, 306, 308, 328, 335, 337, 341, 342, 393, + 394, 406, 428, 445, 446, 447, 332, 316, 422, 317, + 352, 318, 295, 324, 322, 325, 430, 326, 297, 407, + 451, 0, 347, 418, 379, 298, 378, 408, 450, 449, + 307, 477, 483, 484, 573, 0, 489, 660, 661, 662, + 498, 0, 413, 503, 504, 505, 507, 508, 509, 510, + 574, 591, 558, 528, 491, 582, 525, 529, 530, 357, + 594, 0, 0, 0, 482, 367, 368, 0, 339, 338, + 380, 416, 345, 291, 292, 655, 329, 399, 596, 629, + 630, 521, 0, 583, 522, 531, 321, 555, 567, 566, + 395, 481, 0, 578, 581, 511, 654, 0, 575, 590, + 658, 589, 651, 405, 0, 427, 587, 534, 0, 579, + 553, 0, 580, 549, 584, 0, 523, 0, 435, 463, + 475, 492, 495, 524, 609, 610, 611, 296, 494, 613, + 614, 615, 616, 617, 618, 619, 612, 466, 556, 533, + 559, 474, 536, 535, 0, 0, 570, 490, 571, 572, + 389, 390, 391, 392, 349, 597, 314, 493, 415, 0, + 557, 0, 0, 0, 0, 0, 0, 0, 0, 562, + 563, 560, 663, 0, 620, 621, 0, 0, 487, 488, + 344, 351, 506, 353, 313, 404, 346, 472, 361, 0, + 499, 564, 500, 623, 626, 624, 625, 396, 356, 358, + 431, 362, 372, 419, 471, 402, 424, 311, 462, 433, + 377, 550, 577, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 280, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 605, + 604, 603, 602, 601, 600, 599, 598, 0, 0, 547, + 448, 323, 285, 319, 320, 327, 652, 649, 453, 653, + 0, 293, 527, 370, 0, 414, 343, 592, 593, 0, + 644, 241, 242, 243, 244, 245, 246, 247, 248, 286, + 249, 250, 251, 252, 253, 254, 255, 258, 259, 260, + 261, 262, 263, 264, 265, 595, 256, 257, 266, 267, + 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, + 278, 279, 0, 0, 0, 287, 288, 289, 290, 0, + 0, 281, 282, 283, 284, 0, 0, 0, 478, 479, + 480, 502, 0, 464, 526, 650, 0, 0, 0, 0, + 0, 0, 0, 576, 588, 622, 0, 632, 633, 635, + 637, 636, 639, 438, 439, 0, 641, 642, 643, 640, + 374, 425, 444, 432, 0, 656, 517, 518, 657, 628, + 401, 0, 0, 532, 565, 554, 638, 520, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 336, 0, + 0, 369, 569, 551, 561, 552, 537, 538, 539, 546, + 348, 540, 541, 542, 512, 543, 513, 544, 545, 0, + 568, 519, 434, 385, 586, 585, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 2216, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 228, 0, 0, 2646, + 0, 0, 0, 309, 229, 514, 634, 516, 515, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 312, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 299, 441, 460, 310, 429, 473, 315, 437, 452, - 305, 400, 426, 0, 0, 301, 458, 436, 382, 359, - 360, 300, 0, 420, 334, 350, 331, 398, 0, 457, - 485, 330, 476, 0, 468, 303, 0, 467, 397, 454, - 459, 383, 376, 0, 302, 456, 381, 375, 363, 340, - 501, 364, 365, 354, 409, 373, 410, 355, 387, 386, - 388, 0, 0, 0, 0, 0, 496, 497, 0, 0, - 645, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 627, 0, 0, 631, 0, 470, 0, 0, - 0, 0, 0, 0, 440, 0, 0, 366, 0, 0, - 0, 486, 0, 423, 403, 659, 0, 0, 421, 371, - 455, 411, 461, 442, 469, 417, 412, 294, 443, 333, - 384, 306, 308, 328, 335, 337, 341, 342, 393, 394, - 406, 428, 445, 446, 447, 332, 316, 422, 317, 352, - 318, 295, 324, 322, 325, 430, 326, 297, 407, 451, - 0, 347, 418, 379, 298, 378, 408, 450, 449, 307, - 477, 483, 484, 573, 0, 489, 660, 661, 662, 498, - 0, 413, 503, 504, 505, 507, 508, 509, 510, 574, - 591, 558, 528, 491, 582, 525, 529, 530, 357, 594, - 0, 0, 0, 482, 367, 368, 0, 339, 338, 380, - 416, 345, 291, 292, 655, 329, 399, 596, 629, 630, - 521, 0, 583, 522, 531, 321, 555, 567, 566, 395, - 481, 0, 578, 581, 511, 654, 0, 575, 590, 658, - 589, 651, 405, 0, 427, 587, 534, 0, 579, 553, - 0, 580, 549, 584, 0, 523, 0, 435, 463, 475, - 492, 495, 524, 609, 610, 611, 296, 494, 613, 614, - 615, 616, 617, 618, 619, 612, 466, 556, 533, 559, - 474, 536, 535, 0, 0, 570, 490, 571, 572, 389, - 390, 391, 392, 349, 597, 314, 493, 415, 0, 557, - 0, 0, 0, 0, 0, 0, 0, 0, 562, 563, - 560, 663, 0, 620, 621, 0, 0, 487, 488, 344, - 351, 506, 353, 313, 404, 346, 472, 361, 0, 499, - 564, 500, 623, 626, 624, 625, 396, 356, 358, 431, - 362, 372, 419, 471, 402, 424, 311, 462, 433, 377, - 550, 577, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 280, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 605, 604, - 603, 602, 601, 600, 599, 598, 0, 0, 547, 448, - 323, 285, 319, 320, 327, 652, 649, 453, 653, 0, - 293, 527, 370, 0, 414, 343, 592, 593, 0, 644, - 241, 242, 243, 244, 245, 246, 247, 248, 286, 249, - 250, 251, 252, 253, 254, 255, 258, 259, 260, 261, - 262, 263, 264, 265, 595, 256, 257, 266, 267, 268, - 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, - 279, 0, 0, 0, 287, 288, 289, 290, 0, 0, - 281, 282, 283, 284, 0, 0, 0, 478, 479, 480, - 502, 0, 464, 526, 650, 0, 0, 0, 0, 0, - 0, 0, 576, 588, 622, 0, 632, 633, 635, 637, - 636, 639, 438, 439, 0, 641, 642, 643, 640, 374, - 425, 444, 432, 0, 656, 517, 518, 657, 628, 401, - 0, 0, 532, 565, 554, 638, 520, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 336, 0, 0, - 369, 569, 551, 561, 552, 537, 538, 539, 546, 348, - 540, 541, 542, 512, 543, 513, 544, 545, 0, 568, - 519, 434, 385, 586, 585, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 228, 0, 0, 2659, 0, - 0, 0, 309, 229, 514, 634, 516, 515, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 312, 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, + 299, 441, 460, 310, 429, 473, 315, 437, 452, 305, + 400, 426, 0, 0, 301, 458, 436, 382, 359, 360, + 300, 0, 420, 334, 350, 331, 398, 0, 457, 485, + 330, 476, 0, 468, 303, 0, 467, 397, 454, 459, + 383, 376, 0, 302, 456, 381, 375, 363, 340, 501, + 364, 365, 354, 409, 373, 410, 355, 387, 386, 388, + 0, 0, 0, 0, 0, 496, 497, 0, 0, 645, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 299, - 441, 460, 310, 429, 473, 315, 437, 452, 305, 400, - 426, 0, 0, 301, 458, 436, 382, 359, 360, 300, - 0, 420, 334, 350, 331, 398, 0, 457, 485, 330, - 476, 0, 468, 303, 0, 467, 397, 454, 459, 383, - 376, 0, 302, 456, 381, 375, 363, 340, 501, 364, - 365, 354, 409, 373, 410, 355, 387, 386, 388, 0, - 0, 0, 0, 0, 496, 497, 0, 0, 645, 0, + 0, 627, 0, 0, 631, 0, 470, 0, 0, 0, + 0, 0, 0, 440, 0, 0, 366, 0, 0, 0, + 486, 0, 423, 403, 659, 0, 0, 421, 371, 455, + 411, 461, 442, 469, 417, 412, 294, 443, 333, 384, + 306, 308, 328, 335, 337, 341, 342, 393, 394, 406, + 428, 445, 446, 447, 332, 316, 422, 317, 352, 318, + 295, 324, 322, 325, 430, 326, 297, 407, 451, 0, + 347, 418, 379, 298, 378, 408, 450, 449, 307, 477, + 483, 484, 573, 0, 489, 660, 661, 662, 498, 0, + 413, 503, 504, 505, 507, 508, 509, 510, 574, 591, + 558, 528, 491, 582, 525, 529, 530, 357, 594, 0, + 0, 0, 482, 367, 368, 0, 339, 338, 380, 416, + 345, 291, 292, 655, 329, 399, 596, 629, 630, 521, + 0, 583, 522, 531, 321, 555, 567, 566, 395, 481, + 0, 578, 581, 511, 654, 0, 575, 590, 658, 589, + 651, 405, 0, 427, 587, 534, 0, 579, 553, 0, + 580, 549, 584, 0, 523, 0, 435, 463, 475, 492, + 495, 524, 609, 610, 611, 296, 494, 613, 614, 615, + 616, 617, 618, 619, 612, 466, 556, 533, 559, 474, + 536, 535, 0, 0, 570, 490, 571, 572, 389, 390, + 391, 392, 349, 597, 314, 493, 415, 0, 557, 0, + 0, 0, 0, 0, 0, 0, 0, 562, 563, 560, + 663, 0, 620, 621, 0, 0, 487, 488, 344, 351, + 506, 353, 313, 404, 346, 472, 361, 0, 499, 564, + 500, 623, 626, 624, 625, 396, 356, 358, 431, 362, + 372, 419, 471, 402, 424, 311, 462, 433, 377, 550, + 577, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 280, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 605, 604, 603, + 602, 601, 600, 599, 598, 0, 0, 547, 448, 323, + 285, 319, 320, 327, 652, 649, 453, 653, 0, 293, + 527, 370, 0, 414, 343, 592, 593, 0, 644, 241, + 242, 243, 244, 245, 246, 247, 248, 286, 249, 250, + 251, 252, 253, 254, 255, 258, 259, 260, 261, 262, + 263, 264, 265, 595, 256, 257, 266, 267, 268, 269, + 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, + 0, 0, 0, 287, 288, 289, 290, 0, 0, 281, + 282, 283, 284, 0, 0, 0, 478, 479, 480, 502, + 0, 464, 526, 650, 0, 0, 0, 0, 0, 0, + 0, 576, 588, 622, 0, 632, 633, 635, 637, 636, + 639, 438, 439, 0, 641, 642, 643, 640, 374, 425, + 444, 432, 0, 656, 517, 518, 657, 628, 401, 0, + 0, 532, 565, 554, 638, 520, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 336, 0, 0, 369, + 569, 551, 561, 552, 537, 538, 539, 546, 348, 540, + 541, 542, 512, 543, 513, 544, 545, 0, 568, 519, + 434, 385, 586, 585, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 627, 0, 0, 631, 0, 470, 0, 0, 0, 0, - 0, 0, 440, 0, 0, 366, 0, 0, 0, 486, - 0, 423, 403, 659, 0, 0, 421, 371, 455, 411, - 461, 442, 469, 417, 412, 294, 443, 333, 384, 306, - 308, 328, 335, 337, 341, 342, 393, 394, 406, 428, - 445, 446, 447, 332, 316, 422, 317, 352, 318, 295, - 324, 322, 325, 430, 326, 297, 407, 451, 0, 347, - 418, 379, 298, 378, 408, 450, 449, 307, 477, 483, - 484, 573, 0, 489, 660, 661, 662, 498, 0, 413, - 503, 504, 505, 507, 508, 509, 510, 574, 591, 558, - 528, 491, 582, 525, 529, 530, 357, 594, 0, 0, - 0, 482, 367, 368, 0, 339, 338, 380, 416, 345, - 291, 292, 655, 329, 399, 596, 629, 630, 521, 0, - 583, 522, 531, 321, 555, 567, 566, 395, 481, 0, - 578, 581, 511, 654, 0, 575, 590, 658, 589, 651, - 405, 0, 427, 587, 534, 0, 579, 553, 0, 580, - 549, 584, 0, 523, 0, 435, 463, 475, 492, 495, - 524, 609, 610, 611, 296, 494, 613, 614, 615, 616, - 617, 618, 619, 612, 466, 556, 533, 559, 474, 536, - 535, 0, 0, 570, 490, 571, 572, 389, 390, 391, - 392, 349, 597, 314, 493, 415, 0, 557, 0, 0, - 0, 0, 0, 0, 0, 0, 562, 563, 560, 663, - 0, 620, 621, 0, 0, 487, 488, 344, 351, 506, - 353, 313, 404, 346, 472, 361, 0, 499, 564, 500, - 623, 626, 624, 625, 396, 356, 358, 431, 362, 372, - 419, 471, 402, 424, 311, 462, 433, 377, 550, 577, + 0, 0, 0, 0, 228, 0, 0, 0, 0, 0, + 0, 309, 229, 514, 634, 516, 515, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 312, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 280, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 605, 604, 603, 602, - 601, 600, 599, 598, 0, 0, 547, 448, 323, 285, - 319, 320, 327, 652, 649, 453, 653, 0, 293, 527, - 370, 0, 414, 343, 592, 593, 0, 644, 241, 242, - 243, 244, 245, 246, 247, 248, 286, 249, 250, 251, - 252, 253, 254, 255, 258, 259, 260, 261, 262, 263, - 264, 265, 595, 256, 257, 266, 267, 268, 269, 270, - 271, 272, 273, 274, 275, 276, 277, 278, 279, 0, - 0, 0, 287, 288, 289, 290, 0, 0, 281, 282, - 283, 284, 0, 0, 0, 478, 479, 480, 502, 0, - 464, 526, 650, 0, 0, 0, 0, 0, 0, 0, - 576, 588, 622, 0, 632, 633, 635, 637, 636, 639, - 438, 439, 0, 641, 642, 643, 640, 374, 425, 444, - 432, 0, 656, 517, 518, 657, 628, 401, 0, 0, - 532, 565, 554, 638, 520, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 336, 0, 0, 369, 569, - 551, 561, 552, 537, 538, 539, 546, 348, 540, 541, - 542, 512, 543, 513, 544, 545, 0, 568, 519, 434, - 385, 586, 585, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 228, 0, 0, 0, 0, 0, 0, - 309, 229, 514, 634, 516, 515, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 312, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2608, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 299, 441, + 460, 310, 429, 473, 315, 437, 452, 305, 400, 426, + 0, 0, 301, 458, 436, 382, 359, 360, 300, 0, + 420, 334, 350, 331, 398, 0, 457, 485, 330, 476, + 0, 468, 303, 0, 467, 397, 454, 459, 383, 376, + 0, 302, 456, 381, 375, 363, 340, 501, 364, 365, + 354, 409, 373, 410, 355, 387, 386, 388, 0, 0, + 0, 0, 0, 496, 497, 0, 0, 645, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 627, + 0, 0, 631, 0, 470, 0, 0, 0, 0, 0, + 0, 440, 0, 0, 366, 0, 0, 0, 486, 0, + 423, 403, 659, 0, 0, 421, 371, 455, 411, 461, + 442, 469, 417, 412, 294, 443, 333, 384, 306, 308, + 328, 335, 337, 341, 342, 393, 394, 406, 428, 445, + 446, 447, 332, 316, 422, 317, 352, 318, 295, 324, + 322, 325, 430, 326, 297, 407, 451, 0, 347, 418, + 379, 298, 378, 408, 450, 449, 307, 477, 483, 484, + 573, 0, 489, 660, 661, 662, 498, 0, 413, 503, + 504, 505, 507, 508, 509, 510, 574, 591, 558, 528, + 491, 582, 525, 529, 530, 357, 594, 0, 0, 0, + 482, 367, 368, 0, 339, 338, 380, 416, 345, 291, + 292, 655, 329, 399, 596, 629, 630, 521, 0, 583, + 522, 531, 321, 555, 567, 566, 395, 481, 0, 578, + 581, 511, 654, 0, 575, 590, 658, 589, 651, 405, + 0, 427, 587, 534, 0, 579, 553, 0, 580, 549, + 584, 0, 523, 0, 435, 463, 475, 492, 495, 524, + 609, 610, 611, 296, 494, 613, 614, 615, 616, 617, + 618, 619, 612, 466, 556, 533, 559, 474, 536, 535, + 0, 0, 570, 490, 571, 572, 389, 390, 391, 392, + 349, 597, 314, 493, 415, 0, 557, 0, 0, 0, + 0, 0, 0, 0, 0, 562, 563, 560, 663, 0, + 620, 621, 0, 0, 487, 488, 344, 351, 506, 353, + 313, 404, 346, 472, 361, 0, 499, 564, 500, 623, + 626, 624, 625, 396, 356, 358, 431, 362, 372, 419, + 471, 402, 424, 311, 462, 433, 377, 550, 577, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 280, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 605, 604, 603, 602, 601, + 600, 599, 598, 0, 0, 547, 448, 323, 285, 319, + 320, 327, 652, 649, 453, 653, 0, 293, 527, 370, + 0, 414, 343, 592, 593, 0, 644, 241, 242, 243, + 244, 245, 246, 247, 248, 286, 249, 250, 251, 252, + 253, 254, 255, 258, 259, 260, 261, 262, 263, 264, + 265, 595, 256, 257, 266, 267, 268, 269, 270, 271, + 272, 273, 274, 275, 276, 277, 278, 279, 0, 0, + 0, 287, 288, 289, 290, 0, 0, 281, 282, 283, + 284, 0, 0, 0, 478, 479, 480, 502, 0, 464, + 526, 650, 0, 0, 0, 0, 0, 0, 0, 576, + 588, 622, 0, 632, 633, 635, 637, 636, 639, 438, + 439, 0, 641, 642, 643, 640, 374, 425, 444, 432, + 0, 656, 517, 518, 657, 628, 401, 0, 0, 532, + 565, 554, 638, 520, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 336, 0, 0, 369, 569, 551, + 561, 552, 537, 538, 539, 546, 348, 540, 541, 542, + 512, 543, 513, 544, 545, 0, 568, 519, 434, 385, + 586, 585, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 2620, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 299, 441, 460, - 310, 429, 473, 315, 437, 452, 305, 400, 426, 0, - 0, 301, 458, 436, 382, 359, 360, 300, 0, 420, - 334, 350, 331, 398, 0, 457, 485, 330, 476, 0, - 468, 303, 0, 467, 397, 454, 459, 383, 376, 0, - 302, 456, 381, 375, 363, 340, 501, 364, 365, 354, - 409, 373, 410, 355, 387, 386, 388, 0, 0, 0, - 0, 0, 496, 497, 0, 0, 645, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 627, 0, - 0, 631, 0, 470, 0, 0, 0, 0, 0, 0, - 440, 0, 0, 366, 0, 0, 0, 486, 0, 423, - 403, 659, 0, 0, 421, 371, 455, 411, 461, 442, - 469, 417, 412, 294, 443, 333, 384, 306, 308, 328, - 335, 337, 341, 342, 393, 394, 406, 428, 445, 446, - 447, 332, 316, 422, 317, 352, 318, 295, 324, 322, - 325, 430, 326, 297, 407, 451, 0, 347, 418, 379, - 298, 378, 408, 450, 449, 307, 477, 483, 484, 573, - 0, 489, 660, 661, 662, 498, 0, 413, 503, 504, - 505, 507, 508, 509, 510, 574, 591, 558, 528, 491, - 582, 525, 529, 530, 357, 594, 0, 0, 0, 482, - 367, 368, 0, 339, 338, 380, 416, 345, 291, 292, - 655, 329, 399, 596, 629, 630, 521, 0, 583, 522, - 531, 321, 555, 567, 566, 395, 481, 0, 578, 581, - 511, 654, 0, 575, 590, 658, 589, 651, 405, 0, - 427, 587, 534, 0, 579, 553, 0, 580, 549, 584, - 0, 523, 0, 435, 463, 475, 492, 495, 524, 609, - 610, 611, 296, 494, 613, 614, 615, 616, 617, 618, - 619, 612, 466, 556, 533, 559, 474, 536, 535, 0, - 0, 570, 490, 571, 572, 389, 390, 391, 392, 349, - 597, 314, 493, 415, 0, 557, 0, 0, 0, 0, - 0, 0, 0, 0, 562, 563, 560, 663, 0, 620, - 621, 0, 0, 487, 488, 344, 351, 506, 353, 313, - 404, 346, 472, 361, 0, 499, 564, 500, 623, 626, - 624, 625, 396, 356, 358, 431, 362, 372, 419, 471, - 402, 424, 311, 462, 433, 377, 550, 577, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 280, + 0, 0, 228, 0, 0, 2606, 0, 0, 0, 309, + 229, 514, 634, 516, 515, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 312, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 605, 604, 603, 602, 601, 600, - 599, 598, 0, 0, 547, 448, 323, 285, 319, 320, - 327, 652, 649, 453, 653, 0, 293, 527, 370, 0, - 414, 343, 592, 593, 0, 644, 241, 242, 243, 244, - 245, 246, 247, 248, 286, 249, 250, 251, 252, 253, - 254, 255, 258, 259, 260, 261, 262, 263, 264, 265, - 595, 256, 257, 266, 267, 268, 269, 270, 271, 272, - 273, 274, 275, 276, 277, 278, 279, 0, 0, 0, - 287, 288, 289, 290, 0, 0, 281, 282, 283, 284, - 0, 0, 0, 478, 479, 480, 502, 0, 464, 526, - 650, 0, 0, 0, 0, 0, 0, 0, 576, 588, - 622, 0, 632, 633, 635, 637, 636, 639, 438, 439, - 0, 641, 642, 643, 640, 374, 425, 444, 432, 0, - 656, 517, 518, 657, 628, 401, 0, 0, 532, 565, - 554, 638, 520, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 336, 0, 0, 369, 569, 551, 561, - 552, 537, 538, 539, 546, 348, 540, 541, 542, 512, - 543, 513, 544, 545, 0, 568, 519, 434, 385, 586, - 585, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 228, 0, 0, 2618, 0, 0, 0, 309, 229, - 514, 634, 516, 515, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 312, 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, 299, 441, 460, 310, + 429, 473, 315, 437, 452, 305, 400, 426, 0, 0, + 301, 458, 436, 382, 359, 360, 300, 0, 420, 334, + 350, 331, 398, 0, 457, 485, 330, 476, 0, 468, + 303, 0, 467, 397, 454, 459, 383, 376, 0, 302, + 456, 381, 375, 363, 340, 501, 364, 365, 354, 409, + 373, 410, 355, 387, 386, 388, 0, 0, 0, 0, + 0, 496, 497, 0, 0, 645, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 627, 0, 0, + 631, 0, 470, 0, 0, 0, 0, 0, 0, 440, + 0, 0, 366, 0, 0, 0, 486, 0, 423, 403, + 659, 0, 0, 421, 371, 455, 411, 461, 442, 469, + 417, 412, 294, 443, 333, 384, 306, 308, 328, 335, + 337, 341, 342, 393, 394, 406, 428, 445, 446, 447, + 332, 316, 422, 317, 352, 318, 295, 324, 322, 325, + 430, 326, 297, 407, 451, 0, 347, 418, 379, 298, + 378, 408, 450, 449, 307, 477, 483, 484, 573, 0, + 489, 660, 661, 662, 498, 0, 413, 503, 504, 505, + 507, 508, 509, 510, 574, 591, 558, 528, 491, 582, + 525, 529, 530, 357, 594, 0, 0, 0, 482, 367, + 368, 0, 339, 338, 380, 416, 345, 291, 292, 655, + 329, 399, 596, 629, 630, 521, 0, 583, 522, 531, + 321, 555, 567, 566, 395, 481, 0, 578, 581, 511, + 654, 0, 575, 590, 658, 589, 651, 405, 0, 427, + 587, 534, 0, 579, 553, 0, 580, 549, 584, 0, + 523, 0, 435, 463, 475, 492, 495, 524, 609, 610, + 611, 296, 494, 613, 614, 615, 616, 617, 618, 619, + 612, 466, 556, 533, 559, 474, 536, 535, 0, 0, + 570, 490, 571, 572, 389, 390, 391, 392, 349, 597, + 314, 493, 415, 0, 557, 0, 0, 0, 0, 0, + 0, 0, 0, 562, 563, 560, 663, 0, 620, 621, + 0, 0, 487, 488, 344, 351, 506, 353, 313, 404, + 346, 472, 361, 0, 499, 564, 500, 623, 626, 624, + 625, 396, 356, 358, 431, 362, 372, 419, 471, 402, + 424, 311, 462, 433, 377, 550, 577, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 280, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 605, 604, 603, 602, 601, 600, 599, + 598, 0, 0, 547, 448, 323, 285, 319, 320, 327, + 652, 649, 453, 653, 0, 293, 527, 370, 0, 414, + 343, 592, 593, 0, 644, 241, 242, 243, 244, 245, + 246, 247, 248, 286, 249, 250, 251, 252, 253, 254, + 255, 258, 259, 260, 261, 262, 263, 264, 265, 595, + 256, 257, 266, 267, 268, 269, 270, 271, 272, 273, + 274, 275, 276, 277, 278, 279, 0, 0, 0, 287, + 288, 289, 290, 0, 0, 281, 282, 283, 284, 0, + 0, 0, 478, 479, 480, 502, 0, 464, 526, 650, + 0, 0, 0, 0, 0, 0, 0, 576, 588, 622, + 0, 632, 633, 635, 637, 636, 639, 438, 439, 0, + 641, 642, 643, 640, 374, 425, 444, 432, 2375, 656, + 517, 518, 657, 628, 401, 0, 0, 532, 565, 554, + 638, 520, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 336, 0, 0, 369, 569, 551, 561, 552, + 537, 538, 539, 546, 348, 540, 541, 542, 512, 543, + 513, 544, 545, 0, 568, 519, 434, 385, 586, 585, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 299, 441, 460, 310, 429, - 473, 315, 437, 452, 305, 400, 426, 0, 0, 301, - 458, 436, 382, 359, 360, 300, 0, 420, 334, 350, - 331, 398, 0, 457, 485, 330, 476, 0, 468, 303, - 0, 467, 397, 454, 459, 383, 376, 0, 302, 456, - 381, 375, 363, 340, 501, 364, 365, 354, 409, 373, - 410, 355, 387, 386, 388, 0, 0, 0, 0, 0, - 496, 497, 0, 0, 645, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 627, 0, 0, 631, - 0, 470, 0, 0, 0, 0, 0, 0, 440, 0, - 0, 366, 0, 0, 0, 486, 0, 423, 403, 659, - 0, 0, 421, 371, 455, 411, 461, 442, 469, 417, - 412, 294, 443, 333, 384, 306, 308, 328, 335, 337, - 341, 342, 393, 394, 406, 428, 445, 446, 447, 332, - 316, 422, 317, 352, 318, 295, 324, 322, 325, 430, - 326, 297, 407, 451, 0, 347, 418, 379, 298, 378, - 408, 450, 449, 307, 477, 483, 484, 573, 0, 489, - 660, 661, 662, 498, 0, 413, 503, 504, 505, 507, - 508, 509, 510, 574, 591, 558, 528, 491, 582, 525, - 529, 530, 357, 594, 0, 0, 0, 482, 367, 368, - 0, 339, 338, 380, 416, 345, 291, 292, 655, 329, - 399, 596, 629, 630, 521, 0, 583, 522, 531, 321, - 555, 567, 566, 395, 481, 0, 578, 581, 511, 654, - 0, 575, 590, 658, 589, 651, 405, 0, 427, 587, - 534, 0, 579, 553, 0, 580, 549, 584, 0, 523, - 0, 435, 463, 475, 492, 495, 524, 609, 610, 611, - 296, 494, 613, 614, 615, 616, 617, 618, 619, 612, - 466, 556, 533, 559, 474, 536, 535, 0, 0, 570, - 490, 571, 572, 389, 390, 391, 392, 349, 597, 314, - 493, 415, 0, 557, 0, 0, 0, 0, 0, 0, - 0, 0, 562, 563, 560, 663, 0, 620, 621, 0, - 0, 487, 488, 344, 351, 506, 353, 313, 404, 346, - 472, 361, 0, 499, 564, 500, 623, 626, 624, 625, - 396, 356, 358, 431, 362, 372, 419, 471, 402, 424, - 311, 462, 433, 377, 550, 577, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 280, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 605, 604, 603, 602, 601, 600, 599, 598, - 0, 0, 547, 448, 323, 285, 319, 320, 327, 652, - 649, 453, 653, 0, 293, 527, 370, 0, 414, 343, - 592, 593, 0, 644, 241, 242, 243, 244, 245, 246, - 247, 248, 286, 249, 250, 251, 252, 253, 254, 255, - 258, 259, 260, 261, 262, 263, 264, 265, 595, 256, - 257, 266, 267, 268, 269, 270, 271, 272, 273, 274, - 275, 276, 277, 278, 279, 0, 0, 0, 287, 288, - 289, 290, 0, 0, 281, 282, 283, 284, 0, 0, - 0, 478, 479, 480, 502, 0, 464, 526, 650, 0, - 0, 0, 0, 0, 0, 0, 576, 588, 622, 0, - 632, 633, 635, 637, 636, 639, 438, 439, 0, 641, - 642, 643, 640, 374, 425, 444, 432, 2386, 656, 517, - 518, 657, 628, 401, 0, 0, 532, 565, 554, 638, - 520, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 336, 0, 0, 369, 569, 551, 561, 552, 537, - 538, 539, 546, 348, 540, 541, 542, 512, 543, 513, - 544, 545, 0, 568, 519, 434, 385, 586, 585, 0, + 228, 0, 0, 0, 0, 0, 0, 309, 229, 514, + 634, 516, 515, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 312, 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, 228, - 0, 0, 0, 0, 0, 0, 309, 229, 514, 634, - 516, 515, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 312, 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, 299, 441, 460, 310, 429, 473, + 315, 437, 452, 305, 400, 426, 0, 0, 301, 458, + 436, 382, 359, 360, 300, 0, 420, 334, 350, 331, + 398, 0, 457, 485, 330, 476, 0, 468, 303, 0, + 467, 397, 454, 459, 383, 376, 0, 302, 456, 381, + 375, 363, 340, 501, 364, 365, 354, 409, 373, 410, + 355, 387, 386, 388, 0, 0, 0, 0, 0, 496, + 497, 0, 0, 645, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 627, 0, 0, 631, 0, + 470, 0, 0, 0, 0, 0, 0, 440, 0, 0, + 366, 0, 0, 0, 486, 0, 423, 403, 659, 0, + 0, 421, 371, 455, 411, 461, 442, 469, 417, 412, + 294, 443, 333, 384, 306, 308, 328, 335, 337, 341, + 342, 393, 394, 406, 428, 445, 446, 447, 332, 316, + 422, 317, 352, 318, 295, 324, 322, 325, 430, 326, + 297, 407, 451, 0, 347, 418, 379, 298, 378, 408, + 450, 449, 307, 477, 483, 484, 573, 0, 489, 660, + 661, 662, 498, 0, 413, 503, 504, 505, 507, 508, + 509, 510, 574, 591, 558, 528, 491, 582, 525, 529, + 530, 357, 594, 0, 0, 0, 482, 367, 368, 0, + 339, 338, 380, 416, 345, 291, 292, 655, 329, 399, + 596, 629, 630, 521, 0, 583, 522, 531, 321, 555, + 567, 566, 395, 481, 0, 578, 581, 511, 654, 0, + 575, 590, 658, 589, 651, 405, 0, 427, 587, 534, + 0, 579, 553, 0, 580, 549, 584, 0, 523, 0, + 435, 463, 475, 492, 495, 524, 609, 610, 611, 296, + 494, 613, 614, 615, 616, 617, 618, 619, 612, 466, + 556, 533, 559, 474, 536, 535, 0, 0, 570, 490, + 571, 572, 389, 390, 391, 392, 349, 597, 314, 493, + 415, 0, 557, 0, 0, 0, 0, 0, 0, 0, + 0, 562, 563, 560, 663, 0, 620, 621, 0, 0, + 487, 488, 344, 351, 506, 353, 313, 404, 346, 472, + 361, 0, 499, 564, 500, 623, 626, 624, 625, 396, + 356, 358, 431, 362, 372, 419, 471, 402, 424, 311, + 462, 433, 377, 550, 577, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 280, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 299, 441, 460, 310, 429, 473, 315, - 437, 452, 305, 400, 426, 0, 0, 301, 458, 436, - 382, 359, 360, 300, 0, 420, 334, 350, 331, 398, - 0, 457, 485, 330, 476, 0, 468, 303, 0, 467, - 397, 454, 459, 383, 376, 0, 302, 456, 381, 375, - 363, 340, 501, 364, 365, 354, 409, 373, 410, 355, - 387, 386, 388, 0, 0, 0, 0, 0, 496, 497, - 0, 0, 645, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 627, 0, 0, 631, 0, 470, - 0, 0, 0, 0, 0, 0, 440, 0, 0, 366, - 0, 0, 0, 486, 0, 423, 403, 659, 0, 0, - 421, 371, 455, 411, 461, 442, 469, 417, 412, 294, - 443, 333, 384, 306, 308, 328, 335, 337, 341, 342, - 393, 394, 406, 428, 445, 446, 447, 332, 316, 422, - 317, 352, 318, 295, 324, 322, 325, 430, 326, 297, - 407, 451, 0, 347, 418, 379, 298, 378, 408, 450, - 449, 307, 477, 483, 484, 573, 0, 489, 660, 661, - 662, 498, 0, 413, 503, 504, 505, 507, 508, 509, - 510, 574, 591, 558, 528, 491, 582, 525, 529, 530, - 357, 594, 0, 0, 0, 482, 367, 368, 0, 339, - 338, 380, 416, 345, 291, 292, 655, 329, 399, 596, - 629, 630, 521, 0, 583, 522, 531, 321, 555, 567, - 566, 395, 481, 0, 578, 581, 511, 654, 0, 575, - 590, 658, 589, 651, 405, 0, 427, 587, 534, 0, - 579, 553, 0, 580, 549, 584, 0, 523, 0, 435, - 463, 475, 492, 495, 524, 609, 610, 611, 296, 494, - 613, 614, 615, 616, 617, 618, 619, 612, 466, 556, - 533, 559, 474, 536, 535, 0, 0, 570, 490, 571, - 572, 389, 390, 391, 392, 349, 597, 314, 493, 415, - 0, 557, 0, 0, 0, 0, 0, 0, 0, 0, - 562, 563, 560, 663, 0, 620, 621, 0, 0, 487, - 488, 344, 351, 506, 353, 313, 404, 346, 472, 361, - 0, 499, 564, 500, 623, 626, 624, 625, 396, 356, - 358, 431, 362, 372, 419, 471, 402, 424, 311, 462, - 433, 377, 550, 577, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 280, 0, 0, 0, 0, + 0, 605, 604, 603, 602, 601, 600, 599, 598, 0, + 0, 547, 448, 323, 285, 319, 320, 327, 652, 649, + 453, 653, 0, 293, 527, 370, 0, 414, 343, 592, + 593, 0, 644, 241, 242, 243, 244, 245, 246, 247, + 248, 286, 249, 250, 251, 252, 253, 254, 255, 258, + 259, 260, 261, 262, 263, 264, 265, 595, 256, 257, + 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, + 276, 277, 278, 279, 0, 0, 0, 287, 288, 289, + 290, 0, 0, 281, 282, 283, 284, 0, 0, 0, + 478, 479, 480, 502, 0, 464, 526, 650, 0, 0, + 0, 0, 0, 0, 0, 576, 588, 622, 0, 632, + 633, 635, 637, 636, 639, 438, 439, 0, 641, 642, + 643, 640, 374, 425, 444, 432, 0, 656, 517, 518, + 657, 628, 401, 0, 0, 532, 565, 554, 638, 520, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 605, 604, 603, 602, 601, 600, 599, 598, 0, 0, - 547, 448, 323, 285, 319, 320, 327, 652, 649, 453, - 653, 0, 293, 527, 370, 0, 414, 343, 592, 593, - 0, 644, 241, 242, 243, 244, 245, 246, 247, 248, - 286, 249, 250, 251, 252, 253, 254, 255, 258, 259, - 260, 261, 262, 263, 264, 265, 595, 256, 257, 266, - 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, - 277, 278, 279, 0, 0, 0, 287, 288, 289, 290, - 0, 0, 281, 282, 283, 284, 0, 0, 0, 478, - 479, 480, 502, 0, 464, 526, 650, 0, 0, 0, - 0, 0, 0, 0, 576, 588, 622, 0, 632, 633, - 635, 637, 636, 639, 438, 439, 0, 641, 642, 643, - 640, 374, 425, 444, 432, 0, 656, 517, 518, 657, - 628, 401, 0, 0, 532, 565, 554, 638, 520, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 336, - 0, 0, 369, 569, 551, 561, 552, 537, 538, 539, - 546, 348, 540, 541, 542, 512, 543, 513, 544, 545, - 0, 568, 519, 434, 385, 586, 585, 0, 0, 0, + 336, 0, 0, 369, 569, 551, 561, 552, 537, 538, + 539, 546, 348, 540, 541, 542, 512, 543, 513, 544, + 545, 0, 568, 519, 434, 385, 586, 585, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 228, 0, 0, - 0, 1926, 0, 0, 309, 229, 514, 634, 516, 515, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 312, + 0, 0, 0, 0, 0, 0, 0, 0, 228, 0, + 0, 0, 1918, 0, 0, 309, 229, 514, 634, 516, + 515, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 312, 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, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 299, 441, 460, 310, 429, 473, 315, 437, + 452, 305, 400, 426, 0, 0, 301, 458, 436, 382, + 359, 360, 300, 0, 420, 334, 350, 331, 398, 0, + 457, 485, 330, 476, 0, 468, 303, 0, 467, 397, + 454, 459, 383, 376, 0, 302, 456, 381, 375, 363, + 340, 501, 364, 365, 354, 409, 373, 410, 355, 387, + 386, 388, 0, 0, 0, 0, 0, 496, 497, 0, + 0, 645, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 627, 0, 0, 631, 0, 470, 0, + 0, 0, 0, 0, 0, 440, 0, 0, 366, 0, + 0, 0, 486, 0, 423, 403, 659, 0, 0, 421, + 371, 455, 411, 461, 442, 469, 417, 412, 294, 443, + 333, 384, 306, 308, 328, 335, 337, 341, 342, 393, + 394, 406, 428, 445, 446, 447, 332, 316, 422, 317, + 352, 318, 295, 324, 322, 325, 430, 326, 297, 407, + 451, 0, 347, 418, 379, 298, 378, 408, 450, 449, + 307, 477, 483, 484, 573, 0, 489, 660, 661, 662, + 498, 0, 413, 503, 504, 505, 507, 508, 509, 510, + 574, 591, 558, 528, 491, 582, 525, 529, 530, 357, + 594, 0, 0, 0, 482, 367, 368, 0, 339, 338, + 380, 416, 345, 291, 292, 655, 329, 399, 596, 629, + 630, 521, 0, 583, 522, 531, 321, 555, 567, 566, + 395, 481, 0, 578, 581, 511, 654, 0, 575, 590, + 658, 589, 651, 405, 0, 427, 587, 534, 0, 579, + 553, 0, 580, 549, 584, 0, 523, 0, 435, 463, + 475, 492, 495, 524, 609, 610, 611, 296, 494, 613, + 614, 615, 616, 617, 618, 619, 612, 466, 556, 533, + 559, 474, 536, 535, 0, 0, 570, 490, 571, 572, + 389, 390, 391, 392, 349, 597, 314, 493, 415, 0, + 557, 0, 0, 0, 0, 0, 0, 0, 0, 562, + 563, 560, 663, 0, 620, 621, 0, 0, 487, 488, + 344, 351, 506, 353, 313, 404, 346, 472, 361, 0, + 499, 564, 500, 623, 626, 624, 625, 396, 356, 358, + 431, 362, 372, 419, 471, 402, 424, 311, 462, 433, + 377, 550, 577, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 280, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 605, + 604, 603, 602, 601, 600, 599, 598, 0, 0, 547, + 448, 323, 285, 319, 320, 327, 652, 649, 453, 653, + 0, 293, 527, 370, 0, 414, 343, 592, 593, 0, + 644, 241, 242, 243, 244, 245, 246, 247, 248, 286, + 249, 250, 251, 252, 253, 254, 255, 258, 259, 260, + 261, 262, 263, 264, 265, 595, 256, 257, 266, 267, + 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, + 278, 279, 0, 0, 0, 287, 288, 289, 290, 0, + 0, 281, 282, 283, 284, 0, 0, 0, 478, 479, + 480, 502, 0, 464, 526, 650, 0, 0, 0, 0, + 0, 0, 0, 576, 588, 622, 0, 632, 633, 635, + 637, 636, 639, 438, 439, 0, 641, 642, 643, 640, + 374, 425, 444, 432, 0, 656, 517, 518, 657, 628, + 401, 0, 0, 532, 565, 554, 638, 520, 0, 2049, + 0, 0, 0, 0, 0, 0, 0, 0, 336, 0, + 0, 369, 569, 551, 561, 552, 537, 538, 539, 546, + 348, 540, 541, 542, 512, 543, 513, 544, 545, 0, + 568, 519, 434, 385, 586, 585, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 299, 441, 460, 310, 429, 473, 315, 437, 452, - 305, 400, 426, 0, 0, 301, 458, 436, 382, 359, - 360, 300, 0, 420, 334, 350, 331, 398, 0, 457, - 485, 330, 476, 0, 468, 303, 0, 467, 397, 454, - 459, 383, 376, 0, 302, 456, 381, 375, 363, 340, - 501, 364, 365, 354, 409, 373, 410, 355, 387, 386, - 388, 0, 0, 0, 0, 0, 496, 497, 0, 0, - 645, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 627, 0, 0, 631, 0, 470, 0, 0, - 0, 0, 0, 0, 440, 0, 0, 366, 0, 0, - 0, 486, 0, 423, 403, 659, 0, 0, 421, 371, - 455, 411, 461, 442, 469, 417, 412, 294, 443, 333, - 384, 306, 308, 328, 335, 337, 341, 342, 393, 394, - 406, 428, 445, 446, 447, 332, 316, 422, 317, 352, - 318, 295, 324, 322, 325, 430, 326, 297, 407, 451, - 0, 347, 418, 379, 298, 378, 408, 450, 449, 307, - 477, 483, 484, 573, 0, 489, 660, 661, 662, 498, - 0, 413, 503, 504, 505, 507, 508, 509, 510, 574, - 591, 558, 528, 491, 582, 525, 529, 530, 357, 594, - 0, 0, 0, 482, 367, 368, 0, 339, 338, 380, - 416, 345, 291, 292, 655, 329, 399, 596, 629, 630, - 521, 0, 583, 522, 531, 321, 555, 567, 566, 395, - 481, 0, 578, 581, 511, 654, 0, 575, 590, 658, - 589, 651, 405, 0, 427, 587, 534, 0, 579, 553, - 0, 580, 549, 584, 0, 523, 0, 435, 463, 475, - 492, 495, 524, 609, 610, 611, 296, 494, 613, 614, - 615, 616, 617, 618, 619, 612, 466, 556, 533, 559, - 474, 536, 535, 0, 0, 570, 490, 571, 572, 389, - 390, 391, 392, 349, 597, 314, 493, 415, 0, 557, - 0, 0, 0, 0, 0, 0, 0, 0, 562, 563, - 560, 663, 0, 620, 621, 0, 0, 487, 488, 344, - 351, 506, 353, 313, 404, 346, 472, 361, 0, 499, - 564, 500, 623, 626, 624, 625, 396, 356, 358, 431, - 362, 372, 419, 471, 402, 424, 311, 462, 433, 377, - 550, 577, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 280, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 605, 604, - 603, 602, 601, 600, 599, 598, 0, 0, 547, 448, - 323, 285, 319, 320, 327, 652, 649, 453, 653, 0, - 293, 527, 370, 0, 414, 343, 592, 593, 0, 644, - 241, 242, 243, 244, 245, 246, 247, 248, 286, 249, - 250, 251, 252, 253, 254, 255, 258, 259, 260, 261, - 262, 263, 264, 265, 595, 256, 257, 266, 267, 268, - 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, - 279, 0, 0, 0, 287, 288, 289, 290, 0, 0, - 281, 282, 283, 284, 0, 0, 0, 478, 479, 480, - 502, 0, 464, 526, 650, 0, 0, 0, 0, 0, - 0, 0, 576, 588, 622, 0, 632, 633, 635, 637, - 636, 639, 438, 439, 0, 641, 642, 643, 640, 374, - 425, 444, 432, 0, 656, 517, 518, 657, 628, 401, - 0, 0, 532, 565, 554, 638, 520, 0, 2058, 0, - 0, 0, 0, 0, 0, 0, 0, 336, 0, 0, - 369, 569, 551, 561, 552, 537, 538, 539, 546, 348, - 540, 541, 542, 512, 543, 513, 544, 545, 0, 568, - 519, 434, 385, 586, 585, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 228, 0, 0, 0, + 0, 0, 0, 309, 229, 514, 634, 516, 515, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 312, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 228, 0, 0, 0, 0, - 0, 0, 309, 229, 514, 634, 516, 515, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 312, 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, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 299, - 441, 460, 310, 429, 473, 315, 437, 452, 305, 400, - 426, 0, 0, 301, 458, 436, 382, 359, 360, 300, - 0, 420, 334, 350, 331, 398, 0, 457, 485, 330, - 476, 0, 468, 303, 0, 467, 397, 454, 459, 383, - 376, 0, 302, 456, 381, 375, 363, 340, 501, 364, - 365, 354, 409, 373, 410, 355, 387, 386, 388, 0, - 0, 0, 0, 0, 496, 497, 0, 0, 645, 0, + 299, 441, 460, 310, 429, 473, 315, 437, 452, 305, + 400, 426, 0, 0, 301, 458, 436, 382, 359, 360, + 300, 0, 420, 334, 350, 331, 398, 0, 457, 485, + 330, 476, 0, 468, 303, 0, 467, 397, 454, 459, + 383, 376, 0, 302, 456, 381, 375, 363, 340, 501, + 364, 365, 354, 409, 373, 410, 355, 387, 386, 388, + 0, 0, 0, 0, 0, 496, 497, 0, 0, 645, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 627, 0, 0, 631, 0, 470, 0, 0, 0, 0, - 0, 0, 440, 0, 0, 366, 0, 0, 0, 486, - 0, 423, 403, 659, 0, 0, 421, 371, 455, 411, - 461, 442, 469, 417, 412, 294, 443, 333, 384, 306, - 308, 328, 335, 337, 341, 342, 393, 394, 406, 428, - 445, 446, 447, 332, 316, 422, 317, 352, 318, 295, - 324, 322, 325, 430, 326, 297, 407, 451, 0, 347, - 418, 379, 298, 378, 408, 450, 449, 307, 477, 483, - 484, 573, 0, 489, 660, 661, 662, 498, 0, 413, - 503, 504, 505, 507, 508, 509, 510, 574, 591, 558, - 528, 491, 582, 525, 529, 530, 357, 594, 0, 0, - 0, 482, 367, 368, 0, 339, 338, 380, 416, 345, - 291, 292, 655, 329, 399, 596, 629, 630, 521, 0, - 583, 522, 531, 321, 555, 567, 566, 395, 481, 0, - 578, 581, 511, 654, 0, 575, 590, 658, 589, 651, - 405, 0, 427, 587, 534, 0, 579, 553, 0, 580, - 549, 584, 0, 523, 0, 435, 463, 475, 492, 495, - 524, 609, 610, 611, 296, 494, 613, 614, 615, 616, - 617, 618, 619, 612, 466, 556, 533, 559, 474, 536, - 535, 0, 0, 570, 490, 571, 572, 389, 390, 391, - 392, 349, 597, 314, 493, 415, 0, 557, 0, 0, - 0, 0, 0, 0, 0, 0, 562, 563, 560, 663, - 0, 620, 621, 0, 0, 487, 488, 344, 351, 506, - 353, 313, 404, 346, 472, 361, 0, 499, 564, 500, - 623, 626, 624, 625, 396, 356, 358, 431, 362, 372, - 419, 471, 402, 424, 311, 462, 433, 377, 550, 577, + 0, 627, 0, 0, 631, 0, 470, 0, 0, 0, + 0, 0, 0, 440, 0, 0, 366, 0, 0, 0, + 486, 0, 423, 403, 659, 0, 0, 421, 371, 455, + 411, 461, 442, 469, 417, 412, 294, 443, 333, 384, + 306, 308, 328, 335, 337, 341, 342, 393, 394, 406, + 428, 445, 446, 447, 332, 316, 422, 317, 352, 318, + 295, 324, 322, 325, 430, 326, 297, 407, 451, 0, + 347, 418, 379, 298, 378, 408, 450, 449, 307, 477, + 483, 484, 573, 0, 489, 660, 661, 662, 498, 0, + 413, 503, 504, 505, 507, 508, 509, 510, 574, 591, + 558, 528, 491, 582, 525, 529, 530, 357, 594, 0, + 0, 0, 482, 367, 368, 0, 339, 338, 380, 416, + 345, 291, 292, 655, 329, 399, 596, 629, 630, 521, + 0, 583, 522, 531, 321, 555, 567, 566, 395, 481, + 0, 578, 581, 511, 654, 0, 575, 590, 658, 589, + 651, 405, 0, 427, 587, 534, 0, 579, 553, 0, + 580, 549, 584, 0, 523, 0, 435, 463, 475, 492, + 495, 524, 609, 610, 611, 296, 494, 613, 614, 615, + 616, 617, 618, 619, 612, 466, 556, 533, 559, 474, + 536, 535, 0, 0, 570, 490, 571, 572, 389, 390, + 391, 392, 349, 597, 314, 493, 415, 0, 557, 0, + 0, 0, 0, 0, 0, 0, 0, 562, 563, 560, + 663, 0, 620, 621, 0, 0, 487, 488, 344, 351, + 506, 353, 313, 404, 346, 472, 361, 0, 499, 564, + 500, 623, 626, 624, 625, 396, 356, 358, 431, 362, + 372, 419, 471, 402, 424, 311, 462, 433, 377, 550, + 577, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 280, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 605, 604, 603, + 602, 601, 600, 599, 598, 0, 0, 547, 448, 323, + 285, 319, 320, 327, 652, 649, 453, 653, 0, 293, + 527, 370, 0, 414, 343, 592, 593, 0, 644, 241, + 242, 243, 244, 245, 246, 247, 248, 286, 249, 250, + 251, 252, 253, 254, 255, 258, 259, 260, 261, 262, + 263, 264, 265, 595, 256, 257, 266, 267, 268, 269, + 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, + 0, 0, 0, 287, 288, 289, 290, 0, 0, 281, + 282, 283, 284, 0, 0, 0, 478, 479, 480, 502, + 0, 464, 526, 650, 0, 0, 0, 0, 0, 0, + 0, 576, 588, 622, 0, 632, 633, 635, 637, 636, + 639, 438, 439, 0, 641, 642, 643, 640, 374, 425, + 444, 432, 0, 656, 517, 518, 657, 628, 401, 0, + 0, 532, 565, 554, 638, 520, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 336, 0, 0, 369, + 569, 551, 561, 552, 537, 538, 539, 546, 348, 540, + 541, 542, 512, 543, 513, 544, 545, 0, 568, 519, + 434, 385, 586, 585, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 280, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 605, 604, 603, 602, - 601, 600, 599, 598, 0, 0, 547, 448, 323, 285, - 319, 320, 327, 652, 649, 453, 653, 0, 293, 527, - 370, 0, 414, 343, 592, 593, 0, 644, 241, 242, - 243, 244, 245, 246, 247, 248, 286, 249, 250, 251, - 252, 253, 254, 255, 258, 259, 260, 261, 262, 263, - 264, 265, 595, 256, 257, 266, 267, 268, 269, 270, - 271, 272, 273, 274, 275, 276, 277, 278, 279, 0, - 0, 0, 287, 288, 289, 290, 0, 0, 281, 282, - 283, 284, 0, 0, 0, 478, 479, 480, 502, 0, - 464, 526, 650, 0, 0, 0, 0, 0, 0, 0, - 576, 588, 622, 0, 632, 633, 635, 637, 636, 639, - 438, 439, 0, 641, 642, 643, 640, 374, 425, 444, - 432, 0, 656, 517, 518, 657, 628, 401, 0, 0, - 532, 565, 554, 638, 520, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 336, 0, 0, 369, 569, - 551, 561, 552, 537, 538, 539, 546, 348, 540, 541, - 542, 512, 543, 513, 544, 545, 0, 568, 519, 434, - 385, 586, 585, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 228, 0, 0, 1554, 0, 0, + 0, 309, 229, 514, 634, 516, 515, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 312, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 228, 0, 0, 1560, 0, 0, 0, - 309, 229, 514, 634, 516, 515, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 312, 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, 299, 441, + 460, 310, 429, 473, 315, 437, 452, 305, 400, 426, + 0, 0, 301, 458, 436, 382, 359, 360, 300, 0, + 420, 334, 350, 331, 398, 0, 457, 485, 330, 476, + 0, 468, 303, 0, 467, 397, 454, 459, 383, 376, + 0, 302, 456, 381, 375, 363, 340, 501, 364, 365, + 354, 409, 373, 410, 355, 387, 386, 388, 0, 0, + 0, 0, 0, 496, 497, 0, 0, 645, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 627, + 0, 0, 631, 0, 470, 0, 0, 0, 0, 0, + 0, 440, 0, 0, 366, 0, 0, 0, 486, 0, + 423, 403, 659, 0, 0, 421, 371, 455, 411, 461, + 442, 469, 1954, 412, 294, 443, 333, 384, 306, 308, + 328, 335, 337, 341, 342, 393, 394, 406, 428, 445, + 446, 447, 332, 316, 422, 317, 352, 318, 295, 324, + 322, 325, 430, 326, 297, 407, 451, 0, 347, 418, + 379, 298, 378, 408, 450, 449, 307, 477, 483, 484, + 573, 0, 489, 660, 661, 662, 498, 0, 413, 503, + 504, 505, 507, 508, 509, 510, 574, 591, 558, 528, + 491, 582, 525, 529, 530, 357, 594, 0, 0, 0, + 482, 367, 368, 0, 339, 338, 380, 416, 345, 291, + 292, 655, 329, 399, 596, 629, 630, 521, 0, 583, + 522, 531, 321, 555, 567, 566, 395, 481, 0, 578, + 581, 511, 654, 0, 575, 590, 658, 589, 651, 405, + 0, 427, 587, 534, 0, 579, 553, 0, 580, 549, + 584, 0, 523, 0, 435, 463, 475, 492, 495, 524, + 609, 610, 611, 296, 494, 613, 614, 615, 616, 617, + 618, 619, 612, 466, 556, 533, 559, 474, 536, 535, + 0, 0, 570, 490, 571, 572, 389, 390, 391, 392, + 349, 597, 314, 493, 415, 0, 557, 0, 0, 0, + 0, 0, 0, 0, 0, 562, 563, 560, 663, 0, + 620, 621, 0, 0, 487, 488, 344, 351, 506, 353, + 313, 404, 346, 472, 361, 0, 499, 564, 500, 623, + 626, 624, 625, 396, 356, 358, 431, 362, 372, 419, + 471, 402, 424, 311, 462, 433, 377, 550, 577, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 299, 441, 460, - 310, 429, 473, 315, 437, 452, 305, 400, 426, 0, - 0, 301, 458, 436, 382, 359, 360, 300, 0, 420, - 334, 350, 331, 398, 0, 457, 485, 330, 476, 0, - 468, 303, 0, 467, 397, 454, 459, 383, 376, 0, - 302, 456, 381, 375, 363, 340, 501, 364, 365, 354, - 409, 373, 410, 355, 387, 386, 388, 0, 0, 0, - 0, 0, 496, 497, 0, 0, 645, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 627, 0, - 0, 631, 0, 470, 0, 0, 0, 0, 0, 0, - 440, 0, 0, 366, 0, 0, 0, 486, 0, 423, - 403, 659, 0, 0, 421, 371, 455, 411, 461, 442, - 469, 1963, 412, 294, 443, 333, 384, 306, 308, 328, - 335, 337, 341, 342, 393, 394, 406, 428, 445, 446, - 447, 332, 316, 422, 317, 352, 318, 295, 324, 322, - 325, 430, 326, 297, 407, 451, 0, 347, 418, 379, - 298, 378, 408, 450, 449, 307, 477, 483, 484, 573, - 0, 489, 660, 661, 662, 498, 0, 413, 503, 504, - 505, 507, 508, 509, 510, 574, 591, 558, 528, 491, - 582, 525, 529, 530, 357, 594, 0, 0, 0, 482, - 367, 368, 0, 339, 338, 380, 416, 345, 291, 292, - 655, 329, 399, 596, 629, 630, 521, 0, 583, 522, - 531, 321, 555, 567, 566, 395, 481, 0, 578, 581, - 511, 654, 0, 575, 590, 658, 589, 651, 405, 0, - 427, 587, 534, 0, 579, 553, 0, 580, 549, 584, - 0, 523, 0, 435, 463, 475, 492, 495, 524, 609, - 610, 611, 296, 494, 613, 614, 615, 616, 617, 618, - 619, 612, 466, 556, 533, 559, 474, 536, 535, 0, - 0, 570, 490, 571, 572, 389, 390, 391, 392, 349, - 597, 314, 493, 415, 0, 557, 0, 0, 0, 0, - 0, 0, 0, 0, 562, 563, 560, 663, 0, 620, - 621, 0, 0, 487, 488, 344, 351, 506, 353, 313, - 404, 346, 472, 361, 0, 499, 564, 500, 623, 626, - 624, 625, 396, 356, 358, 431, 362, 372, 419, 471, - 402, 424, 311, 462, 433, 377, 550, 577, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 280, + 280, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 605, 604, 603, 602, 601, + 600, 599, 598, 0, 0, 547, 448, 323, 285, 319, + 320, 327, 652, 649, 453, 653, 0, 293, 527, 370, + 0, 414, 343, 592, 593, 0, 644, 241, 242, 243, + 244, 245, 246, 247, 248, 286, 249, 250, 251, 252, + 253, 254, 255, 258, 259, 260, 261, 262, 263, 264, + 265, 595, 256, 257, 266, 267, 268, 269, 270, 271, + 272, 273, 274, 275, 276, 277, 278, 279, 0, 0, + 0, 287, 288, 289, 290, 0, 0, 281, 282, 283, + 284, 0, 0, 0, 478, 479, 480, 502, 0, 464, + 526, 650, 0, 0, 0, 0, 0, 0, 0, 576, + 588, 622, 0, 632, 633, 635, 637, 636, 639, 438, + 439, 0, 641, 642, 643, 640, 374, 425, 444, 432, + 0, 656, 517, 518, 657, 628, 401, 0, 0, 532, + 565, 554, 638, 520, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 336, 0, 0, 369, 569, 551, + 561, 552, 537, 538, 539, 546, 348, 540, 541, 542, + 512, 543, 513, 544, 545, 0, 568, 519, 434, 385, + 586, 585, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 605, 604, 603, 602, 601, 600, - 599, 598, 0, 0, 547, 448, 323, 285, 319, 320, - 327, 652, 649, 453, 653, 0, 293, 527, 370, 0, - 414, 343, 592, 593, 0, 644, 241, 242, 243, 244, - 245, 246, 247, 248, 286, 249, 250, 251, 252, 253, - 254, 255, 258, 259, 260, 261, 262, 263, 264, 265, - 595, 256, 257, 266, 267, 268, 269, 270, 271, 272, - 273, 274, 275, 276, 277, 278, 279, 0, 0, 0, - 287, 288, 289, 290, 0, 0, 281, 282, 283, 284, - 0, 0, 0, 478, 479, 480, 502, 0, 464, 526, - 650, 0, 0, 0, 0, 0, 0, 0, 576, 588, - 622, 0, 632, 633, 635, 637, 636, 639, 438, 439, - 0, 641, 642, 643, 640, 374, 425, 444, 432, 0, - 656, 517, 518, 657, 628, 401, 0, 0, 532, 565, - 554, 638, 520, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 336, 0, 0, 369, 569, 551, 561, - 552, 537, 538, 539, 546, 348, 540, 541, 542, 512, - 543, 513, 544, 545, 0, 568, 519, 434, 385, 586, - 585, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 228, 0, 0, 0, 0, 0, 0, 309, + 229, 514, 634, 516, 515, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 312, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 228, 0, 0, 0, 0, 0, 0, 309, 229, - 514, 634, 516, 515, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 312, 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, 299, 441, 460, 310, + 429, 473, 315, 437, 452, 305, 400, 426, 0, 0, + 301, 458, 436, 382, 359, 360, 300, 0, 420, 334, + 350, 331, 398, 0, 457, 485, 330, 476, 0, 468, + 303, 0, 467, 397, 454, 459, 383, 376, 0, 302, + 456, 381, 375, 363, 340, 501, 364, 365, 354, 409, + 373, 410, 355, 387, 386, 388, 0, 0, 0, 0, + 0, 496, 497, 0, 0, 645, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 627, 0, 0, + 631, 0, 470, 0, 0, 1583, 0, 0, 0, 440, + 0, 0, 366, 0, 0, 0, 486, 0, 423, 403, + 659, 0, 0, 421, 371, 455, 411, 461, 442, 469, + 417, 412, 294, 443, 333, 384, 306, 308, 328, 335, + 337, 341, 342, 393, 394, 406, 428, 445, 446, 447, + 332, 316, 422, 317, 352, 318, 295, 324, 322, 325, + 430, 326, 297, 407, 451, 0, 347, 418, 379, 298, + 378, 408, 450, 449, 307, 477, 483, 484, 573, 0, + 489, 660, 661, 662, 498, 0, 413, 503, 504, 505, + 507, 508, 509, 510, 574, 591, 558, 528, 491, 582, + 525, 529, 530, 357, 594, 0, 0, 0, 482, 367, + 368, 0, 339, 338, 380, 416, 345, 291, 292, 655, + 329, 399, 596, 629, 630, 521, 0, 583, 522, 531, + 321, 555, 567, 566, 395, 481, 0, 578, 581, 511, + 654, 0, 575, 590, 658, 589, 651, 405, 0, 427, + 587, 534, 0, 579, 553, 0, 580, 549, 584, 0, + 523, 0, 435, 463, 475, 492, 495, 524, 609, 610, + 611, 296, 494, 613, 614, 615, 616, 617, 618, 619, + 612, 466, 556, 533, 559, 474, 536, 535, 0, 0, + 570, 490, 571, 572, 389, 390, 391, 392, 349, 597, + 314, 493, 415, 0, 557, 0, 0, 0, 0, 0, + 0, 0, 0, 562, 563, 560, 663, 0, 620, 621, + 0, 0, 487, 488, 344, 351, 506, 353, 313, 404, + 346, 472, 361, 0, 499, 564, 500, 623, 626, 624, + 625, 396, 356, 358, 431, 362, 372, 419, 471, 402, + 424, 311, 462, 433, 377, 550, 577, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 280, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 299, 441, 460, 310, 429, - 473, 315, 437, 452, 305, 400, 426, 0, 0, 301, - 458, 436, 382, 359, 360, 300, 0, 420, 334, 350, - 331, 398, 0, 457, 485, 330, 476, 0, 468, 303, - 0, 467, 397, 454, 459, 383, 376, 0, 302, 456, - 381, 375, 363, 340, 501, 364, 365, 354, 409, 373, - 410, 355, 387, 386, 388, 0, 0, 0, 0, 0, - 496, 497, 0, 0, 645, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 627, 0, 0, 631, - 0, 470, 0, 0, 1589, 0, 0, 0, 440, 0, - 0, 366, 0, 0, 0, 486, 0, 423, 403, 659, - 0, 0, 421, 371, 455, 411, 461, 442, 469, 417, - 412, 294, 443, 333, 384, 306, 308, 328, 335, 337, - 341, 342, 393, 394, 406, 428, 445, 446, 447, 332, - 316, 422, 317, 352, 318, 295, 324, 322, 325, 430, - 326, 297, 407, 451, 0, 347, 418, 379, 298, 378, - 408, 450, 449, 307, 477, 483, 484, 573, 0, 489, - 660, 661, 662, 498, 0, 413, 503, 504, 505, 507, - 508, 509, 510, 574, 591, 558, 528, 491, 582, 525, - 529, 530, 357, 594, 0, 0, 0, 482, 367, 368, - 0, 339, 338, 380, 416, 345, 291, 292, 655, 329, - 399, 596, 629, 630, 521, 0, 583, 522, 531, 321, - 555, 567, 566, 395, 481, 0, 578, 581, 511, 654, - 0, 575, 590, 658, 589, 651, 405, 0, 427, 587, - 534, 0, 579, 553, 0, 580, 549, 584, 0, 523, - 0, 435, 463, 475, 492, 495, 524, 609, 610, 611, - 296, 494, 613, 614, 615, 616, 617, 618, 619, 612, - 466, 556, 533, 559, 474, 536, 535, 0, 0, 570, - 490, 571, 572, 389, 390, 391, 392, 349, 597, 314, - 493, 415, 0, 557, 0, 0, 0, 0, 0, 0, - 0, 0, 562, 563, 560, 663, 0, 620, 621, 0, - 0, 487, 488, 344, 351, 506, 353, 313, 404, 346, - 472, 361, 0, 499, 564, 500, 623, 626, 624, 625, - 396, 356, 358, 431, 362, 372, 419, 471, 402, 424, - 311, 462, 433, 377, 550, 577, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 280, 0, 0, + 0, 0, 0, 605, 604, 603, 602, 601, 600, 599, + 598, 0, 0, 547, 448, 323, 285, 319, 320, 327, + 652, 649, 453, 653, 0, 293, 527, 370, 0, 414, + 343, 592, 593, 0, 644, 241, 242, 243, 244, 245, + 246, 247, 248, 286, 249, 250, 251, 252, 253, 254, + 255, 258, 259, 260, 261, 262, 263, 264, 265, 595, + 256, 257, 266, 267, 268, 269, 270, 271, 272, 273, + 274, 275, 276, 277, 278, 279, 0, 0, 0, 287, + 288, 289, 290, 0, 0, 281, 282, 283, 284, 0, + 0, 0, 478, 479, 480, 502, 0, 464, 526, 650, + 0, 0, 0, 0, 0, 0, 0, 576, 588, 622, + 0, 632, 633, 635, 637, 636, 639, 438, 439, 0, + 641, 642, 643, 640, 374, 425, 444, 432, 0, 656, + 517, 518, 657, 628, 401, 0, 0, 532, 565, 554, + 638, 520, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 670, 336, 0, 0, 369, 569, 551, 561, 552, + 537, 538, 539, 546, 348, 540, 541, 542, 512, 543, + 513, 544, 545, 0, 568, 519, 434, 385, 586, 585, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 605, 604, 603, 602, 601, 600, 599, 598, - 0, 0, 547, 448, 323, 285, 319, 320, 327, 652, - 649, 453, 653, 0, 293, 527, 370, 0, 414, 343, - 592, 593, 0, 644, 241, 242, 243, 244, 245, 246, - 247, 248, 286, 249, 250, 251, 252, 253, 254, 255, - 258, 259, 260, 261, 262, 263, 264, 265, 595, 256, - 257, 266, 267, 268, 269, 270, 271, 272, 273, 274, - 275, 276, 277, 278, 279, 0, 0, 0, 287, 288, - 289, 290, 0, 0, 281, 282, 283, 284, 0, 0, - 0, 478, 479, 480, 502, 0, 464, 526, 650, 0, - 0, 0, 0, 0, 0, 0, 576, 588, 622, 0, - 632, 633, 635, 637, 636, 639, 438, 439, 0, 641, - 642, 643, 640, 374, 425, 444, 432, 0, 656, 517, - 518, 657, 628, 401, 0, 0, 532, 565, 554, 638, - 520, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 671, 336, 0, 0, 369, 569, 551, 561, 552, 537, - 538, 539, 546, 348, 540, 541, 542, 512, 543, 513, - 544, 545, 0, 568, 519, 434, 385, 586, 585, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 228, - 0, 0, 0, 0, 0, 0, 309, 229, 514, 634, - 516, 515, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 312, 0, 0, 0, 0, 0, 0, 0, 0, + 228, 0, 0, 0, 0, 0, 0, 309, 229, 514, + 634, 516, 515, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 312, 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, 0, 0, 0, 0, 0, - 0, 0, 0, 299, 441, 460, 310, 429, 473, 315, - 437, 452, 305, 400, 426, 0, 0, 301, 458, 436, - 382, 359, 360, 300, 0, 420, 334, 350, 331, 398, - 0, 457, 485, 330, 476, 0, 468, 303, 0, 467, - 397, 454, 459, 383, 376, 0, 302, 456, 381, 375, - 363, 340, 501, 364, 365, 354, 409, 373, 410, 355, - 387, 386, 388, 0, 0, 0, 0, 0, 496, 497, - 0, 0, 645, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 627, 0, 0, 631, 0, 470, - 0, 0, 0, 0, 0, 0, 440, 0, 0, 366, - 0, 0, 0, 486, 0, 423, 403, 659, 0, 0, - 421, 371, 455, 411, 461, 442, 469, 417, 412, 294, - 443, 333, 384, 306, 308, 328, 335, 337, 341, 342, - 393, 394, 406, 428, 445, 446, 447, 332, 316, 422, - 317, 352, 318, 295, 324, 322, 325, 430, 326, 297, - 407, 451, 0, 347, 418, 379, 298, 378, 408, 450, - 449, 307, 477, 483, 484, 573, 0, 489, 660, 661, - 662, 498, 0, 413, 503, 504, 505, 507, 508, 509, - 510, 574, 591, 558, 528, 491, 582, 525, 529, 530, - 357, 594, 0, 0, 0, 482, 367, 368, 0, 339, - 338, 380, 416, 345, 291, 292, 655, 329, 399, 596, - 629, 630, 521, 0, 583, 522, 531, 321, 555, 567, - 566, 395, 481, 0, 578, 581, 511, 654, 0, 575, - 590, 658, 589, 651, 405, 0, 427, 587, 534, 0, - 579, 553, 0, 580, 549, 584, 0, 523, 0, 435, - 463, 475, 492, 495, 524, 609, 610, 611, 296, 494, - 613, 614, 615, 616, 617, 618, 619, 612, 466, 556, - 533, 559, 474, 536, 535, 0, 0, 570, 490, 571, - 572, 389, 390, 391, 392, 349, 597, 314, 493, 415, - 0, 557, 0, 0, 0, 0, 0, 0, 0, 0, - 562, 563, 560, 663, 0, 620, 621, 0, 0, 487, - 488, 344, 351, 506, 353, 313, 404, 346, 472, 361, - 0, 499, 564, 500, 623, 626, 624, 625, 396, 356, - 358, 431, 362, 372, 419, 471, 402, 424, 311, 462, - 433, 377, 550, 577, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 280, 0, 0, 0, 0, + 0, 0, 0, 0, 299, 441, 460, 310, 429, 473, + 315, 437, 452, 305, 400, 426, 0, 0, 301, 458, + 436, 382, 359, 360, 300, 0, 420, 334, 350, 331, + 398, 0, 457, 485, 330, 476, 0, 468, 303, 0, + 467, 397, 454, 459, 383, 376, 0, 302, 456, 381, + 375, 363, 340, 501, 364, 365, 354, 409, 373, 410, + 355, 387, 386, 388, 0, 0, 0, 0, 0, 496, + 497, 0, 0, 645, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 627, 0, 0, 631, 0, + 470, 0, 0, 0, 0, 0, 0, 440, 0, 0, + 366, 0, 0, 0, 486, 0, 423, 403, 659, 0, + 0, 421, 371, 455, 411, 461, 442, 469, 417, 412, + 294, 443, 333, 384, 306, 308, 328, 335, 337, 341, + 342, 393, 394, 406, 428, 445, 446, 447, 332, 316, + 422, 317, 352, 318, 295, 324, 322, 325, 430, 326, + 297, 407, 451, 0, 347, 418, 379, 298, 378, 408, + 450, 449, 307, 477, 483, 484, 573, 0, 489, 660, + 661, 662, 498, 0, 413, 503, 504, 505, 507, 508, + 509, 510, 574, 591, 558, 528, 491, 582, 525, 529, + 530, 357, 594, 0, 0, 0, 482, 367, 368, 0, + 339, 338, 380, 416, 345, 291, 292, 655, 329, 399, + 596, 629, 630, 521, 0, 583, 522, 531, 321, 555, + 567, 566, 395, 481, 0, 578, 581, 511, 654, 0, + 575, 590, 658, 589, 651, 405, 0, 427, 587, 534, + 0, 579, 553, 0, 580, 549, 584, 0, 523, 0, + 435, 463, 475, 492, 495, 524, 609, 610, 611, 296, + 494, 613, 614, 615, 616, 617, 618, 619, 612, 466, + 556, 533, 559, 474, 536, 535, 0, 0, 570, 490, + 571, 572, 389, 390, 391, 392, 349, 597, 314, 493, + 415, 0, 557, 0, 0, 0, 0, 0, 0, 0, + 0, 562, 563, 560, 663, 0, 620, 621, 0, 0, + 487, 488, 344, 351, 506, 353, 313, 404, 346, 472, + 361, 0, 499, 564, 500, 623, 626, 624, 625, 396, + 356, 358, 431, 362, 372, 419, 471, 402, 424, 311, + 462, 433, 377, 550, 577, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 280, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 605, 604, 603, 602, 601, 600, 599, 598, 0, 0, - 547, 448, 323, 285, 319, 320, 327, 652, 649, 453, - 653, 0, 293, 527, 370, 0, 414, 343, 592, 593, - 0, 644, 241, 242, 243, 244, 245, 246, 247, 248, - 286, 249, 250, 251, 252, 253, 254, 255, 258, 259, - 260, 261, 262, 263, 264, 265, 595, 256, 257, 266, - 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, - 277, 278, 279, 0, 0, 0, 287, 288, 289, 290, - 0, 0, 281, 282, 283, 284, 0, 0, 0, 478, - 479, 480, 502, 0, 464, 526, 650, 0, 0, 0, - 0, 0, 0, 0, 576, 588, 622, 0, 632, 633, - 635, 637, 636, 639, 438, 439, 0, 641, 642, 643, - 640, 374, 425, 444, 432, 0, 656, 517, 518, 657, - 628, 401, 0, 0, 532, 565, 554, 638, 520, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 336, - 0, 0, 369, 569, 551, 561, 552, 537, 538, 539, - 546, 348, 540, 541, 542, 512, 543, 513, 544, 545, - 0, 568, 519, 434, 385, 586, 585, 0, 0, 0, + 0, 605, 604, 603, 602, 601, 600, 599, 598, 0, + 0, 547, 448, 323, 285, 319, 320, 327, 652, 649, + 453, 653, 0, 293, 527, 370, 0, 414, 343, 592, + 593, 0, 644, 241, 242, 243, 244, 245, 246, 247, + 248, 286, 249, 250, 251, 252, 253, 254, 255, 258, + 259, 260, 261, 262, 263, 264, 265, 595, 256, 257, + 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, + 276, 277, 278, 279, 0, 0, 0, 287, 288, 289, + 290, 0, 0, 281, 282, 283, 284, 0, 0, 0, + 478, 479, 480, 502, 0, 464, 526, 650, 0, 0, + 0, 0, 0, 0, 0, 576, 588, 622, 0, 632, + 633, 635, 637, 636, 639, 438, 439, 0, 641, 642, + 643, 640, 374, 425, 444, 432, 0, 656, 517, 518, + 657, 628, 401, 0, 0, 532, 565, 554, 638, 520, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 228, 0, 0, - 0, 0, 0, 0, 309, 229, 514, 634, 516, 515, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 312, + 336, 0, 0, 369, 569, 551, 561, 552, 537, 538, + 539, 546, 348, 540, 541, 542, 512, 543, 513, 544, + 545, 0, 568, 519, 434, 385, 586, 585, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 228, 0, + 0, 0, 0, 0, 0, 309, 229, 514, 634, 516, + 515, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 312, 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, 0, 0, 0, 0, 0, 0, 0, - 0, 299, 441, 460, 310, 429, 473, 315, 437, 452, - 305, 400, 426, 0, 0, 301, 458, 436, 382, 359, - 360, 300, 0, 420, 334, 350, 331, 398, 0, 457, - 485, 330, 476, 0, 468, 303, 0, 467, 397, 454, - 459, 383, 376, 0, 302, 456, 381, 375, 363, 340, - 501, 364, 365, 354, 409, 373, 410, 355, 387, 386, - 388, 0, 0, 0, 0, 0, 496, 497, 0, 0, - 645, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 627, 0, 682, 631, 0, 470, 0, 0, - 0, 0, 0, 0, 440, 0, 0, 366, 0, 0, - 0, 486, 0, 423, 403, 659, 0, 0, 421, 371, - 455, 411, 461, 442, 469, 417, 412, 294, 443, 333, - 384, 306, 308, 328, 335, 337, 341, 342, 393, 394, - 406, 428, 445, 446, 447, 332, 316, 422, 317, 352, - 318, 295, 324, 322, 325, 430, 326, 297, 407, 451, - 0, 347, 418, 379, 298, 378, 408, 450, 449, 307, - 477, 483, 484, 573, 0, 489, 660, 661, 662, 498, - 0, 413, 503, 504, 505, 507, 508, 509, 510, 574, - 591, 558, 528, 491, 582, 525, 529, 530, 357, 594, - 0, 0, 0, 482, 367, 368, 0, 339, 338, 380, - 416, 345, 291, 292, 655, 329, 399, 596, 629, 630, - 521, 0, 583, 522, 531, 321, 555, 567, 566, 395, - 481, 0, 578, 581, 511, 654, 0, 575, 590, 658, - 589, 651, 405, 0, 427, 587, 534, 0, 579, 553, - 0, 580, 549, 584, 0, 523, 0, 435, 463, 475, - 492, 495, 524, 609, 610, 611, 296, 494, 613, 614, - 615, 616, 617, 618, 619, 612, 466, 556, 533, 559, - 474, 536, 535, 0, 0, 570, 490, 571, 572, 389, - 390, 391, 392, 349, 597, 314, 493, 415, 0, 557, - 0, 0, 0, 0, 0, 0, 0, 0, 562, 563, - 560, 663, 0, 620, 621, 0, 0, 487, 488, 344, - 351, 506, 353, 313, 404, 346, 472, 361, 0, 499, - 564, 500, 623, 626, 624, 625, 396, 356, 358, 431, - 362, 372, 419, 471, 402, 424, 311, 462, 433, 377, - 550, 577, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 280, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 605, 604, - 603, 602, 601, 600, 599, 598, 0, 0, 547, 448, - 323, 285, 319, 320, 327, 652, 649, 453, 653, 0, - 293, 527, 370, 0, 414, 343, 592, 593, 0, 644, - 241, 242, 243, 244, 245, 246, 247, 248, 286, 249, - 250, 251, 252, 253, 254, 255, 258, 259, 260, 261, - 262, 263, 264, 265, 595, 256, 257, 266, 267, 268, - 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, - 279, 0, 0, 0, 287, 288, 289, 290, 0, 0, - 281, 282, 283, 284, 0, 0, 0, 478, 479, 480, - 502, 0, 464, 526, 650, 0, 0, 0, 0, 0, - 0, 0, 576, 588, 622, 0, 632, 633, 635, 637, - 636, 639, 438, 439, 0, 641, 642, 643, 640, 374, - 425, 444, 432, 0, 656, 517, 518, 657, 628, 401, - 0, 0, 532, 565, 554, 638, 520, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 336, 0, 0, - 369, 569, 551, 561, 552, 537, 538, 539, 546, 348, - 540, 541, 542, 512, 543, 513, 544, 545, 0, 568, - 519, 434, 385, 586, 585, 0, 0, 0, 0, 0, + 0, 0, 299, 441, 460, 310, 429, 473, 315, 437, + 452, 305, 400, 426, 0, 0, 301, 458, 436, 382, + 359, 360, 300, 0, 420, 334, 350, 331, 398, 0, + 457, 485, 330, 476, 0, 468, 303, 0, 467, 397, + 454, 459, 383, 376, 0, 302, 456, 381, 375, 363, + 340, 501, 364, 365, 354, 409, 373, 410, 355, 387, + 386, 388, 0, 0, 0, 0, 0, 496, 497, 0, + 0, 645, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 627, 0, 680, 631, 0, 470, 0, + 0, 0, 0, 0, 0, 440, 0, 0, 366, 0, + 0, 0, 486, 0, 423, 403, 659, 0, 0, 421, + 371, 455, 411, 461, 442, 469, 417, 412, 294, 443, + 333, 384, 306, 308, 328, 335, 337, 341, 342, 393, + 394, 406, 428, 445, 446, 447, 332, 316, 422, 317, + 352, 318, 295, 324, 322, 325, 430, 326, 297, 407, + 451, 0, 347, 418, 379, 298, 378, 408, 450, 449, + 307, 477, 483, 484, 573, 0, 489, 660, 661, 662, + 498, 0, 413, 503, 504, 505, 507, 508, 509, 510, + 574, 591, 558, 528, 491, 582, 525, 529, 530, 357, + 594, 0, 0, 0, 482, 367, 368, 0, 339, 338, + 380, 416, 345, 291, 292, 655, 329, 399, 596, 629, + 630, 521, 0, 583, 522, 531, 321, 555, 567, 566, + 395, 481, 0, 578, 581, 511, 654, 0, 575, 590, + 658, 589, 651, 405, 0, 427, 587, 534, 0, 579, + 553, 0, 580, 549, 584, 0, 523, 0, 435, 463, + 475, 492, 495, 524, 609, 610, 611, 296, 494, 613, + 614, 615, 616, 617, 618, 619, 612, 466, 556, 533, + 559, 474, 536, 535, 0, 0, 570, 490, 571, 572, + 389, 390, 391, 392, 349, 597, 314, 493, 415, 0, + 557, 0, 0, 0, 0, 0, 0, 0, 0, 562, + 563, 560, 663, 0, 620, 621, 0, 0, 487, 488, + 344, 351, 506, 353, 313, 404, 346, 472, 361, 0, + 499, 564, 500, 623, 626, 624, 625, 396, 356, 358, + 431, 362, 372, 419, 471, 402, 424, 311, 462, 433, + 377, 550, 577, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 280, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 605, + 604, 603, 602, 601, 600, 599, 598, 0, 0, 547, + 448, 323, 285, 319, 320, 327, 652, 649, 453, 653, + 0, 293, 527, 370, 0, 414, 343, 592, 593, 0, + 644, 241, 242, 243, 244, 245, 246, 247, 248, 286, + 249, 250, 251, 252, 253, 254, 255, 258, 259, 260, + 261, 262, 263, 264, 265, 595, 256, 257, 266, 267, + 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, + 278, 279, 0, 0, 0, 287, 288, 289, 290, 0, + 0, 281, 282, 283, 284, 0, 0, 0, 478, 479, + 480, 502, 0, 464, 526, 650, 0, 0, 0, 0, + 0, 0, 0, 576, 588, 622, 0, 632, 633, 635, + 637, 636, 639, 438, 439, 0, 641, 642, 643, 640, + 374, 425, 444, 432, 0, 656, 517, 518, 657, 628, + 401, 0, 0, 532, 565, 554, 638, 520, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 336, 0, + 0, 369, 569, 551, 561, 552, 537, 538, 539, 546, + 348, 540, 541, 542, 512, 543, 513, 544, 545, 0, + 568, 519, 434, 385, 586, 585, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 228, 0, 0, 0, 0, - 0, 0, 309, 229, 514, 634, 516, 515, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 312, 0, 0, + 0, 0, 0, 0, 0, 0, 228, 0, 0, 0, + 0, 0, 0, 309, 229, 514, 634, 516, 515, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 312, 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, 0, 0, 0, 0, 0, 0, 0, 0, 299, - 441, 460, 310, 429, 473, 315, 437, 452, 305, 400, - 426, 0, 0, 301, 458, 436, 382, 359, 360, 300, - 0, 420, 334, 350, 331, 398, 0, 457, 485, 330, - 476, 0, 468, 303, 0, 467, 397, 454, 459, 383, - 376, 0, 302, 456, 381, 375, 363, 340, 501, 364, - 365, 354, 409, 373, 410, 355, 387, 386, 388, 0, - 0, 0, 0, 0, 496, 497, 0, 0, 645, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 627, 0, 0, 631, 0, 470, 0, 0, 0, 0, - 0, 0, 440, 0, 0, 366, 0, 0, 0, 486, - 0, 423, 403, 659, 0, 0, 421, 371, 455, 411, - 461, 442, 469, 417, 412, 294, 443, 333, 384, 306, - 308, 328, 335, 337, 341, 342, 393, 394, 406, 428, - 445, 446, 447, 332, 316, 422, 317, 352, 318, 295, - 324, 322, 325, 430, 326, 297, 407, 451, 0, 347, - 418, 379, 298, 378, 408, 450, 449, 307, 477, 483, - 484, 573, 0, 489, 660, 661, 662, 498, 0, 413, - 503, 504, 505, 507, 508, 509, 510, 574, 591, 558, - 528, 491, 582, 525, 529, 530, 357, 594, 0, 0, - 0, 482, 367, 368, 0, 339, 338, 380, 416, 345, - 291, 292, 655, 329, 399, 596, 629, 630, 521, 0, - 583, 522, 531, 321, 555, 567, 566, 395, 481, 0, - 578, 581, 511, 654, 0, 575, 590, 658, 589, 651, - 405, 0, 427, 587, 534, 0, 579, 553, 0, 580, - 549, 584, 0, 523, 0, 435, 463, 475, 492, 495, - 524, 609, 610, 611, 296, 494, 613, 614, 615, 616, - 617, 618, 619, 612, 466, 556, 533, 559, 474, 536, - 535, 0, 0, 570, 490, 571, 572, 389, 390, 391, - 392, 349, 597, 314, 493, 415, 0, 557, 0, 0, - 0, 0, 0, 0, 0, 0, 562, 563, 560, 663, - 0, 620, 621, 0, 0, 487, 488, 344, 351, 506, - 353, 313, 404, 346, 472, 361, 0, 499, 564, 500, - 623, 626, 624, 625, 396, 356, 358, 431, 362, 372, - 419, 471, 402, 424, 311, 462, 433, 377, 550, 577, + 299, 441, 460, 310, 429, 473, 315, 437, 452, 305, + 400, 426, 0, 0, 301, 458, 436, 382, 359, 360, + 300, 0, 420, 334, 350, 331, 398, 0, 457, 485, + 330, 476, 0, 468, 303, 0, 467, 397, 454, 459, + 383, 376, 0, 302, 456, 381, 375, 363, 340, 501, + 364, 365, 354, 409, 373, 410, 355, 387, 386, 388, + 0, 0, 0, 0, 0, 496, 497, 0, 0, 645, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 280, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 605, 604, 603, 602, - 601, 600, 599, 598, 982, 0, 547, 448, 323, 285, - 319, 320, 327, 652, 649, 453, 653, 0, 293, 527, - 370, 0, 414, 343, 592, 593, 0, 644, 241, 242, - 243, 244, 245, 246, 247, 248, 286, 249, 250, 251, - 252, 253, 254, 255, 258, 259, 260, 261, 262, 263, - 264, 265, 595, 256, 257, 266, 267, 268, 269, 270, - 271, 272, 273, 274, 275, 276, 277, 278, 279, 0, - 0, 0, 287, 288, 289, 290, 0, 0, 281, 282, - 283, 284, 0, 0, 0, 478, 479, 480, 502, 0, - 464, 526, 650, 0, 0, 0, 0, 0, 0, 0, - 576, 588, 622, 0, 632, 633, 635, 637, 636, 639, - 438, 439, 0, 641, 642, 643, 640, 374, 425, 444, - 432, 0, 656, 517, 518, 657, 628, 401, 0, 0, - 532, 565, 554, 638, 520, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 336, 0, 0, 369, 569, - 551, 561, 552, 537, 538, 539, 546, 348, 540, 541, - 542, 512, 543, 513, 544, 545, 0, 568, 519, 434, - 385, 586, 585, 0, 0, 0, 0, 0, 0, 0, + 0, 627, 0, 0, 631, 0, 470, 0, 0, 0, + 0, 0, 0, 440, 0, 0, 366, 0, 0, 0, + 486, 0, 423, 403, 659, 0, 0, 421, 371, 455, + 411, 461, 442, 469, 417, 412, 294, 443, 333, 384, + 306, 308, 328, 335, 337, 341, 342, 393, 394, 406, + 428, 445, 446, 447, 332, 316, 422, 317, 352, 318, + 295, 324, 322, 325, 430, 326, 297, 407, 451, 0, + 347, 418, 379, 298, 378, 408, 450, 449, 307, 477, + 483, 484, 573, 0, 489, 660, 661, 662, 498, 0, + 413, 503, 504, 505, 507, 508, 509, 510, 574, 591, + 558, 528, 491, 582, 525, 529, 530, 357, 594, 0, + 0, 0, 482, 367, 368, 0, 339, 338, 380, 416, + 345, 291, 292, 655, 329, 399, 596, 629, 630, 521, + 0, 583, 522, 531, 321, 555, 567, 566, 395, 481, + 0, 578, 581, 511, 654, 0, 575, 590, 658, 589, + 651, 405, 0, 427, 587, 534, 0, 579, 553, 0, + 580, 549, 584, 0, 523, 0, 435, 463, 475, 492, + 495, 524, 609, 610, 611, 296, 494, 613, 614, 615, + 616, 617, 618, 619, 612, 466, 556, 533, 559, 474, + 536, 535, 0, 0, 570, 490, 571, 572, 389, 390, + 391, 392, 349, 597, 314, 493, 415, 0, 557, 0, + 0, 0, 0, 0, 0, 0, 0, 562, 563, 560, + 663, 0, 620, 621, 0, 0, 487, 488, 344, 351, + 506, 353, 313, 404, 346, 472, 361, 0, 499, 564, + 500, 623, 626, 624, 625, 396, 356, 358, 431, 362, + 372, 419, 471, 402, 424, 311, 462, 433, 377, 550, + 577, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 280, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 605, 604, 603, + 602, 601, 600, 599, 598, 979, 0, 547, 448, 323, + 285, 319, 320, 327, 652, 649, 453, 653, 0, 293, + 527, 370, 0, 414, 343, 592, 593, 0, 644, 241, + 242, 243, 244, 245, 246, 247, 248, 286, 249, 250, + 251, 252, 253, 254, 255, 258, 259, 260, 261, 262, + 263, 264, 265, 595, 256, 257, 266, 267, 268, 269, + 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, + 0, 0, 0, 287, 288, 289, 290, 0, 0, 281, + 282, 283, 284, 0, 0, 0, 478, 479, 480, 502, + 0, 464, 526, 650, 0, 0, 0, 0, 0, 0, + 0, 576, 588, 622, 0, 632, 633, 635, 637, 636, + 639, 438, 439, 0, 641, 642, 643, 640, 374, 425, + 444, 432, 0, 656, 517, 518, 657, 628, 401, 0, + 0, 532, 565, 554, 638, 520, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 336, 0, 0, 369, + 569, 551, 561, 552, 537, 538, 539, 546, 348, 540, + 541, 542, 512, 543, 513, 544, 545, 0, 568, 519, + 434, 385, 586, 585, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 228, 0, 0, 0, 0, 0, 0, - 309, 229, 514, 634, 516, 515, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 312, 0, 0, 0, 0, + 0, 0, 0, 0, 228, 0, 0, 0, 0, 0, + 0, 309, 229, 514, 634, 516, 515, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 312, 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, 0, - 0, 0, 0, 0, 0, 0, 0, 299, 441, 460, - 310, 429, 473, 315, 437, 452, 305, 400, 426, 0, - 0, 301, 458, 436, 382, 359, 360, 300, 0, 420, - 334, 350, 331, 398, 0, 457, 485, 330, 476, 0, - 468, 303, 0, 467, 397, 454, 459, 383, 376, 0, - 302, 456, 381, 375, 363, 340, 501, 364, 365, 354, - 409, 373, 410, 355, 387, 386, 388, 0, 0, 0, - 0, 0, 496, 497, 0, 0, 645, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 627, 0, - 0, 631, 0, 470, 0, 0, 0, 0, 0, 0, - 440, 0, 0, 366, 0, 0, 0, 486, 0, 423, - 403, 659, 0, 0, 421, 371, 455, 411, 461, 442, - 469, 417, 412, 294, 443, 333, 384, 306, 308, 328, - 335, 337, 341, 342, 393, 394, 406, 428, 445, 446, - 447, 332, 316, 422, 317, 352, 318, 295, 324, 322, - 325, 430, 326, 297, 407, 451, 0, 347, 418, 379, - 298, 378, 408, 450, 449, 307, 477, 483, 484, 573, - 0, 489, 660, 661, 662, 498, 0, 413, 503, 504, - 505, 507, 508, 509, 510, 574, 591, 558, 528, 491, - 582, 525, 529, 530, 357, 594, 0, 0, 0, 482, - 367, 368, 0, 339, 338, 380, 416, 345, 291, 292, - 655, 329, 399, 596, 629, 630, 521, 0, 583, 522, - 531, 321, 555, 567, 566, 395, 481, 0, 578, 581, - 511, 654, 0, 575, 590, 658, 589, 651, 405, 0, - 427, 587, 534, 0, 579, 553, 0, 580, 549, 584, - 0, 523, 0, 435, 463, 475, 492, 495, 524, 609, - 610, 611, 296, 494, 613, 614, 615, 616, 617, 618, - 619, 612, 466, 556, 533, 559, 474, 536, 535, 0, - 0, 570, 490, 571, 572, 389, 390, 391, 392, 349, - 597, 314, 493, 415, 0, 557, 0, 0, 0, 0, - 0, 0, 0, 0, 562, 563, 560, 663, 0, 620, - 621, 0, 0, 487, 488, 344, 351, 506, 353, 313, - 404, 346, 472, 361, 0, 499, 564, 500, 623, 626, - 624, 625, 396, 356, 358, 431, 362, 372, 419, 471, - 402, 424, 311, 462, 433, 377, 550, 577, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 280, + 0, 0, 0, 0, 0, 0, 0, 0, 299, 441, + 460, 310, 429, 473, 315, 437, 452, 305, 400, 426, + 0, 0, 301, 458, 436, 382, 359, 360, 300, 0, + 420, 334, 350, 331, 398, 0, 457, 485, 330, 476, + 0, 468, 303, 0, 467, 397, 454, 459, 383, 376, + 0, 302, 456, 381, 375, 363, 340, 501, 364, 365, + 354, 409, 373, 410, 355, 387, 386, 388, 0, 0, + 0, 0, 0, 496, 497, 0, 0, 645, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 627, + 0, 0, 631, 0, 470, 0, 0, 0, 0, 0, + 0, 440, 0, 0, 366, 0, 0, 0, 486, 0, + 423, 403, 659, 0, 0, 421, 371, 455, 411, 461, + 442, 469, 417, 412, 294, 443, 333, 384, 306, 308, + 328, 335, 337, 341, 342, 393, 394, 406, 428, 445, + 446, 447, 332, 316, 422, 317, 352, 318, 295, 324, + 322, 325, 430, 326, 297, 407, 451, 0, 347, 418, + 379, 298, 378, 408, 450, 449, 307, 477, 483, 484, + 573, 0, 489, 660, 661, 662, 498, 0, 413, 503, + 504, 505, 507, 508, 509, 510, 574, 591, 558, 528, + 491, 582, 525, 529, 530, 357, 594, 0, 0, 0, + 482, 367, 368, 0, 339, 338, 380, 416, 345, 291, + 292, 655, 329, 399, 596, 629, 630, 521, 0, 583, + 522, 531, 321, 555, 567, 566, 395, 481, 0, 578, + 581, 511, 654, 0, 575, 590, 658, 589, 651, 405, + 0, 427, 587, 534, 0, 579, 553, 0, 580, 549, + 584, 0, 523, 0, 435, 463, 475, 492, 495, 524, + 609, 610, 611, 296, 494, 613, 614, 615, 616, 617, + 618, 619, 612, 466, 556, 533, 559, 474, 536, 535, + 0, 0, 570, 490, 571, 572, 389, 390, 391, 392, + 349, 597, 314, 493, 415, 0, 557, 0, 0, 0, + 0, 0, 0, 0, 0, 562, 563, 560, 663, 0, + 620, 621, 0, 0, 487, 488, 344, 351, 506, 353, + 313, 404, 346, 472, 361, 0, 499, 564, 500, 623, + 626, 624, 625, 396, 356, 358, 431, 362, 372, 419, + 471, 402, 424, 311, 462, 433, 377, 550, 577, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 605, 604, 603, 602, 601, 600, - 599, 598, 0, 0, 547, 448, 323, 285, 319, 320, - 327, 652, 649, 453, 653, 0, 293, 527, 370, 0, - 414, 343, 592, 593, 0, 644, 241, 242, 243, 244, - 245, 246, 247, 248, 286, 249, 250, 251, 252, 253, - 254, 255, 258, 259, 260, 261, 262, 263, 264, 265, - 595, 256, 257, 266, 267, 268, 269, 270, 271, 272, - 273, 274, 275, 276, 277, 278, 279, 0, 0, 0, - 287, 288, 289, 290, 0, 0, 281, 282, 283, 284, - 0, 0, 0, 478, 479, 480, 502, 0, 464, 526, - 650, 0, 0, 0, 0, 0, 0, 0, 576, 588, - 622, 0, 632, 633, 635, 637, 636, 639, 438, 439, - 0, 641, 642, 643, 640, 374, 425, 444, 432, 0, - 656, 517, 518, 657, 628, 401, 0, 0, 532, 565, - 554, 638, 520, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 336, 0, 0, 369, 569, 551, 561, - 552, 537, 538, 539, 546, 348, 540, 541, 542, 512, - 543, 513, 544, 545, 0, 568, 519, 434, 385, 586, - 585, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 280, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 605, 604, 603, 602, 601, + 600, 599, 598, 0, 0, 547, 448, 323, 285, 319, + 320, 327, 652, 649, 453, 653, 0, 293, 527, 370, + 0, 414, 343, 592, 593, 0, 644, 241, 242, 243, + 244, 245, 246, 247, 248, 286, 249, 250, 251, 252, + 253, 254, 255, 258, 259, 260, 261, 262, 263, 264, + 265, 595, 256, 257, 266, 267, 268, 269, 270, 271, + 272, 273, 274, 275, 276, 277, 278, 279, 0, 0, + 0, 287, 288, 289, 290, 0, 0, 281, 282, 283, + 284, 0, 0, 0, 478, 479, 480, 502, 0, 464, + 526, 650, 0, 0, 0, 0, 0, 0, 0, 576, + 588, 622, 0, 632, 633, 635, 637, 636, 639, 438, + 439, 0, 641, 642, 643, 640, 374, 425, 444, 432, + 0, 656, 517, 518, 657, 628, 401, 0, 0, 532, + 565, 554, 638, 520, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 336, 0, 0, 369, 569, 551, + 561, 552, 537, 538, 539, 546, 348, 540, 541, 542, + 512, 543, 513, 544, 545, 0, 568, 519, 434, 385, + 586, 585, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 228, 0, 0, 0, 0, 0, 0, 309, 229, - 514, 634, 516, 515, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 312, 0, 0, 0, 0, 0, 0, + 0, 0, 228, 0, 0, 0, 0, 0, 0, 309, + 229, 514, 634, 516, 515, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 312, 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, 0, 0, 0, - 0, 0, 0, 0, 0, 299, 441, 460, 310, 429, - 473, 315, 437, 452, 305, 400, 426, 0, 0, 301, - 458, 436, 382, 359, 360, 300, 0, 420, 334, 350, - 331, 398, 0, 457, 485, 330, 476, 0, 468, 303, - 0, 467, 397, 454, 459, 383, 376, 0, 302, 456, - 381, 375, 363, 340, 501, 364, 365, 354, 409, 373, - 410, 355, 387, 386, 388, 0, 0, 0, 0, 0, - 496, 497, 0, 0, 645, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 627, 0, 0, 631, - 0, 470, 0, 0, 0, 0, 0, 0, 440, 0, - 0, 366, 0, 0, 0, 486, 0, 423, 403, 659, - 0, 0, 421, 371, 455, 411, 461, 442, 469, 417, - 412, 294, 443, 333, 384, 306, 308, 328, 335, 337, - 341, 342, 393, 394, 406, 428, 445, 446, 447, 332, - 316, 422, 317, 352, 318, 295, 324, 322, 325, 430, - 326, 297, 407, 451, 0, 347, 3188, 379, 298, 378, - 408, 450, 449, 307, 477, 483, 484, 573, 0, 489, - 660, 661, 662, 498, 0, 413, 503, 504, 505, 507, - 508, 509, 510, 574, 591, 558, 528, 491, 582, 525, - 529, 530, 357, 594, 0, 0, 0, 482, 367, 368, - 0, 339, 338, 380, 416, 345, 291, 292, 655, 329, - 399, 596, 629, 630, 521, 0, 583, 522, 531, 321, - 555, 567, 566, 395, 481, 0, 578, 581, 511, 654, - 0, 575, 590, 658, 589, 651, 405, 0, 427, 587, - 534, 0, 579, 553, 0, 580, 549, 584, 0, 523, - 0, 435, 463, 475, 492, 495, 524, 609, 610, 611, - 296, 494, 613, 614, 615, 616, 617, 618, 619, 612, - 466, 556, 533, 559, 474, 536, 535, 0, 0, 570, - 490, 571, 572, 389, 390, 391, 392, 349, 597, 314, - 493, 415, 0, 557, 0, 0, 0, 0, 0, 0, - 0, 0, 562, 563, 560, 663, 0, 620, 621, 0, - 0, 487, 488, 344, 351, 506, 353, 313, 404, 346, - 472, 361, 0, 499, 564, 500, 623, 626, 624, 625, - 396, 356, 358, 431, 362, 372, 419, 471, 402, 424, - 311, 462, 433, 377, 550, 577, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 280, 0, 0, + 0, 0, 0, 0, 0, 0, 299, 441, 460, 310, + 429, 473, 315, 437, 452, 305, 400, 426, 0, 0, + 301, 458, 436, 382, 359, 360, 300, 0, 420, 334, + 350, 331, 398, 0, 457, 485, 330, 476, 0, 468, + 303, 0, 467, 397, 454, 459, 383, 376, 0, 302, + 456, 381, 375, 363, 340, 501, 364, 365, 354, 409, + 373, 410, 355, 387, 386, 388, 0, 0, 0, 0, + 0, 496, 497, 0, 0, 645, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 627, 0, 0, + 631, 0, 470, 0, 0, 0, 0, 0, 0, 440, + 0, 0, 366, 0, 0, 0, 486, 0, 423, 403, + 659, 0, 0, 421, 371, 455, 411, 461, 442, 469, + 417, 412, 294, 443, 333, 384, 306, 308, 328, 335, + 337, 341, 342, 393, 394, 406, 428, 445, 446, 447, + 332, 316, 422, 317, 352, 318, 295, 324, 322, 325, + 430, 326, 297, 407, 451, 0, 347, 3174, 379, 298, + 378, 408, 450, 449, 307, 477, 483, 484, 573, 0, + 489, 660, 661, 662, 498, 0, 413, 503, 504, 505, + 507, 508, 509, 510, 574, 591, 558, 528, 491, 582, + 525, 529, 530, 357, 594, 0, 0, 0, 482, 367, + 368, 0, 339, 338, 380, 416, 345, 291, 292, 655, + 329, 399, 596, 629, 630, 521, 0, 583, 522, 531, + 321, 555, 567, 566, 395, 481, 0, 578, 581, 511, + 654, 0, 575, 590, 658, 589, 651, 405, 0, 427, + 587, 534, 0, 579, 553, 0, 580, 549, 584, 0, + 523, 0, 435, 463, 475, 492, 495, 524, 609, 610, + 611, 296, 494, 613, 614, 615, 616, 617, 618, 619, + 612, 466, 556, 533, 559, 474, 536, 535, 0, 0, + 570, 490, 571, 572, 389, 390, 391, 392, 349, 597, + 314, 493, 415, 0, 557, 0, 0, 0, 0, 0, + 0, 0, 0, 562, 563, 560, 663, 0, 620, 621, + 0, 0, 487, 488, 344, 351, 506, 353, 313, 404, + 346, 472, 361, 0, 499, 564, 500, 623, 626, 624, + 625, 396, 356, 358, 431, 362, 372, 419, 471, 402, + 424, 311, 462, 433, 377, 550, 577, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 280, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 605, 604, 603, 602, 601, 600, 599, + 598, 0, 0, 547, 448, 323, 285, 319, 320, 327, + 652, 649, 453, 653, 0, 293, 527, 370, 0, 414, + 343, 592, 593, 0, 644, 241, 242, 243, 244, 245, + 246, 247, 248, 286, 249, 250, 251, 252, 253, 254, + 255, 258, 259, 260, 261, 262, 263, 264, 265, 595, + 256, 257, 266, 267, 268, 269, 270, 271, 272, 273, + 274, 275, 276, 277, 278, 279, 0, 0, 0, 287, + 288, 289, 290, 0, 0, 281, 282, 283, 284, 0, + 0, 0, 478, 479, 480, 502, 0, 464, 526, 650, + 0, 0, 0, 0, 0, 0, 0, 576, 588, 622, + 0, 632, 633, 635, 637, 636, 639, 438, 439, 0, + 641, 642, 643, 640, 374, 425, 444, 432, 0, 656, + 517, 518, 657, 628, 401, 0, 0, 532, 565, 554, + 638, 520, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 336, 0, 0, 369, 569, 551, 561, 552, + 537, 538, 539, 546, 348, 540, 541, 542, 512, 543, + 513, 544, 545, 0, 568, 519, 434, 385, 586, 585, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 228, 0, 0, 0, 0, 0, 0, 309, 229, 514, + 634, 516, 515, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 312, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 605, 604, 603, 602, 601, 600, 599, 598, - 0, 0, 547, 448, 323, 285, 319, 320, 327, 652, - 649, 453, 653, 0, 293, 527, 370, 0, 414, 343, - 592, 593, 0, 644, 241, 242, 243, 244, 245, 246, - 247, 248, 286, 249, 250, 251, 252, 253, 254, 255, - 258, 259, 260, 261, 262, 263, 264, 265, 595, 256, - 257, 266, 267, 268, 269, 270, 271, 272, 273, 274, - 275, 276, 277, 278, 279, 0, 0, 0, 287, 288, - 289, 290, 0, 0, 281, 282, 283, 284, 0, 0, - 0, 478, 479, 480, 502, 0, 464, 526, 650, 0, - 0, 0, 0, 0, 0, 0, 576, 588, 622, 0, - 632, 633, 635, 637, 636, 639, 438, 439, 0, 641, - 642, 643, 640, 374, 425, 444, 432, 0, 656, 517, - 518, 657, 628, 401, 0, 0, 532, 565, 554, 638, - 520, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 336, 0, 0, 369, 569, 551, 561, 552, 537, - 538, 539, 546, 348, 540, 541, 542, 512, 543, 513, - 544, 545, 0, 568, 519, 434, 385, 586, 585, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 228, - 0, 0, 0, 0, 0, 0, 309, 229, 514, 634, - 516, 515, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 312, 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, 299, 441, 460, 310, 429, 473, + 315, 437, 1904, 305, 400, 426, 0, 0, 301, 458, + 436, 382, 359, 360, 300, 0, 420, 334, 350, 331, + 398, 0, 457, 485, 330, 476, 0, 468, 303, 0, + 467, 397, 454, 459, 383, 376, 0, 302, 456, 381, + 375, 363, 340, 501, 364, 365, 354, 409, 373, 410, + 355, 387, 386, 388, 0, 0, 0, 0, 0, 496, + 497, 0, 0, 645, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 627, 0, 0, 631, 0, + 470, 0, 0, 0, 0, 0, 0, 440, 0, 0, + 366, 0, 0, 0, 486, 0, 423, 403, 659, 0, + 0, 421, 371, 455, 411, 461, 442, 469, 417, 412, + 294, 443, 333, 384, 306, 308, 328, 335, 337, 341, + 342, 393, 394, 406, 428, 445, 446, 447, 332, 316, + 422, 317, 352, 318, 295, 324, 322, 325, 430, 326, + 297, 407, 451, 0, 347, 418, 379, 298, 378, 408, + 450, 449, 307, 477, 483, 484, 573, 0, 489, 660, + 661, 662, 498, 0, 413, 503, 504, 505, 507, 508, + 509, 510, 574, 591, 558, 528, 491, 582, 525, 529, + 530, 357, 594, 0, 0, 0, 482, 367, 368, 0, + 339, 338, 380, 416, 345, 291, 292, 655, 329, 399, + 596, 629, 630, 521, 0, 583, 522, 531, 321, 555, + 567, 566, 395, 481, 0, 578, 581, 511, 654, 0, + 575, 590, 658, 589, 651, 405, 0, 427, 587, 534, + 0, 579, 553, 0, 580, 549, 584, 0, 523, 0, + 435, 463, 475, 492, 495, 524, 609, 610, 611, 296, + 494, 613, 614, 615, 616, 617, 618, 619, 612, 466, + 556, 533, 559, 474, 536, 535, 0, 0, 570, 490, + 571, 572, 389, 390, 391, 392, 349, 597, 314, 493, + 415, 0, 557, 0, 0, 0, 0, 0, 0, 0, + 0, 562, 563, 560, 663, 0, 620, 621, 0, 0, + 487, 488, 344, 351, 506, 353, 313, 404, 346, 472, + 361, 0, 499, 564, 500, 623, 626, 624, 625, 396, + 356, 358, 431, 362, 372, 419, 471, 402, 424, 311, + 462, 433, 377, 550, 577, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 280, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 605, 604, 603, 602, 601, 600, 599, 598, 0, + 0, 547, 448, 323, 285, 319, 320, 327, 652, 649, + 453, 653, 0, 293, 527, 370, 0, 414, 343, 592, + 593, 0, 644, 241, 242, 243, 244, 245, 246, 247, + 248, 286, 249, 250, 251, 252, 253, 254, 255, 258, + 259, 260, 261, 262, 263, 264, 265, 595, 256, 257, + 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, + 276, 277, 278, 279, 0, 0, 0, 287, 288, 289, + 290, 0, 0, 281, 282, 283, 284, 0, 0, 0, + 478, 479, 480, 502, 0, 464, 526, 650, 0, 0, + 0, 0, 0, 0, 0, 576, 588, 622, 0, 632, + 633, 635, 637, 636, 639, 438, 439, 0, 641, 642, + 643, 640, 374, 425, 444, 432, 0, 656, 517, 518, + 657, 628, 401, 0, 0, 532, 565, 554, 638, 520, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 299, 441, 460, 310, 429, 473, 315, - 437, 1912, 305, 400, 426, 0, 0, 301, 458, 436, - 382, 359, 360, 300, 0, 420, 334, 350, 331, 398, - 0, 457, 485, 330, 476, 0, 468, 303, 0, 467, - 397, 454, 459, 383, 376, 0, 302, 456, 381, 375, - 363, 340, 501, 364, 365, 354, 409, 373, 410, 355, - 387, 386, 388, 0, 0, 0, 0, 0, 496, 497, - 0, 0, 645, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 627, 0, 0, 631, 0, 470, - 0, 0, 0, 0, 0, 0, 440, 0, 0, 366, - 0, 0, 0, 486, 0, 423, 403, 659, 0, 0, - 421, 371, 455, 411, 461, 442, 469, 417, 412, 294, - 443, 333, 384, 306, 308, 328, 335, 337, 341, 342, - 393, 394, 406, 428, 445, 446, 447, 332, 316, 422, - 317, 352, 318, 295, 324, 322, 325, 430, 326, 297, - 407, 451, 0, 347, 418, 379, 298, 378, 408, 450, - 449, 307, 477, 483, 484, 573, 0, 489, 660, 661, - 662, 498, 0, 413, 503, 504, 505, 507, 508, 509, - 510, 574, 591, 558, 528, 491, 582, 525, 529, 530, - 357, 594, 0, 0, 0, 482, 367, 368, 0, 339, - 338, 380, 416, 345, 291, 292, 655, 329, 399, 596, - 629, 630, 521, 0, 583, 522, 531, 321, 555, 567, - 566, 395, 481, 0, 578, 581, 511, 654, 0, 575, - 590, 658, 589, 651, 405, 0, 427, 587, 534, 0, - 579, 553, 0, 580, 549, 584, 0, 523, 0, 435, - 463, 475, 492, 495, 524, 609, 610, 611, 296, 494, - 613, 614, 615, 616, 617, 618, 619, 612, 466, 556, - 533, 559, 474, 536, 535, 0, 0, 570, 490, 571, - 572, 389, 390, 391, 392, 349, 597, 314, 493, 415, - 0, 557, 0, 0, 0, 0, 0, 0, 0, 0, - 562, 563, 560, 663, 0, 620, 621, 0, 0, 487, - 488, 344, 351, 506, 353, 313, 404, 346, 472, 361, - 0, 499, 564, 500, 623, 626, 624, 625, 396, 356, - 358, 431, 362, 372, 419, 471, 402, 424, 311, 462, - 433, 377, 550, 577, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 280, 0, 0, 0, 0, + 336, 0, 0, 369, 569, 551, 561, 552, 537, 538, + 539, 546, 348, 540, 541, 542, 512, 543, 513, 544, + 545, 0, 568, 519, 434, 385, 586, 585, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 605, 604, 603, 602, 601, 600, 599, 598, 0, 0, - 547, 448, 323, 285, 319, 320, 327, 652, 649, 453, - 653, 0, 293, 527, 370, 0, 414, 343, 592, 593, - 0, 644, 241, 242, 243, 244, 245, 246, 247, 248, - 286, 249, 250, 251, 252, 253, 254, 255, 258, 259, - 260, 261, 262, 263, 264, 265, 595, 256, 257, 266, - 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, - 277, 278, 279, 0, 0, 0, 287, 288, 289, 290, - 0, 0, 281, 282, 283, 284, 0, 0, 0, 478, - 479, 480, 502, 0, 464, 526, 650, 0, 0, 0, - 0, 0, 0, 0, 576, 588, 622, 0, 632, 633, - 635, 637, 636, 639, 438, 439, 0, 641, 642, 643, - 640, 374, 425, 444, 432, 0, 656, 517, 518, 657, - 628, 401, 0, 0, 532, 565, 554, 638, 520, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 336, - 0, 0, 369, 569, 551, 561, 552, 537, 538, 539, - 546, 348, 540, 541, 542, 512, 543, 513, 544, 545, - 0, 568, 519, 434, 385, 586, 585, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 228, 0, + 0, 0, 0, 0, 0, 309, 229, 514, 634, 516, + 515, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 312, 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, 228, 0, 0, - 0, 0, 0, 0, 309, 229, 514, 634, 516, 515, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 312, 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, 299, 441, 1533, 310, 429, 473, 315, 437, + 452, 305, 400, 426, 0, 0, 301, 458, 436, 382, + 359, 360, 300, 0, 420, 334, 350, 331, 398, 0, + 457, 485, 330, 476, 0, 468, 303, 0, 467, 397, + 454, 459, 383, 376, 0, 302, 456, 381, 375, 363, + 340, 501, 364, 365, 354, 409, 373, 410, 355, 387, + 386, 388, 0, 0, 0, 0, 0, 496, 497, 0, + 0, 645, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 627, 0, 0, 631, 0, 470, 0, + 0, 0, 0, 0, 0, 440, 0, 0, 366, 0, + 0, 0, 486, 0, 423, 403, 659, 0, 0, 421, + 371, 455, 411, 461, 442, 469, 417, 412, 294, 443, + 333, 384, 306, 308, 328, 335, 337, 341, 342, 393, + 394, 406, 428, 445, 446, 447, 332, 316, 422, 317, + 352, 318, 295, 324, 322, 325, 430, 326, 297, 407, + 451, 0, 347, 418, 379, 298, 378, 408, 450, 449, + 307, 477, 483, 484, 573, 0, 489, 660, 661, 662, + 498, 0, 413, 503, 504, 505, 507, 508, 509, 510, + 574, 591, 558, 528, 491, 582, 525, 529, 530, 357, + 594, 0, 0, 0, 482, 367, 368, 0, 339, 338, + 380, 416, 345, 291, 292, 655, 329, 399, 596, 629, + 630, 521, 0, 583, 522, 531, 321, 555, 567, 566, + 395, 481, 0, 578, 581, 511, 654, 0, 575, 590, + 658, 589, 651, 405, 0, 427, 587, 534, 0, 579, + 553, 0, 580, 549, 584, 0, 523, 0, 435, 463, + 475, 492, 495, 524, 609, 610, 611, 296, 494, 613, + 614, 615, 616, 617, 618, 619, 612, 466, 556, 533, + 559, 474, 536, 535, 0, 0, 570, 490, 571, 572, + 389, 390, 391, 392, 349, 597, 314, 493, 415, 0, + 557, 0, 0, 0, 0, 0, 0, 0, 0, 562, + 563, 560, 663, 0, 620, 621, 0, 0, 487, 488, + 344, 351, 506, 353, 313, 404, 346, 472, 361, 0, + 499, 564, 500, 623, 626, 624, 625, 396, 356, 358, + 431, 362, 372, 419, 471, 402, 424, 311, 462, 433, + 377, 550, 577, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 280, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 605, + 604, 603, 602, 601, 600, 599, 598, 0, 0, 547, + 448, 323, 285, 319, 320, 327, 652, 649, 453, 653, + 0, 293, 527, 370, 0, 414, 343, 592, 593, 0, + 644, 241, 242, 243, 244, 245, 246, 247, 248, 286, + 249, 250, 251, 252, 253, 254, 255, 258, 259, 260, + 261, 262, 263, 264, 265, 595, 256, 257, 266, 267, + 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, + 278, 279, 0, 0, 0, 287, 288, 289, 290, 0, + 0, 281, 282, 283, 284, 0, 0, 0, 478, 479, + 480, 502, 0, 464, 526, 650, 0, 0, 0, 0, + 0, 0, 0, 576, 588, 622, 0, 632, 633, 635, + 637, 636, 639, 438, 439, 0, 641, 642, 643, 640, + 374, 425, 444, 432, 0, 656, 517, 518, 657, 628, + 401, 0, 0, 532, 565, 554, 638, 520, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 336, 0, + 0, 369, 569, 551, 561, 552, 537, 538, 539, 546, + 348, 540, 541, 542, 512, 543, 513, 544, 545, 0, + 568, 519, 434, 385, 586, 585, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 228, 0, 0, 0, + 0, 0, 0, 309, 229, 514, 634, 516, 515, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 312, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 299, 441, 1539, 310, 429, 473, 315, 437, 452, - 305, 400, 426, 0, 0, 301, 458, 436, 382, 359, - 360, 300, 0, 420, 334, 350, 331, 398, 0, 457, - 485, 330, 476, 0, 468, 303, 0, 467, 397, 454, - 459, 383, 376, 0, 302, 456, 381, 375, 363, 340, - 501, 364, 365, 354, 409, 373, 410, 355, 387, 386, - 388, 0, 0, 0, 0, 0, 496, 497, 0, 0, - 645, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 627, 0, 0, 631, 0, 470, 0, 0, - 0, 0, 0, 0, 440, 0, 0, 366, 0, 0, - 0, 486, 0, 423, 403, 659, 0, 0, 421, 371, - 455, 411, 461, 442, 469, 417, 412, 294, 443, 333, - 384, 306, 308, 328, 335, 337, 341, 342, 393, 394, - 406, 428, 445, 446, 447, 332, 316, 422, 317, 352, - 318, 295, 324, 322, 325, 430, 326, 297, 407, 451, - 0, 347, 418, 379, 298, 378, 408, 450, 449, 307, - 477, 483, 484, 573, 0, 489, 660, 661, 662, 498, - 0, 413, 503, 504, 505, 507, 508, 509, 510, 574, - 591, 558, 528, 491, 582, 525, 529, 530, 357, 594, - 0, 0, 0, 482, 367, 368, 0, 339, 338, 380, - 416, 345, 291, 292, 655, 329, 399, 596, 629, 630, - 521, 0, 583, 522, 531, 321, 555, 567, 566, 395, - 481, 0, 578, 581, 511, 654, 0, 575, 590, 658, - 589, 651, 405, 0, 427, 587, 534, 0, 579, 553, - 0, 580, 549, 584, 0, 523, 0, 435, 463, 475, - 492, 495, 524, 609, 610, 611, 296, 494, 613, 614, - 615, 616, 617, 618, 619, 612, 466, 556, 533, 559, - 474, 536, 535, 0, 0, 570, 490, 571, 572, 389, - 390, 391, 392, 349, 597, 314, 493, 415, 0, 557, - 0, 0, 0, 0, 0, 0, 0, 0, 562, 563, - 560, 663, 0, 620, 621, 0, 0, 487, 488, 344, - 351, 506, 353, 313, 404, 346, 472, 361, 0, 499, - 564, 500, 623, 626, 624, 625, 396, 356, 358, 431, - 362, 372, 419, 471, 402, 424, 311, 462, 433, 377, - 550, 577, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 280, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 605, 604, - 603, 602, 601, 600, 599, 598, 0, 0, 547, 448, - 323, 285, 319, 320, 327, 652, 649, 453, 653, 0, - 293, 527, 370, 0, 414, 343, 592, 593, 0, 644, - 241, 242, 243, 244, 245, 246, 247, 248, 286, 249, - 250, 251, 252, 253, 254, 255, 258, 259, 260, 261, - 262, 263, 264, 265, 595, 256, 257, 266, 267, 268, - 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, - 279, 0, 0, 0, 287, 288, 289, 290, 0, 0, - 281, 282, 283, 284, 0, 0, 0, 478, 479, 480, - 502, 0, 464, 526, 650, 0, 0, 0, 0, 0, - 0, 0, 576, 588, 622, 0, 632, 633, 635, 637, - 636, 639, 438, 439, 0, 641, 642, 643, 640, 374, - 425, 444, 432, 0, 656, 517, 518, 657, 628, 401, - 0, 0, 532, 565, 554, 638, 520, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 336, 0, 0, - 369, 569, 551, 561, 552, 537, 538, 539, 546, 348, - 540, 541, 542, 512, 543, 513, 544, 545, 0, 568, - 519, 434, 385, 586, 585, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 228, 0, 0, 0, 0, - 0, 0, 309, 229, 514, 634, 516, 515, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 312, 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, + 299, 441, 1531, 310, 429, 473, 315, 437, 452, 305, + 400, 426, 0, 0, 301, 458, 436, 382, 359, 360, + 300, 0, 420, 334, 350, 331, 398, 0, 457, 485, + 330, 476, 0, 468, 303, 0, 467, 397, 454, 459, + 383, 376, 0, 302, 456, 381, 375, 363, 340, 501, + 364, 365, 354, 409, 373, 410, 355, 387, 386, 388, + 0, 0, 0, 0, 0, 496, 497, 0, 0, 645, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 299, - 441, 1537, 310, 429, 473, 315, 437, 452, 305, 400, - 426, 0, 0, 301, 458, 436, 382, 359, 360, 300, - 0, 420, 334, 350, 331, 398, 0, 457, 485, 330, - 476, 0, 468, 303, 0, 467, 397, 454, 459, 383, - 376, 0, 302, 456, 381, 375, 363, 340, 501, 364, - 365, 354, 409, 373, 410, 355, 387, 386, 388, 0, - 0, 0, 0, 0, 496, 497, 0, 0, 645, 0, + 0, 627, 0, 0, 631, 0, 470, 0, 0, 0, + 0, 0, 0, 440, 0, 0, 366, 0, 0, 0, + 486, 0, 423, 403, 659, 0, 0, 421, 371, 455, + 411, 461, 442, 469, 417, 412, 294, 443, 333, 384, + 306, 308, 328, 335, 337, 341, 342, 393, 394, 406, + 428, 445, 446, 447, 332, 316, 422, 317, 352, 318, + 295, 324, 322, 325, 430, 326, 297, 407, 451, 0, + 347, 418, 379, 298, 378, 408, 450, 449, 307, 477, + 483, 484, 573, 0, 489, 660, 661, 662, 498, 0, + 413, 503, 504, 505, 507, 508, 509, 510, 574, 591, + 558, 528, 491, 582, 525, 529, 530, 357, 594, 0, + 0, 0, 482, 367, 368, 0, 339, 338, 380, 416, + 345, 291, 292, 655, 329, 399, 596, 629, 630, 521, + 0, 583, 522, 531, 321, 555, 567, 566, 395, 481, + 0, 578, 581, 511, 654, 0, 575, 590, 658, 589, + 651, 405, 0, 427, 587, 534, 0, 579, 553, 0, + 580, 549, 584, 0, 523, 0, 435, 463, 475, 492, + 495, 524, 609, 610, 611, 296, 494, 613, 614, 615, + 616, 617, 618, 619, 612, 466, 556, 533, 559, 474, + 536, 535, 0, 0, 570, 490, 571, 572, 389, 390, + 391, 392, 349, 597, 314, 493, 415, 0, 557, 0, + 0, 0, 0, 0, 0, 0, 0, 562, 563, 560, + 663, 0, 620, 621, 0, 0, 487, 488, 344, 351, + 506, 353, 313, 404, 346, 472, 361, 0, 499, 564, + 500, 623, 626, 624, 625, 396, 356, 358, 431, 362, + 372, 419, 471, 402, 424, 311, 462, 433, 377, 550, + 577, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 280, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 605, 604, 603, + 602, 601, 600, 599, 598, 0, 0, 547, 448, 323, + 285, 319, 320, 327, 652, 649, 453, 653, 0, 293, + 527, 370, 0, 414, 343, 592, 593, 0, 644, 241, + 242, 243, 244, 245, 246, 247, 248, 286, 249, 250, + 251, 252, 253, 254, 255, 258, 259, 260, 261, 262, + 263, 264, 265, 595, 256, 257, 266, 267, 268, 269, + 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, + 0, 0, 0, 287, 288, 289, 290, 0, 0, 281, + 282, 283, 284, 0, 0, 0, 478, 479, 480, 502, + 0, 464, 526, 650, 0, 0, 0, 0, 0, 0, + 0, 576, 588, 622, 0, 632, 633, 635, 637, 636, + 639, 438, 439, 0, 641, 642, 643, 640, 374, 425, + 444, 432, 0, 656, 517, 518, 657, 628, 401, 0, + 0, 532, 565, 554, 638, 520, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 336, 0, 0, 369, + 569, 551, 561, 552, 537, 538, 539, 546, 348, 540, + 541, 542, 512, 543, 513, 544, 545, 0, 568, 519, + 434, 385, 586, 585, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 627, 0, 0, 631, 0, 470, 0, 0, 0, 0, - 0, 0, 440, 0, 0, 366, 0, 0, 0, 486, - 0, 423, 403, 659, 0, 0, 421, 371, 455, 411, - 461, 442, 469, 417, 412, 294, 443, 333, 384, 306, - 308, 328, 335, 337, 341, 342, 393, 394, 406, 428, - 445, 446, 447, 332, 316, 422, 317, 352, 318, 295, - 324, 322, 325, 430, 326, 297, 407, 451, 0, 347, - 418, 379, 298, 378, 408, 450, 449, 307, 477, 483, - 484, 573, 0, 489, 660, 661, 662, 498, 0, 413, - 503, 504, 505, 507, 508, 509, 510, 574, 591, 558, - 528, 491, 582, 525, 529, 530, 357, 594, 0, 0, - 0, 482, 367, 368, 0, 339, 338, 380, 416, 345, - 291, 292, 655, 329, 399, 596, 629, 630, 521, 0, - 583, 522, 531, 321, 555, 567, 566, 395, 481, 0, - 578, 581, 511, 654, 0, 575, 590, 658, 589, 651, - 405, 0, 427, 587, 534, 0, 579, 553, 0, 580, - 549, 584, 0, 523, 0, 435, 463, 475, 492, 495, - 524, 609, 610, 611, 296, 494, 613, 614, 615, 616, - 617, 618, 619, 612, 466, 556, 533, 559, 474, 536, - 535, 0, 0, 570, 490, 571, 572, 389, 390, 391, - 392, 349, 597, 314, 493, 415, 0, 557, 0, 0, - 0, 0, 0, 0, 0, 0, 562, 563, 560, 663, - 0, 620, 621, 0, 0, 487, 488, 344, 351, 506, - 353, 313, 404, 346, 472, 361, 0, 499, 564, 500, - 623, 626, 624, 625, 396, 356, 358, 431, 362, 372, - 419, 471, 402, 424, 311, 462, 433, 377, 550, 577, + 0, 0, 0, 0, 228, 0, 0, 0, 0, 0, + 0, 309, 229, 514, 634, 516, 515, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 312, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 280, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 605, 604, 603, 602, - 601, 600, 599, 598, 0, 0, 547, 448, 323, 285, - 319, 320, 327, 652, 649, 453, 653, 0, 293, 527, - 370, 0, 414, 343, 592, 593, 0, 644, 241, 242, - 243, 244, 245, 246, 247, 248, 286, 249, 250, 251, - 252, 253, 254, 255, 258, 259, 260, 261, 262, 263, - 264, 265, 595, 256, 257, 266, 267, 268, 269, 270, - 271, 272, 273, 274, 275, 276, 277, 278, 279, 0, - 0, 0, 287, 288, 289, 290, 0, 0, 281, 282, - 283, 284, 0, 0, 0, 478, 479, 480, 502, 0, - 464, 526, 650, 0, 0, 0, 0, 0, 0, 0, - 576, 588, 622, 0, 632, 633, 635, 637, 636, 639, - 438, 439, 0, 641, 642, 643, 640, 374, 425, 444, - 432, 0, 656, 517, 518, 657, 628, 401, 0, 0, - 532, 565, 554, 638, 520, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 336, 0, 0, 369, 569, - 551, 561, 552, 537, 538, 539, 546, 348, 540, 541, - 542, 512, 543, 513, 544, 545, 0, 568, 519, 434, - 385, 586, 585, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 228, 0, 0, 0, 0, 0, 0, - 309, 229, 514, 634, 516, 515, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 312, 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, 299, 441, + 460, 310, 429, 473, 315, 437, 1410, 305, 400, 426, + 0, 0, 301, 458, 436, 382, 359, 360, 300, 0, + 420, 334, 350, 331, 398, 0, 457, 485, 330, 476, + 0, 468, 303, 0, 467, 397, 454, 459, 383, 376, + 0, 302, 456, 381, 375, 363, 340, 501, 364, 365, + 354, 409, 373, 410, 355, 387, 386, 388, 0, 0, + 0, 0, 0, 496, 497, 0, 0, 645, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 627, + 0, 0, 631, 0, 470, 0, 0, 0, 0, 0, + 0, 440, 0, 0, 366, 0, 0, 0, 486, 0, + 423, 403, 659, 0, 0, 421, 371, 455, 411, 461, + 442, 469, 417, 412, 294, 443, 333, 384, 306, 308, + 328, 335, 337, 341, 342, 393, 394, 406, 428, 445, + 446, 447, 332, 316, 422, 317, 352, 318, 295, 324, + 322, 325, 430, 326, 297, 407, 451, 0, 347, 418, + 379, 298, 378, 408, 450, 449, 307, 477, 483, 484, + 573, 0, 489, 660, 661, 662, 498, 0, 413, 503, + 504, 505, 507, 508, 509, 510, 574, 591, 558, 528, + 491, 582, 525, 529, 530, 357, 594, 0, 0, 0, + 482, 367, 368, 0, 339, 338, 380, 416, 345, 291, + 292, 655, 329, 399, 596, 629, 630, 521, 0, 583, + 522, 531, 321, 555, 567, 566, 395, 481, 0, 578, + 581, 511, 654, 0, 575, 590, 658, 589, 651, 405, + 0, 427, 587, 534, 0, 579, 553, 0, 580, 549, + 584, 0, 523, 0, 435, 463, 475, 492, 495, 524, + 609, 610, 611, 296, 494, 613, 614, 615, 616, 617, + 618, 619, 612, 466, 556, 533, 559, 474, 536, 535, + 0, 0, 570, 490, 571, 572, 389, 390, 391, 392, + 349, 597, 314, 493, 415, 0, 557, 0, 0, 0, + 0, 0, 0, 0, 0, 562, 563, 560, 663, 0, + 620, 621, 0, 0, 487, 488, 344, 351, 506, 353, + 313, 404, 346, 472, 361, 0, 499, 564, 500, 623, + 626, 624, 625, 396, 356, 358, 431, 362, 372, 419, + 471, 402, 424, 311, 462, 433, 377, 550, 577, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 280, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 605, 604, 603, 602, 601, + 600, 599, 598, 0, 0, 547, 448, 323, 285, 319, + 320, 327, 652, 649, 453, 653, 0, 293, 527, 370, + 0, 414, 343, 592, 593, 0, 644, 241, 242, 243, + 244, 245, 246, 247, 248, 286, 249, 250, 251, 252, + 253, 254, 255, 258, 259, 260, 261, 262, 263, 264, + 265, 595, 256, 257, 266, 267, 268, 269, 270, 271, + 272, 273, 274, 275, 276, 277, 278, 279, 0, 0, + 0, 287, 288, 289, 290, 0, 0, 281, 282, 283, + 284, 0, 0, 0, 478, 479, 480, 502, 0, 464, + 526, 650, 0, 0, 0, 0, 0, 0, 0, 576, + 588, 622, 0, 632, 633, 635, 637, 636, 639, 438, + 439, 0, 641, 642, 643, 640, 374, 425, 444, 432, + 0, 656, 517, 518, 657, 628, 401, 0, 0, 532, + 565, 554, 638, 520, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 336, 0, 0, 369, 569, 551, + 561, 552, 537, 538, 539, 546, 348, 540, 541, 542, + 512, 543, 513, 544, 545, 0, 568, 519, 434, 385, + 586, 585, 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, 299, 441, 460, - 310, 429, 473, 315, 437, 1415, 305, 400, 426, 0, - 0, 301, 458, 436, 382, 359, 360, 300, 0, 420, - 334, 350, 331, 398, 0, 457, 485, 330, 476, 0, - 468, 303, 0, 467, 397, 454, 459, 383, 376, 0, - 302, 456, 381, 375, 363, 340, 501, 364, 365, 354, - 409, 373, 410, 355, 387, 386, 388, 0, 0, 0, - 0, 0, 496, 497, 0, 0, 645, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 627, 0, - 0, 631, 0, 470, 0, 0, 0, 0, 0, 0, - 440, 0, 0, 366, 0, 0, 0, 486, 0, 423, - 403, 659, 0, 0, 421, 371, 455, 411, 461, 442, - 469, 417, 412, 294, 443, 333, 384, 306, 308, 328, - 335, 337, 341, 342, 393, 394, 406, 428, 445, 446, - 447, 332, 316, 422, 317, 352, 318, 295, 324, 322, - 325, 430, 326, 297, 407, 451, 0, 347, 418, 379, - 298, 378, 408, 450, 449, 307, 477, 483, 484, 573, - 0, 489, 660, 661, 662, 498, 0, 413, 503, 504, - 505, 507, 508, 509, 510, 574, 591, 558, 528, 491, - 582, 525, 529, 530, 357, 594, 0, 0, 0, 482, - 367, 368, 0, 339, 338, 380, 416, 345, 291, 292, - 655, 329, 399, 596, 629, 630, 521, 0, 583, 522, - 531, 321, 555, 567, 566, 395, 481, 0, 578, 581, - 511, 654, 0, 575, 590, 658, 589, 651, 405, 0, - 427, 587, 534, 0, 579, 553, 0, 580, 549, 584, - 0, 523, 0, 435, 463, 475, 492, 495, 524, 609, - 610, 611, 296, 494, 613, 614, 615, 616, 617, 618, - 619, 612, 466, 556, 533, 559, 474, 536, 535, 0, - 0, 570, 490, 571, 572, 389, 390, 391, 392, 349, - 597, 314, 493, 415, 0, 557, 0, 0, 0, 0, - 0, 0, 0, 0, 562, 563, 560, 663, 0, 620, - 621, 0, 0, 487, 488, 344, 351, 506, 353, 313, - 404, 346, 472, 361, 0, 499, 564, 500, 623, 626, - 624, 625, 396, 356, 358, 431, 362, 372, 419, 471, - 402, 424, 311, 462, 433, 377, 550, 577, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 280, + 0, 0, 228, 0, 0, 0, 0, 0, 0, 309, + 229, 514, 634, 516, 515, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 312, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 605, 604, 603, 602, 601, 600, - 599, 598, 0, 0, 547, 448, 323, 285, 319, 320, - 327, 652, 649, 453, 653, 0, 293, 527, 370, 0, - 414, 343, 592, 593, 0, 644, 241, 242, 243, 244, - 245, 246, 247, 248, 286, 249, 250, 251, 252, 253, - 254, 255, 258, 259, 260, 261, 262, 263, 264, 265, - 595, 256, 257, 266, 267, 268, 269, 270, 271, 272, - 273, 274, 275, 276, 277, 278, 279, 0, 0, 0, - 287, 288, 289, 290, 0, 0, 281, 282, 283, 284, - 0, 0, 0, 478, 479, 480, 502, 0, 464, 526, - 650, 0, 0, 0, 0, 0, 0, 0, 576, 588, - 622, 0, 632, 633, 635, 637, 636, 639, 438, 439, - 0, 641, 642, 643, 640, 374, 425, 444, 432, 0, - 656, 517, 518, 657, 628, 401, 0, 0, 532, 565, - 554, 638, 520, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 336, 0, 0, 369, 569, 551, 561, - 552, 537, 538, 539, 546, 348, 540, 541, 542, 512, - 543, 513, 544, 545, 0, 568, 519, 434, 385, 586, - 585, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 228, 0, 0, 0, 0, 0, 0, 309, 229, - 514, 634, 516, 515, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 312, 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, 299, 441, 460, 310, + 429, 473, 315, 437, 452, 305, 400, 426, 0, 0, + 301, 458, 436, 382, 359, 360, 300, 0, 420, 334, + 350, 331, 398, 0, 457, 485, 330, 476, 0, 468, + 303, 0, 467, 397, 454, 459, 383, 376, 0, 302, + 456, 381, 375, 363, 340, 501, 364, 365, 354, 409, + 373, 410, 355, 387, 386, 388, 0, 0, 0, 0, + 0, 496, 497, 0, 0, 645, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 627, 0, 0, + 631, 0, 470, 0, 0, 0, 0, 0, 0, 440, + 0, 0, 366, 0, 0, 0, 486, 0, 423, 403, + 659, 0, 0, 421, 371, 455, 411, 461, 442, 469, + 417, 412, 294, 443, 333, 384, 306, 308, 748, 335, + 337, 341, 342, 393, 394, 406, 428, 445, 446, 447, + 332, 316, 422, 317, 352, 318, 295, 324, 322, 325, + 430, 326, 297, 407, 451, 0, 347, 418, 379, 298, + 378, 408, 450, 449, 307, 477, 483, 484, 573, 0, + 489, 660, 661, 662, 498, 0, 413, 503, 504, 505, + 507, 508, 509, 510, 574, 591, 558, 528, 491, 582, + 525, 529, 530, 357, 594, 0, 0, 0, 482, 367, + 368, 0, 339, 338, 380, 416, 345, 291, 292, 655, + 329, 399, 596, 629, 630, 521, 0, 583, 522, 531, + 321, 555, 567, 566, 395, 481, 0, 578, 581, 511, + 654, 0, 575, 590, 658, 589, 651, 405, 0, 427, + 587, 534, 0, 579, 553, 0, 580, 549, 584, 0, + 523, 0, 435, 463, 475, 492, 495, 524, 609, 610, + 611, 296, 494, 613, 614, 615, 616, 617, 618, 619, + 612, 466, 556, 533, 559, 474, 536, 535, 0, 0, + 570, 490, 571, 572, 389, 390, 391, 392, 349, 597, + 314, 493, 415, 0, 557, 0, 0, 0, 0, 0, + 0, 0, 0, 562, 563, 560, 663, 0, 620, 621, + 0, 0, 487, 488, 344, 351, 506, 353, 313, 404, + 346, 472, 361, 0, 499, 564, 500, 623, 626, 624, + 625, 396, 356, 358, 431, 362, 372, 419, 471, 402, + 424, 311, 462, 433, 377, 550, 577, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 280, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 605, 604, 603, 602, 601, 600, 599, + 598, 0, 0, 547, 448, 323, 285, 319, 320, 327, + 652, 649, 453, 653, 0, 293, 527, 370, 0, 414, + 343, 592, 593, 0, 644, 241, 242, 243, 244, 245, + 246, 247, 248, 286, 249, 250, 251, 252, 253, 254, + 255, 258, 259, 260, 261, 262, 263, 264, 265, 595, + 256, 257, 266, 267, 268, 269, 270, 271, 272, 273, + 274, 275, 276, 277, 278, 279, 0, 0, 0, 287, + 288, 289, 290, 0, 0, 281, 282, 283, 284, 0, + 0, 0, 478, 479, 480, 502, 0, 464, 526, 650, + 0, 0, 0, 0, 0, 0, 0, 576, 588, 622, + 0, 632, 633, 635, 637, 636, 639, 438, 439, 0, + 641, 642, 643, 640, 374, 425, 444, 432, 0, 656, + 517, 518, 657, 628, 401, 0, 0, 532, 565, 554, + 638, 520, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 336, 0, 0, 369, 569, 551, 561, 552, + 537, 538, 539, 546, 348, 540, 541, 542, 512, 543, + 513, 544, 545, 0, 568, 519, 434, 385, 586, 585, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 299, 441, 460, 310, 429, - 473, 315, 437, 452, 305, 400, 426, 0, 0, 301, - 458, 436, 382, 359, 360, 300, 0, 420, 334, 350, - 331, 398, 0, 457, 485, 330, 476, 0, 468, 303, - 0, 467, 397, 454, 459, 383, 376, 0, 302, 456, - 381, 375, 363, 340, 501, 364, 365, 354, 409, 373, - 410, 355, 387, 386, 388, 0, 0, 0, 0, 0, - 496, 497, 0, 0, 645, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 627, 0, 0, 631, - 0, 470, 0, 0, 0, 0, 0, 0, 440, 0, - 0, 366, 0, 0, 0, 486, 0, 423, 403, 659, - 0, 0, 421, 371, 455, 411, 461, 442, 469, 417, - 412, 294, 443, 333, 384, 306, 308, 750, 335, 337, - 341, 342, 393, 394, 406, 428, 445, 446, 447, 332, - 316, 422, 317, 352, 318, 295, 324, 322, 325, 430, - 326, 297, 407, 451, 0, 347, 418, 379, 298, 378, - 408, 450, 449, 307, 477, 483, 484, 573, 0, 489, - 660, 661, 662, 498, 0, 413, 503, 504, 505, 507, - 508, 509, 510, 574, 591, 558, 528, 491, 582, 525, - 529, 530, 357, 594, 0, 0, 0, 482, 367, 368, - 0, 339, 338, 380, 416, 345, 291, 292, 655, 329, - 399, 596, 629, 630, 521, 0, 583, 522, 531, 321, - 555, 567, 566, 395, 481, 0, 578, 581, 511, 654, - 0, 575, 590, 658, 589, 651, 405, 0, 427, 587, - 534, 0, 579, 553, 0, 580, 549, 584, 0, 523, - 0, 435, 463, 475, 492, 495, 524, 609, 610, 611, - 296, 494, 613, 614, 615, 616, 617, 618, 619, 612, - 466, 556, 533, 559, 474, 536, 535, 0, 0, 570, - 490, 571, 572, 389, 390, 391, 392, 349, 597, 314, - 493, 415, 0, 557, 0, 0, 0, 0, 0, 0, - 0, 0, 562, 563, 560, 663, 0, 620, 621, 0, - 0, 487, 488, 344, 351, 506, 353, 313, 404, 346, - 472, 361, 0, 499, 564, 500, 623, 626, 624, 625, - 396, 356, 358, 431, 362, 372, 419, 471, 402, 424, - 311, 462, 433, 377, 550, 577, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 280, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 605, 604, 603, 602, 601, 600, 599, 598, - 0, 0, 547, 448, 323, 285, 319, 320, 327, 652, - 649, 453, 653, 0, 293, 527, 370, 0, 414, 343, - 592, 593, 0, 644, 241, 242, 243, 244, 245, 246, - 247, 248, 286, 249, 250, 251, 252, 253, 254, 255, - 258, 259, 260, 261, 262, 263, 264, 265, 595, 256, - 257, 266, 267, 268, 269, 270, 271, 272, 273, 274, - 275, 276, 277, 278, 279, 0, 0, 0, 287, 288, - 289, 290, 0, 0, 281, 282, 283, 284, 0, 0, - 0, 478, 479, 480, 502, 0, 464, 526, 650, 0, - 0, 0, 0, 0, 0, 0, 576, 588, 622, 0, - 632, 633, 635, 637, 636, 639, 438, 439, 0, 641, - 642, 643, 640, 374, 425, 444, 432, 0, 656, 517, - 518, 657, 628, 401, 0, 0, 532, 565, 554, 638, - 520, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 336, 0, 0, 369, 569, 551, 561, 552, 537, - 538, 539, 546, 348, 540, 541, 542, 512, 543, 513, - 544, 545, 0, 568, 519, 434, 385, 586, 585, 0, + 228, 0, 0, 0, 0, 0, 0, 309, 229, 514, + 634, 516, 515, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 312, 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, 228, - 0, 0, 0, 0, 0, 0, 309, 229, 514, 634, - 516, 515, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 312, 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, 299, 441, 460, 310, 429, 473, + 315, 437, 452, 305, 400, 426, 0, 0, 301, 458, + 436, 382, 359, 360, 300, 0, 420, 334, 350, 331, + 398, 0, 457, 485, 330, 476, 0, 468, 303, 0, + 467, 397, 454, 459, 383, 376, 0, 302, 456, 381, + 375, 363, 340, 501, 364, 365, 354, 409, 373, 410, + 355, 387, 386, 388, 0, 0, 0, 0, 0, 496, + 497, 0, 0, 645, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 627, 0, 0, 631, 0, + 470, 0, 0, 0, 0, 0, 0, 440, 0, 0, + 366, 0, 0, 0, 486, 0, 423, 403, 659, 0, + 0, 421, 371, 455, 411, 461, 442, 469, 705, 412, + 294, 443, 333, 384, 306, 308, 328, 335, 337, 341, + 342, 393, 394, 406, 428, 445, 446, 447, 332, 316, + 422, 317, 352, 318, 295, 324, 322, 325, 430, 326, + 297, 407, 451, 0, 347, 418, 379, 298, 378, 408, + 450, 449, 307, 477, 483, 484, 573, 0, 489, 660, + 661, 662, 498, 0, 413, 503, 504, 505, 507, 508, + 509, 510, 574, 591, 558, 528, 491, 582, 525, 529, + 530, 357, 594, 0, 0, 0, 482, 367, 368, 0, + 339, 338, 380, 416, 345, 291, 292, 655, 329, 399, + 596, 629, 630, 521, 0, 583, 522, 531, 321, 555, + 567, 566, 395, 481, 0, 578, 581, 511, 654, 0, + 575, 590, 658, 589, 651, 405, 0, 427, 587, 534, + 0, 579, 553, 0, 580, 549, 584, 0, 523, 0, + 435, 463, 475, 492, 495, 524, 609, 610, 611, 296, + 494, 613, 614, 615, 616, 617, 618, 706, 612, 466, + 556, 533, 559, 474, 536, 535, 0, 0, 570, 490, + 571, 572, 389, 390, 391, 392, 349, 597, 314, 493, + 415, 0, 557, 0, 0, 0, 0, 0, 0, 0, + 0, 562, 563, 560, 663, 0, 620, 621, 0, 0, + 487, 488, 344, 351, 506, 353, 313, 404, 346, 472, + 361, 0, 499, 564, 500, 623, 626, 624, 625, 396, + 356, 358, 431, 362, 372, 419, 471, 402, 424, 311, + 462, 433, 377, 550, 577, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 280, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 299, 441, 460, 310, 429, 473, 315, - 437, 452, 305, 400, 426, 0, 0, 301, 458, 436, - 382, 359, 360, 300, 0, 420, 334, 350, 331, 398, - 0, 457, 485, 330, 476, 0, 468, 303, 0, 467, - 397, 454, 459, 383, 376, 0, 302, 456, 381, 375, - 363, 340, 501, 364, 365, 354, 409, 373, 410, 355, - 387, 386, 388, 0, 0, 0, 0, 0, 496, 497, - 0, 0, 645, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 627, 0, 0, 631, 0, 470, - 0, 0, 0, 0, 0, 0, 440, 0, 0, 366, - 0, 0, 0, 486, 0, 423, 403, 659, 0, 0, - 421, 371, 455, 411, 461, 442, 469, 707, 412, 294, - 443, 333, 384, 306, 308, 328, 335, 337, 341, 342, - 393, 394, 406, 428, 445, 446, 447, 332, 316, 422, - 317, 352, 318, 295, 324, 322, 325, 430, 326, 297, - 407, 451, 0, 347, 418, 379, 298, 378, 408, 450, - 449, 307, 477, 483, 484, 573, 0, 489, 660, 661, - 662, 498, 0, 413, 503, 504, 505, 507, 508, 509, - 510, 574, 591, 558, 528, 491, 582, 525, 529, 530, - 357, 594, 0, 0, 0, 482, 367, 368, 0, 339, - 338, 380, 416, 345, 291, 292, 655, 329, 399, 596, - 629, 630, 521, 0, 583, 522, 531, 321, 555, 567, - 566, 395, 481, 0, 578, 581, 511, 654, 0, 575, - 590, 658, 589, 651, 405, 0, 427, 587, 534, 0, - 579, 553, 0, 580, 549, 584, 0, 523, 0, 435, - 463, 475, 492, 495, 524, 609, 610, 611, 296, 494, - 613, 614, 615, 616, 617, 618, 708, 612, 466, 556, - 533, 559, 474, 536, 535, 0, 0, 570, 490, 571, - 572, 389, 390, 391, 392, 349, 597, 314, 493, 415, - 0, 557, 0, 0, 0, 0, 0, 0, 0, 0, - 562, 563, 560, 663, 0, 620, 621, 0, 0, 487, - 488, 344, 351, 506, 353, 313, 404, 346, 472, 361, - 0, 499, 564, 500, 623, 626, 624, 625, 396, 356, - 358, 431, 362, 372, 419, 471, 402, 424, 311, 462, - 433, 377, 550, 577, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 280, 0, 0, 0, 0, + 0, 605, 604, 603, 602, 601, 600, 599, 598, 0, + 0, 547, 448, 323, 285, 319, 320, 327, 652, 649, + 453, 653, 0, 293, 527, 370, 0, 414, 343, 592, + 593, 0, 644, 241, 242, 243, 244, 245, 246, 247, + 248, 286, 249, 250, 251, 252, 253, 254, 255, 258, + 259, 260, 261, 262, 263, 264, 265, 595, 256, 257, + 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, + 276, 277, 278, 279, 0, 0, 0, 287, 288, 289, + 290, 0, 0, 281, 282, 283, 284, 0, 0, 0, + 478, 479, 480, 502, 0, 464, 526, 650, 0, 0, + 0, 0, 0, 0, 0, 576, 588, 622, 0, 632, + 633, 635, 637, 636, 639, 438, 439, 0, 641, 642, + 643, 640, 374, 425, 444, 432, 0, 656, 517, 518, + 657, 628, 727, 726, 733, 723, 0, 0, 2036, 0, + 0, 0, 0, 0, 0, 730, 731, 0, 732, 736, + 0, 0, 717, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 741, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2039, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 605, 604, 603, 602, 601, 600, 599, 598, 0, 0, - 547, 448, 323, 285, 319, 320, 327, 652, 649, 453, - 653, 0, 293, 527, 370, 0, 414, 343, 592, 593, - 0, 644, 241, 242, 243, 244, 245, 246, 247, 248, - 286, 249, 250, 251, 252, 253, 254, 255, 258, 259, - 260, 261, 262, 263, 264, 265, 595, 256, 257, 266, - 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, - 277, 278, 279, 0, 0, 0, 287, 288, 289, 290, - 0, 0, 281, 282, 283, 284, 0, 0, 0, 478, - 479, 480, 502, 0, 464, 526, 650, 0, 0, 0, - 0, 0, 0, 0, 576, 588, 622, 0, 632, 633, - 635, 637, 636, 639, 438, 439, 0, 641, 642, 643, - 640, 374, 425, 444, 432, 2045, 656, 517, 518, 657, - 628, 0, 206, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 2036, 0, 0, + 0, 1260, 1261, 1262, 1259, 0, 0, 0, 745, 0, + 0, 747, 0, 0, 0, 0, 746, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 2013, 0, + 0, 0, 0, 2039, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 3663, 0, 0, 0, 0, - 0, 2048, 0, 2045, 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, 2048, - 0, 2045, 0, 0, 0, 202, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 2022, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 2048, 0, 0, + 0, 1801, 0, 0, 0, 0, 0, 2013, 0, 0, + 0, 0, 3794, 0, 0, 0, 2029, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 2022, 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, 2038, 0, 0, 0, 0, 0, 0, - 0, 2022, 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, 3811, 0, 0, - 0, 2038, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 2029, 718, 720, 719, 0, + 0, 0, 0, 0, 0, 0, 0, 725, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 729, + 2017, 0, 0, 0, 0, 0, 744, 0, 0, 0, + 0, 2023, 0, 722, 0, 0, 0, 712, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 2038, - 0, 0, 0, 0, 0, 0, 0, 2026, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 2032, 0, + 0, 2011, 2045, 0, 0, 2012, 2014, 2016, 0, 2018, + 2019, 2020, 2024, 2025, 2026, 2028, 2031, 2032, 2033, 0, + 0, 0, 0, 0, 0, 0, 2021, 2030, 2022, 2017, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 2020, 2054, - 0, 0, 2021, 2023, 2025, 2026, 2027, 2028, 2029, 2033, - 2034, 2035, 2037, 2040, 2041, 2042, 2032, 0, 0, 0, - 0, 0, 0, 2030, 2039, 2031, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 2020, 2054, 0, 0, - 2021, 2023, 2025, 2026, 2027, 2028, 2029, 2033, 2034, 2035, - 2037, 2040, 2041, 2042, 2032, 0, 0, 0, 0, 2046, - 0, 2030, 2039, 2031, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 2020, 2054, 0, 0, 2021, 2023, - 2025, 0, 2027, 2028, 2029, 2033, 2034, 2035, 2037, 2040, - 2041, 2042, 0, 0, 0, 0, 0, 2046, 0, 2030, - 2039, 2031, 0, 0, 0, 0, 0, 0, 0, 2043, + 2023, 0, 0, 0, 1797, 0, 0, 0, 0, 0, + 0, 1794, 0, 0, 0, 1796, 1793, 1795, 1799, 1800, + 2011, 2045, 2037, 1798, 2012, 2014, 2016, 0, 2018, 2019, + 2020, 2024, 2025, 2026, 2028, 2031, 2032, 2033, 0, 0, + 0, 0, 0, 0, 0, 2021, 2030, 2022, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 2019, 0, 0, 0, - 0, 0, 0, 2018, 0, 2046, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 2043, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 2036, 0, 0, - 0, 0, 0, 0, 2019, 0, 2024, 0, 0, 0, - 0, 2018, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 2043, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 2036, 0, 0, 0, 0, - 0, 0, 2019, 0, 2024, 0, 0, 0, 0, 2018, + 724, 728, 734, 0, 735, 737, 0, 0, 738, 739, + 740, 0, 2034, 742, 743, 0, 0, 0, 0, 0, + 0, 2037, 0, 0, 0, 0, 0, 0, 0, 2010, + 0, 0, 0, 0, 0, 0, 2009, 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, 2036, 0, 0, 0, 0, 0, 0, - 0, 0, 2024, 0, 0, 0, 0, 0, 0, 0, + 2027, 0, 0, 0, 0, 0, 0, 0, 0, 2015, + 0, 2034, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 2010, 0, + 0, 0, 0, 0, 0, 2009, 1782, 1783, 1784, 1785, + 1786, 1787, 1788, 1789, 1790, 1791, 1792, 1804, 1805, 1806, + 1807, 1808, 1809, 1802, 1803, 0, 0, 0, 0, 2027, + 0, 0, 0, 0, 0, 0, 0, 0, 2015, 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, 3667, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 721, + 0, 0, 0, 0, 0, 0, 0, 3655, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 3671, 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, - 3671, + 0, 0, 0, 0, 0, 0, 3655, } var yyPact = [...]int{ - 4154, -1000, -1000, -1000, -346, 15382, -1000, -1000, -1000, -1000, + 4144, -1000, -1000, -1000, -338, 15461, -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, - -1000, -1000, -1000, -1000, -1000, 50504, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, 49945, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, 456, 50504, -344, 26260, 32002, -1000, -1000, 2692, -1000, - 49228, 17316, 50504, 559, 553, 50504, -1000, -1000, -1000, -1000, + -1000, 464, 49945, -336, 31443, 48031, -1000, -1000, 2788, -1000, + 48669, 17395, 49945, 560, 559, 49945, -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, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, 1015, -1000, 54970, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, 922, 4268, 54332, 11527, - -215, -1000, 1869, -34, 2602, 527, -200, -218, 1229, 1234, - 1389, 1382, 50504, 1196, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, 236, 120, 49866, + -1000, -1000, -1000, -1000, 984, -1000, 54411, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, 916, 55059, 53773, 11606, + -228, -1000, 1559, -37, 2671, 467, -196, -214, 1137, 1147, + 1220, 1266, 49945, 1114, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, 233, 999, 49307, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, 373, 241, 1007, 1032, 22428, 151, - 148, 1869, 515, -103, 270, -1000, 1784, 4185, 222, -1000, + -1000, -1000, -1000, -1000, 4249, 251, 974, 999, 22507, 149, + 140, 1559, 482, -81, 210, -1000, 1804, 362, 197, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - 11527, 11527, 15382, -376, 15382, 11527, 50504, 50504, -1000, -1000, - -1000, -1000, -344, 49228, 922, 4268, 11527, 2602, 527, -200, - -218, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + 11606, 11606, 15461, -376, 15461, 11606, 49945, 49945, -1000, -1000, + -1000, -1000, -336, 48669, 916, 55059, 11606, 2671, 467, -196, + -214, -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, -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, -103, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -81, -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, -1000, @@ -7455,7 +7398,7 @@ 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, -1000, -1000, 148, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, 140, -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, @@ -7473,426 +7416,424 @@ 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, -1000, -1000, -1000, 5100, -1000, 1708, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, 5223, -1000, 1775, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, 2377, 3177, 1707, 2601, 885, 48590, - 48590, 50504, -1000, 146, 885, 48590, -1000, -1000, -1000, 1869, - 3620, -1000, 50504, 50504, 235, 1997, -1000, 549, 488, 452, - 449, 358, 1699, -1000, -1000, -1000, -1000, -1000, -1000, 793, - 3513, -1000, 50504, 50504, 3205, 50504, -1000, 2317, 815, -1000, - 5426, 3362, 1426, 1044, 3213, -1000, -1000, 3167, -1000, 378, - 259, 281, 798, 446, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, 350, -1000, 3418, -1000, -1000, 369, -1000, -1000, 345, - -1000, -1000, -1000, 133, -1000, -1000, -1000, -1000, -1000, -1000, - -10, -1000, -1000, 1284, 2312, 11527, 2223, -1000, 4319, 1734, - -1000, -1000, -1000, 7034, 14091, 14091, 14091, 14091, 50504, -1000, - -1000, 2943, 11527, 3157, 3156, 3155, 3154, -1000, -1000, -1000, - -1000, -1000, -1000, 3152, 1687, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, 2093, -1000, -1000, -1000, 14732, -1000, - 3151, 3149, 3147, 3144, 3141, 3140, 3139, 3137, 3134, 3130, - 3125, 3123, 3122, 3121, 2792, 16668, 3120, 2590, 2586, 3118, - 3117, 3114, 2581, 3110, 3109, 3100, 2792, 2792, 3097, 3092, - 3090, 3088, 3087, 3086, 3080, 3079, 3077, 3070, 3069, 3068, - 3051, 3031, 2996, 2995, 2994, 2991, 2986, 2983, 2982, 2980, - 2977, 2976, 2973, 2972, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, 2471, 3238, 1774, 2670, 850, 48031, + 49945, -1000, 145, 850, -1000, -1000, -1000, 1559, 3634, -1000, + 49945, 49945, 259, 2000, -1000, 566, 598, 546, 469, 387, + 1762, -1000, -1000, -1000, -1000, -1000, -1000, 782, 3575, -1000, + 49945, 49945, 3249, 49945, -1000, 2487, 821, -1000, 4259, 3420, + 1511, 1020, 3274, -1000, -1000, 3236, -1000, 396, 473, 275, + 475, 462, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 328, + -1000, 3479, -1000, -1000, 376, -1000, -1000, 377, -1000, -1000, + -1000, 138, -1000, -1000, -1000, -1000, -1000, -1000, 19, -1000, + -1000, 1184, 2302, 11606, 2265, -1000, 3011, 1767, -1000, -1000, + -1000, 7113, 14170, 14170, 14170, 14170, 49945, -1000, -1000, 3082, + 11606, 3233, 3230, 3229, 3220, -1000, -1000, -1000, -1000, -1000, + -1000, 3218, 1761, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, 2120, -1000, -1000, -1000, 14811, -1000, 3217, 3216, + 3215, 3213, 3212, 3211, 3209, 3206, 3205, 3204, 3198, 3194, + 3193, 3191, 2901, 16747, 3189, 2666, 2665, 3187, 3186, 3185, + 2664, 3179, 3178, 3175, 2901, 2901, 3174, 3169, 3168, 3163, + 3162, 3161, 3160, 3159, 3154, 3153, 3151, 3146, 3144, 3138, + 3136, 3135, 3134, 3123, 3122, 3120, 3119, 3117, 3116, 3111, + 3110, 3107, -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, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 1429, -1000, - 2971, 3524, 2853, -1000, 3402, 3399, 3397, 3384, -263, 2969, - 2290, -1000, -1000, 90, 3510, 50504, -285, 50504, 436, -111, - -112, -113, -1000, -75, -1000, -1000, 1188, -1000, 1151, 53694, - 972, -1000, -1000, 50504, 920, 920, 920, 50504, 50504, 195, - 868, 920, 920, 920, 920, 920, 980, 920, 3432, 995, - 993, 992, 990, 920, -52, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, 1995, 1993, 3275, 1137, 1032, -1000, -1000, -1000, - -1000, 1573, 50504, -1000, 2898, 436, -333, 1789, 1789, 3476, - 3476, 3430, 3429, 835, 833, 820, 1789, 671, -1000, 1941, - 1941, 1941, 1941, 1789, 512, 877, 3435, 3435, 116, 1941, - 79, 1789, 1789, 79, 1789, 1789, -1000, 1974, 304, -269, - -1000, -1000, -1000, -1000, 1941, 1941, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, 3412, 3411, 922, 922, 50504, 922, 193, - 50504, 922, 922, 922, 50504, 931, -332, 92, 53056, 52418, - 2151, 2317, 813, 804, 1587, 1968, -1000, 1778, 50504, 50504, - 1778, 1778, 25622, 24984, -1000, 50504, -1000, 3524, 2853, 2781, - 1854, 2780, 2853, -114, 436, 922, 922, 922, 922, 922, - 321, 922, 922, 922, 922, 922, 50504, 50504, 47952, 922, - 922, 922, 922, 9598, 1784, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 15382, 2261, - 2322, 213, -7, -319, 267, -1000, -1000, 50504, 3331, 324, - -1000, -1000, -1000, 2875, -1000, 2886, 2886, 2886, 2886, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 2886, - 2886, 2897, 2967, -1000, -1000, 2882, 2882, 2882, 2875, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, 1483, -1000, 3106, 3588, + 2953, -1000, 3466, 3464, 3458, 3456, -267, 3105, 2365, -1000, + -1000, 100, 3571, 49945, -290, 49945, 420, -89, -95, -100, + -1000, -79, -1000, -1000, 1129, -1000, 1094, 53135, 941, -1000, + -1000, 49945, 914, 914, 914, 49945, 49945, 232, 982, 914, + 914, 914, 914, 914, 944, 914, 3500, 970, 969, 966, + 965, 914, -35, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + 1998, 1994, 3343, 1085, -1000, -1000, -1000, -1000, 1640, 49945, + -1000, 3026, 420, -311, 1836, 1836, 3557, 3557, 3495, 3494, + 834, 825, 824, 1836, 671, -1000, 1947, 1947, 1947, 1947, + 1836, 543, 819, 3503, 3503, 214, 1947, 101, 1836, 1836, + 101, 1836, 1836, -1000, 1958, 304, -276, -1000, -1000, -1000, + -1000, 1947, 1947, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + 3474, 3473, 916, 916, 49945, 916, 221, 49945, 916, 916, + 916, 49945, 918, -325, 51, 52497, 51859, 2262, 2487, 806, + 804, 1652, 2009, -1000, 1846, 49945, 49945, 1846, 1846, 25701, + 25063, -1000, 49945, -1000, 3588, 2953, 2883, 1527, 2882, 2953, + -102, 420, 916, 916, 916, 916, 916, 339, 916, 916, + 916, 916, 916, 49945, 49945, 47393, 916, 916, 916, 916, + 9677, 1804, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, 15461, 2185, 2249, 196, -12, + -313, 297, -1000, -1000, 49945, 3389, 349, -1000, -1000, -1000, + 2997, -1000, 3010, 3010, 3010, 3010, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, 3010, 3010, 3025, 3104, + -1000, -1000, 3009, 3009, 3009, 2997, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, 2888, 2888, 2896, 2896, 2888, 50504, - -129, -1000, -1000, 11527, 50504, 3349, 438, 2964, 885, 885, - -1000, -1000, 50504, 329, 410, 885, 3524, 3342, 3435, 3470, - -1000, -1000, 1686, 2289, 2578, -1000, 358, -1000, 434, 358, - -1000, 579, 579, 1862, -1000, 1203, -1000, -1000, -1000, -1000, - -1000, -1000, 50504, -10, 440, -1000, -1000, 2559, 2963, -1000, - 677, 1362, 1430, -1000, 394, 5146, 40934, 2317, 40934, 50504, - -1000, -1000, -1000, -1000, -1000, -1000, 128, -1000, -1000, -1000, + -1000, 3013, 3013, 3021, 3021, 3013, 49945, -120, -1000, -1000, + 11606, 49945, 3413, 430, 3092, 850, -1000, -1000, 49945, 321, + 432, 3588, 3408, 3503, 3547, -1000, -1000, 1759, 2364, 2661, + -1000, 387, -1000, 415, 387, -1000, 570, 570, 1813, -1000, + 1205, -1000, -1000, -1000, -1000, -1000, -1000, 49945, 19, 456, + -1000, -1000, 2642, 3091, -1000, 687, 1319, 1655, -1000, 381, + 4537, 40375, 2487, 40375, 49945, -1000, -1000, -1000, -1000, -1000, + -1000, 126, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, 378, -1000, 11606, 11606, + 11606, 11606, 11606, -1000, 775, 13529, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, 14170, 14170, 14170, 14170, 14170, 14170, 14170, + 14170, 14170, 14170, 14170, 14170, 3079, 1925, 14170, 14170, 14170, + 14170, 28253, 1527, 3273, 1651, 301, 1767, 1767, 1767, 1767, + 11606, -1000, 2012, 2302, 11606, 11606, 11606, 11606, 34633, 49945, + -1000, -1000, 55027, 11606, 11606, 3800, 11606, 3443, 11606, 11606, + 11606, 2878, 5822, 49945, 11606, -1000, 2875, 2872, -1000, -1000, + 2128, 11606, -1000, -1000, 11606, -1000, -1000, 11606, 14170, 11606, + -1000, 11606, 11606, 11606, -1000, -1000, 2907, 3443, 3443, 3443, + 1913, 11606, 11606, 3443, 3443, 3443, 1907, 3443, 3443, 3443, + 3443, 3443, 3443, 3443, 3443, 3443, 3443, 3443, 2866, 2865, + 2862, 10965, 3503, -228, -1000, 9036, 3408, 3503, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -269, 3090, + 49945, 2660, 2659, -346, 183, 468, 49945, 1219, -1000, -1000, + 49945, 2359, 49945, 2356, 80, 1130, 1100, 1107, -1000, -1000, + 49945, 51221, -1000, 49945, 2026, 49945, 49945, 3436, -1000, 3087, + 49945, 914, 914, 914, -1000, 45479, 40375, 49945, 49945, 2487, + 49945, 49945, 49945, 914, 914, 914, 914, 49945, -1000, 3364, + 40375, 3347, 918, -1000, 49945, 1640, 3432, 49945, -1000, -1000, + -1000, -1000, 3557, 14170, 14170, -1000, -1000, 11606, -1000, 276, + 46755, 1947, 1836, 1836, -1000, -1000, 49945, -1000, -1000, -1000, + 1947, 49945, 1947, 1947, 3557, 1947, -1000, -1000, -1000, 1836, + 1836, -1000, -1000, 11606, -1000, -1000, 1947, 1947, -1000, -1000, + 3557, 49945, 123, 3557, 3557, 115, -1000, -1000, -1000, 1836, + 49945, 49945, 914, 49945, -1000, 49945, 49945, -1000, -1000, 49945, + 49945, 4575, 49945, 45479, 46117, 3471, -1000, 40375, 49945, 49945, + 1638, -1000, 940, 37823, -1000, 49945, 1500, -1000, 74, -1000, + 61, 51, 1846, 51, 1846, 939, -1000, 680, 816, 23787, + 616, 40375, 6463, -1000, -1000, 1846, 1846, 6463, 6463, 1784, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, 1614, -1000, 298, + 3503, -1000, -1000, -1000, -1000, -1000, 2354, -1000, 49945, 45479, + 40375, 2487, 49945, 916, 49945, 49945, 49945, 49945, 49945, -1000, + 3086, 1742, -1000, 3418, 49945, 49945, 49945, 49945, 1606, -1000, + -1000, 20585, 1727, -1000, -1000, 2021, -1000, 11606, 15461, -255, + 11606, 15461, 15461, 11606, 15461, -1000, 11606, 312, -1000, -1000, + -1000, -1000, 2353, -1000, 2350, -1000, -1000, -1000, -1000, -1000, + 2657, 2657, -1000, 2347, -1000, -1000, -1000, -1000, 2343, -1000, + -1000, 2331, -1000, -1000, -1000, -1000, -169, 2855, 1184, -1000, + 2656, 3272, -229, -1000, 21869, 49945, 49945, 430, -355, 1992, + 1990, 1986, 3487, -1000, -229, -1000, 21227, 49945, 3503, -1000, + -233, 3408, 11606, 49945, -1000, 3493, -1000, -1000, 387, -1000, + -1000, -1000, 570, 444, -1000, -1000, -1000, -1000, -1000, -1000, + 1720, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -83, -85, 1589, -1000, 49945, -1000, -1000, 381, 40375, + 42289, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 265, -1000, + -1000, 181, -1000, 938, 289, 1800, -1000, -1000, 228, 211, + 224, 1028, 2302, -1000, 2070, 2070, 2032, -1000, 761, -1000, + -1000, -1000, -1000, 3082, -1000, -1000, -1000, 3841, 2192, -1000, + 1880, 1880, 1704, 1704, 1704, 1704, 1704, 2141, 2141, -1000, + -1000, -1000, 7113, 3079, 14170, 14170, 14170, 14170, 987, 987, + 3758, 2786, -1000, -1000, -1000, -1000, 11606, 180, 2018, -1000, + 11606, 2592, 1654, 2558, 1566, 1790, -1000, 2997, 11606, 1719, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, 372, -1000, 11527, 11527, 11527, 11527, 11527, -1000, 1029, - 13450, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 14091, 14091, - 14091, 14091, 14091, 14091, 14091, 14091, 14091, 14091, 14091, 14091, - 2942, 1954, 14091, 14091, 14091, 14091, 28812, 1854, 3171, 1575, - 312, 1734, 1734, 1734, 1734, 11527, -1000, 1903, 2312, 11527, - 11527, 11527, 11527, 35192, 50504, -1000, -1000, 4591, 11527, 11527, - 5104, 11527, 3380, 11527, 11527, 11527, 2771, 5743, 50504, 11527, - -1000, 2768, 2763, -1000, -1000, 2092, 11527, -1000, -1000, 11527, - -1000, -1000, 11527, 14091, 11527, -1000, 11527, 11527, 11527, -1000, - -1000, 3960, 3380, 3380, 3380, 1962, 11527, 11527, 3380, 3380, - 3380, 1934, 3380, 3380, 3380, 3380, 3380, 3380, 3380, 3380, - 3380, 3380, 3380, 2756, 2754, 2749, 10886, 3435, -215, -1000, - 8957, 3342, 3435, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -265, 2961, 50504, 2571, 2569, -350, 182, - 477, 50504, 1242, -1000, -1000, 50504, 2286, 50504, 2284, 59, - 1219, 1158, 1172, -1000, -1000, 50504, 51780, -1000, 50504, 1944, - 50504, 50504, 3374, -1000, 2958, 50504, 920, 920, 920, -1000, - 46038, 40934, 50504, 50504, 2317, 50504, 50504, 50504, 920, 920, - 920, 920, 50504, -1000, 3294, 40934, 3282, 931, -1000, 1137, - 50504, 1573, 3372, 50504, -1000, -1000, -1000, -1000, 3476, 14091, - 14091, -1000, -1000, 11527, -1000, 240, 47314, 1941, 1789, 1789, - -1000, -1000, 50504, -1000, -1000, -1000, 1941, 50504, 1941, 1941, - 3476, 1941, -1000, -1000, -1000, 1789, 1789, -1000, -1000, 11527, - -1000, -1000, 1941, 1941, -1000, -1000, 3476, 50504, 119, 3476, - 3476, 101, -1000, -1000, -1000, 1789, 50504, 50504, 920, 50504, - -1000, 50504, 50504, -1000, -1000, 50504, 50504, 4584, 50504, 46038, - 46676, 3410, -1000, 40934, 50504, 50504, 1572, -1000, 971, 38382, - -1000, 50504, 1533, -1000, 38, -1000, 53, 92, 1778, 92, - 1778, 967, -1000, 661, 1023, 23708, 574, 40934, 6384, -1000, - -1000, 1778, 1778, 6384, 6384, 1736, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, 1571, -1000, 261, 3435, -1000, -1000, -1000, - -1000, -1000, 2283, -1000, 50504, 46038, 40934, 2317, 50504, 922, - 50504, 50504, 50504, 50504, 50504, -1000, 2944, 1648, -1000, 3360, - 50504, 50504, 50504, 50504, 1412, -1000, -1000, 20506, 1631, -1000, - -1000, 2019, -1000, 11527, 15382, -241, 11527, 15382, 15382, 11527, - 15382, -1000, 11527, 309, -1000, -1000, -1000, -1000, 2267, -1000, - 2262, -1000, -1000, -1000, -1000, -1000, 2568, 2568, -1000, 2259, - -1000, -1000, -1000, -1000, 2258, -1000, -1000, 2247, -1000, -1000, - -1000, -1000, -158, 2748, 1284, -1000, 2567, 3211, -217, -1000, - 21790, 50504, 50504, 438, 438, -353, 1988, 1987, 1976, 3422, - -1000, -217, -1000, 21148, 50504, 410, 3435, -1000, -222, 3342, - 11527, 50504, -1000, 3428, -1000, -1000, 358, -1000, -1000, -1000, - 579, 455, -1000, -1000, -1000, -1000, -1000, -1000, 1628, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -105, - -107, 1570, -1000, 50504, -1000, -1000, 394, 40934, 42848, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, 262, -1000, -1000, 187, - -1000, 966, 272, 1861, -1000, -1000, 206, 215, 243, 1072, - 2312, -1000, 2032, 2032, 2018, -1000, 823, -1000, -1000, -1000, - -1000, 2943, -1000, -1000, -1000, 1899, 3616, -1000, 1921, 1921, - 1746, 1746, 1746, 1746, 1746, 1887, 1887, -1000, -1000, -1000, - 7034, 2942, 14091, 14091, 14091, 14091, 1038, 1038, 4061, 4412, - -1000, -1000, -1000, -1000, 11527, 184, 2007, -1000, 11527, 3018, - 1629, 2765, 1427, 1860, -1000, 2875, 11527, 1622, -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, 2746, 2743, - 3184, 3505, 2742, 11527, -1000, -1000, 1849, 1840, 1833, -1000, - 2394, 10245, -1000, -1000, -1000, 2740, 1615, 2739, -1000, -1000, - -1000, 2737, 1828, 1413, 2736, 2891, 2735, 2734, 2731, 2730, - 1565, 11527, 11527, 11527, 11527, 2729, 1827, 1825, 11527, 11527, - 11527, 11527, 2724, 11527, 11527, 11527, 11527, 11527, 11527, 11527, - 11527, 11527, 11527, 50504, 178, 178, 178, 1560, 1556, -1000, - -1000, 1824, -1000, 2312, -1000, -1000, 3342, -1000, 2937, 2245, - 1537, -1000, -1000, -341, 2510, 50504, 50504, 181, 50504, 2565, - -286, 50504, -1000, -1000, 2562, -1000, -1000, -1000, 1212, 1150, - 1148, -1000, 50504, -1000, 2560, 3358, 3427, 981, 50504, 1280, - 2930, 50504, 50504, 50504, 299, -1000, -1000, 1378, -1000, 272, - -41, 576, 1330, 3199, 3502, -131, 50504, 50504, 50504, 50504, - 3371, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 45400, - 931, -1000, 2926, 1823, -1000, -1000, 1734, 1734, 2312, 50504, - 50504, 50504, 3198, 50504, 50504, 3476, 3476, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, 1941, 3476, 3476, 1612, 1789, 1941, - -1000, -1000, 1941, -353, -1000, 1941, -1000, -353, 1610, -353, - 50504, -1000, -1000, -1000, 3370, 2898, 1534, -1000, -1000, -1000, - 3469, 1547, 909, 909, 1135, 755, 3467, 19230, -1000, 1804, - 1373, 964, 3313, 375, -1000, 1804, -154, 888, 1804, 1804, - 1804, 1804, 1804, 1804, 1804, 785, 782, 1804, 1804, 1804, - 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1233, 1804, - 1804, 1804, 1804, 1804, -1000, 1804, 2923, 558, -1000, -1000, - -1000, -1000, -1000, -1000, 821, 709, 287, 3409, 408, -1000, - 406, 1378, 670, 3407, 432, 50504, 50504, 3612, 1369, -1000, - -1000, -1000, -1000, -1000, 29450, 29450, 23070, 29450, -1000, 205, - 1778, 92, -18, -1000, -1000, 1533, 6384, 1533, 6384, 2238, - -1000, -1000, 952, -1000, -1000, 1330, -1000, 50504, 50504, -1000, - -1000, 2922, 1973, -1000, -1000, 16668, -1000, 6384, 6384, -1000, - -1000, 31364, 50504, -1000, -12, -1000, 12, 3342, -1000, 1298, - -1000, -1000, 1519, 1330, 3212, 50504, 1298, 1298, 1298, -1000, - -1000, 17954, 50504, 50504, -1000, -1000, -1000, -1000, 3476, 9598, - -1000, 38382, -1000, -1000, 44762, -1000, 44124, 1977, -1000, 15382, - 2307, 200, -1000, 263, -321, 211, 2045, 208, 2312, -1000, - -1000, 2721, 2718, 1822, -1000, 1821, 2716, 1814, 1806, 2237, - -1000, 63, -1000, 3337, 1331, -1000, 2920, -1000, 1803, 3271, - -1000, 1489, -1000, 1967, 1792, -1000, -1000, 3211, -1000, 11527, - 43486, 11527, 1113, 1331, 1786, 3269, 1489, -1000, 3342, 2555, - -1000, 1484, -1000, 2176, 1609, 221, -1000, -1000, -1000, 50504, - 2559, 1783, 42848, 1414, -1000, 945, 1606, 1605, -1000, 40934, - 346, 40934, -1000, 40934, -1000, -1000, 413, -1000, 50504, 3340, - -1000, -1000, -1000, 2510, 1965, -352, 50504, -1000, -1000, -1000, - -1000, -1000, 1782, -1000, 1038, 1038, 4061, 4226, -1000, 14091, - -1000, 14091, 3135, -1000, 1964, -1000, 11527, 2251, 5027, 11527, - 5027, 955, 27536, 35192, -122, 3347, 3131, 50504, -1000, -1000, - 11527, 11527, -1000, 3098, -1000, -1000, -1000, -1000, 11527, 11527, - 2904, -1000, 50504, -1000, -1000, -1000, -1000, 27536, -1000, 14091, - -1000, -1000, -1000, -1000, 11527, 1399, 1399, 3075, 1766, 178, - 178, 178, 3054, 3044, 2959, 1761, 178, 2910, 2827, 2821, - 2796, 2785, 2745, 2732, 2698, 2637, 2587, 1735, -1000, 2919, - -1000, -1000, 2098, 12809, 8957, -1000, -1000, 311, 1474, 2231, - 2553, 136, -1000, 1960, -1000, 2548, 50504, 50504, 1237, -1000, - 50504, 3500, -1000, -1000, -1000, -1000, 1144, -1000, 2544, -1000, - 293, 239, 2136, 334, 2715, 1469, -1000, -1000, 50504, -1000, - -1000, -1000, 17954, 2898, 2917, 2898, 142, 1804, 662, 40934, - 802, -1000, 50504, 2096, 1958, 3209, 862, 3325, 50504, 2916, - 493, 2914, 2913, 3369, 544, 5163, 50504, 1410, -1000, 1604, - 3496, 4185, -1000, 50504, -1000, -1000, 50504, -1000, 2317, -1000, - 1789, -1000, -1000, 3476, -1000, -1000, 11527, 11527, 3476, 1789, - 1789, -1000, 1941, -1000, 50504, -1000, -353, 544, 5163, 3368, - 4643, 622, 2693, -1000, 50504, -1000, -1000, -1000, 962, -1000, - 1118, 920, 50504, 2044, 1118, 2040, 2912, -1000, -1000, 50504, - 50504, 50504, 50504, -1000, -1000, 50504, -1000, 50504, 50504, 50504, - 50504, 50504, 42210, -1000, 50504, 50504, -1000, 50504, 2039, 50504, - 2033, 3320, -1000, 1804, 1804, 1091, -1000, -1000, 643, -1000, - 42210, 2228, 2226, 2225, 2221, 2543, 2538, 2531, 1804, 1804, - 2203, 2526, 41572, 2524, 1345, 2194, 2193, 2187, 2185, 2523, - 1042, -1000, 2522, 2179, 2175, 2167, 50504, 2906, 2451, 546, - -1000, -1000, 2136, 142, 1804, 401, 50504, 1952, 1937, 662, - 644, 644, 569, -42, 24346, -1000, -1000, -1000, 50504, 38382, - 38382, 38382, 38382, 38382, 38382, -1000, 3241, 3234, 2902, -1000, - 3249, 3233, 3248, 3239, 2791, 50504, 38382, 2898, -1000, 41572, - -1000, -1000, -1000, 1854, 1728, 3741, 1099, 11527, 6384, -1000, - -1000, 31, 42, -1000, -1000, -1000, -1000, 40934, 2520, 574, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, 3426, 50504, 50504, - 891, 2710, 1468, -1000, -1000, -1000, 5163, 2886, 2886, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 2886, 2886, - 2897, -1000, -1000, 2882, 2882, 2882, 2875, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, 2888, 2888, 2896, - 2896, 2888, -1000, -1000, 3474, -1000, 1463, -1000, -1000, 1598, - -1000, 1830, -347, 15382, 1832, 1829, -1000, 11527, 15382, 11527, - -242, 387, -244, -1000, -1000, -1000, 2519, -1000, -1000, -1000, - 2184, -1000, 2183, -1000, 201, 220, 2031, -217, 8957, 510, - 50504, -217, 50504, 8957, -1000, 50504, -1000, 169, -359, -360, - 165, 2516, 484, -217, 3426, 63, 11527, 3296, -1000, -1000, - 50504, 2180, -1000, -1000, -1000, 3494, 40934, 2317, 1757, 40296, - -1000, 363, -1000, 260, 624, 2514, -1000, 989, 134, 2513, - 2510, -1000, -1000, -1000, -1000, 14091, 1734, -1000, -1000, -1000, - 2312, 11527, 2706, -1000, 1128, 1128, 2229, 2700, 2699, -1000, - 2886, 2886, -1000, 2875, 2882, 2875, 1128, 1128, 2690, -1000, - 2874, -1000, 3347, -1000, 2302, 2575, -1000, 2517, 2511, 11527, - -1000, 2688, 3863, 1541, -62, -189, 178, 178, -1000, -1000, - -1000, -1000, 178, 178, 178, 178, -1000, 178, 178, 178, - 178, 178, 178, 178, 178, 178, 178, 178, 887, -96, - -274, -99, -275, -1000, 2687, 1459, -1000, -1000, -1000, -1000, - -1000, 5104, 1437, 583, 583, 2510, 2509, -1000, 940, 2507, - 1199, 50504, 2503, -287, -1000, 2502, -1000, -1000, 50504, 50504, - 50504, 51142, 702, 50504, 50504, 2498, -1000, 2497, 2496, 1280, - 5163, 2686, 3366, 18592, 3364, 2299, -1000, -1000, -1000, 30726, - 644, -1000, -1000, -1000, 739, 638, 2178, 617, -1000, 50504, - 555, 3284, 1936, 2493, 50504, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, 3325, -1000, 1005, 497, 37106, 16030, -1000, - 412, 50504, -1000, 18592, 18592, 412, 503, 1909, -1000, 885, - 1344, 143, 38382, 50504, -1000, 37744, 50504, 2684, -1000, -1000, - 1330, 3476, -1000, 2312, 2312, -353, 3476, 3476, 1789, -1000, - -1000, 503, -1000, 412, -1000, 1383, 19868, 595, 522, 448, - -1000, 689, -1000, -1000, 876, 3306, 5163, -1000, 50504, -1000, - 50504, -1000, 50504, 50504, 920, 11527, 3306, 50504, 936, -1000, - 1247, 487, 492, 874, 874, 1420, -1000, 3347, -1000, -1000, - 1418, -1000, -1000, -1000, -1000, 50504, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, 27536, 27536, 3405, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 2492, - 2491, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + 2854, 2839, 2474, 3570, 2837, 11606, -1000, -1000, 1777, 1768, + 1765, -1000, 2367, 10324, -1000, -1000, -1000, 2835, 1703, 2825, + -1000, -1000, -1000, 2822, 1763, 1311, 2821, 1488, 2817, 2800, + 2799, 2798, 1569, 11606, 11606, 11606, 11606, 2796, 1753, 1748, + 11606, 11606, 11606, 11606, 2795, 11606, 11606, 11606, 11606, 11606, + 11606, 11606, 11606, 11606, 11606, 49945, 146, 146, 146, 1535, + 1534, -1000, -1000, 1744, -1000, 2302, -1000, -1000, 3408, -1000, + 3078, 2324, 1513, -1000, -1000, -332, 2590, 49945, 49945, 166, + 49945, 2655, -293, 49945, -1000, -1000, 2647, -1000, -1000, -1000, + 1127, 1091, 1110, -1000, 49945, -1000, 2645, 3399, 3492, 960, + 49945, 1262, 3064, 49945, 49945, 49945, 322, -1000, -1000, 1314, + -1000, 289, -3, 565, 1204, 3244, 3569, -121, 49945, 49945, + 49945, 49945, 3431, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, 44841, -1000, 3060, 1743, -1000, -1000, 1767, 1767, 2302, + 49945, 49945, 49945, 3227, 49945, 49945, 3557, 3557, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, 1947, 3557, 3557, 1466, 1836, + 1947, -1000, -1000, 1947, -355, -1000, 1947, -1000, -355, 1692, + -355, 49945, -1000, -1000, -1000, 3430, 3026, 1505, -1000, -1000, + -1000, 3546, 1615, 889, 889, 1135, 820, 3545, 19309, -1000, + 1829, 1357, 937, 3369, 394, -1000, 1829, -160, 864, 1829, + 1829, 1829, 1829, 1829, 1829, 1829, 776, 767, 1829, 1829, + 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1141, + 1829, 1829, 1829, 1829, 1829, -1000, 1829, 3059, 549, -1000, + -1000, -1000, -1000, -1000, -1000, 798, 705, 319, 3469, 434, + -1000, 429, 1314, 674, 3461, 459, 49945, 49945, 3551, 1495, + -1000, -1000, -1000, -1000, -1000, 28891, 28891, 23149, 28891, -1000, + 205, 1846, 51, 72, -1000, -1000, 1500, 6463, 1500, 6463, + 2323, -1000, -1000, 936, -1000, -1000, 1204, -1000, 49945, 49945, + -1000, -1000, 3058, 1984, -1000, -1000, 16747, -1000, 6463, 6463, + -1000, -1000, 30805, 49945, -1000, 3, -1000, 28, 3408, -1000, + 1189, -1000, -1000, 1468, 1204, 3270, 49945, 1189, 1189, 1189, + -1000, -1000, 18033, 49945, 49945, -1000, -1000, -1000, -1000, 3557, + 9677, -1000, 37823, -1000, -1000, 44203, -1000, 43565, 2004, -1000, + 15461, 2150, 192, -1000, 281, -315, 190, 1991, 189, 2302, + -1000, -1000, 2782, 2781, 1738, -1000, 1736, 2775, 1733, 1732, + 2310, -1000, 97, -1000, 3391, 1209, -1000, 3056, -1000, 1730, + 3338, -1000, 1467, -1000, 1983, 1722, -1000, -1000, -1000, 11606, + 42927, 11606, 1060, 1209, 1721, 3323, 1467, 3408, 2643, -1000, + 1453, -1000, 2290, 1683, 195, -1000, -1000, -1000, 49945, 2642, + 1701, 42289, 1343, -1000, 932, 1682, 1677, -1000, 40375, 383, + 40375, -1000, 40375, -1000, -1000, 401, -1000, 49945, 3405, -1000, + -1000, -1000, 2590, 1968, -349, 49945, -1000, -1000, -1000, -1000, + -1000, 1700, -1000, 987, 987, 3758, 1932, -1000, 14170, -1000, + 14170, 3231, -1000, 1988, -1000, 11606, 2119, 5115, 11606, 5115, + 1009, 26977, 34633, -112, 3396, 3225, 49945, -1000, -1000, 11606, + 11606, -1000, 3221, -1000, -1000, -1000, -1000, 11606, 11606, 2129, + -1000, 49945, -1000, -1000, -1000, -1000, 26977, -1000, 14170, -1000, + -1000, -1000, -1000, 11606, 1381, 1381, 3142, 1698, 146, 146, + 146, 3102, 3096, 3084, 1697, 146, 3023, 3005, 3000, 2988, + 2957, 2869, 2830, 2784, 2780, 2774, 1689, -1000, 3049, -1000, + -1000, 2118, 12888, 9036, -1000, -1000, 302, 1449, 2286, 2639, + 127, -1000, 1965, -1000, 2637, 49945, 49945, 1190, -1000, 49945, + 3565, -1000, -1000, -1000, -1000, 1089, -1000, 2631, -1000, 257, + 242, 2154, 360, 2769, 1444, -1000, -1000, 49945, -1000, -1000, + -1000, 18033, 3026, 3048, 3026, 177, 1829, 664, 40375, 795, + -1000, 49945, 2171, 1963, 3268, 584, 3387, 49945, 3047, 410, + 3046, 3044, 3429, 532, 5349, 49945, 1456, -1000, 1674, 362, + -1000, 49945, -1000, -1000, 49945, -1000, 2487, -1000, 1836, -1000, + -1000, 3557, -1000, -1000, 11606, 11606, 3557, 1836, 1836, -1000, + 1947, -1000, 49945, -1000, -355, 532, 5349, 3428, 4830, 756, + 2648, -1000, 49945, -1000, -1000, -1000, 897, -1000, 1080, 914, + 49945, 2085, 1080, 2079, 3039, -1000, -1000, 49945, 49945, 49945, + 49945, -1000, -1000, 49945, -1000, 49945, 49945, 49945, 49945, 49945, + 41651, -1000, 49945, 49945, -1000, 49945, 2076, 49945, 2071, 3373, + -1000, 1829, 1829, 1040, -1000, -1000, 683, -1000, 41651, 2284, + 2275, 2269, 2268, 2630, 2626, 2624, 1829, 1829, 2259, 2623, + 41013, 2622, 1320, 2258, 2256, 2255, 2349, 2611, 1062, -1000, + 2610, 2345, 2312, 2281, 49945, 3038, 2538, 547, -1000, -1000, + 2154, 177, 1829, 424, 49945, 1959, 1936, 664, 634, 634, + 564, -19, 24425, -1000, -1000, -1000, 49945, 37823, 37823, 37823, + 37823, 37823, 37823, -1000, 3302, 3297, 3037, -1000, 3310, 3296, + 3326, 3298, 2916, 49945, 37823, 3026, -1000, 41013, -1000, -1000, + -1000, 1527, 1686, 3961, 1067, 11606, 6463, -1000, -1000, 57, + 36, -1000, -1000, -1000, -1000, 40375, 2608, 616, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, 3491, 49945, 49945, 876, 2768, + 1435, -1000, -1000, -1000, 5349, 3010, 3010, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, 3010, 3010, 3025, -1000, + -1000, 3009, 3009, 3009, 2997, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, 3013, 3013, 3021, 3021, 3013, + -1000, -1000, 3555, -1000, 1431, -1000, -1000, 1673, -1000, 2014, + -341, 15461, 2006, 1854, -1000, 11606, 15461, 11606, -256, 406, + -259, -1000, -1000, -1000, 2605, -1000, -1000, -1000, 2253, -1000, + 2251, -1000, 201, 222, 2069, -229, 9036, 455, 49945, -229, + 49945, 9036, -1000, 49945, 169, -361, -362, 161, 2604, 453, + -229, 3491, 97, 11606, 3366, -1000, -1000, 49945, 2247, -1000, + -1000, -1000, 3564, 40375, 2487, 1796, 39737, -1000, 374, -1000, + 261, 643, 2602, -1000, 955, 120, 2593, 2590, -1000, -1000, + -1000, -1000, 14170, 1767, -1000, -1000, -1000, 2302, 11606, 2767, + -1000, 1095, 1095, 2384, 2765, 2764, -1000, 3010, 3010, -1000, + 2997, 3009, 2997, 1095, 1095, 2763, -1000, 2994, -1000, 3396, + -1000, 2294, 2743, -1000, 2576, 2531, 11606, -1000, 2759, 3734, + 1414, -40, -197, 146, 146, -1000, -1000, -1000, -1000, 146, + 146, 146, 146, -1000, 146, 146, 146, 146, 146, 146, + 146, 146, 146, 146, 146, 858, -101, -282, -104, -285, + -1000, 2750, 1429, -1000, -1000, -1000, -1000, -1000, 3800, 1393, + 580, 580, 2590, 2589, -1000, 931, 2586, 1125, 49945, 2585, + -305, -1000, 2584, -1000, -1000, 49945, 49945, 49945, 50583, 693, + 49945, 49945, 2579, -1000, 2577, 2573, 1262, 5349, 2749, 3427, + 18671, 3424, 2377, -1000, -1000, -1000, 30167, 634, -1000, -1000, + -1000, 763, 608, 2245, 624, -1000, 49945, 602, 3353, 1927, + 2570, 49945, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + 3387, -1000, 1015, 518, 36547, 16109, -1000, 428, 49945, -1000, + 18671, 18671, 428, 523, 1942, -1000, 850, 1433, 141, 37823, + 49945, -1000, 37185, 2747, -1000, -1000, 1204, 3557, -1000, 2302, + 2302, -355, 3557, 3557, 1836, -1000, -1000, 523, -1000, 428, + -1000, 1735, 19947, 637, 519, 507, -1000, 706, -1000, -1000, + 845, 3361, 5349, -1000, 49945, -1000, 49945, -1000, 49945, 49945, + 914, 11606, 3361, 49945, 927, -1000, 1215, 493, 492, 872, + 872, 1388, -1000, 3396, -1000, -1000, 1384, -1000, -1000, -1000, + -1000, 49945, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 26977, + 26977, 3450, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, 2569, 2568, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - 50504, 1727, -1000, 1901, 2174, 2490, 2299, 30726, 1900, 1778, - 2483, 2481, 644, -1000, 2476, 2472, -1000, 2096, 1898, 986, - 50504, -1000, 1299, 50504, 50504, -1000, 1407, -1000, 1896, 3196, - 3208, 3196, -1000, 3196, -1000, -1000, -1000, -1000, 3237, 2470, - -1000, 3235, -1000, 2528, -1000, -1000, -1000, -1000, 1407, -1000, - -1000, -1000, -1000, -1000, 1099, -1000, 3425, 1118, 1118, 1118, - 2683, -1000, -1000, -1000, -1000, 1414, 2680, -1000, -1000, -1000, - 3519, -1000, -1000, -1000, -1000, -1000, -1000, 17954, 3323, 3466, - 3460, 39658, -1000, -347, 1872, -1000, 2138, 202, 2003, 50504, - -1000, -1000, -1000, 2676, 2674, -224, 210, 3458, 3457, 1154, - -1000, 2672, 1409, -217, -1000, -1000, 1331, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -371, -217, -1000, 1331, -1000, 201, - -1000, -1000, 3329, -1000, -1000, 2317, -1000, 257, -1000, -1000, - -1000, -1000, -1000, -1000, 251, -1000, 50504, -1000, 1400, 129, - -1000, 2312, -1000, -1000, -1000, -1000, -1000, 5027, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 2465, -1000, - -1000, 11527, -1000, -1000, -1000, 2505, -1000, -1000, 11527, 2669, - 2462, 2663, 2460, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, 49945, 1685, -1000, 1924, + 2223, 2564, 2377, 30167, 1915, 1846, 2563, 2561, 634, -1000, + 2560, 2557, -1000, 2171, 1912, 953, 49945, -1000, 1195, 49945, + 49945, -1000, 1340, -1000, 1883, 3242, 3260, 3242, -1000, 3242, + -1000, -1000, -1000, -1000, 3292, 2551, -1000, 3289, -1000, 3040, + -1000, -1000, -1000, -1000, 1340, -1000, -1000, -1000, -1000, -1000, + 1067, -1000, 3490, 1080, 1080, 1080, 2746, -1000, -1000, -1000, + -1000, 1343, 2736, -1000, -1000, -1000, 3583, -1000, -1000, -1000, + -1000, -1000, -1000, 18033, 3384, 3549, 3544, 39099, -1000, -341, + 1961, -1000, 2080, 184, 1985, 49945, -1000, -1000, -1000, 2735, + 2734, -235, 194, 3535, 3532, 1139, -1000, 2733, 1328, -229, + -1000, -1000, 1209, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -364, -229, -1000, 1209, -1000, 201, -1000, -1000, 3381, -1000, + -1000, 2487, -1000, 260, -1000, -1000, -1000, -1000, -1000, -1000, + 274, -1000, 49945, -1000, 1236, 119, -1000, 2302, -1000, -1000, + -1000, -1000, -1000, 5115, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, 2548, -1000, -1000, 11606, -1000, -1000, + -1000, 2509, -1000, -1000, 11606, 2732, 2546, 2731, 2545, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - 3524, -1000, 3456, 1726, 2658, 2652, 1724, 2651, 2649, -1000, - 11527, 2647, 5104, 1104, 2457, 1104, -1000, -1000, 415, 30088, - 50504, 3488, -1000, 50504, 2455, -1000, -1000, 50504, 2136, 692, - 2136, 738, 50504, -1000, -1000, -1000, -1000, -1000, 1020, 412, - 2646, 1354, -1000, -1000, -1000, -1000, 412, -1000, 2454, 266, - -1000, -1000, -1000, -1000, 2172, -1000, -1000, 2164, 1630, 294, - -1000, -1000, -1000, -1000, -1000, -1000, 2182, 50504, 39020, 2297, - 1895, -354, -1000, 2873, -1000, 1804, 1804, 1804, 50504, 1705, - -1000, 1804, 1804, 2645, -1000, -1000, 2642, 2640, -134, 893, - 1961, 1959, -1000, 2169, 29450, 38382, 37744, 1393, -1000, 1594, - -1000, 885, -1000, -1000, -1000, -1000, -1000, 3476, 893, -1000, - 598, 2168, 14091, 2871, 14091, 2870, 665, 2867, 1704, -1000, - 50504, -1000, -1000, 50504, 4131, 2866, -1000, 2864, 3193, 582, - 2862, 2847, 50504, 2464, -1000, 3306, 50504, 824, 3319, -1000, - -1000, -1000, 471, -1000, -1000, -1000, 701, -1000, 50504, -1000, - 50504, -1000, 1713, -1000, 27536, -1000, -1000, 1695, -1000, 2451, - 2450, 5104, -1000, -1000, 266, 2447, 6384, -1000, -1000, -1000, - -1000, -1000, 3284, 2439, 2182, 50504, -1000, 50504, 1299, 1299, - 3524, 50504, 8957, -1000, -1000, 11527, 2841, -1000, 11527, -1000, - -1000, -1000, 2639, -1000, -1000, -1000, -1000, -1000, 2836, 3315, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, 1897, -1000, 11527, - 12168, -1000, 916, 15382, -256, 385, -1000, -1000, -1000, -226, - 2437, -1000, -1000, 3455, 2435, 2352, 50504, -1000, -1000, 1331, - -1000, 1331, -224, -1000, -1000, 1330, -1000, -1000, 1195, 792, - -1000, 2638, 276, -1000, 2418, -1000, 2360, 178, -1000, 178, - -1000, 292, 11527, -1000, 2426, -1000, -1000, -1000, 2425, -1000, - -1000, 2285, -1000, 2635, -1000, 2424, -1000, -1000, 50504, -1000, - -1000, 1198, 2422, -356, -1000, 2421, 2136, 2420, 2136, 50504, - 688, 5163, -139, -134, 18592, -139, -1000, -1000, 411, 421, - -1000, -1000, 2146, 650, -1000, -1000, 2414, 630, -1000, 1299, - -1000, 1882, 2058, 2395, 35192, 27536, 28812, 2411, -1000, -1000, - 37106, 1897, 1897, 55619, 372, 55695, -1000, 2833, 1239, 1957, - -1000, 2165, -1000, 2155, -1000, 3476, 1393, 138, -1000, -1000, - 1753, 29450, -1000, 1239, 2693, 3454, -1000, 3465, 50504, 3001, - 50504, 2832, 1866, 14091, -1000, 876, 3268, -1000, -1000, 4131, - -1000, -1000, 2065, 14091, -1000, -1000, 2410, 28812, 1051, 1847, - 1841, 1081, 2829, -1000, 741, 3517, -1000, -1000, -1000, 1077, - 2819, -1000, 2025, 1972, -1000, 50504, -1000, 35192, 35192, 901, - 901, 35192, 35192, 2818, 874, -1000, -1000, 14091, -1000, -1000, - 1804, -1000, -1000, -1000, 1804, 1694, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, 2297, -1000, -1000, 1298, -1000, 3435, -1000, - -1000, 2312, 50504, 2312, -1000, 36468, -1000, 3453, 3452, -1000, - 2312, 252, 238, 2817, 2811, -1000, -347, 50504, 50504, -228, - 2148, -1000, 2408, 226, -1000, -1000, 1293, -226, -231, 101, - 27536, 1831, -1000, 2632, 355, -146, -1000, -1000, -1000, -1000, - 2630, -1000, 911, -1000, -1000, -1000, 1284, 2629, 2627, -1000, - -1000, -1000, -1000, 50504, -1000, 2387, -1000, 2407, -1000, 2406, - 684, 2136, -125, -1000, -1000, 414, -1000, -1000, -1000, 660, - 2339, -1000, -1000, 416, -1000, -1000, -1000, 2182, 2404, -1000, - -1000, 111, -1000, 1826, 1692, -1000, -1000, -1000, -1000, -1000, - -1000, 866, -1000, 412, 55657, -1000, 1373, 28174, -1000, 1195, - 866, 558, 33916, 700, 313, -1000, 2147, -1000, -1000, 3524, - -1000, 3476, 698, -1000, 652, -1000, 1690, -1000, 1669, 35830, - 2144, 2978, -1000, 5311, 994, -1000, -1000, 4061, -1000, -1000, - -1000, -1000, -1000, -1000, 2403, 2401, -1000, -1000, -1000, -1000, - -1000, 2142, 2810, 105, 3387, 2400, -1000, -1000, 2806, 1668, - 1661, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, 1634, 1625, 35192, -1000, -1000, 4061, 2141, 27536, 1804, - -1000, -1000, 1613, 1591, -1000, -1000, -1000, -1000, -1000, -327, - 2802, 11527, 11527, -1000, -1000, -1000, 2801, -1000, -1000, 3449, - -228, -234, 2399, 198, 275, -1000, 2397, -1000, -127, 3262, - -149, -1000, -1000, 734, -220, 174, 168, 115, -1000, -1000, - -1000, 11527, -1000, -1000, -1000, 110, -1000, 1817, -1000, -1000, - 2136, 2396, 50504, 718, -1000, -1000, -1000, -1000, 248, -1000, - -1000, -1000, -1000, -1000, -1000, 2395, 2392, -1000, 588, 3448, - -1000, 55695, -1000, 1804, -1000, 588, 1590, -1000, 1804, 1804, - -1000, 535, -1000, 1951, -1000, 2131, -1000, 3435, 3524, -1000, - 530, -1000, 591, -1000, -1000, -1000, 1543, -1000, -1000, -1000, - 5311, 602, -1000, 852, 2800, -1000, -1000, 2622, 11527, 2792, - 1804, 2612, -118, 35192, 3190, 3133, 2893, 2525, 1538, -1000, - -1000, 27536, -1000, -1000, 34554, -1000, 2790, 1526, 1525, 50504, - 2352, -1000, -1000, 2388, -1000, 930, 191, 275, -1000, 3443, - 219, 3442, 3441, 1270, 3258, -1000, -1000, 2013, -1000, 186, - 171, 166, -1000, -1000, -1000, -1000, -1000, 2387, 2380, 2378, - -1000, 594, -1000, 360, -1000, -1000, -1000, 365, -1000, 3439, - 622, -1000, 27536, -1000, -1000, 33916, 1897, 1897, -1000, -1000, - 2129, -1000, -1000, 3435, -1000, -1000, 2128, -1000, -1000, -1000, - 1523, -1000, 50504, 1078, 8316, -1000, 2067, -1000, 50504, -1000, - 3207, -1000, 315, 1513, 365, 901, 365, 901, 365, 901, - 365, 901, 342, -1000, -1000, -1000, 1501, 11527, -1000, -1000, - 1479, -1000, -1000, -1000, 2788, 2116, 210, 203, 3438, -1000, - 2352, 3437, 2352, 2352, -1000, 185, -144, 734, -1000, -1000, - -1000, -1000, -1000, -1000, 2375, -1000, -1000, -1000, -1000, 1804, - 1804, 2374, 2372, 494, -1000, -1000, 1804, 1804, 1804, 1804, - 33278, 595, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - 602, 55695, -1000, 8316, 1464, -1000, 2312, -1000, 874, -1000, - -1000, 3138, 2981, 3481, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, 2787, 2608, -1000, 50504, 3379, 26898, - 196, -1000, -1000, -1000, 2370, -1000, 2352, -1000, -1000, 1800, - -147, -1000, -271, 2110, 2106, -1000, -1000, 50504, 2099, 2085, - 2074, 2321, -1000, 50504, 598, -1000, 55695, 1460, -1000, 8316, - -1000, -1000, 3516, -1000, 3482, 1087, 1087, 365, 365, 365, - 365, 11527, -1000, -1000, -1000, 50504, -1000, 1446, -1000, -1000, - -1000, 1548, -1000, -1000, -1000, -1000, 2306, -150, -1000, -1000, - 2304, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 1398, 2693, - -1000, -1000, -1000, -1000, -1000, 2121, 737, -1000, 2592, 1263, - -1000, 1788, -1000, 32640, 50504, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, 50504, 7675, -1000, 1390, -1000, -1000, - 2312, 50504, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, 3588, -1000, 3531, 1664, + 2730, 2728, 1647, 2727, 2726, -1000, 11606, 2724, 3800, 1049, + 2544, 1049, -1000, -1000, 454, 29529, 49945, 3559, -1000, 49945, + 2543, -1000, -1000, 49945, 2154, 691, 2154, 783, 49945, -1000, + -1000, -1000, -1000, -1000, 977, 428, 2723, 1222, -1000, -1000, + -1000, -1000, 428, -1000, 2539, 285, -1000, -1000, -1000, -1000, + 2222, -1000, -1000, 2229, 1737, 308, -1000, -1000, -1000, -1000, + -1000, -1000, 2372, 49945, 38461, 2374, 1875, -356, -1000, 2991, + -1000, 1829, 1829, 1829, 49945, 1645, -1000, 1829, 1829, 2722, + -1000, -1000, 2721, 2719, -122, 871, 1895, 1892, -1000, 2181, + 28891, 37823, 37185, 1325, -1000, 1670, -1000, -1000, -1000, -1000, + -1000, -1000, 3557, 871, -1000, 597, 2180, 14170, 2990, 14170, + 2983, 663, 2981, 1644, -1000, 49945, -1000, -1000, 49945, 4135, + 2980, -1000, 2978, 3223, 577, 2977, 2963, 49945, 2484, -1000, + 3361, 49945, 805, 3379, -1000, -1000, -1000, 461, -1000, -1000, + -1000, 712, -1000, 49945, -1000, 49945, -1000, 1757, -1000, 26977, + -1000, -1000, 1643, -1000, 2538, 2535, 3800, -1000, -1000, 285, + 2530, 6463, -1000, -1000, -1000, -1000, -1000, 3353, 2528, 2372, + 49945, -1000, 49945, 1195, 1195, 3588, 49945, 9036, -1000, -1000, + 11606, 2961, -1000, 11606, -1000, -1000, -1000, 2718, -1000, -1000, + -1000, -1000, -1000, 2959, 3380, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, 1454, -1000, 11606, 12247, -1000, 900, 15461, -260, + 403, -1000, -1000, -1000, -238, 2522, -1000, -1000, 3527, 2521, + 2404, 49945, -1000, -1000, 1209, -1000, 1209, -235, -1000, -1000, + 1204, -1000, -1000, 1170, 779, -1000, 2715, 278, -1000, 2453, + -1000, 2403, 146, -1000, 146, -1000, 277, 11606, -1000, 2519, + -1000, -1000, -1000, 2518, -1000, -1000, 2363, -1000, 2709, -1000, + 2517, -1000, -1000, 49945, -1000, -1000, 1119, 2513, -357, -1000, + 2511, 2154, 2510, 2154, 49945, 688, 5349, -129, -122, 18671, + -129, -1000, -1000, 398, 441, -1000, -1000, 2172, 685, -1000, + -1000, 2495, 662, -1000, 1195, -1000, 1874, 2098, 2442, 34633, + 26977, 28253, 2493, -1000, -1000, 36547, 1454, 1454, 5355, 378, + 55131, -1000, 2956, 1155, 1864, -1000, 2178, -1000, 2177, -1000, + 3557, 1325, 139, -1000, -1000, 1750, -1000, 1155, 2648, 3526, + -1000, 3668, 49945, 2910, 49945, 2955, 1858, 14170, -1000, 845, + 3126, -1000, -1000, 4135, -1000, -1000, 2094, 14170, -1000, -1000, + 2489, 28253, 1034, 1853, 1851, 1035, 2954, -1000, 719, 3582, + -1000, -1000, -1000, 1039, 2951, -1000, 2066, 2057, -1000, 49945, + -1000, 34633, 34633, 813, 813, 34633, 34633, 2950, 872, -1000, + -1000, 14170, -1000, -1000, 1829, -1000, -1000, -1000, 1829, 1752, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, 2374, -1000, -1000, + 1189, -1000, 3503, -1000, -1000, 2302, 49945, 2302, -1000, 35909, + -1000, 3524, 3522, -1000, 2302, 258, 252, 2949, 2947, -1000, + -341, 49945, 49945, -240, 2176, -1000, 2486, 225, -1000, -1000, + 1187, -238, -243, 115, 26977, 1850, -1000, 2700, 366, -148, + -1000, -1000, -1000, -1000, 2698, -1000, 644, -1000, -1000, -1000, + 1184, 2693, 2686, -1000, -1000, -1000, -1000, 49945, -1000, 2431, + -1000, 2485, -1000, 2483, 686, 2154, -116, -1000, -1000, 466, + -1000, -1000, -1000, 650, 2394, -1000, -1000, 439, -1000, -1000, + -1000, 2372, 2481, -1000, -1000, 109, -1000, 1843, 1635, -1000, + -1000, -1000, -1000, -1000, -1000, 842, -1000, 428, 55072, -1000, + 1357, 27615, -1000, 1170, 842, 549, 33357, 699, 305, -1000, + 2167, -1000, -1000, 3588, -1000, 698, -1000, 635, -1000, 1633, + -1000, 1632, 35271, 2160, 2880, -1000, 5417, 975, -1000, -1000, + 3758, -1000, -1000, -1000, -1000, -1000, -1000, 2480, 2464, -1000, + -1000, -1000, -1000, -1000, 2157, 2932, 1, 3446, 2451, -1000, + -1000, 2918, 1623, 1622, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, 1619, 1618, 34633, -1000, -1000, 3758, + 2156, 26977, 1829, -1000, -1000, 1592, 1582, -1000, -1000, -1000, + -1000, -1000, -320, 2913, 11606, 11606, -1000, -1000, -1000, 2912, + -1000, -1000, 3518, -240, -249, 2449, 199, 244, -1000, 2447, + -1000, -117, 3316, -153, -1000, -1000, 833, -231, 163, 143, + 131, -1000, -1000, -1000, 11606, -1000, -1000, -1000, 108, -1000, + 1837, -1000, -1000, 2154, 2445, 49945, 689, -1000, -1000, -1000, + -1000, 271, -1000, -1000, -1000, -1000, -1000, -1000, 2442, 2437, + -1000, 583, 3517, -1000, 55131, -1000, 1829, -1000, 583, 1565, + -1000, 1829, 1829, -1000, 529, -1000, 1852, -1000, 2153, -1000, + 3503, -1000, 527, -1000, 586, -1000, -1000, -1000, 1538, -1000, + -1000, -1000, 5417, 606, -1000, 836, 2905, -1000, -1000, 2684, + 11606, 2901, 1829, 2681, -107, 34633, 3007, 3002, 2909, 2566, + 1528, -1000, -1000, 26977, -1000, -1000, 33995, -1000, 2893, 1510, + 1462, 49945, 2404, -1000, -1000, 2435, -1000, 898, 207, 244, + -1000, 3516, 217, 3515, 3513, 1180, 3315, -1000, -1000, 2022, + -1000, 185, 171, 160, -1000, -1000, -1000, -1000, -1000, 2431, + 2430, 2429, -1000, 595, -1000, 371, -1000, -1000, -1000, 306, + -1000, 3511, 756, -1000, 26977, -1000, -1000, 33357, 1454, 1454, + -1000, -1000, 2148, -1000, -1000, -1000, -1000, 2147, -1000, -1000, + -1000, 1452, -1000, 49945, 1010, 8395, -1000, 2348, -1000, 49945, + -1000, 3234, -1000, 323, 1438, 306, 813, 306, 813, 306, + 813, 306, 813, 368, -1000, -1000, -1000, 1436, 11606, -1000, + -1000, 1404, -1000, -1000, -1000, 2890, 2145, 194, 186, 3508, + -1000, 2404, 3507, 2404, 2404, -1000, 193, -138, 833, -1000, + -1000, -1000, -1000, -1000, -1000, 2423, -1000, -1000, -1000, -1000, + 1829, 1829, 2414, 2413, 500, -1000, -1000, 1829, 1829, 1829, + 1829, 32719, 637, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + 606, 55131, -1000, 8395, 1397, -1000, 2302, -1000, 872, -1000, + -1000, 3014, 2960, 3563, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, 2885, 2581, -1000, 49945, 3442, 26339, + 187, -1000, -1000, -1000, 2410, -1000, 2404, -1000, -1000, 1821, + -150, -1000, -278, 2137, 2136, -1000, -1000, 49945, 2130, 2127, + 2125, 2401, -1000, 49945, 597, -1000, 55131, 1394, -1000, 8395, + -1000, -1000, 3581, -1000, 3579, 1000, 1000, 306, 306, 306, + 306, 11606, -1000, -1000, -1000, 49945, -1000, 1390, -1000, -1000, + -1000, 1667, -1000, -1000, -1000, -1000, 2400, -157, -1000, -1000, + 2382, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 1249, 2648, + -1000, -1000, -1000, -1000, -1000, 2168, 741, -1000, 2458, 1178, + -1000, 1816, -1000, 32081, 49945, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, 49945, 7754, -1000, 1657, -1000, -1000, + 2302, 49945, -1000, } var yyPgo = [...]int{ - 0, 184, 3544, 249, 182, 4190, 106, 265, 290, 272, - 254, 248, 4189, 4188, 4187, 3327, 3325, 4185, 4184, 4182, - 4181, 4180, 4179, 4177, 4176, 4175, 4174, 4172, 4171, 4166, - 4165, 4164, 4163, 4162, 4161, 4156, 4155, 4148, 4141, 4140, - 4139, 4138, 4135, 4134, 4133, 4132, 4131, 242, 4126, 4123, - 4122, 4121, 4119, 4117, 4116, 4114, 4112, 4108, 4105, 4101, - 4100, 4099, 4096, 4095, 4094, 4093, 4091, 4089, 4088, 4086, - 4085, 4083, 4082, 4081, 4079, 4078, 4074, 4073, 4072, 4071, - 4070, 4069, 4068, 4066, 4065, 253, 4063, 3321, 4062, 4061, - 4059, 4057, 4056, 4053, 4052, 4051, 4050, 4044, 4042, 337, - 4041, 4036, 4035, 4029, 4027, 4026, 4025, 4024, 4023, 4020, - 4019, 4017, 4016, 332, 4003, 4000, 3998, 3997, 215, 3996, - 263, 3995, 180, 146, 3994, 3993, 3990, 3989, 3985, 3983, - 3982, 3981, 3979, 3977, 3973, 3971, 3970, 3969, 239, 213, - 74, 3968, 47, 3967, 3965, 221, 3964, 159, 3963, 150, - 3962, 3961, 3960, 3959, 3958, 3957, 3956, 3952, 3951, 3946, - 3945, 3943, 3941, 3940, 3938, 3937, 3936, 3935, 3934, 3932, - 3931, 3929, 3928, 3927, 48, 3926, 268, 3925, 78, 3923, - 186, 3922, 75, 3921, 105, 142, 261, 581, 266, 3920, - 192, 3919, 3918, 252, 179, 3917, 3915, 287, 3914, 163, - 232, 161, 116, 114, 3910, 140, 3909, 273, 38, 29, - 250, 148, 3908, 3907, 57, 162, 97, 3906, 218, 115, - 112, 3905, 3904, 141, 3902, 245, 187, 3901, 109, 3900, - 3899, 3898, 3897, 3896, 205, 202, 3895, 3894, 128, 3892, - 3891, 68, 131, 3890, 80, 125, 171, 120, 3889, 2675, - 126, 85, 3888, 113, 101, 3887, 144, 3885, 3883, 3882, - 3881, 195, 3880, 3879, 134, 59, 3878, 3869, 3868, 70, - 3866, 82, 3864, 41, 3863, 56, 3861, 3860, 3859, 3858, - 3856, 3855, 3852, 3851, 3849, 3848, 3847, 3845, 54, 3844, - 3843, 3842, 3841, 7, 14, 17, 3840, 27, 3839, 172, - 3838, 3835, 167, 3834, 193, 3832, 3831, 96, 92, 3830, - 93, 173, 3828, 9, 28, 77, 3827, 3826, 3825, 64, - 3824, 3823, 3819, 276, 3818, 3806, 3805, 164, 3804, 3802, - 3800, 471, 3799, 3798, 3797, 3796, 3794, 3792, 119, 3791, - 1, 219, 42, 3790, 130, 137, 3789, 40, 32, 3787, - 49, 117, 206, 132, 99, 3786, 3785, 3784, 278, 201, - 61, 62, 0, 98, 224, 156, 3783, 3782, 3779, 267, - 3778, 235, 240, 233, 176, 274, 259, 3777, 3776, 58, - 3775, 166, 30, 53, 138, 91, 21, 209, 3774, 1400, - 10, 189, 3772, 208, 3771, 8, 18, 124, 152, 3770, - 3756, 36, 269, 3755, 3754, 3753, 133, 3752, 3750, 175, - 83, 3748, 3747, 3745, 3744, 39, 3743, 190, 16, 3742, - 102, 3740, 251, 3738, 243, 154, 188, 185, 160, 226, - 230, 84, 81, 194, 1905, 155, 104, 15, 3737, 229, - 3736, 174, 135, 3735, 88, 3733, 246, 262, 211, 3732, - 191, 11, 51, 37, 31, 44, 12, 341, 207, 3731, - 3730, 24, 52, 3728, 50, 3727, 20, 3726, 3723, 45, - 3715, 60, 5, 3712, 3711, 19, 22, 3710, 34, 236, - 178, 118, 94, 67, 3709, 3708, 149, 158, 3707, 169, - 157, 151, 3706, 79, 3705, 3704, 3702, 3700, 3067, 256, - 3699, 3698, 3697, 3694, 3692, 3689, 3678, 3676, 217, 214, - 108, 43, 3675, 3670, 3669, 3667, 95, 147, 3664, 3662, - 3661, 3659, 33, 143, 3658, 13, 3656, 25, 23, 35, - 3655, 107, 3654, 3, 196, 3653, 3651, 4, 3649, 3648, - 2, 3647, 3646, 121, 3645, 100, 26, 168, 110, 3643, - 3641, 89, 216, 145, 3640, 3638, 103, 247, 203, 3637, - 514, 241, 257, 3636, 212, 3635, 3633, 3632, 3625, 3623, - 260, 3622, 231, 200, 69, 86, 3621, 222, 122, 3604, - 3603, 87, 165, 136, 129, 55, 90, 3602, 123, 210, - 3600, 198, 3599, 258, 3597, 3596, 111, 3594, 3591, 3587, - 3585, 204, 3584, 3583, 197, 238, 3575, 3572, 275, 3571, - 3570, 3565, 3563, 3562, 3559, 3558, 3555, 3554, 3547, 237, - 255, 3541, + 0, 185, 3600, 251, 182, 4257, 87, 247, 272, 253, + 243, 242, 4256, 4255, 4254, 3393, 3392, 4252, 4251, 4250, + 4249, 4246, 4245, 4244, 4243, 4241, 4240, 4239, 4238, 4237, + 4236, 4235, 4234, 4229, 4228, 4227, 4226, 4225, 4224, 4223, + 4222, 4219, 4216, 4215, 4214, 4213, 4212, 239, 4211, 4210, + 4209, 4208, 4207, 4205, 4203, 4202, 4201, 4200, 4199, 4198, + 4197, 4196, 4194, 4193, 4191, 4190, 4189, 4188, 4185, 4184, + 4175, 4173, 4172, 4171, 4170, 4169, 4168, 4166, 4165, 4164, + 4163, 4162, 4161, 4156, 4155, 210, 4154, 3378, 4153, 4151, + 4148, 4147, 4145, 4144, 4143, 4142, 4141, 4136, 4135, 311, + 4134, 4128, 4115, 4114, 4113, 4110, 4106, 4103, 4102, 4101, + 4100, 4099, 4098, 289, 4097, 4096, 4094, 4093, 230, 4092, + 262, 4088, 175, 149, 4085, 4082, 4081, 4080, 4079, 4078, + 4077, 4076, 4075, 4074, 4073, 4072, 4069, 4068, 236, 213, + 75, 4066, 50, 4065, 4063, 214, 4062, 147, 4061, 145, + 4060, 4056, 4054, 4053, 4052, 4050, 4049, 4048, 4047, 4046, + 4045, 4043, 4041, 4029, 4024, 4022, 4021, 4016, 4015, 4010, + 4009, 4008, 4007, 4006, 54, 4005, 256, 4004, 78, 4001, + 180, 4000, 70, 3999, 45, 132, 264, 2547, 245, 3998, + 189, 3997, 3996, 240, 178, 3995, 3981, 274, 3979, 233, + 226, 163, 108, 125, 3978, 144, 3977, 266, 47, 40, + 246, 156, 3976, 3975, 58, 161, 124, 3971, 208, 98, + 110, 3970, 3969, 148, 3968, 238, 186, 3965, 109, 3963, + 3962, 3960, 3959, 3957, 198, 194, 3955, 3953, 138, 3951, + 3950, 67, 142, 3949, 80, 128, 169, 126, 3948, 1675, + 122, 91, 3946, 136, 100, 3945, 119, 3944, 3941, 3940, + 3938, 191, 3936, 3935, 134, 57, 3934, 3933, 3932, 69, + 3931, 79, 3928, 44, 3927, 59, 3923, 3922, 3918, 3917, + 3916, 3915, 3913, 3912, 3897, 3896, 3892, 3891, 56, 3890, + 3889, 3887, 3874, 7, 14, 17, 3871, 27, 3870, 173, + 3868, 3867, 166, 3864, 197, 3862, 3861, 99, 92, 3860, + 93, 162, 3850, 10, 28, 77, 3849, 3848, 3846, 327, + 3845, 3843, 3842, 273, 3841, 3840, 3839, 168, 3838, 3835, + 3834, 658, 3832, 3831, 3830, 3829, 3827, 3826, 436, 3824, + 1, 212, 41, 3823, 129, 150, 3822, 39, 31, 3806, + 49, 113, 201, 131, 101, 3804, 3803, 3802, 140, 196, + 111, 29, 0, 104, 218, 158, 3801, 3800, 3797, 261, + 3796, 219, 260, 254, 281, 258, 250, 3795, 3794, 61, + 3793, 159, 30, 53, 133, 96, 21, 249, 3791, 452, + 9, 188, 3790, 205, 3789, 8, 18, 123, 154, 3788, + 3787, 37, 267, 3784, 3782, 3781, 130, 3777, 3775, 184, + 60, 3774, 3773, 3772, 3771, 36, 3770, 179, 16, 3769, + 102, 3768, 255, 3767, 215, 160, 181, 177, 165, 220, + 221, 83, 82, 3765, 1844, 157, 103, 15, 3762, 224, + 3761, 171, 116, 3760, 105, 3759, 241, 259, 207, 3758, + 187, 11, 43, 38, 32, 48, 13, 270, 203, 3756, + 3754, 24, 52, 3752, 55, 3750, 20, 3749, 3748, 51, + 3747, 74, 5, 3746, 3743, 19, 22, 3742, 34, 204, + 174, 120, 95, 64, 3740, 3737, 141, 216, 3736, 143, + 164, 155, 3735, 81, 3734, 3733, 3731, 3729, 3050, 248, + 3727, 3726, 3725, 3724, 3723, 3720, 3719, 3715, 211, 3714, + 135, 42, 3713, 3712, 3710, 3709, 88, 152, 3708, 3707, + 3706, 3702, 33, 146, 3701, 12, 3699, 26, 23, 35, + 3697, 106, 3696, 3, 192, 3695, 3694, 4, 3692, 3691, + 2, 3690, 3689, 137, 3688, 97, 25, 172, 112, 3685, + 3683, 89, 209, 151, 3682, 3681, 94, 237, 200, 3680, + 90, 232, 252, 3678, 206, 3677, 3676, 3674, 3672, 3671, + 1248, 3670, 3669, 235, 68, 85, 3668, 229, 121, 3666, + 3664, 86, 167, 118, 115, 62, 84, 3662, 114, 202, + 3661, 195, 3660, 257, 3658, 3656, 107, 3655, 3654, 3651, + 3648, 193, 3647, 3646, 190, 231, 3644, 3637, 265, 3636, + 3635, 3634, 3633, 3631, 3619, 3616, 3612, 3611, 3603, 222, + 499, 3602, } -//line mysql_sql.y:13009 +//line mysql_sql.y:12975 type yySymType struct { union interface{} id int @@ -9009,123 +8950,123 @@ var yyR1 = [...]int{ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 26, 27, 29, 429, 429, 426, 28, 20, 19, 19, 23, 22, 18, 18, 21, 24, 25, - 25, 9, 9, 9, 9, 15, 15, 15, 16, 194, - 194, 250, 250, 574, 574, 570, 570, 571, 571, 571, - 572, 572, 573, 573, 120, 120, 509, 509, 509, 509, - 509, 509, 8, 8, 8, 219, 219, 508, 508, 508, - 508, 508, 508, 433, 433, 433, 552, 552, 552, 553, - 218, 218, 211, 211, 510, 510, 398, 554, 554, 518, - 518, 517, 517, 516, 516, 216, 216, 217, 217, 197, - 197, 139, 139, 523, 523, 523, 523, 531, 531, 493, - 493, 288, 288, 342, 342, 343, 343, 184, 184, 185, - 185, 185, 185, 185, 185, 608, 608, 609, 610, 611, - 611, 612, 612, 612, 613, 613, 613, 613, 613, 560, - 560, 562, 562, 561, 215, 215, 209, 209, 210, 210, - 210, 208, 208, 207, 206, 206, 205, 203, 203, 203, - 204, 204, 204, 223, 223, 187, 187, 187, 186, 186, - 186, 186, 186, 323, 323, 323, 323, 323, 323, 323, - 323, 323, 323, 323, 323, 188, 191, 191, 192, 192, - 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, - 320, 320, 321, 321, 321, 321, 321, 137, 137, 502, - 502, 319, 319, 189, 189, 190, 190, 190, 190, 318, - 318, 317, 202, 202, 201, 200, 200, 200, 195, 195, - 195, 195, 195, 196, 329, 329, 328, 328, 327, 327, - 327, 327, 330, 123, 136, 136, 138, 222, 222, 213, - 212, 326, 325, 325, 325, 325, 221, 221, 220, 220, - 214, 214, 199, 199, 199, 199, 324, 198, 322, 598, - 598, 597, 597, 596, 594, 594, 594, 595, 595, 595, - 595, 544, 544, 544, 544, 544, 360, 360, 360, 365, - 365, 363, 363, 363, 363, 363, 369, 7, 7, 7, - 7, 7, 7, 7, 7, 7, 33, 33, 33, 33, - 33, 33, 33, 33, 33, 33, 33, 33, 33, 39, - 233, 234, 40, 235, 235, 236, 236, 237, 237, 238, - 239, 240, 240, 240, 240, 38, 225, 225, 226, 226, - 227, 227, 228, 229, 229, 229, 232, 230, 231, 231, - 616, 616, 615, 37, 37, 30, 175, 175, 176, 176, - 176, 178, 178, 284, 284, 284, 177, 177, 179, 179, - 179, 575, 577, 577, 579, 578, 578, 578, 581, 581, - 581, 581, 581, 582, 582, 582, 582, 583, 583, 31, - 157, 157, 182, 182, 162, 586, 586, 586, 585, 585, - 587, 587, 588, 588, 346, 346, 347, 347, 173, 174, - 174, 164, 159, 181, 181, 181, 181, 181, 183, 183, - 252, 252, 158, 163, 166, 168, 576, 584, 584, 584, - 430, 430, 427, 428, 428, 425, 424, 424, 424, 590, - 590, 589, 589, 589, 361, 361, 32, 420, 420, 422, - 423, 423, 423, 414, 414, 414, 414, 36, 418, 418, - 419, 419, 419, 419, 419, 419, 419, 419, 419, 419, - 419, 415, 415, 417, 417, 413, 413, 413, 413, 413, - 413, 413, 413, 35, 180, 180, 412, 412, 409, 409, - 407, 407, 408, 408, 406, 406, 406, 410, 410, 43, - 78, 44, 45, 46, 42, 411, 411, 34, 34, 34, - 34, 34, 34, 34, 34, 34, 34, 141, 140, 140, - 140, 140, 140, 143, 143, 345, 345, 344, 344, 142, - 285, 285, 41, 263, 263, 485, 485, 480, 480, 480, - 480, 480, 500, 500, 500, 481, 481, 481, 482, 482, - 482, 484, 484, 484, 483, 483, 483, 483, 483, 499, - 499, 501, 501, 501, 452, 452, 453, 453, 453, 456, - 456, 472, 472, 473, 473, 471, 471, 478, 478, 477, - 477, 476, 476, 475, 475, 474, 474, 474, 474, 467, - 467, 466, 466, 454, 454, 454, 454, 454, 455, 455, - 455, 465, 465, 470, 470, 316, 316, 315, 315, 271, - 271, 272, 272, 314, 314, 269, 269, 270, 270, 270, + 25, 9, 9, 9, 9, 15, 15, 16, 194, 194, + 250, 250, 574, 574, 570, 570, 571, 571, 571, 572, + 572, 573, 573, 120, 509, 509, 509, 509, 509, 509, + 8, 8, 219, 219, 508, 508, 508, 508, 508, 508, + 433, 433, 433, 552, 552, 552, 553, 218, 218, 211, + 211, 510, 510, 398, 554, 554, 518, 518, 517, 517, + 516, 516, 216, 216, 217, 217, 197, 197, 139, 139, + 523, 523, 523, 523, 531, 531, 493, 493, 288, 288, + 342, 342, 343, 343, 184, 184, 185, 185, 185, 185, + 185, 185, 608, 608, 609, 610, 611, 611, 612, 612, + 612, 613, 613, 613, 613, 613, 560, 560, 562, 562, + 561, 215, 215, 209, 209, 210, 210, 210, 208, 208, + 207, 206, 206, 205, 203, 203, 203, 204, 204, 204, + 223, 223, 187, 187, 187, 186, 186, 186, 186, 186, + 323, 323, 323, 323, 323, 323, 323, 323, 323, 323, + 323, 323, 188, 191, 191, 192, 192, 193, 193, 193, + 193, 193, 193, 193, 193, 193, 193, 320, 320, 321, + 321, 321, 321, 321, 137, 137, 502, 502, 319, 319, + 189, 189, 190, 190, 190, 190, 318, 318, 317, 202, + 202, 201, 200, 200, 200, 195, 195, 195, 195, 195, + 196, 329, 329, 328, 328, 327, 327, 327, 327, 330, + 123, 136, 136, 138, 222, 222, 213, 212, 326, 325, + 325, 325, 325, 221, 221, 220, 220, 214, 214, 199, + 199, 199, 199, 324, 198, 322, 598, 598, 597, 597, + 596, 594, 594, 594, 595, 595, 595, 595, 544, 544, + 544, 544, 544, 360, 360, 360, 365, 365, 363, 363, + 363, 363, 363, 369, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 33, 33, 33, 33, 33, 33, 33, + 33, 33, 33, 33, 33, 33, 39, 233, 234, 40, + 235, 235, 236, 236, 237, 237, 238, 239, 240, 240, + 240, 240, 38, 225, 225, 226, 226, 227, 227, 228, + 229, 229, 229, 232, 230, 231, 231, 616, 616, 615, + 37, 37, 30, 175, 175, 176, 176, 176, 178, 178, + 284, 284, 284, 177, 177, 179, 179, 179, 575, 577, + 577, 579, 578, 578, 578, 581, 581, 581, 581, 581, + 582, 582, 582, 582, 583, 583, 31, 157, 157, 182, + 182, 162, 586, 586, 586, 585, 585, 587, 587, 588, + 588, 346, 346, 347, 347, 173, 174, 174, 164, 159, + 181, 181, 181, 181, 181, 183, 183, 252, 252, 158, + 163, 166, 168, 576, 584, 584, 584, 430, 430, 427, + 428, 428, 425, 424, 424, 424, 590, 590, 589, 589, + 589, 361, 361, 32, 420, 420, 422, 423, 423, 423, + 414, 414, 414, 414, 36, 418, 418, 419, 419, 419, + 419, 419, 419, 419, 419, 419, 419, 419, 415, 415, + 417, 417, 413, 413, 413, 413, 413, 413, 413, 413, + 35, 180, 180, 412, 412, 409, 409, 407, 407, 408, + 408, 406, 406, 406, 410, 410, 43, 78, 44, 45, + 46, 42, 411, 411, 34, 34, 34, 34, 34, 34, + 34, 34, 34, 34, 141, 140, 140, 140, 140, 140, + 143, 143, 345, 345, 344, 344, 142, 285, 285, 41, + 263, 263, 485, 485, 480, 480, 480, 480, 480, 500, + 500, 500, 481, 481, 481, 482, 482, 482, 484, 484, + 484, 483, 483, 483, 483, 483, 499, 499, 501, 501, + 501, 452, 452, 453, 453, 453, 456, 456, 472, 472, + 473, 473, 471, 471, 478, 478, 477, 477, 476, 476, + 475, 475, 474, 474, 474, 474, 467, 467, 466, 466, + 454, 454, 454, 454, 454, 455, 455, 455, 465, 465, + 470, 470, 316, 316, 315, 315, 271, 271, 272, 272, + 314, 314, 269, 269, 270, 270, 270, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, - 313, 313, 313, 313, 313, 313, 550, 550, 551, 274, - 274, 286, 286, 286, 286, 286, 286, 273, 273, 275, - 275, 251, 251, 249, 249, 241, 241, 241, 241, 241, - 241, 242, 242, 243, 243, 244, 244, 244, 248, 248, - 247, 247, 247, 247, 245, 245, 246, 246, 246, 246, - 246, 246, 438, 438, 547, 547, 548, 548, 543, 543, - 543, 546, 546, 546, 546, 546, 546, 546, 546, 549, - 549, 549, 545, 545, 253, 339, 339, 339, 362, 362, - 362, 362, 364, 338, 338, 338, 268, 268, 267, 267, - 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, + 313, 313, 313, 550, 550, 551, 274, 274, 286, 286, + 286, 286, 286, 286, 273, 273, 275, 275, 251, 251, + 249, 249, 241, 241, 241, 241, 241, 241, 242, 242, + 243, 243, 244, 244, 244, 248, 248, 247, 247, 247, + 247, 245, 245, 246, 246, 246, 246, 246, 246, 438, + 438, 547, 547, 548, 548, 543, 543, 543, 546, 546, + 546, 546, 546, 546, 546, 546, 549, 549, 549, 545, + 545, 253, 339, 339, 339, 362, 362, 362, 362, 364, + 338, 338, 338, 268, 268, 267, 267, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, - 265, 265, 437, 437, 378, 378, 379, 379, 297, 296, - 296, 296, 296, 296, 294, 295, 293, 293, 293, 293, - 293, 290, 290, 289, 289, 289, 291, 291, 291, 291, - 291, 416, 416, 287, 287, 277, 277, 277, 276, 276, - 276, 479, 385, 385, 385, 385, 385, 385, 385, 385, - 385, 385, 385, 385, 385, 387, 387, 387, 387, 387, + 265, 265, 265, 265, 265, 265, 265, 265, 265, 437, + 437, 378, 378, 379, 379, 297, 296, 296, 296, 296, + 296, 294, 295, 293, 293, 293, 293, 293, 290, 290, + 289, 289, 289, 291, 291, 291, 291, 291, 416, 416, + 287, 287, 277, 277, 277, 276, 276, 276, 479, 385, + 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, + 385, 385, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, - 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, - 387, 387, 292, 336, 336, 336, 337, 337, 337, 337, - 337, 337, 337, 337, 388, 388, 394, 394, 559, 559, - 558, 254, 254, 254, 255, 255, 255, 255, 255, 255, - 255, 255, 255, 264, 264, 264, 461, 461, 461, 461, - 462, 462, 462, 462, 463, 463, 463, 459, 459, 460, - 460, 399, 400, 400, 506, 506, 507, 507, 457, 457, - 458, 335, 335, 335, 335, 335, 335, 335, 335, 335, + 387, 387, 387, 387, 387, 387, 387, 387, 387, 292, + 336, 336, 336, 337, 337, 337, 337, 337, 337, 337, + 337, 388, 388, 394, 394, 559, 559, 558, 254, 254, + 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 264, 264, 264, 461, 461, 461, 461, 462, 462, 462, + 462, 463, 463, 463, 459, 459, 460, 460, 399, 400, + 400, 506, 506, 507, 507, 457, 457, 458, 335, 335, + 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 514, 514, 514, 332, 332, 332, + 335, 514, 514, 514, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 569, 569, 569, 555, 555, 555, 556, - 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, - 556, 557, 557, 557, 557, 557, 557, 557, 557, 557, - 557, 557, 557, 557, 557, 557, 557, 557, 334, 334, - 334, 333, 333, 333, 333, 333, 333, 333, 333, 333, - 333, 333, 333, 333, 333, 333, 333, 333, 333, 401, - 401, 402, 402, 511, 511, 511, 511, 511, 511, 512, - 512, 513, 513, 513, 513, 505, 505, 505, 505, 505, + 569, 569, 569, 555, 555, 555, 556, 556, 556, 556, + 556, 556, 556, 556, 556, 556, 556, 556, 557, 557, + 557, 557, 557, 557, 557, 557, 557, 557, 557, 557, + 557, 557, 557, 557, 557, 334, 334, 334, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 401, 401, 402, 402, + 511, 511, 511, 511, 511, 511, 512, 512, 513, 513, + 513, 513, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, - 505, 505, 505, 505, 505, 386, 331, 331, 331, 403, - 395, 395, 396, 396, 397, 397, 389, 389, 389, 389, - 389, 389, 390, 390, 392, 392, 392, 392, 392, 392, - 392, 392, 392, 392, 392, 384, 384, 384, 384, 384, - 384, 384, 384, 384, 384, 384, 391, 391, 393, 393, - 405, 405, 405, 404, 404, 404, 404, 404, 404, 404, - 266, 266, 266, 266, 383, 383, 383, 382, 382, 382, - 382, 382, 382, 382, 382, 382, 382, 382, 382, 256, - 256, 256, 256, 260, 260, 262, 262, 262, 262, 262, - 262, 262, 262, 262, 262, 262, 262, 262, 262, 261, - 261, 261, 261, 261, 259, 259, 259, 259, 259, 257, + 505, 505, 386, 331, 331, 331, 403, 395, 395, 396, + 396, 397, 397, 389, 389, 389, 389, 389, 389, 390, + 390, 392, 392, 392, 392, 392, 392, 392, 392, 392, + 392, 392, 384, 384, 384, 384, 384, 384, 384, 384, + 384, 384, 384, 391, 391, 393, 393, 405, 405, 405, + 404, 404, 404, 404, 404, 404, 404, 266, 266, 266, + 266, 383, 383, 383, 382, 382, 382, 382, 382, 382, + 382, 382, 382, 382, 382, 382, 256, 256, 256, 256, + 260, 260, 262, 262, 262, 262, 262, 262, 262, 262, + 262, 262, 262, 262, 262, 262, 261, 261, 261, 261, + 261, 259, 259, 259, 259, 259, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, - 257, 257, 257, 257, 257, 257, 257, 257, 121, 122, - 122, 258, 341, 341, 486, 486, 489, 489, 487, 487, - 488, 490, 490, 490, 491, 491, 491, 492, 492, 492, - 496, 496, 350, 350, 350, 358, 358, 357, 357, 357, + 257, 257, 257, 257, 257, 121, 122, 122, 258, 341, + 341, 486, 486, 489, 489, 487, 487, 488, 490, 490, + 490, 491, 491, 491, 492, 492, 492, 496, 496, 350, + 350, 350, 358, 358, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, @@ -9161,14 +9102,13 @@ var yyR1 = [...]int{ 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, - 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, - 357, 356, 356, 356, 356, 356, 356, 356, 356, 356, - 356, 355, 355, 355, 355, 355, 355, 355, 355, 355, + 357, 357, 357, 357, 357, 357, 357, 357, 356, 356, + 356, 356, 356, 356, 356, 356, 356, 356, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, - 355, + 355, 355, 355, 355, 355, 355, 355, 355, } var yyR2 = [...]int{ @@ -9244,124 +9184,123 @@ var yyR2 = [...]int{ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 4, 4, 1, 3, 1, 4, 6, 6, 4, 4, 4, 4, 4, 3, 6, 3, - 5, 1, 1, 2, 2, 11, 12, 8, 9, 1, - 3, 2, 4, 0, 2, 0, 1, 1, 1, 1, - 0, 1, 0, 1, 4, 5, 2, 1, 5, 4, - 4, 2, 5, 5, 6, 1, 3, 2, 1, 5, - 4, 4, 2, 0, 5, 4, 0, 1, 3, 3, - 1, 3, 1, 3, 1, 3, 4, 0, 1, 0, - 1, 1, 3, 1, 1, 0, 4, 1, 3, 2, - 1, 0, 8, 0, 4, 7, 4, 0, 2, 0, - 2, 0, 2, 0, 4, 1, 3, 1, 1, 6, - 4, 5, 7, 4, 5, 0, 1, 3, 8, 0, - 6, 0, 4, 6, 1, 1, 1, 1, 1, 2, - 3, 1, 3, 6, 0, 3, 0, 1, 2, 4, - 4, 0, 1, 3, 1, 3, 3, 0, 1, 1, - 0, 2, 2, 0, 2, 3, 3, 3, 1, 3, - 3, 3, 3, 1, 2, 2, 1, 2, 2, 1, - 2, 2, 1, 2, 2, 7, 0, 1, 1, 2, + 5, 1, 1, 2, 2, 11, 8, 9, 1, 3, + 2, 4, 0, 2, 0, 1, 1, 1, 1, 0, + 1, 0, 1, 4, 2, 1, 5, 4, 4, 2, + 5, 5, 1, 3, 2, 1, 5, 4, 4, 2, + 0, 5, 4, 0, 1, 3, 3, 1, 3, 1, + 3, 1, 3, 4, 0, 1, 0, 1, 1, 3, + 1, 1, 0, 4, 1, 3, 2, 1, 0, 8, + 0, 4, 7, 4, 0, 2, 0, 2, 0, 2, + 0, 4, 1, 3, 1, 1, 6, 4, 5, 7, + 4, 5, 0, 1, 3, 8, 0, 6, 0, 4, + 6, 1, 1, 1, 1, 1, 2, 3, 1, 3, + 6, 0, 3, 0, 1, 2, 4, 4, 0, 1, + 3, 1, 3, 3, 0, 1, 1, 0, 2, 2, + 0, 2, 3, 3, 3, 1, 3, 3, 3, 3, + 1, 2, 2, 1, 2, 2, 1, 2, 2, 1, + 2, 2, 7, 0, 1, 1, 2, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 0, 2, 0, + 4, 7, 6, 6, 3, 5, 0, 2, 0, 2, + 1, 3, 1, 2, 3, 5, 0, 1, 2, 1, + 3, 1, 1, 1, 1, 4, 4, 4, 3, 4, + 3, 2, 2, 2, 2, 2, 3, 2, 3, 2, + 4, 1, 3, 4, 0, 2, 1, 3, 1, 1, + 2, 2, 3, 0, 1, 2, 4, 1, 3, 1, + 3, 2, 3, 1, 4, 3, 0, 1, 1, 2, + 5, 2, 2, 2, 0, 2, 3, 3, 0, 1, + 3, 1, 3, 0, 1, 2, 1, 1, 0, 1, + 2, 1, 2, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 7, 1, 1, 7, + 1, 3, 0, 1, 1, 3, 1, 3, 0, 1, + 1, 1, 14, 1, 3, 0, 1, 1, 3, 1, + 1, 2, 4, 1, 1, 1, 1, 0, 1, 2, + 9, 9, 7, 1, 2, 3, 3, 3, 0, 4, + 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, + 1, 4, 1, 1, 1, 3, 3, 4, 3, 3, + 0, 1, 1, 1, 0, 2, 7, 8, 10, 2, + 2, 8, 0, 3, 3, 0, 3, 0, 3, 0, + 5, 1, 3, 0, 3, 3, 0, 2, 9, 8, + 0, 2, 2, 3, 3, 0, 2, 0, 2, 4, + 4, 4, 4, 1, 0, 2, 2, 1, 3, 2, + 1, 3, 2, 1, 3, 2, 0, 1, 3, 4, + 3, 1, 1, 4, 1, 3, 1, 1, 1, 1, + 0, 1, 1, 1, 11, 0, 2, 3, 3, 2, + 2, 3, 1, 1, 3, 3, 3, 3, 1, 3, + 3, 4, 0, 2, 2, 2, 2, 2, 2, 2, + 6, 0, 4, 1, 1, 0, 3, 0, 1, 1, + 2, 4, 4, 4, 0, 1, 8, 2, 4, 4, + 4, 9, 0, 2, 11, 9, 11, 8, 6, 9, + 7, 10, 7, 6, 2, 2, 9, 4, 5, 3, + 0, 4, 1, 3, 0, 3, 6, 0, 2, 10, + 0, 2, 0, 2, 0, 3, 2, 4, 3, 0, + 2, 1, 0, 2, 3, 0, 2, 3, 0, 2, + 1, 0, 3, 2, 4, 3, 0, 1, 0, 1, + 1, 0, 6, 0, 3, 5, 0, 4, 0, 3, + 1, 3, 4, 5, 0, 3, 1, 3, 2, 3, + 1, 2, 0, 4, 6, 5, 0, 2, 0, 2, + 4, 5, 4, 5, 1, 5, 6, 5, 0, 3, + 0, 1, 1, 3, 3, 3, 0, 4, 1, 3, + 3, 3, 0, 1, 1, 3, 2, 3, 3, 3, + 4, 4, 3, 3, 3, 3, 4, 4, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 2, 3, 3, 3, 3, 3, 3, 3, 3, 1, + 5, 4, 5, 1, 3, 3, 2, 2, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, + 2, 4, 0, 5, 5, 5, 5, 6, 0, 1, + 1, 3, 1, 1, 1, 1, 1, 7, 9, 7, + 9, 2, 1, 7, 9, 7, 9, 8, 5, 0, + 1, 0, 1, 1, 1, 1, 3, 3, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, + 1, 3, 1, 3, 5, 1, 1, 1, 1, 1, + 1, 3, 5, 0, 1, 1, 2, 1, 2, 2, + 1, 1, 2, 2, 2, 3, 3, 2, 2, 1, + 5, 6, 4, 1, 1, 1, 5, 4, 1, 1, + 2, 0, 1, 1, 2, 5, 0, 1, 1, 2, + 2, 3, 3, 1, 1, 2, 2, 2, 0, 1, + 2, 2, 2, 0, 4, 7, 3, 3, 0, 3, + 0, 3, 1, 1, 1, 1, 1, 1, 1, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 1, 1, 1, 1, 3, 5, 2, 2, 2, + 2, 4, 1, 1, 2, 5, 6, 8, 6, 6, + 6, 1, 1, 1, 1, 1, 1, 3, 9, 1, + 4, 4, 4, 7, 9, 7, 7, 7, 9, 7, + 7, 0, 2, 0, 1, 1, 2, 4, 1, 2, + 2, 1, 2, 2, 1, 2, 2, 2, 2, 2, + 0, 1, 1, 1, 2, 2, 2, 2, 2, 2, + 2, 1, 1, 1, 2, 5, 0, 1, 3, 0, + 1, 0, 2, 0, 2, 0, 1, 6, 8, 8, + 6, 6, 5, 5, 5, 6, 6, 6, 6, 5, + 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, + 6, 1, 1, 1, 4, 4, 6, 8, 6, 4, + 5, 4, 4, 4, 3, 4, 6, 6, 7, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 0, 2, 0, 4, 7, 6, 6, 3, 5, 0, - 2, 0, 2, 1, 3, 1, 2, 3, 5, 0, - 1, 2, 1, 3, 1, 1, 1, 1, 4, 4, - 4, 3, 4, 3, 2, 2, 2, 2, 2, 3, - 2, 3, 2, 4, 1, 3, 4, 0, 2, 1, - 3, 1, 1, 2, 2, 3, 0, 1, 2, 4, - 1, 3, 1, 3, 2, 3, 1, 4, 3, 0, - 1, 1, 2, 5, 2, 2, 2, 0, 2, 3, - 3, 0, 1, 3, 1, 3, 0, 1, 2, 1, - 1, 0, 1, 2, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 7, - 1, 1, 7, 1, 3, 0, 1, 1, 3, 1, - 3, 0, 1, 1, 1, 14, 1, 3, 0, 1, - 1, 3, 1, 1, 2, 4, 1, 1, 1, 1, - 0, 1, 2, 9, 9, 7, 1, 2, 3, 3, - 3, 0, 4, 1, 1, 1, 1, 1, 0, 1, - 1, 1, 1, 1, 4, 1, 1, 1, 3, 3, - 4, 3, 3, 0, 1, 1, 1, 0, 2, 7, - 8, 10, 2, 2, 8, 0, 3, 3, 0, 3, - 0, 3, 0, 5, 1, 3, 0, 3, 3, 0, - 2, 9, 8, 0, 2, 2, 3, 3, 0, 2, - 0, 2, 4, 4, 4, 4, 1, 0, 2, 2, - 1, 3, 2, 1, 3, 2, 1, 3, 2, 0, - 1, 3, 4, 3, 1, 1, 4, 1, 3, 1, - 1, 1, 1, 0, 1, 1, 1, 11, 0, 2, - 3, 3, 2, 2, 3, 1, 1, 3, 3, 3, - 3, 1, 3, 3, 4, 0, 2, 2, 2, 2, - 2, 2, 2, 6, 0, 4, 1, 1, 0, 3, - 0, 1, 1, 2, 4, 4, 4, 0, 1, 8, - 2, 4, 4, 4, 9, 0, 2, 11, 9, 11, - 8, 6, 9, 7, 10, 7, 6, 2, 2, 9, - 4, 5, 3, 0, 4, 1, 3, 0, 3, 6, - 0, 2, 10, 0, 2, 0, 2, 0, 3, 2, - 4, 3, 0, 2, 1, 0, 2, 3, 0, 2, - 3, 0, 2, 1, 0, 3, 2, 4, 3, 0, - 1, 0, 1, 1, 0, 6, 0, 3, 5, 0, - 4, 0, 3, 1, 3, 4, 5, 0, 3, 1, - 3, 2, 3, 1, 2, 0, 4, 6, 5, 0, - 2, 0, 2, 4, 5, 4, 5, 1, 5, 6, - 5, 0, 3, 0, 1, 1, 3, 3, 3, 0, - 4, 1, 3, 3, 3, 0, 1, 1, 3, 2, - 3, 3, 3, 4, 4, 3, 3, 3, 3, 4, - 4, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 2, 3, 3, 3, 3, 3, 3, - 3, 3, 1, 5, 4, 5, 1, 3, 3, 2, - 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 3, 2, 4, 0, 5, 5, 5, 5, - 6, 0, 1, 1, 3, 1, 1, 1, 1, 1, - 7, 9, 7, 9, 2, 1, 7, 9, 7, 9, - 8, 5, 0, 1, 0, 1, 1, 1, 1, 3, - 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 0, 1, 3, 1, 3, 5, 1, 1, - 1, 1, 1, 1, 3, 5, 0, 1, 1, 2, - 1, 2, 2, 1, 1, 2, 2, 2, 3, 3, - 2, 2, 1, 5, 6, 4, 1, 1, 1, 5, - 4, 1, 1, 2, 0, 1, 1, 2, 5, 0, - 1, 1, 2, 2, 3, 3, 1, 1, 2, 2, - 2, 0, 1, 2, 2, 2, 0, 4, 7, 3, - 3, 0, 3, 0, 3, 1, 1, 1, 1, 1, - 1, 1, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 1, 1, 1, 1, 3, 5, - 2, 2, 2, 2, 4, 1, 1, 2, 5, 6, - 8, 6, 6, 6, 1, 1, 1, 1, 1, 1, - 3, 9, 1, 4, 4, 4, 7, 9, 7, 7, - 7, 9, 7, 7, 0, 2, 0, 1, 1, 2, - 4, 1, 2, 2, 1, 2, 2, 1, 2, 2, - 2, 2, 2, 0, 1, 1, 1, 2, 2, 2, - 2, 2, 2, 2, 1, 1, 1, 2, 5, 0, - 1, 3, 0, 1, 0, 2, 0, 2, 0, 1, - 6, 8, 8, 6, 6, 5, 5, 5, 6, 6, - 6, 6, 5, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 1, 1, 1, 4, 4, 6, - 8, 6, 4, 5, 4, 4, 4, 3, 4, 6, - 6, 7, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 2, 2, 8, 4, 2, + 3, 2, 4, 2, 2, 4, 6, 2, 2, 4, + 6, 4, 2, 4, 4, 4, 0, 1, 2, 3, + 1, 1, 1, 1, 1, 1, 0, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, - 8, 4, 2, 3, 2, 4, 2, 2, 4, 6, - 2, 2, 4, 6, 4, 2, 4, 4, 4, 0, - 1, 2, 3, 1, 1, 1, 1, 1, 1, 0, - 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 3, 0, 1, 1, 3, - 0, 1, 1, 3, 1, 3, 3, 3, 3, 3, - 2, 1, 1, 1, 3, 4, 3, 4, 3, 4, - 3, 4, 3, 4, 1, 3, 4, 4, 5, 4, - 5, 3, 4, 5, 6, 1, 0, 2, 1, 1, + 1, 1, 3, 0, 1, 1, 3, 0, 1, 1, + 3, 1, 3, 3, 3, 3, 3, 2, 1, 1, + 1, 3, 4, 3, 4, 3, 4, 3, 4, 3, + 4, 1, 3, 4, 4, 5, 4, 5, 3, 4, + 5, 6, 1, 0, 2, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 2, 1, 1, 1, 2, 3, - 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, - 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, - 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 2, 2, 4, 4, 1, 2, 3, - 5, 1, 1, 3, 0, 1, 0, 3, 0, 3, - 3, 0, 3, 5, 0, 3, 5, 0, 1, 1, - 0, 1, 1, 2, 2, 0, 1, 1, 1, 1, + 1, 2, 1, 1, 1, 2, 3, 1, 1, 1, + 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, + 2, 1, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 2, 2, 4, 4, 1, 2, 3, 5, 1, 1, + 3, 0, 1, 0, 3, 0, 3, 3, 0, 3, + 5, 0, 3, 5, 0, 1, 1, 0, 1, 1, + 2, 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -9403,7 +9342,7 @@ var yyR2 = [...]int{ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, + 1, 1, 1, 1, 1, 1, 1, 1, } var yyChk = [...]int{ @@ -9474,340 +9413,338 @@ var yyChk = [...]int{ 650, 647, 648, 649, 561, 232, -443, -441, -362, 548, 626, 393, 547, 550, 387, 366, 656, 659, 391, 267, 328, 329, 330, 463, 364, -235, -362, 660, -197, 251, - 646, 40, -249, -362, -197, 646, -87, -16, -15, -186, - -187, -249, 246, -371, 24, 445, -99, 446, 241, 242, - 86, 78, -362, -9, -113, -8, -120, -85, -184, 450, - -369, -362, 328, 328, -369, 246, -364, 277, 426, -362, - -498, 252, -447, -420, 278, -446, -422, -449, -423, 33, - 237, 239, 238, 560, 274, 16, 391, 248, 14, 13, - 392, 260, 26, 27, 29, 15, 393, 395, 30, 396, - 399, 400, 401, 43, 404, 405, 267, 89, 97, 92, - 285, -234, -362, -397, -389, 118, -392, -384, -385, -387, - -340, -534, -382, 86, 145, 146, 153, 119, 662, -386, - -479, 37, 121, 566, 570, 606, 513, -332, -333, -334, - -335, -336, -337, 551, -362, -535, -533, 92, 102, 104, - 108, 109, 107, 105, 157, 190, 106, 93, 158, -187, - 89, -555, 576, -356, 599, 612, 613, 614, 615, 598, - 62, -505, -513, 245, -511, 156, 195, 263, 191, 14, - 151, 438, 192, 607, 608, 609, 573, 595, 515, 577, - 587, 602, 568, 569, 571, 563, 564, 565, 567, 578, - 580, 594, -514, 590, 600, 601, 586, 610, 611, 647, - 603, 604, 605, 642, 91, 90, 593, 592, 579, 574, - 575, 581, 562, 572, 582, 583, 591, 596, 597, 375, - 111, 376, 377, 505, 367, 81, 378, 252, 445, 71, - 379, 380, 381, 382, 383, 512, 384, 72, 385, 374, - 267, 428, 386, 194, 212, 517, 516, 518, 509, 506, - 504, 507, 508, 510, 511, 584, 585, 589, -136, -138, - 617, -608, -323, -609, 6, 7, 8, 9, -610, 158, - -599, 447, 556, 92, 321, 364, 17, 505, 646, 546, - 646, 546, 168, 165, -434, 168, 117, 174, 173, 250, - 168, -434, -362, 171, 646, 170, 644, 331, 273, -411, - -175, 364, 428, 337, 98, 277, -414, -412, 544, -499, - 325, 321, 297, 247, 114, -176, 257, 256, 112, 505, - 245, 402, 316, 57, 59, -570, 646, -571, 234, 235, - 236, -562, 538, -561, -362, 646, 651, 377, 100, 101, - 644, 645, 28, 246, 388, 273, 483, 481, 482, 484, - 485, 486, 487, -65, -515, -497, 478, 477, -375, 470, - 476, 468, 480, 471, 365, 339, 560, 338, 237, 638, - 545, 539, -350, 412, 448, 502, 503, 389, 449, 489, - 491, 472, 111, 198, 195, 247, 249, 246, 644, 364, - 505, 428, 98, 337, 246, -570, 651, 165, 489, 491, - 447, 277, 426, 42, -440, 438, -439, -441, 490, 501, - 90, 91, 488, -350, 111, 469, 469, -608, -323, -185, - -187, -123, -560, 546, 646, 247, 364, 428, 277, 248, - 246, 541, 544, 249, 505, 245, 328, 388, 273, 337, - 98, 170, 644, -191, -192, -193, 230, 231, 232, 70, - 235, 233, 67, 33, 34, 35, -1, 125, 661, -389, - -389, -6, 664, -6, -389, -362, -362, 160, -256, -260, - -257, -259, -258, -262, -261, 195, 196, 156, 199, 205, - 201, 202, 203, 204, 206, 207, 208, 209, 210, 213, - 214, 211, 32, 212, 263, 191, 192, 193, 194, 215, - 177, 197, 553, 223, 178, 224, 179, 225, 180, 226, - 181, 182, 227, 183, 186, 187, 188, 189, 185, 159, - -224, 92, 33, 86, 159, 92, -216, 269, -197, -197, - -249, -241, 159, 662, -216, -197, -608, -207, -208, 11, - -249, -338, -362, 447, 128, -99, 78, -99, 446, 78, - -99, 446, 241, -563, -564, -565, -567, 241, 446, 445, - 242, -118, 159, 285, 17, -369, -369, 84, -249, -422, - 277, -447, -420, 37, 83, 160, 250, 160, 83, 86, - 389, 364, 428, 390, 505, 246, 402, 249, 277, 403, - 364, 428, 246, 249, 505, 277, 364, 246, 249, 428, - 277, 403, 364, 468, 469, 249, 28, 394, 397, 398, - 469, -519, 501, 160, 117, 114, 115, 116, -389, 135, - -404, 128, 129, 130, 131, 132, 133, 134, 142, 141, - 152, 145, 146, 147, 148, 149, 150, 151, 143, 144, - 138, 118, 136, 140, 137, 120, 155, -187, -389, -397, - 62, -387, -387, -387, -387, -362, -479, -394, -389, 86, - 86, 86, 86, 86, 159, 105, 92, -389, 86, 86, + 40, -249, -362, -197, -87, -16, -15, -186, -187, -249, + 246, -371, 24, 445, -99, 446, 241, 242, 86, 78, + -362, -9, -113, -8, -120, -85, -184, 450, -369, -362, + 328, 328, -369, 246, -364, 277, 426, -362, -498, 252, + -447, -420, 278, -446, -422, -449, -423, 33, 237, 239, + 238, 560, 274, 16, 391, 248, 14, 13, 392, 260, + 26, 27, 29, 15, 393, 395, 30, 396, 399, 400, + 401, 43, 404, 405, 267, 89, 97, 92, 285, -234, + -362, -397, -389, 118, -392, -384, -385, -387, -340, -534, + -382, 86, 145, 146, 153, 119, 662, -386, -479, 37, + 121, 566, 570, 606, 513, -332, -333, -334, -335, -336, + -337, 551, -362, -535, -533, 92, 102, 104, 108, 109, + 107, 105, 157, 190, 106, 93, 158, -187, 89, -555, + 576, -356, 599, 612, 613, 614, 615, 598, 62, -505, + -513, 245, -511, 156, 195, 263, 191, 14, 151, 438, + 192, 607, 608, 609, 573, 595, 515, 577, 587, 602, + 568, 569, 571, 563, 564, 565, 567, 578, 580, 594, + -514, 590, 600, 601, 586, 610, 611, 647, 603, 604, + 605, 642, 91, 90, 593, 592, 579, 574, 575, 581, + 562, 572, 582, 583, 591, 596, 597, 375, 111, 376, + 377, 505, 367, 81, 378, 252, 445, 71, 379, 380, + 381, 382, 383, 512, 384, 72, 385, 374, 267, 428, + 386, 194, 212, 517, 516, 518, 509, 506, 504, 507, + 508, 510, 511, 584, 585, 589, -136, -138, 617, -608, + -323, -609, 6, 7, 8, 9, -610, 158, -599, 447, + 556, 92, 321, 364, 17, 505, 646, 546, 646, 546, + 168, 165, -434, 168, 117, 174, 173, 250, 168, -434, + -362, 171, 646, 170, 644, 331, 273, -411, -175, 364, + 428, 337, 98, 277, -414, -412, 544, -499, 325, 321, + 297, 247, 114, -176, 257, 256, 112, 505, 245, 402, + 316, 57, 59, -570, -571, 234, 235, 236, -562, 538, + -561, -362, 646, 651, 377, 100, 101, 644, 645, 28, + 246, 388, 273, 483, 481, 482, 484, 485, 486, 487, + -65, -515, -497, 478, 477, -375, 470, 476, 468, 480, + 471, 365, 339, 560, 338, 237, 638, 545, 539, -350, + 412, 448, 502, 503, 389, 449, 489, 491, 472, 111, + 198, 195, 247, 249, 246, 644, 364, 505, 428, 98, + 337, 246, -570, 651, 165, 489, 491, 447, 277, 426, + 42, -440, 438, -439, -441, 490, 501, 90, 91, 488, + -350, 111, 469, 469, -608, -323, -185, -187, -123, -560, + 546, 646, 247, 364, 428, 277, 248, 246, 541, 544, + 249, 505, 245, 328, 388, 273, 337, 98, 170, 644, + -191, -192, -193, 230, 231, 232, 70, 235, 233, 67, + 33, 34, 35, -1, 125, 661, -389, -389, -6, 664, + -6, -389, -362, -362, 160, -256, -260, -257, -259, -258, + -262, -261, 195, 196, 156, 199, 205, 201, 202, 203, + 204, 206, 207, 208, 209, 210, 213, 214, 211, 32, + 212, 263, 191, 192, 193, 194, 215, 177, 197, 553, + 223, 178, 224, 179, 225, 180, 226, 181, 182, 227, + 183, 186, 187, 188, 189, 185, 159, -224, 92, 33, + 86, 159, 92, -216, 269, -197, -249, -241, 159, 662, + -216, -608, -207, -208, 11, -249, -338, -362, 447, 128, + -99, 78, -99, 446, 78, -99, 446, 241, -563, -564, + -565, -567, 241, 446, 445, 242, -118, 159, 285, 17, + -369, -369, 84, -249, -422, 277, -447, -420, 37, 83, + 160, 250, 160, 83, 86, 389, 364, 428, 390, 505, + 246, 402, 249, 277, 403, 364, 428, 246, 249, 505, + 277, 364, 246, 249, 428, 277, 403, 364, 468, 469, + 249, 28, 394, 397, 398, 469, -519, 501, 160, 117, + 114, 115, 116, -389, 135, -404, 128, 129, 130, 131, + 132, 133, 134, 142, 141, 152, 145, 146, 147, 148, + 149, 150, 151, 143, 144, 138, 118, 136, 140, 137, + 120, 155, -187, -389, -397, 62, -387, -387, -387, -387, + -362, -479, -394, -389, 86, 86, 86, 86, 86, 159, + 105, 92, -389, 86, 86, 86, 86, 86, 86, 86, + 86, 86, 86, 86, 86, -512, 86, 86, -401, -402, + 86, 86, -382, -338, 86, 92, 92, 86, 86, 86, + 92, 86, 86, 86, -402, -402, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, - -512, 86, 86, -401, -402, 86, 86, -382, -338, 86, - 92, 92, 86, 86, 86, 92, 86, 86, 86, -402, - -402, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, - 86, 86, 86, 86, 86, 86, 86, -208, 160, -207, - 86, -207, -208, -188, -187, 33, 34, 33, 34, 33, - 34, 33, 34, -611, 635, 86, 102, 657, 228, 17, - -362, 644, -362, -593, 33, 549, 549, 549, 549, 494, - 555, 172, 173, 174, -362, 171, 250, -362, -409, 252, - -409, -409, -233, -362, -235, 388, 249, 541, 249, -176, - -409, -409, -409, -409, -409, 248, -409, 24, 246, 246, - 246, 246, -409, 512, 128, 128, 60, -572, 176, -570, - 160, -562, -215, 86, -593, 652, 653, 654, -374, 136, - 140, -374, -319, 18, -319, 24, 24, 275, 275, 275, - -374, 315, -619, -620, 17, 138, -372, -620, -372, -372, - -374, -621, 248, 479, 44, 276, 275, -209, -210, 22, - -209, 473, 469, -464, 474, 475, -376, -620, -375, -374, - -374, -375, -374, -374, -374, 33, 246, 249, 505, 337, - 639, -619, -619, 32, 32, -498, -498, -249, -498, -498, - 539, -351, -362, -498, -498, -498, -303, -304, -249, -573, - 251, 654, -605, -604, 492, -607, 494, 165, -441, 165, - -441, 89, -422, 277, 277, 160, 128, 24, -442, 128, - 139, -441, -441, -442, -442, -273, 42, -361, 156, -362, - 92, -273, 42, -602, -601, -249, -208, -188, -187, 87, - 87, 87, 549, -593, -498, -498, -498, -498, -498, -499, - -498, -498, -498, -498, -498, -369, -225, -362, -235, 252, - -498, -498, -498, -498, -189, -190, 147, -389, -362, -193, - -3, -146, -145, 122, 123, 125, 629, 383, 628, 632, - 626, -441, 42, -492, 410, 409, -486, -488, 86, -487, - 86, -487, -487, -487, -487, -487, 86, 86, -489, 86, - -489, -489, -486, -490, 86, -490, -491, 86, -491, -490, - -362, -468, 555, -395, -397, -362, 40, -508, 62, -184, - 86, 32, 86, -216, -216, -362, 192, 170, 643, 36, - -509, 62, -184, 86, 32, -216, -208, -139, 40, -210, - 21, 159, 102, 92, -118, -99, 78, -118, -99, -99, - 87, 160, -566, 108, 109, -568, 210, 201, -362, -116, - 92, -7, -11, -8, -9, -10, -47, -85, -184, 547, - 550, -536, -534, 86, 33, 437, 83, 17, -448, 246, - 505, 388, 273, 249, 364, -446, -429, -426, -424, -361, - -422, -425, -424, -451, -338, 469, -140, 452, 451, 327, - -389, -389, -389, -389, -389, 107, 118, 355, 108, 109, - -384, -405, 33, 323, 324, -385, -385, -385, -385, -385, - -385, -385, -385, -385, -385, -385, -385, -393, -403, -479, - 86, 138, 136, 140, 137, 120, -387, -387, -385, -385, - -275, -361, 156, 87, 160, -389, -559, -558, 122, -389, - -389, -389, -389, -415, -417, -338, 86, -362, -556, -557, - 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, - 529, 379, 374, 380, 378, 367, 386, 381, 382, 194, - 536, 537, 530, 531, 532, 533, 534, 535, -395, -395, - -389, -556, -395, -331, 34, 33, -397, -397, -397, 87, - -389, -569, 353, 352, 354, -211, -362, -395, 87, 87, - 87, 102, -397, -397, -395, -385, -395, -395, -395, -395, - -557, -331, -331, -331, -331, 147, -397, -397, -331, -331, - -331, -331, 147, -331, -331, -331, -331, -331, -331, -331, - -331, -331, -331, -331, 87, 87, 87, 147, -397, -209, - -138, -517, -516, -389, 42, -139, -210, -612, 636, 86, - -338, -600, 92, 92, 662, 170, 644, 17, 505, -362, - 17, 246, -362, 102, -362, 102, 495, 496, 169, 173, - 172, -362, 171, -362, -362, 118, -362, -362, 36, 86, - -225, -409, -409, -409, -577, -362, 93, -430, -427, -424, - -362, -362, -420, -362, -351, -249, -409, -409, -409, -409, - -249, -284, 54, 55, 56, -424, -177, 57, 58, -573, - -572, -561, 36, -214, -362, -319, -387, -387, -389, 364, - 505, 246, -424, 277, -619, -374, -374, -352, -351, -376, - -371, -376, -376, -319, -372, -374, -374, -389, -376, -372, - -319, -362, 469, -319, -319, -464, -374, -373, -362, -373, - -409, -351, -352, -352, -249, -249, -298, -305, -299, -306, - 269, 243, 372, 373, 240, 238, 11, 239, -313, 316, - -410, 513, -279, -280, 78, 43, -282, 267, 414, 407, - 279, 283, 96, 284, 447, 285, 248, 287, 288, 289, - 304, 306, 259, 290, 291, 292, 438, 293, 164, 305, - 294, 295, 296, 390, -274, 6, 340, 555, 42, 52, - 53, 461, 460, 558, 280, -362, -577, -575, 32, -362, - 32, -430, -424, -362, -362, 160, 250, -200, -202, -199, - -195, -196, -201, -322, -324, -198, 86, -249, -187, -362, - -441, 160, 493, 495, 496, -605, -442, -605, -442, 250, - 33, 437, -445, 437, 33, -420, -439, 489, 491, -435, - 92, 438, -425, -444, 83, 156, -516, -442, -442, -444, - -444, 155, 160, -603, 494, 495, 234, -209, 102, -251, - -249, -577, -429, -420, -362, -498, -251, -251, -251, -364, - -364, 86, 159, 37, -362, -362, -362, -362, -318, 160, - -317, 17, -363, -362, 36, 92, 159, -147, -145, 124, - -389, -6, 628, -389, -6, -6, -389, -6, -389, -496, - 411, 102, 102, -341, 92, -341, 102, 102, 102, 561, - 87, 92, -433, 83, -510, -398, -554, 617, -218, 87, - -211, -552, -553, -211, -217, -362, -508, -508, -241, 128, - 128, 128, 25, -510, -218, 87, -552, -509, -209, 618, - -139, -206, -205, -389, -362, 24, -118, -99, -564, 159, - 160, -214, -448, -428, -425, -450, 147, -362, -436, 160, - 555, 665, 90, 250, -590, -589, 429, 87, 160, -520, - 251, 512, 92, 662, 445, 228, 229, 107, 355, 108, - 109, -479, -397, -393, -387, -387, -385, -385, -391, 264, - -391, 117, -389, 663, -388, -558, 124, -389, 36, 160, - 36, 160, 84, 160, 87, -486, -389, 159, 87, 87, - 17, 17, 87, -389, 87, 87, 87, 87, 17, 17, - -389, 87, 159, 87, 87, 87, 87, 84, 87, 160, - 87, 87, 87, 87, 160, -397, -397, -389, -397, 87, - 87, 87, -389, -389, -389, -397, 87, -389, -389, -389, - -389, -389, -389, -389, -389, -389, -389, -214, -458, 464, - -458, -458, 160, 160, 160, 87, -139, 86, 102, 160, - 658, -345, -344, 92, -362, -362, 170, 644, -362, 92, - 644, -362, 92, 170, 174, 174, 173, -362, 92, 37, - 24, 24, 314, -234, -236, -237, -238, -239, -240, 138, - 161, 162, 86, -249, -249, -249, -579, 415, -591, 160, - 42, -589, 505, -173, 327, -413, 84, -180, 17, 555, - -249, -249, -249, -249, -263, 36, 17, -194, -250, -362, - -573, 86, 87, 160, -362, -362, -362, -421, 84, -362, - -352, -319, -319, -376, -319, -319, 160, 23, -374, -376, - -376, -241, -372, -241, 159, -241, -351, -485, 36, -215, - 160, 21, 269, -248, -359, -245, -247, 254, -379, -246, - 257, -548, 255, 253, 112, 258, 312, 113, 248, -359, - -359, 254, -283, 250, 36, -359, -301, 248, 358, 312, - 255, 21, 269, -300, 248, 113, -362, 254, 258, 255, - 253, -358, 128, -350, 155, 250, 44, 390, -358, 559, - 269, -358, -358, -358, -358, -358, -358, -358, 286, 286, - -358, -358, -358, -358, -358, -358, -358, -358, -358, -358, - -358, 165, -358, -358, -358, -358, -358, -358, 86, 332, - 281, 282, 314, -580, 415, 32, 370, 370, 371, -591, - 366, 43, 32, -181, 364, -304, -302, -373, 32, -325, - -326, -327, -328, -330, -329, 69, 73, 75, 79, 70, - 71, 72, 76, 81, 74, 32, 160, -360, -365, 36, - -362, 92, -360, -187, -202, -200, -360, 86, -442, -604, - -606, 497, 494, 500, -444, -444, 102, 250, 86, 128, - -444, -444, 42, -361, -601, 501, 495, -139, 160, 83, - -251, -226, -227, -228, -229, -256, -338, 196, 199, 201, - 202, 203, 204, 206, 207, 208, 209, 210, 213, 214, - 211, 212, 263, 191, 192, 193, 194, 215, 177, 197, - 553, 178, 179, 180, 181, 182, 183, 186, 187, 188, - 189, 185, -362, -235, -319, -190, -202, -362, 92, -362, - 147, 125, -6, 123, -151, -150, -149, 126, 626, 632, - 125, 125, 125, 87, 87, 87, 160, 87, 87, 87, - 160, 87, 160, 102, -523, 474, 41, 160, 86, 87, - 160, 62, 160, 128, 87, 160, -433, -389, -362, 92, - -389, 192, 87, 62, -139, 92, 160, -203, 38, 39, - 159, 447, -362, -534, 87, -450, 160, 250, 159, 159, - -426, 393, -361, -428, 21, 555, -338, 40, -345, 128, - 662, -362, 87, -391, -391, 117, -387, -384, 87, 125, - -389, 123, -254, -256, 409, 410, -389, -254, -255, -261, - 156, 195, 263, 194, 193, 191, 409, 410, -273, -417, - 552, -203, 87, -362, -389, -389, 87, -389, -389, 17, - -362, -273, -385, -389, -208, -208, 87, 87, -457, -458, - -457, -457, 87, 87, 87, 87, -457, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 86, 102, - 104, 102, 104, -516, -613, 64, 634, 63, 437, 107, - 317, 160, 102, 92, 663, 160, 128, 92, -362, -362, - 17, 246, -362, 17, 174, 92, -592, 321, 364, 505, - 246, 364, 321, 505, 246, -469, 102, 401, 87, 160, - -338, -226, -215, 86, -215, -582, 476, 417, 427, -358, - -381, -380, 366, 43, -503, 438, 423, 424, -427, 277, - -351, -588, 99, 128, 83, 344, 348, 350, 349, 345, - 346, 347, -407, -408, -406, -410, -575, 86, 86, -184, - 36, 136, -180, 86, 86, 36, -480, 334, -256, -249, - -194, -362, 17, 160, -574, 159, 17, -1, -362, -362, - -420, -374, -319, -389, -389, -319, -374, -374, -376, -362, - -241, -480, -256, 36, -299, 243, 239, -454, 314, 315, - -455, -470, 317, -472, 86, -253, -338, -246, -547, -548, - -409, -362, 113, -547, 113, 86, -253, -338, -338, -302, - -338, -362, -362, -362, -362, -309, -308, -338, -311, 33, - -312, -362, -362, -362, -362, 113, -362, 113, -278, 42, - 49, 50, 51, -358, -358, 198, -281, 42, 437, 439, - 440, -311, 102, 102, 102, 102, 92, 92, 92, -358, - -358, 102, 92, -365, 92, -549, 173, 46, 47, 102, - 102, 102, 102, 42, 92, -286, 42, 297, 301, 298, - 299, 300, 92, 102, 42, 102, 42, 102, 42, -362, - 86, -550, -551, 92, 333, -469, -582, -358, 370, -441, - 128, 128, -381, -584, 96, 418, -584, -587, 327, -183, - 505, 33, -219, 243, 239, -575, -432, -431, -338, -199, - -199, -199, -199, -199, -199, 69, 80, 69, -212, 86, - 69, 74, 69, 74, 69, -327, 69, 80, -432, -201, - -215, -365, 87, -598, -597, -596, -594, 77, 251, 78, - -395, -444, 494, 498, 499, -428, -377, 92, -435, -223, - 24, -249, -249, -501, 307, 308, 87, 160, -256, -321, - 19, 159, 121, -6, -147, -149, -389, -6, -389, 628, - 383, 629, 92, 102, 102, -531, 458, 453, 455, 113, - -398, -518, -517, 62, -184, -211, -510, -553, -516, -362, - 663, 663, 663, 663, 92, 62, -184, -510, -223, -523, - -205, -204, 45, -362, 102, 17, -425, -420, 147, 147, - -362, 394, -436, 92, 416, 92, 246, 663, 92, -345, - -384, -389, 87, -264, 182, 181, -264, 36, 87, 87, - -487, -487, -486, -489, -486, -264, -264, 87, 86, -203, - 87, 24, 87, 87, 87, -389, 87, 87, 160, -506, - 514, -507, 588, -457, -457, -457, -457, -457, -457, -457, + 86, 86, -208, 160, -207, 86, -207, -208, -188, -187, + 33, 34, 33, 34, 33, 34, 33, 34, -611, 635, + 86, 102, 657, 228, 17, -362, 644, -362, -593, 33, + 549, 549, 549, 549, 494, 555, 172, 173, 174, -362, + 171, 250, -362, -409, 252, -409, -409, -233, -362, -235, + 388, 249, 541, 249, -176, -409, -409, -409, -409, -409, + 248, -409, 24, 246, 246, 246, 246, -409, 512, 128, + 128, 60, -572, 176, 160, -562, -215, 86, -593, 652, + 653, 654, -374, 136, 140, -374, -319, 18, -319, 24, + 24, 275, 275, 275, -374, 315, -619, -620, 17, 138, + -372, -620, -372, -372, -374, -621, 248, 479, 44, 276, + 275, -209, -210, 22, -209, 473, 469, -464, 474, 475, + -376, -620, -375, -374, -374, -375, -374, -374, -374, 33, + 246, 249, 505, 337, 639, -619, -619, 32, 32, -498, + -498, -249, -498, -498, 539, -351, -362, -498, -498, -498, + -303, -304, -249, -573, 251, 654, -605, -604, 492, -607, + 494, 165, -441, 165, -441, 89, -422, 277, 277, 160, + 128, 24, -442, 128, 139, -441, -441, -442, -442, -273, + 42, -361, 156, -362, 92, -273, 42, -602, -601, -249, + -208, -188, -187, 87, 87, 87, 549, -593, -498, -498, + -498, -498, -498, -499, -498, -498, -498, -498, -498, -369, + -225, -362, -235, 252, -498, -498, -498, -498, -189, -190, + 147, -389, -362, -193, -3, -146, -145, 122, 123, 125, + 629, 383, 628, 632, 626, -441, 42, -492, 410, 409, + -486, -488, 86, -487, 86, -487, -487, -487, -487, -487, + 86, 86, -489, 86, -489, -489, -486, -490, 86, -490, + -491, 86, -491, -490, -362, -468, 555, -395, -397, -362, + 40, -508, 62, -184, 86, 32, 86, -216, -362, 192, + 170, 643, 36, -509, 62, -184, 86, 32, -208, -139, + 40, -210, 21, 159, 102, 92, -118, -99, 78, -118, + -99, -99, 87, 160, -566, 108, 109, -568, 210, 201, + -362, -116, 92, -7, -11, -8, -9, -10, -47, -85, + -184, 547, 550, -536, -534, 86, 33, 437, 83, 17, + -448, 246, 505, 388, 273, 249, 364, -446, -429, -426, + -424, -361, -422, -425, -424, -451, -338, 469, -140, 452, + 451, 327, -389, -389, -389, -389, -389, 107, 118, 355, + 108, 109, -384, -405, 33, 323, 324, -385, -385, -385, + -385, -385, -385, -385, -385, -385, -385, -385, -385, -393, + -403, -479, 86, 138, 136, 140, 137, 120, -387, -387, + -385, -385, -275, -361, 156, 87, 160, -389, -559, -558, + 122, -389, -389, -389, -389, -415, -417, -338, 86, -362, + -556, -557, 519, 520, 521, 522, 523, 524, 525, 526, + 527, 528, 529, 379, 374, 380, 378, 367, 386, 381, + 382, 194, 536, 537, 530, 531, 532, 533, 534, 535, + -395, -395, -389, -556, -395, -331, 34, 33, -397, -397, + -397, 87, -389, -569, 353, 352, 354, -211, -362, -395, + 87, 87, 87, 102, -397, -397, -395, -385, -395, -395, + -395, -395, -557, -331, -331, -331, -331, 147, -397, -397, + -331, -331, -331, -331, 147, -331, -331, -331, -331, -331, + -331, -331, -331, -331, -331, -331, 87, 87, 87, 147, + -397, -209, -138, -517, -516, -389, 42, -139, -210, -612, + 636, 86, -338, -600, 92, 92, 662, 170, 644, 17, + 505, -362, 17, 246, -362, 102, -362, 102, 495, 496, + 169, 173, 172, -362, 171, -362, -362, 118, -362, -362, + 36, 86, -225, -409, -409, -409, -577, -362, 93, -430, + -427, -424, -362, -362, -420, -362, -351, -249, -409, -409, + -409, -409, -249, -284, 54, 55, 56, -424, -177, 57, + 58, -573, -561, 36, -214, -362, -319, -387, -387, -389, + 364, 505, 246, -424, 277, -619, -374, -374, -352, -351, + -376, -371, -376, -376, -319, -372, -374, -374, -389, -376, + -372, -319, -362, 469, -319, -319, -464, -374, -373, -362, + -373, -409, -351, -352, -352, -249, -249, -298, -305, -299, + -306, 269, 243, 372, 373, 240, 238, 11, 239, -313, + 316, -410, 513, -279, -280, 78, 43, -282, 267, 414, + 407, 279, 283, 96, 284, 447, 285, 248, 287, 288, + 289, 304, 306, 259, 290, 291, 292, 438, 293, 164, + 305, 294, 295, 296, 390, -274, 6, 340, 555, 42, + 52, 53, 461, 460, 558, 280, -362, -577, -575, 32, + -362, 32, -430, -424, -362, -362, 160, 250, -200, -202, + -199, -195, -196, -201, -322, -324, -198, 86, -249, -187, + -362, -441, 160, 493, 495, 496, -605, -442, -605, -442, + 250, 33, 437, -445, 437, 33, -420, -439, 489, 491, + -435, 92, 438, -425, -444, 83, 156, -516, -442, -442, + -444, -444, 155, 160, -603, 494, 495, 234, -209, 102, + -251, -249, -577, -429, -420, -362, -498, -251, -251, -251, + -364, -364, 86, 159, 37, -362, -362, -362, -362, -318, + 160, -317, 17, -363, -362, 36, 92, 159, -147, -145, + 124, -389, -6, 628, -389, -6, -6, -389, -6, -389, + -496, 411, 102, 102, -341, 92, -341, 102, 102, 102, + 561, 87, 92, -433, 83, -510, -398, -554, 617, -218, + 87, -211, -552, -553, -211, -217, -362, -508, -241, 128, + 128, 128, 25, -510, -218, 87, -552, -209, 618, -139, + -206, -205, -389, -362, 24, -118, -99, -564, 159, 160, + -214, -448, -428, -425, -450, 147, -362, -436, 160, 555, + 665, 90, 250, -590, -589, 429, 87, 160, -520, 251, + 512, 92, 662, 445, 228, 229, 107, 355, 108, 109, + -479, -397, -393, -387, -387, -385, -385, -391, 264, -391, + 117, -389, 663, -388, -558, 124, -389, 36, 160, 36, + 160, 84, 160, 87, -486, -389, 159, 87, 87, 17, + 17, 87, -389, 87, 87, 87, 87, 17, 17, -389, + 87, 159, 87, 87, 87, 87, 84, 87, 160, 87, + 87, 87, 87, 160, -397, -397, -389, -397, 87, 87, + 87, -389, -389, -389, -397, 87, -389, -389, -389, -389, + -389, -389, -389, -389, -389, -389, -214, -458, 464, -458, + -458, 160, 160, 160, 87, -139, 86, 102, 160, 658, + -345, -344, 92, -362, -362, 170, 644, -362, 92, 644, + -362, 92, 170, 174, 174, 173, -362, 92, 37, 24, + 24, 314, -234, -236, -237, -238, -239, -240, 138, 161, + 162, 86, -249, -249, -249, -579, 415, -591, 160, 42, + -589, 505, -173, 327, -413, 84, -180, 17, 555, -249, + -249, -249, -249, -263, 36, 17, -194, -250, -362, 86, + 87, 160, -362, -362, -362, -421, 84, -362, -352, -319, + -319, -376, -319, -319, 160, 23, -374, -376, -376, -241, + -372, -241, 159, -241, -351, -485, 36, -215, 160, 21, + 269, -248, -359, -245, -247, 254, -379, -246, 257, -548, + 255, 253, 112, 258, 312, 113, 248, -359, -359, 254, + -283, 250, 36, -359, -301, 248, 358, 312, 255, 21, + 269, -300, 248, 113, -362, 254, 258, 255, 253, -358, + 128, -350, 155, 250, 44, 390, -358, 559, 269, -358, + -358, -358, -358, -358, -358, -358, 286, 286, -358, -358, + -358, -358, -358, -358, -358, -358, -358, -358, -358, 165, + -358, -358, -358, -358, -358, -358, 86, 332, 281, 282, + 314, -580, 415, 32, 370, 370, 371, -591, 366, 43, + 32, -181, 364, -304, -302, -373, 32, -325, -326, -327, + -328, -330, -329, 69, 73, 75, 79, 70, 71, 72, + 76, 81, 74, 32, 160, -360, -365, 36, -362, 92, + -360, -187, -202, -200, -360, 86, -442, -604, -606, 497, + 494, 500, -444, -444, 102, 250, 86, 128, -444, -444, + 42, -361, -601, 501, 495, -139, 160, 83, -251, -226, + -227, -228, -229, -256, -338, 196, 199, 201, 202, 203, + 204, 206, 207, 208, 209, 210, 213, 214, 211, 212, + 263, 191, 192, 193, 194, 215, 177, 197, 553, 178, + 179, 180, 181, 182, 183, 186, 187, 188, 189, 185, + -362, -235, -319, -190, -202, -362, 92, -362, 147, 125, + -6, 123, -151, -150, -149, 126, 626, 632, 125, 125, + 125, 87, 87, 87, 160, 87, 87, 87, 160, 87, + 160, 102, -523, 474, 41, 160, 86, 87, 160, 62, + 160, 128, 87, 160, -389, -362, 92, -389, 192, 87, + 62, -139, 92, 160, -203, 38, 39, 159, 447, -362, + -534, 87, -450, 160, 250, 159, 159, -426, 393, -361, + -428, 21, 555, -338, 40, -345, 128, 662, -362, 87, + -391, -391, 117, -387, -384, 87, 125, -389, 123, -254, + -256, 409, 410, -389, -254, -255, -261, 156, 195, 263, + 194, 193, 191, 409, 410, -273, -417, 552, -203, 87, + -362, -389, -389, 87, -389, -389, 17, -362, -273, -385, + -389, -208, -208, 87, 87, -457, -458, -457, -457, 87, + 87, 87, 87, -457, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 86, 102, 104, 102, 104, + -516, -613, 64, 634, 63, 437, 107, 317, 160, 102, + 92, 663, 160, 128, 92, -362, -362, 17, 246, -362, + 17, 174, 92, -592, 321, 364, 505, 246, 364, 321, + 505, 246, -469, 102, 401, 87, 160, -338, -226, -215, + 86, -215, -582, 476, 417, 427, -358, -381, -380, 366, + 43, -503, 438, 423, 424, -427, 277, -351, -588, 99, + 128, 83, 344, 348, 350, 349, 345, 346, 347, -407, + -408, -406, -410, -575, 86, 86, -184, 36, 136, -180, + 86, 86, 36, -480, 334, -256, -249, -194, -362, 17, + 160, -574, 159, -1, -362, -362, -420, -374, -319, -389, + -389, -319, -374, -374, -376, -362, -241, -480, -256, 36, + -299, 243, 239, -454, 314, 315, -455, -470, 317, -472, + 86, -253, -338, -246, -547, -548, -409, -362, 113, -547, + 113, 86, -253, -338, -338, -302, -338, -362, -362, -362, + -362, -309, -308, -338, -311, 33, -312, -362, -362, -362, + -362, 113, -362, 113, -278, 42, 49, 50, 51, -358, + -358, 198, -281, 42, 437, 439, 440, -311, 102, 102, + 102, 102, 92, 92, 92, -358, -358, 102, 92, -365, + 92, -549, 173, 46, 47, 102, 102, 102, 102, 42, + 92, -286, 42, 297, 301, 298, 299, 300, 92, 102, + 42, 102, 42, 102, 42, -362, 86, -550, -551, 92, + 333, -469, -582, -358, 370, -441, 128, 128, -381, -584, + 96, 418, -584, -587, 327, -183, 505, 33, -219, 243, + 239, -575, -432, -431, -338, -199, -199, -199, -199, -199, + -199, 69, 80, 69, -212, 86, 69, 74, 69, 74, + 69, -327, 69, 80, -432, -201, -215, -365, 87, -598, + -597, -596, -594, 77, 251, 78, -395, -444, 494, 498, + 499, -428, -377, 92, -435, -223, 24, -249, -249, -501, + 307, 308, 87, 160, -256, -321, 19, 159, 121, -6, + -147, -149, -389, -6, -389, 628, 383, 629, 92, 102, + 102, -531, 458, 453, 455, 113, -398, -518, -517, 62, + -184, -211, -510, -553, -516, -362, 663, 663, 663, 663, + 92, 62, -184, -510, -223, -523, -205, -204, 45, -362, + 102, 17, -425, -420, 147, 147, -362, 394, -436, 92, + 416, 92, 246, 663, 92, -345, -384, -389, 87, -264, + 182, 181, -264, 36, 87, 87, -487, -487, -486, -489, + -486, -264, -264, 87, 86, -203, 87, 24, 87, 87, + 87, -389, 87, 87, 160, -506, 514, -507, 588, -457, -457, -457, -457, -457, -457, -457, -457, -457, -457, -457, - -400, -399, 269, 459, 641, 641, 459, 641, 641, 87, - 160, -556, 160, -353, 322, -353, -344, 92, 250, 92, - 170, -362, 92, 644, 92, -362, -362, -362, 314, -362, - 314, -362, -362, 92, 92, 92, -238, -256, 87, 36, - -242, -243, -244, -253, -245, -247, 36, -583, 96, -578, - 92, -362, 93, -584, 158, 368, 42, 419, 420, 435, - 363, 102, 102, 425, -576, -362, -182, 246, 364, -586, - 53, 128, 92, -249, -406, -350, 155, 288, 337, -316, - -315, -362, 92, -242, -184, -249, -242, -242, -184, -481, - 336, 21, 102, 146, -216, 84, 159, -202, -250, -362, - 147, -249, 87, -319, -241, -319, -319, -374, -481, -184, - -466, 318, 86, -464, 86, -464, 113, 345, -473, -471, - 269, -307, 46, 48, -256, -545, -362, -543, -545, -362, - -543, -543, -409, -389, -307, -253, 250, 32, 239, -310, - 342, 343, 348, 350, -437, 313, 118, -437, 160, -203, - 160, -362, -273, -273, 32, 92, 92, -251, 87, 160, - 128, 102, 92, -583, -578, 128, -442, 92, 92, -584, - 92, 92, -588, 128, -252, 246, -351, 160, -219, -219, - -319, 160, 128, -221, -220, 83, 84, -222, 83, -220, - -220, 69, -213, 92, 69, 69, -319, -596, -595, 24, - -548, -548, -548, 87, 87, 15, -228, 42, -320, 20, - 21, 147, 125, 123, 125, 125, -362, 87, 87, -493, - 619, -527, -529, 453, 21, 21, 15, 251, 87, -510, - 663, -510, -531, 46, 47, -420, -436, 438, -249, 160, - 663, -254, -292, 92, -389, 87, -389, 87, 92, 87, - 92, -208, 21, 87, 160, 87, 87, 87, 160, 87, - 87, -389, 87, -556, -354, 192, 92, -354, 364, -363, - -362, 17, -362, 92, -362, -469, 314, -469, 314, 246, - -362, 244, -184, 87, 160, -184, 92, -581, 429, 102, - 42, 102, 158, 421, -504, -174, 96, -251, 33, -219, - -585, 96, 128, 662, 86, -358, -358, -358, -362, 87, - 160, -358, -358, 87, 87, 87, -271, 555, -482, 268, - 102, 146, 102, 146, 102, -360, -202, -362, -319, -574, - 159, -216, -319, -482, -456, 319, 102, -385, 86, -385, - 86, -465, 316, 86, 87, 160, -362, -338, -268, -267, - -265, 107, 118, 42, 407, -266, 96, 155, 302, 305, - 304, 280, 303, -297, -378, 83, 413, 342, 343, -410, - 619, 543, 253, 112, 113, 395, -379, 86, 86, 84, - 322, 86, 86, -545, 87, -307, -338, 42, -310, 42, - 356, 313, -308, -362, 155, -273, 87, -551, 92, -556, - -581, 92, -444, -586, 92, -174, -251, -575, -208, -431, - -516, -389, 86, -389, 87, 86, 69, 11, 19, -382, - -389, -397, 647, 649, 650, 252, -6, 629, 383, -288, - 620, 92, 21, 92, -525, 92, -432, -493, -142, -285, - -350, 285, 87, -291, 138, 555, 87, 87, -457, -457, - -460, -459, -463, 459, 314, 467, -397, 92, 92, 87, - 87, 92, -362, 170, 92, 662, 92, -469, 92, -469, - -362, 314, -230, -256, -178, 555, -271, -244, -178, 21, - 555, 367, 42, 102, 42, 422, 92, -182, 128, 108, - 109, -346, -347, 92, -415, -273, -275, 92, -315, -382, - -382, -269, -184, 36, -270, -313, -410, 555, -141, -140, - -269, 555, 86, -483, 164, 102, 146, 102, 102, -319, - -319, -360, -483, -472, 21, 87, -451, 87, -451, 86, - 128, -385, -471, -474, 62, -265, 107, -385, 92, -275, - -276, 42, 301, 297, 128, 128, -277, 42, 281, 282, - -287, 86, 312, 15, 198, 86, 113, 113, -249, -415, - -415, -546, 344, 345, 346, 351, 348, 349, 347, 350, - -546, -415, -415, 86, -438, -437, -385, -358, -358, 155, - -585, -209, -214, -544, -362, 253, 21, 21, -502, 555, - 648, 86, 86, -362, -362, -342, 621, 102, 92, 455, - -288, -494, 622, -521, -464, -273, 128, 87, 76, 553, - 556, 87, -462, 120, 421, 425, -383, -386, 102, 104, - 190, 158, 87, 87, -362, -349, -348, 92, 92, 92, - 314, -469, 554, -179, 61, 501, 92, 93, 416, 92, - 93, 367, -174, 92, 663, 160, 128, 87, -452, 269, - -184, 160, -313, -350, -142, -452, -272, -314, -362, 92, - -500, 173, 335, 555, 102, 146, 102, -208, -319, -484, - 173, 335, -455, 87, 87, 87, -451, 102, 87, -478, - -475, 86, -313, 271, 138, 92, 92, 102, 86, -511, - 32, 92, -416, 86, 87, 87, 87, 87, -415, 102, - -273, -358, 87, 87, 160, 650, 86, -397, -397, 86, - 21, -342, -495, 623, 92, -530, 458, -524, -522, 453, - 454, 455, 456, 92, 554, 66, 557, -461, -462, 425, - -383, -386, 617, 465, 465, 465, 663, 160, 128, -469, - 92, -232, -362, 312, 438, -347, 92, -418, -453, 321, - 21, -313, -358, -453, 87, 160, -358, -358, 335, 102, - 146, 102, -209, -208, 335, -467, 320, 87, -478, -313, - -477, -476, 319, 272, 86, 87, -389, -401, -358, 87, - -290, -289, 551, -415, -418, 84, -418, 84, -418, 84, - -418, 84, 87, -273, -362, 253, -137, 86, 87, 87, - -343, -362, -525, 92, -532, 251, -528, -529, 457, -522, - 21, 455, 21, 21, -143, 160, 66, 117, 466, 466, - 466, -348, 92, 92, -231, 36, 460, 394, -419, 259, - 356, 357, 96, 555, 342, 343, 361, 360, 359, 362, - 21, -454, -273, -314, -382, -382, 102, -209, 102, 87, + -457, -457, -457, -457, -457, -457, -400, -399, 269, 459, + 641, 641, 459, 641, 641, 87, 160, -556, 160, -353, + 322, -353, -344, 92, 250, 92, 170, -362, 92, 644, + 92, -362, -362, -362, 314, -362, 314, -362, -362, 92, + 92, 92, -238, -256, 87, 36, -242, -243, -244, -253, + -245, -247, 36, -583, 96, -578, 92, -362, 93, -584, + 158, 368, 42, 419, 420, 435, 363, 102, 102, 425, + -576, -362, -182, 246, 364, -586, 53, 128, 92, -249, + -406, -350, 155, 288, 337, -316, -315, -362, 92, -242, + -184, -249, -242, -242, -184, -481, 336, 21, 102, 146, + -216, 84, 159, -202, -250, -362, 147, 87, -319, -241, + -319, -319, -374, -481, -184, -466, 318, 86, -464, 86, + -464, 113, 345, -473, -471, 269, -307, 46, 48, -256, + -545, -362, -543, -545, -362, -543, -543, -409, -389, -307, + -253, 250, 32, 239, -310, 342, 343, 348, 350, -437, + 313, 118, -437, 160, -203, 160, -362, -273, -273, 32, + 92, 92, -251, 87, 160, 128, 102, 92, -583, -578, + 128, -442, 92, 92, -584, 92, 92, -588, 128, -252, + 246, -351, 160, -219, -219, -319, 160, 128, -221, -220, + 83, 84, -222, 83, -220, -220, 69, -213, 92, 69, + 69, -319, -596, -595, 24, -548, -548, -548, 87, 87, + 15, -228, 42, -320, 20, 21, 147, 125, 123, 125, + 125, -362, 87, 87, -493, 619, -527, -529, 453, 21, + 21, 15, 251, 87, -510, 663, -510, -531, 46, 47, + -420, -436, 438, -249, 160, 663, -254, -292, 92, -389, + 87, -389, 87, 92, 87, 92, -208, 21, 87, 160, + 87, 87, 87, 160, 87, 87, -389, 87, -556, -354, + 192, 92, -354, 364, -363, -362, 17, -362, 92, -362, + -469, 314, -469, 314, 246, -362, 244, -184, 87, 160, + -184, 92, -581, 429, 102, 42, 102, 158, 421, -504, + -174, 96, -251, 33, -219, -585, 96, 128, 662, 86, + -358, -358, -358, -362, 87, 160, -358, -358, 87, 87, + 87, -271, 555, -482, 268, 102, 146, 102, 146, 102, + -360, -202, -362, -319, -574, 159, -319, -482, -456, 319, + 102, -385, 86, -385, 86, -465, 316, 86, 87, 160, + -362, -338, -268, -267, -265, 107, 118, 42, 407, -266, + 96, 155, 302, 305, 304, 280, 303, -297, -378, 83, + 413, 342, 343, -410, 619, 543, 253, 112, 113, 395, + -379, 86, 86, 84, 322, 86, 86, -545, 87, -307, + -338, 42, -310, 42, 356, 313, -308, -362, 155, -273, + 87, -551, 92, -556, -581, 92, -444, -586, 92, -174, + -251, -575, -208, -431, -516, -389, 86, -389, 87, 86, + 69, 11, 19, -382, -389, -397, 647, 649, 650, 252, + -6, 629, 383, -288, 620, 92, 21, 92, -525, 92, + -432, -493, -142, -285, -350, 285, 87, -291, 138, 555, + 87, 87, -457, -457, -460, -459, -463, 459, 314, 467, + -397, 92, 92, 87, 87, 92, -362, 170, 92, 662, + 92, -469, 92, -469, -362, 314, -230, -256, -178, 555, + -271, -244, -178, 21, 555, 367, 42, 102, 42, 422, + 92, -182, 128, 108, 109, -346, -347, 92, -415, -273, + -275, 92, -315, -382, -382, -269, -184, 36, -270, -313, + -410, 555, -141, -140, -269, 555, 86, -483, 164, 102, + 146, 102, 102, -319, -319, -483, -472, 21, 87, -451, + 87, -451, 86, 128, -385, -471, -474, 62, -265, 107, + -385, 92, -275, -276, 42, 301, 297, 128, 128, -277, + 42, 281, 282, -287, 86, 312, 15, 198, 86, 113, + 113, -249, -415, -415, -546, 344, 345, 346, 351, 348, + 349, 347, 350, -546, -415, -415, 86, -438, -437, -385, + -358, -358, 155, -585, -209, -214, -544, -362, 253, 21, + 21, -502, 555, 648, 86, 86, -362, -362, -342, 621, + 102, 92, 455, -288, -494, 622, -521, -464, -273, 128, + 87, 76, 553, 556, 87, -462, 120, 421, 425, -383, + -386, 102, 104, 190, 158, 87, 87, -362, -349, -348, + 92, 92, 92, 314, -469, 554, -179, 61, 501, 92, + 93, 416, 92, 93, 367, -174, 92, 663, 160, 128, + 87, -452, 269, -184, 160, -313, -350, -142, -452, -272, + -314, -362, 92, -500, 173, 335, 555, 102, 146, 102, + -208, -484, 173, 335, -455, 87, 87, 87, -451, 102, + 87, -478, -475, 86, -313, 271, 138, 92, 92, 102, + 86, -511, 32, 92, -416, 86, 87, 87, 87, 87, + -415, 102, -273, -358, 87, 87, 160, 650, 86, -397, + -397, 86, 21, -342, -495, 623, 92, -530, 458, -524, + -522, 453, 454, 455, 456, 92, 554, 66, 557, -461, + -462, 425, -383, -386, 617, 465, 465, 465, 663, 160, + 128, -469, 92, -232, -362, 312, 438, -347, 92, -418, + -453, 321, 21, -313, -358, -453, 87, 160, -358, -358, + 335, 102, 146, 102, -209, 335, -467, 320, 87, -478, + -313, -477, -476, 319, 272, 86, 87, -389, -401, -358, + 87, -290, -289, 551, -415, -418, 84, -418, 84, -418, + 84, -418, 84, 87, -273, -362, 253, -137, 86, 87, + 87, -343, -362, -525, 92, -532, 251, -528, -529, 457, + -522, 21, 455, 21, 21, -143, 160, 66, 117, 466, + 466, 466, -348, 92, 92, -231, 36, 460, 394, -419, + 259, 356, 357, 96, 555, 342, 343, 361, 360, 359, + 362, 21, -454, -273, -314, -382, -382, 102, 102, 87, 160, -362, 268, 86, -396, -390, -389, 268, 87, -362, -296, -294, -295, 83, 472, 310, 311, 87, -546, -546, -546, -546, -297, 87, 160, -395, 87, 160, -539, 86, @@ -9830,8 +9767,8 @@ var yyDef = [...]int{ 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, 0, 316, 317, 318, 319, - 320, 321, 987, 988, 989, 990, 991, 992, 993, 994, - 995, 0, 0, 0, 0, 0, 721, 722, 0, 685, + 320, 321, 984, 985, 986, 987, 988, 989, 990, 991, + 992, 0, 0, 0, 0, 0, 721, 722, 0, 685, 0, 0, 0, 0, 0, 0, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, @@ -9839,407 +9776,405 @@ var yyDef = [...]int{ 591, 592, 593, 594, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 0, 350, 346, 258, 259, 260, 261, 262, 263, 264, 357, 358, 534, 0, 0, 0, - 0, 807, -2, 102, 0, 0, 0, 0, 339, 0, - 330, 330, 0, 0, 996, 997, 998, 999, 1000, 1001, - 1002, 1003, 1004, 1005, 1006, 1007, 1008, -2, 735, 0, + 0, 804, -2, 102, 0, 0, 0, 0, 339, 0, + 330, 330, 0, 0, 993, 994, 995, 996, 997, 998, + 999, 1000, 1001, 1002, 1003, 1004, 1005, -2, 734, 0, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 414, 415, 416, - 410, 411, 413, 412, -2, 0, 0, 735, 0, 0, - 0, 815, 0, 0, 0, 858, 876, 23, 0, 7, + 410, 411, 413, 412, -2, 0, 0, 734, 0, 0, + 0, 812, 0, 0, 0, 855, 873, 23, 0, 7, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, - 0, 0, 19, 0, 19, 0, 0, 0, 1418, 1419, - 1420, 1421, 2224, 2194, -2, 1956, 1930, 2118, 2119, 2013, - 2026, 2261, 2262, 2263, 2264, 2265, 2266, 2267, 2268, 2269, - 2270, 2271, 2272, 2273, 2274, 2275, 2276, 2277, 2278, 2279, - 2280, 2281, 2282, 2283, 2284, 2285, 2286, 2287, 2288, 2289, - 2290, 2291, 2292, 2293, 2294, 2295, 2296, 2297, 2298, 2299, - 2300, 2301, 2302, 2303, 2304, 2305, 2306, 2307, 2308, 2309, - 2310, 1887, 1888, 1889, 1890, 1891, 1892, 1893, 1894, 1895, - 1896, 1897, 1898, 1899, 1900, 1901, 1902, 1903, 1904, 1905, - 1906, 1907, 1908, 1909, 1910, 1911, 1912, 1913, 1914, 1915, - 1916, 1917, 1918, 1919, 1920, 1921, 1922, 1923, 1924, 1925, - 1926, 1927, 1928, 1929, 1931, 1932, 1933, 1934, 1935, 1936, - 1937, 1938, 1939, 1940, 1941, 1942, 1943, 1944, 1945, 1946, - 1947, 1948, 1949, 1950, 1951, 1952, 1953, 1954, 1955, 1957, - 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, - 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, - 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, - 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, - 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, - 2008, 2009, 2010, 2011, 2012, 2014, 2015, 2016, 2017, 2018, - 2019, 2020, 2021, 2022, 2023, 2024, 2025, 2028, 2029, 2030, - 2031, 2032, 2033, 2034, 2035, 2036, 2037, 2038, 2039, 2040, - 2041, 2042, 2043, 2044, 2045, 2046, 2047, 2048, 2049, 2050, - 2051, 2052, 2053, 2054, 2055, 2056, 2057, 2058, 2059, 2060, - 2061, 2062, 2063, 2064, 2065, 2066, 2067, 2068, 2069, 2070, - 2071, 2072, 2073, 2074, 2075, 2076, 2077, 2078, 2079, 2080, - 2081, 2082, 2083, 2084, 2085, 2086, 2087, 2088, 2089, 2090, - 2091, 2092, 2093, 2094, 2095, 2096, 2097, 2098, 2099, 2100, - 2101, 2102, 2103, 2104, 2105, 2106, 2107, 2108, 2109, 2110, - 2111, 2112, 2113, 2114, 2115, 2116, 2117, 2120, 2121, 2122, - 2123, 2124, 2125, 2126, 2127, 2128, 2129, 2130, 2131, 2132, - 2133, 2134, 2135, 2136, 2137, 2138, 2139, 2140, 2141, 2142, - 2143, 2144, 2145, 2146, 2147, 2148, 2149, 2150, -2, 2152, - 2153, 2154, 2155, 2156, 2157, 2158, 2159, 2160, 2161, 2162, - 2163, 2164, 2165, 2166, 2167, 2168, 2169, 2170, 2171, 2172, - 2173, 2174, 2175, 2176, 2177, 2178, 2179, 2180, 2181, 2182, - 2183, 2184, 2185, 2186, 2187, 2188, 2189, 2190, 2191, 2192, - 2193, 2195, 2196, 2197, 2198, 2199, 2200, 2201, 2202, 2203, - 2204, 2205, 2206, 2207, 2208, 2209, -2, -2, -2, 2213, - 2214, 2215, 2216, 2217, 2218, 2219, 2220, 2221, 2222, 2223, - 2225, 2226, 2227, 2228, 2229, 2230, 2231, 2232, 2233, 2234, - 2235, 2236, 2237, 2238, 2239, 2240, 2241, 2242, 2243, 2244, - 2245, 2246, 2247, 2248, 2249, 2250, 0, 314, 312, 1900, - 1930, 1956, 2013, 2026, 2027, 2066, 2118, 2119, 2151, 2194, - 2210, 2211, 2212, 2224, 0, 0, 1013, 0, 785, 0, - 0, 0, 790, 1365, 785, 0, 351, 723, 724, 815, - 841, 683, 0, 388, 0, 1946, 392, 2201, 0, 0, - 0, 0, 680, 382, 383, 384, 385, 386, 387, 0, - 0, 986, 0, 0, 378, 0, 345, 2016, 2223, 1422, - 0, 0, 0, 0, 0, 201, 1137, 203, 1139, 207, - 215, 0, 0, 0, 220, 221, 224, 225, 226, 227, - 228, 0, 232, 0, 234, 237, 0, 239, 240, 0, - 243, 244, 245, 0, 255, 256, 257, 1140, 1141, 1142, - -2, 130, 1011, 1858, 1744, 0, 1751, 1764, 1775, 1504, - 1505, 1506, 1507, 0, 0, 0, 0, 0, 0, 1515, - 1516, 0, 1546, 2265, 2306, 2307, 0, 1524, 1525, 1526, - 1527, 1528, 1529, 0, 141, 153, 154, 1797, 1798, 1799, - 1800, 1801, 1802, 1803, 0, 1805, 1806, 1807, 1715, 1491, - 1418, 0, 2274, 0, 2296, 2301, 2302, 2303, 2304, 2295, - 0, 0, 1699, 0, 1689, 0, 0, -2, -2, 0, - 0, 2091, -2, 2308, 2309, 2310, 2271, 2292, 2300, 2275, - 2276, 2299, 2267, 2268, 2269, 2262, 2263, 2264, 2266, 2278, - 2280, 2291, 0, 2287, 2297, 2298, 2199, 0, 0, 2246, - 0, 0, 0, 2241, 155, 156, -2, -2, -2, -2, + 0, 0, 19, 0, 19, 0, 0, 0, 1415, 1416, + 1417, 1418, 2221, 2191, -2, 1953, 1927, 2115, 2116, 2010, + 2023, 2258, 2259, 2260, 2261, 2262, 2263, 2264, 2265, 2266, + 2267, 2268, 2269, 2270, 2271, 2272, 2273, 2274, 2275, 2276, + 2277, 2278, 2279, 2280, 2281, 2282, 2283, 2284, 2285, 2286, + 2287, 2288, 2289, 2290, 2291, 2292, 2293, 2294, 2295, 2296, + 2297, 2298, 2299, 2300, 2301, 2302, 2303, 2304, 2305, 2306, + 2307, 1884, 1885, 1886, 1887, 1888, 1889, 1890, 1891, 1892, + 1893, 1894, 1895, 1896, 1897, 1898, 1899, 1900, 1901, 1902, + 1903, 1904, 1905, 1906, 1907, 1908, 1909, 1910, 1911, 1912, + 1913, 1914, 1915, 1916, 1917, 1918, 1919, 1920, 1921, 1922, + 1923, 1924, 1925, 1926, 1928, 1929, 1930, 1931, 1932, 1933, + 1934, 1935, 1936, 1937, 1938, 1939, 1940, 1941, 1942, 1943, + 1944, 1945, 1946, 1947, 1948, 1949, 1950, 1951, 1952, 1954, + 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, + 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, + 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, + 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, + 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, + 2005, 2006, 2007, 2008, 2009, 2011, 2012, 2013, 2014, 2015, + 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2025, 2026, 2027, + 2028, 2029, 2030, 2031, 2032, 2033, 2034, 2035, 2036, 2037, + 2038, 2039, 2040, 2041, 2042, 2043, 2044, 2045, 2046, 2047, + 2048, 2049, 2050, 2051, 2052, 2053, 2054, 2055, 2056, 2057, + 2058, 2059, 2060, 2061, 2062, 2063, 2064, 2065, 2066, 2067, + 2068, 2069, 2070, 2071, 2072, 2073, 2074, 2075, 2076, 2077, + 2078, 2079, 2080, 2081, 2082, 2083, 2084, 2085, 2086, 2087, + 2088, 2089, 2090, 2091, 2092, 2093, 2094, 2095, 2096, 2097, + 2098, 2099, 2100, 2101, 2102, 2103, 2104, 2105, 2106, 2107, + 2108, 2109, 2110, 2111, 2112, 2113, 2114, 2117, 2118, 2119, + 2120, 2121, 2122, 2123, 2124, 2125, 2126, 2127, 2128, 2129, + 2130, 2131, 2132, 2133, 2134, 2135, 2136, 2137, 2138, 2139, + 2140, 2141, 2142, 2143, 2144, 2145, 2146, 2147, -2, 2149, + 2150, 2151, 2152, 2153, 2154, 2155, 2156, 2157, 2158, 2159, + 2160, 2161, 2162, 2163, 2164, 2165, 2166, 2167, 2168, 2169, + 2170, 2171, 2172, 2173, 2174, 2175, 2176, 2177, 2178, 2179, + 2180, 2181, 2182, 2183, 2184, 2185, 2186, 2187, 2188, 2189, + 2190, 2192, 2193, 2194, 2195, 2196, 2197, 2198, 2199, 2200, + 2201, 2202, 2203, 2204, 2205, 2206, -2, -2, -2, 2210, + 2211, 2212, 2213, 2214, 2215, 2216, 2217, 2218, 2219, 2220, + 2222, 2223, 2224, 2225, 2226, 2227, 2228, 2229, 2230, 2231, + 2232, 2233, 2234, 2235, 2236, 2237, 2238, 2239, 2240, 2241, + 2242, 2243, 2244, 2245, 2246, 2247, 0, 314, 312, 1897, + 1927, 1953, 2010, 2023, 2024, 2063, 2115, 2116, 2148, 2191, + 2207, 2208, 2209, 2221, 0, 0, 1010, 0, 782, 0, + 0, 787, 1362, 782, 351, 723, 724, 812, 838, 683, + 0, 388, 0, 1943, 392, 2198, 0, 0, 0, 0, + 680, 382, 383, 384, 385, 386, 387, 0, 0, 983, + 0, 0, 378, 0, 345, 2013, 2220, 1419, 0, 0, + 0, 0, 0, 201, 1134, 203, 1136, 207, 215, 0, + 0, 0, 220, 221, 224, 225, 226, 227, 228, 0, + 232, 0, 234, 237, 0, 239, 240, 0, 243, 244, + 245, 0, 255, 256, 257, 1137, 1138, 1139, -2, 130, + 1008, 1855, 1741, 0, 1748, 1761, 1772, 1501, 1502, 1503, + 1504, 0, 0, 0, 0, 0, 0, 1512, 1513, 0, + 1543, 2262, 2303, 2304, 0, 1521, 1522, 1523, 1524, 1525, + 1526, 0, 141, 153, 154, 1794, 1795, 1796, 1797, 1798, + 1799, 1800, 0, 1802, 1803, 1804, 1712, 1488, 1415, 0, + 2271, 0, 2293, 2298, 2299, 2300, 2301, 2292, 0, 0, + 1696, 0, 1686, 0, 0, -2, -2, 0, 0, 2088, + -2, 2305, 2306, 2307, 2268, 2289, 2297, 2272, 2273, 2296, + 2264, 2265, 2266, 2259, 2260, 2261, 2263, 2275, 2277, 2288, + 0, 2284, 2294, 2295, 2196, 0, 0, 2243, 0, 0, + 0, 2238, 155, 156, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, - -2, -2, -2, 1710, -2, 1712, -2, 1714, -2, 1717, - -2, -2, -2, -2, 1722, 1723, -2, 1725, -2, -2, - -2, -2, -2, -2, -2, 1701, 1702, 1703, 1704, 1693, - 1694, 1695, 1696, 1697, 1698, -2, -2, -2, 841, 934, - 0, 841, 0, 816, 863, 866, 869, 872, 819, 0, - 0, 103, 104, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 340, 341, 329, 331, 0, 335, 0, 0, - 331, 328, 322, 0, 1178, 1178, 1178, 0, 0, 0, - 0, 1178, 1178, 1178, 1178, 1178, 0, 1178, 0, 0, - 0, 0, 0, 1178, 0, 1046, 1144, 1145, 1146, 1176, - 1177, 1250, 0, 0, 0, 740, 735, 736, 737, 738, - 739, 829, 0, 831, 834, 0, 0, 660, 660, 901, - 901, 0, 606, 0, 0, 0, 660, 0, 620, 612, - 0, 0, 0, 660, 0, 0, 836, 836, 0, 663, - 670, 660, 660, -2, 660, 660, 657, 660, 0, 0, - 1190, 626, 627, 628, 612, 612, 631, 632, 633, 643, - 644, 671, 1882, 0, 0, 534, 534, 0, 534, 534, - 0, 534, 534, 534, 0, 742, 1972, 2061, 1953, 2032, - 1910, 2016, 2223, 0, 287, 2091, 292, 0, 1955, 1975, - 0, 0, 1994, 0, -2, 0, 367, 841, 0, 0, - 815, 0, 0, 0, 0, 534, 534, 534, 534, 534, - 1249, 534, 534, 534, 534, 534, 0, 0, 0, 534, - 534, 534, 534, 0, 877, 878, 880, 881, 882, 883, - 884, 885, 886, 887, 888, 889, 5, 6, 19, 0, - 0, 0, 0, 0, 0, 109, 108, 0, 1859, 1877, - 1810, 1811, 1812, 1864, 1814, 1868, 1868, 1868, 1868, 1843, - 1844, 1845, 1846, 1847, 1848, 1849, 1850, 1851, 1852, 1868, - 1868, 0, 0, 1857, 1834, 1866, 1866, 1866, 1864, 1861, + -2, 1707, -2, 1709, -2, 1711, -2, 1714, -2, -2, + -2, -2, 1719, 1720, -2, 1722, -2, -2, -2, -2, + -2, -2, -2, 1698, 1699, 1700, 1701, 1690, 1691, 1692, + 1693, 1694, 1695, -2, -2, -2, 838, 931, 0, 838, + 0, 813, 860, 863, 866, 869, 816, 0, 0, 103, + 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 340, 341, 329, 331, 0, 335, 0, 0, 331, 328, + 322, 0, 1175, 1175, 1175, 0, 0, 0, 0, 1175, + 1175, 1175, 1175, 1175, 0, 1175, 0, 0, 0, 0, + 0, 1175, 0, 1043, 1141, 1142, 1143, 1173, 1174, 1247, + 0, 0, 0, 739, 735, 736, 737, 738, 826, 0, + 828, 831, 0, 0, 660, 660, 898, 898, 0, 606, + 0, 0, 0, 660, 0, 620, 612, 0, 0, 0, + 660, 0, 0, 833, 833, 0, 663, 670, 660, 660, + -2, 660, 660, 657, 660, 0, 0, 1187, 626, 627, + 628, 612, 612, 631, 632, 633, 643, 644, 671, 1879, + 0, 0, 534, 534, 0, 534, 534, 0, 534, 534, + 534, 0, 741, 1969, 2058, 1950, 2029, 1907, 2013, 2220, + 0, 287, 2088, 292, 0, 1952, 1972, 0, 0, 1991, + 0, -2, 0, 367, 838, 0, 0, 812, 0, 0, + 0, 0, 534, 534, 534, 534, 534, 1246, 534, 534, + 534, 534, 534, 0, 0, 0, 534, 534, 534, 534, + 0, 874, 875, 877, 878, 879, 880, 881, 882, 883, + 884, 885, 886, 5, 6, 19, 0, 0, 0, 0, + 0, 0, 109, 108, 0, 1856, 1874, 1807, 1808, 1809, + 1861, 1811, 1865, 1865, 1865, 1865, 1840, 1841, 1842, 1843, + 1844, 1845, 1846, 1847, 1848, 1849, 1865, 1865, 0, 0, + 1854, 1831, 1863, 1863, 1863, 1861, 1858, 1812, 1813, 1814, 1815, 1816, 1817, 1818, 1819, 1820, 1821, 1822, 1823, 1824, - 1825, 1826, 1827, 1828, 1871, 1871, 1874, 1874, 1871, 0, - 428, 426, 427, 1740, 0, 0, 0, 0, 785, 785, - 789, 1363, 0, 0, 0, 785, 841, -2, 0, 0, - 684, 389, 1423, 0, 0, 393, 0, 394, 0, 0, - 396, 0, 0, 0, 417, 0, 420, 404, 405, 406, - 407, 400, 0, 181, 0, 380, 381, 0, 0, 347, - 0, 0, 0, 535, 0, 0, 0, 0, 0, 0, - 212, 208, 216, 219, 229, 236, 0, 248, 250, 253, - 209, 217, 222, 223, 230, 251, 210, 213, 214, 218, - 252, 254, 211, 231, 235, 249, 233, 238, 241, 242, - 247, 0, 182, 0, 0, 0, 0, 0, 1750, 0, - 0, 1783, 1784, 1785, 1786, 1787, 1788, 1789, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, -2, 1744, 0, - 0, 1510, 1511, 1512, 1513, 0, 1517, 0, 1547, 0, - 0, 0, 0, 0, 0, 1804, 1808, 0, 1740, 1740, - 0, 1740, 1736, 0, 0, 0, 0, 0, 0, 1740, - 1672, 0, 0, 1674, 1690, 0, 0, 1676, 1677, 0, - 1680, 1681, 1740, 0, 1740, 1685, 1740, 1740, 1740, 1668, - 1669, 0, 1736, 1736, 1736, 1736, 0, 0, 1736, 1736, - 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, 1736, - 1736, 1736, 1736, 0, 0, 0, 0, 836, 0, 842, - 0, -2, 0, 860, 862, 864, 865, 867, 868, 870, - 871, 873, 874, 821, 0, 0, 105, 0, 0, 0, - 0, 0, 0, 71, 73, 0, 0, 0, 0, 0, - 0, 333, 0, 338, 324, 2053, 0, 323, 0, 0, - 0, 0, 0, 1010, 0, 0, 1178, 1178, 1178, 1047, - 0, 0, 0, 0, 0, 0, 0, 0, 1178, 1178, - 1178, 1178, 0, 1196, 0, 0, 0, 742, 741, 740, - 0, 830, 0, 0, 70, 595, 596, 597, 901, 0, - 0, 599, 600, 0, 601, 0, 0, 612, 660, 660, - 618, 619, 614, 613, 666, 667, 663, 0, 663, 663, - 901, 0, 637, 638, 639, 660, 660, 645, 837, 0, - 646, 647, 663, 0, 668, 669, 901, 0, 0, 901, - 901, 0, 655, 656, 658, 660, 0, 0, 1178, 0, - 676, 614, 614, 1883, 1884, 0, 0, 1187, 0, 0, - 0, 0, 679, 0, 0, 0, 444, 445, 0, 0, - 743, 0, 266, 270, 0, 273, 0, 2061, 0, 2061, - 0, 0, 280, 0, 0, 0, 0, 0, 0, 310, - 311, 0, 0, 0, 0, 301, 304, 1357, 1358, 1134, - 1135, 305, 306, 359, 360, 0, 836, 859, 861, 855, - 856, 857, 0, 72, 0, 0, 0, 0, 0, 534, - 0, 0, 0, 0, 0, 717, 0, 1026, 719, 0, - 0, 0, 0, 0, 909, 903, 905, 981, 141, 879, - 8, 126, 123, 0, 19, 0, 0, 19, 19, 0, - 19, 315, 0, 1880, 1878, 1879, 1813, 1865, 0, 1839, - 0, 1840, 1841, 1842, 1853, 1854, 0, 0, 1835, 0, - 1836, 1837, 1838, 1829, 0, 1830, 1831, 0, 1832, 1833, - 313, 425, 0, 0, 1741, 1014, 0, 763, 777, 758, - 0, 766, 0, 0, 0, 1365, 0, 0, 0, 0, - 744, 777, 747, 0, 766, 0, 836, 813, 0, 791, - 0, 0, 390, 0, 401, 395, 0, 402, 397, 398, - 0, 0, 419, 421, 422, 423, 408, 409, 681, 376, - 377, 368, 369, 370, 371, 372, 373, 374, 375, 0, - 0, 379, 151, 0, 348, 349, 0, 0, 0, 195, - 196, 197, 198, 199, 200, 202, 186, 706, 708, 1126, - 1138, 0, 1129, 0, 205, 246, 178, 0, 0, 0, - 1745, 1746, 1747, 1748, 1749, 1754, 0, 1756, 1758, 1760, - 1762, 0, 1780, -2, -2, 1492, 1493, 1494, 1495, 1496, - 1497, 1498, 1499, 1500, 1501, 1502, 1503, 1765, 1778, 1779, - 0, 0, 0, 0, 0, 0, 1776, 1776, 1771, 0, - 1530, 1359, 1360, 1508, 0, 0, 1544, 1548, 0, 0, - 0, 0, 0, 0, 1161, 1864, 0, 142, 1735, 1639, - 1640, 1641, 1642, 1643, 1644, 1645, 1646, 1647, 1648, 1649, - 1650, 1651, 1652, 1653, 1654, 1655, 1656, 1657, 1658, 1659, - 1660, 1661, 1662, 1663, 1664, 1665, 1666, 1667, 0, 0, - 1744, 0, 0, 0, 1737, 1738, 0, 0, 0, 1627, - 0, 0, 1633, 1634, 1635, 0, 772, 0, 1700, 1673, - 1691, 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, 933, - 935, 0, 781, 783, 784, 810, 791, 817, 0, 0, - 0, 101, 106, 0, 1217, 0, 0, 0, 0, 0, - 0, 0, 74, 1191, 75, 1193, 342, 343, 0, 0, - 337, 325, 2053, 327, 0, 0, 0, 0, 0, -2, - 0, 0, 0, 0, 0, 1062, 1063, 532, 1120, 0, - 0, 0, 1136, 1165, 1174, 0, 0, 0, 0, 0, - 1223, 1048, 1053, 1054, 1055, 1049, 1050, 1056, 1057, 0, - 742, 832, 0, 0, 950, 598, 661, 662, 902, 602, - 0, 0, 609, 2016, 614, 901, 901, 621, 615, 622, - 665, 623, 624, 625, 663, 901, 901, 838, 660, 663, - 648, 664, 663, 1365, 652, 0, 659, 1365, 677, 1365, - 0, 675, 629, 630, 1225, 834, 442, 443, 448, 450, - 0, 499, 499, 499, 482, 499, 0, 0, 470, 1885, - 0, 0, 0, 0, 479, 1885, 0, 0, 1885, 1885, - 1885, 1885, 1885, 1885, 1885, 0, 0, 1885, 1885, 1885, - 1885, 1885, 1885, 1885, 1885, 1885, 1885, 1885, 0, 1885, - 1885, 1885, 1885, 1885, 1342, 1885, 0, 498, 1188, 489, - 490, 491, 492, 497, 0, 0, 527, 0, 0, 1061, - 0, 532, 0, 0, 1103, 0, 0, 914, 0, 915, - 916, 917, 912, 952, 976, 976, 0, 976, 956, 1365, - 0, 0, 0, 278, 279, 267, 0, 268, 0, 0, - 281, 282, 0, 284, 285, 286, 293, 1953, 2032, 288, - 290, 0, 0, 294, 307, 308, 309, 0, 0, 299, - 300, 0, 0, 362, 363, 365, 0, 791, 1192, 703, - 1361, 704, 705, 709, 0, 0, 712, 713, 714, 715, - 716, 1028, 0, 0, 1112, 1113, 1114, 1115, 901, 0, - 910, 0, 906, 982, 0, 984, 0, 0, 124, 19, - 0, 117, 114, 0, 0, 0, 0, 0, 1860, 1809, - 1881, 0, 0, 0, 1862, 0, 0, 0, 0, 0, - 107, 793, 752, 0, 757, 774, 0, 778, 0, 0, - 770, 762, 767, 0, 0, 787, 753, 763, 1364, 0, - 0, 0, 0, 746, 0, 0, 751, 745, 791, 0, - 814, 843, 844, 847, 1424, 0, 403, 399, 418, 0, - 0, 0, 0, 189, 1123, 0, 190, 194, 184, 0, - 0, 0, 1128, 0, 1125, 1130, 0, 204, 0, 0, - 179, 180, 1208, 1217, 0, 0, 0, 1755, 1757, 1759, - 1761, 1763, 0, 1766, 1776, 1776, 1772, 0, 1767, 0, - 1769, 0, 1745, 1514, 0, 1549, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 847, 0, 0, 1617, 1618, - 0, 0, 1622, 0, 1624, 1625, 1626, 1628, 0, 0, - 0, 1632, 0, 1671, 1692, 1675, 1678, 0, 1682, 0, - 1684, 1686, 1687, 1688, 0, 841, 841, 0, 0, 1588, - 1588, 1588, 0, 0, 0, 0, 1588, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1533, 0, - 1534, 1535, 0, 0, 0, 936, 811, 0, 0, 0, - 0, 0, 1215, 0, 91, 0, 0, 0, 0, 96, - 0, 0, 76, 344, 332, 334, 0, 326, 0, 1179, - 0, 0, 0, 0, 0, 1016, 1017, 1019, 0, 1022, - 1023, 1024, 1028, 834, 0, 834, 1073, 1885, 536, 0, - 0, 1122, 0, 1092, 0, 0, 0, -2, 0, 0, - 1174, 0, 0, 0, 1227, 0, 0, 0, 729, 733, - 0, 23, 835, 0, 605, 603, 0, 607, 0, 608, - 660, 616, 617, 901, 640, 641, 0, 0, 901, 660, - 660, 651, 663, 672, 0, 673, 1365, 1227, 0, 0, - 1187, 1293, 1261, 460, 0, 1378, 1379, 500, 0, 1385, - 1394, 1178, 1456, 0, 1394, 0, 0, 1396, 1397, 0, - 0, 0, 0, 483, 484, 0, 469, 0, 0, 0, - 0, 0, 0, 468, 0, 0, 510, 0, 0, 0, - 0, 0, 1886, 1885, 1885, 0, 477, 478, 0, 481, - 0, 0, 0, 0, 0, 0, 0, 0, 1885, 1885, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1333, 0, 0, 0, 0, 0, 0, 0, 0, - 1349, 1350, 0, 1073, 1885, 0, 0, 0, 0, 536, - 1117, 1117, 1090, 1108, 0, 446, 447, 507, 0, 0, - 0, 0, 0, 0, 0, 942, 0, 0, 0, 941, - 0, 0, 0, 0, 0, 0, 0, 834, 977, 0, - 979, 980, 954, -2, 0, 914, 959, 1740, 0, 271, - 272, 0, 0, 277, 295, 297, 269, 0, 0, 0, - 296, 298, 302, 303, 361, 364, 366, 853, 0, 0, - 1251, 0, 1029, 1030, 1032, 1033, 0, -2, -2, -2, + 1825, 1868, 1868, 1871, 1871, 1868, 0, 428, 426, 427, + 1737, 0, 0, 0, 0, 782, 786, 1360, 0, 0, + 0, 838, -2, 0, 0, 684, 389, 1420, 0, 0, + 393, 0, 394, 0, 0, 396, 0, 0, 0, 417, + 0, 420, 404, 405, 406, 407, 400, 0, 181, 0, + 380, 381, 0, 0, 347, 0, 0, 0, 535, 0, + 0, 0, 0, 0, 0, 212, 208, 216, 219, 229, + 236, 0, 248, 250, 253, 209, 217, 222, 223, 230, + 251, 210, 213, 214, 218, 252, 254, 211, 231, 235, + 249, 233, 238, 241, 242, 247, 0, 182, 0, 0, + 0, 0, 0, 1747, 0, 0, 1780, 1781, 1782, 1783, + 1784, 1785, 1786, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, -2, 1741, 0, 0, 1507, 1508, 1509, 1510, + 0, 1514, 0, 1544, 0, 0, 0, 0, 0, 0, + 1801, 1805, 0, 1737, 1737, 0, 1737, 1733, 0, 0, + 0, 0, 0, 0, 1737, 1669, 0, 0, 1671, 1687, + 0, 0, 1673, 1674, 0, 1677, 1678, 1737, 0, 1737, + 1682, 1737, 1737, 1737, 1665, 1666, 0, 1733, 1733, 1733, + 1733, 0, 0, 1733, 1733, 1733, 1733, 1733, 1733, 1733, + 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 0, 0, + 0, 0, 833, 0, 839, 0, -2, 0, 857, 859, + 861, 862, 864, 865, 867, 868, 870, 871, 818, 0, + 0, 105, 0, 0, 0, 0, 0, 0, 71, 73, + 0, 0, 0, 0, 0, 0, 333, 0, 338, 324, + 2050, 0, 323, 0, 0, 0, 0, 0, 1007, 0, + 0, 1175, 1175, 1175, 1044, 0, 0, 0, 0, 0, + 0, 0, 0, 1175, 1175, 1175, 1175, 0, 1193, 0, + 0, 0, 741, 740, 0, 827, 0, 0, 70, 595, + 596, 597, 898, 0, 0, 599, 600, 0, 601, 0, + 0, 612, 660, 660, 618, 619, 614, 613, 666, 667, + 663, 0, 663, 663, 898, 0, 637, 638, 639, 660, + 660, 645, 834, 0, 646, 647, 663, 0, 668, 669, + 898, 0, 0, 898, 898, 0, 655, 656, 658, 660, + 0, 0, 1175, 0, 676, 614, 614, 1880, 1881, 0, + 0, 1184, 0, 0, 0, 0, 679, 0, 0, 0, + 444, 445, 0, 0, 742, 0, 266, 270, 0, 273, + 0, 2058, 0, 2058, 0, 0, 280, 0, 0, 0, + 0, 0, 0, 310, 311, 0, 0, 0, 0, 301, + 304, 1354, 1355, 1131, 1132, 305, 306, 359, 360, 0, + 833, 856, 858, 852, 853, 854, 0, 72, 0, 0, + 0, 0, 0, 534, 0, 0, 0, 0, 0, 717, + 0, 1023, 719, 0, 0, 0, 0, 0, 906, 900, + 902, 978, 141, 876, 8, 126, 123, 0, 19, 0, + 0, 19, 19, 0, 19, 315, 0, 1877, 1875, 1876, + 1810, 1862, 0, 1836, 0, 1837, 1838, 1839, 1850, 1851, + 0, 0, 1832, 0, 1833, 1834, 1835, 1826, 0, 1827, + 1828, 0, 1829, 1830, 313, 425, 0, 0, 1738, 1011, + 0, 760, 774, 755, 0, 763, 0, 0, 1362, 0, + 0, 0, 0, 743, 774, 745, 0, 763, 833, 810, + 0, 788, 0, 0, 390, 0, 401, 395, 0, 402, + 397, 398, 0, 0, 419, 421, 422, 423, 408, 409, + 681, 376, 377, 368, 369, 370, 371, 372, 373, 374, + 375, 0, 0, 379, 151, 0, 348, 349, 0, 0, + 0, 195, 196, 197, 198, 199, 200, 202, 186, 706, + 708, 1123, 1135, 0, 1126, 0, 205, 246, 178, 0, + 0, 0, 1742, 1743, 1744, 1745, 1746, 1751, 0, 1753, + 1755, 1757, 1759, 0, 1777, -2, -2, 1489, 1490, 1491, + 1492, 1493, 1494, 1495, 1496, 1497, 1498, 1499, 1500, 1762, + 1775, 1776, 0, 0, 0, 0, 0, 0, 1773, 1773, + 1768, 0, 1527, 1356, 1357, 1505, 0, 0, 1541, 1545, + 0, 0, 0, 0, 0, 0, 1158, 1861, 0, 142, + 1732, 1636, 1637, 1638, 1639, 1640, 1641, 1642, 1643, 1644, + 1645, 1646, 1647, 1648, 1649, 1650, 1651, 1652, 1653, 1654, + 1655, 1656, 1657, 1658, 1659, 1660, 1661, 1662, 1663, 1664, + 0, 0, 1741, 0, 0, 0, 1734, 1735, 0, 0, + 0, 1624, 0, 0, 1630, 1631, 1632, 0, 769, 0, + 1697, 1670, 1688, 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, 930, 932, 0, 778, 780, 781, 807, 788, 814, + 0, 0, 0, 101, 106, 0, 1214, 0, 0, 0, + 0, 0, 0, 0, 74, 1188, 75, 1190, 342, 343, + 0, 0, 337, 325, 2050, 327, 0, 0, 0, 0, + 0, -2, 0, 0, 0, 0, 0, 1059, 1060, 532, + 1117, 0, 0, 0, 1133, 1162, 1171, 0, 0, 0, + 0, 0, 1220, 1045, 1050, 1051, 1052, 1046, 1047, 1053, + 1054, 0, 829, 0, 0, 947, 598, 661, 662, 899, + 602, 0, 0, 609, 2013, 614, 898, 898, 621, 615, + 622, 665, 623, 624, 625, 663, 898, 898, 835, 660, + 663, 648, 664, 663, 1362, 652, 0, 659, 1362, 677, + 1362, 0, 675, 629, 630, 1222, 831, 442, 443, 448, + 450, 0, 499, 499, 499, 482, 499, 0, 0, 470, + 1882, 0, 0, 0, 0, 479, 1882, 0, 0, 1882, + 1882, 1882, 1882, 1882, 1882, 1882, 0, 0, 1882, 1882, + 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 0, + 1882, 1882, 1882, 1882, 1882, 1339, 1882, 0, 498, 1185, + 489, 490, 491, 492, 497, 0, 0, 527, 0, 0, + 1058, 0, 532, 0, 0, 1100, 0, 0, 911, 0, + 912, 913, 914, 909, 949, 973, 973, 0, 973, 953, + 1362, 0, 0, 0, 278, 279, 267, 0, 268, 0, + 0, 281, 282, 0, 284, 285, 286, 293, 1950, 2029, + 288, 290, 0, 0, 294, 307, 308, 309, 0, 0, + 299, 300, 0, 0, 362, 363, 365, 0, 788, 1189, + 703, 1358, 704, 705, 709, 0, 0, 712, 713, 714, + 715, 716, 1025, 0, 0, 1109, 1110, 1111, 1112, 898, + 0, 907, 0, 903, 979, 0, 981, 0, 0, 124, + 19, 0, 117, 114, 0, 0, 0, 0, 0, 1857, + 1806, 1878, 0, 0, 0, 1859, 0, 0, 0, 0, + 0, 107, 790, 750, 0, 754, 771, 0, 775, 0, + 0, 767, 759, 764, 0, 0, 784, 751, 1361, 0, + 0, 0, 0, 744, 0, 0, 749, 788, 0, 811, + 840, 841, 844, 1421, 0, 403, 399, 418, 0, 0, + 0, 0, 189, 1120, 0, 190, 194, 184, 0, 0, + 0, 1125, 0, 1122, 1127, 0, 204, 0, 0, 179, + 180, 1205, 1214, 0, 0, 0, 1752, 1754, 1756, 1758, + 1760, 0, 1763, 1773, 1773, 1769, 0, 1764, 0, 1766, + 0, 1742, 1511, 0, 1546, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 844, 0, 0, 1614, 1615, 0, + 0, 1619, 0, 1621, 1622, 1623, 1625, 0, 0, 0, + 1629, 0, 1668, 1689, 1672, 1675, 0, 1679, 0, 1681, + 1683, 1684, 1685, 0, 838, 838, 0, 0, 1585, 1585, + 1585, 0, 0, 0, 0, 1585, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1530, 0, 1531, + 1532, 0, 0, 0, 933, 808, 0, 0, 0, 0, + 0, 1212, 0, 91, 0, 0, 0, 0, 96, 0, + 0, 76, 344, 332, 334, 0, 326, 0, 1176, 0, + 0, 0, 0, 0, 1013, 1014, 1016, 0, 1019, 1020, + 1021, 1025, 831, 0, 831, 1070, 1882, 536, 0, 0, + 1119, 0, 1089, 0, 0, 0, -2, 0, 0, 1171, + 0, 0, 0, 1224, 0, 0, 0, 728, 732, 23, + 832, 0, 605, 603, 0, 607, 0, 608, 660, 616, + 617, 898, 640, 641, 0, 0, 898, 660, 660, 651, + 663, 672, 0, 673, 1362, 1224, 0, 0, 1184, 1290, + 1258, 460, 0, 1375, 1376, 500, 0, 1382, 1391, 1175, + 1453, 0, 1391, 0, 0, 1393, 1394, 0, 0, 0, + 0, 483, 484, 0, 469, 0, 0, 0, 0, 0, + 0, 468, 0, 0, 510, 0, 0, 0, 0, 0, + 1883, 1882, 1882, 0, 477, 478, 0, 481, 0, 0, + 0, 0, 0, 0, 0, 0, 1882, 1882, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1330, + 0, 0, 0, 0, 0, 0, 0, 0, 1346, 1347, + 0, 1070, 1882, 0, 0, 0, 0, 536, 1114, 1114, + 1087, 1105, 0, 446, 447, 507, 0, 0, 0, 0, + 0, 0, 0, 939, 0, 0, 0, 938, 0, 0, + 0, 0, 0, 0, 0, 831, 974, 0, 976, 977, + 951, -2, 0, 911, 956, 1737, 0, 271, 272, 0, + 0, 277, 295, 297, 269, 0, 0, 0, 296, 298, + 302, 303, 361, 364, 366, 850, 0, 0, 1248, 0, + 1026, 1027, 1029, 1030, 0, -2, -2, -2, -2, -2, + -2, -2, -2, -2, -2, -2, -2, -2, 1934, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, - 1937, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, - -2, -2, 1027, 720, 892, 904, 911, 983, 985, 142, - 907, 0, 127, 19, 126, 118, 119, 0, 19, 0, - 0, 0, 0, 1870, 1869, 1855, 0, 1856, 1867, 1872, - 0, 1875, 0, 429, 797, 0, 0, 777, 779, 0, - 0, 777, 0, 0, 786, 0, 754, 0, 0, 0, - 0, 0, 0, 777, 853, 793, 0, 850, 848, 849, - 0, 0, 682, 152, 424, 0, 0, 0, 0, 0, - 707, 0, 1127, 186, 0, 0, 206, 0, 0, 0, - 1217, 1212, 1739, 1768, 1770, 0, 1777, 1773, 1509, 1518, - 1545, 0, 0, 1551, 1563, 1563, 0, 0, 0, 1554, - 1868, 1868, 1557, 1864, 1866, 1864, 1563, 1563, 0, 1162, - 0, 1163, 847, 143, 0, 0, 1623, 0, 0, 0, - 773, 0, 0, 0, 1584, 1586, 1588, 1588, 1595, 1589, - 1596, 1597, 1588, 1588, 1588, 1588, 1602, 1588, 1588, 1588, - 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1588, 1582, 0, - 0, 1798, 1799, 782, 0, 0, 824, 825, 826, 827, - 828, 0, 0, 61, 61, 1217, 0, 100, 92, 0, - 0, 0, 0, 0, 336, 0, 77, 78, 80, 0, - 0, 0, 0, 0, 0, 0, 90, 0, 0, 1021, - 0, 0, 0, 1371, 0, 1077, 1074, 1075, 1076, 0, - 1117, 537, 538, 539, 540, 0, 0, 0, 1121, 0, - 0, 1085, 0, 0, 0, 1166, 1167, 1168, 1169, 1170, - 1171, 1172, 1173, -2, 1182, 0, 0, 0, 1371, 1201, - 0, 0, 1206, 1371, 1371, 0, 1235, 0, 1224, 785, - 0, -2, 0, 0, 731, 0, 0, 0, 951, 604, - 610, 901, 634, 839, 840, 1365, 901, 901, 660, 678, - 674, 1235, 1226, 0, 449, 499, 0, 1281, 0, 0, - 1287, 0, 1294, 453, 0, 501, 0, 1384, 1412, 1395, - 1412, 1457, 1412, 1412, 1178, 0, 501, 0, 0, 471, - 0, 0, 0, 0, 0, 467, 504, 847, 454, 456, - 457, 458, 508, 509, 511, 0, 513, 514, 473, 485, - 486, 487, 488, 0, 0, 0, 480, 493, 494, 495, - 496, 455, 1310, 1311, 1312, 1315, 1316, 1317, 1318, 0, - 0, 1321, 1322, 1323, 1324, 1325, 1409, 1410, 1411, 1326, - 1327, 1328, 1329, 1330, 1331, 1332, 1351, 1352, 1353, 1354, - 1355, 1356, 1334, 1335, 1336, 1337, 1338, 1339, 1340, 1341, - 0, 0, 1346, 0, 0, 0, 1077, 0, 0, 0, - 0, 0, 1117, 530, 0, 0, 531, 1092, 0, 1110, - 0, 1104, 1105, 0, 0, 755, 901, 354, 0, 946, - 937, 0, 921, 0, 923, 943, 924, 944, 0, 0, - 928, 0, 930, 0, 926, 927, 932, 925, 901, 913, - 953, 978, 955, 958, 960, 961, 967, 0, 0, 0, - 0, 265, 274, 275, 276, 283, 0, 556, 289, 809, - 0, 1362, 710, 711, 1252, 1253, 718, 0, 1034, 890, - 0, 0, 122, 125, 0, 120, 0, 0, 0, 0, - 112, 110, 1863, 0, 0, 799, 166, 0, 0, 0, - 775, 0, 780, 777, 761, 771, 760, 768, 769, 788, - 1366, 1367, 1368, 1369, 0, 777, 750, 749, 812, 797, - 845, 846, 0, 1425, 391, 0, 1124, 186, 191, 192, - 193, 187, 185, 1131, 0, 1133, 0, 1210, 0, 0, - 1774, 1550, 1519, 1552, 1564, 1565, 1553, 0, 1521, 1522, - 1555, 1556, 1558, 1559, 1560, 1561, 1562, 1523, 0, 1164, - 1619, 0, 1621, 1629, 1630, 0, 1679, 1683, 0, 0, - 0, 0, 0, 1593, 1594, 1598, 1599, 1600, 1601, 1603, - 1604, 1605, 1606, 1607, 1608, 1609, 1610, 1611, 1612, 1613, - 841, 1583, 0, 0, 0, 0, 0, 0, 0, 822, - 0, 0, 0, 63, 0, 63, 1216, 1218, 0, 981, - 0, 0, 97, 0, 0, 79, 81, 0, 2017, 0, - 0, 0, 0, 88, 1009, 1012, 1018, 1020, 0, 0, - 0, 1372, 1373, 1375, 1376, 1377, 0, 1045, 0, 0, - 1065, 1066, 1067, 1079, 0, 542, 543, 0, 0, 0, - 555, 551, 552, 553, 533, 1116, 1099, 0, 0, 1088, - 0, 0, 1098, 0, 1183, 1885, 1885, 1885, 0, 0, - 1295, 1885, 1885, 0, 1203, 1205, 0, 0, 1299, 1238, - 0, 0, 1229, 0, 976, 0, 0, 901, 730, 733, - 734, 785, 833, 611, 649, 653, 650, 901, 1238, 441, - 1259, 0, 0, 0, 0, 0, 1291, 0, 0, 1263, - 0, 472, 502, 0, -2, 0, 1413, 0, 1398, 1413, - 0, 0, 1412, 0, 461, 501, 0, 0, 0, 515, - 520, 521, 0, 517, 518, 1452, 0, 519, 0, 506, - 0, 512, 1313, 1314, 0, 1319, 1320, 0, 1344, 0, - 0, 0, 452, 522, 0, 0, 0, 523, 524, 529, - 1118, 1119, 1085, 0, 1099, 0, 1109, 0, 1106, 1107, - 841, 0, 0, 918, 947, 0, 0, 919, 0, 920, - 922, 945, 0, 939, 929, 931, 353, 962, 0, 0, - 964, 965, 966, 957, 291, 854, 1031, 0, 875, 0, - 0, 908, 0, 19, 0, 0, 115, 1873, 1876, 801, - 0, 798, 167, 0, 0, 0, 0, 765, 776, 759, - 1370, 748, 799, 851, 852, 188, 183, 1132, 1220, 0, - 1211, 0, 1476, 1532, 0, 1631, 0, 1588, 1585, 1588, - 1587, 1579, 0, 1536, 0, 1538, 1539, 1540, 0, 1542, - 1543, 0, 820, 0, 59, 0, 62, 60, 0, 99, - 93, 0, 0, 0, 82, 0, 0, 0, 0, 0, - 0, 0, 1051, 1299, 0, 1051, 1078, 1064, 0, 0, - 544, 545, 0, 548, 554, 1080, 0, 0, 1082, 1083, - 1084, 0, 0, 1096, 0, 0, 0, 0, 1175, 1189, - 0, 0, 0, -2, 0, -2, 1200, 0, 1244, 0, - 1236, 0, 1228, 0, 1231, 901, 901, -2, 727, 732, - 0, 976, 654, 1244, 1261, 0, 1282, 0, 0, 0, - 0, 0, 0, 0, 1262, 0, 1275, 503, 1414, -2, - 1428, 1430, 0, 1188, 1433, 1434, 0, 0, 0, 0, - 0, 0, 1483, 1442, 0, 0, 1446, 1447, 1448, 0, - 0, 1451, 0, 1792, 1793, 0, 1455, 0, 0, 0, - 0, 0, 0, 0, 1392, 462, 463, 0, 465, 466, - 1885, 1453, 505, 459, 1885, 475, 1343, 1347, 1348, 1345, - 528, 525, 526, 1088, 1091, 1102, 1111, 756, 836, 355, - 356, 948, 0, 938, 940, 971, 968, 0, 0, 1035, - 891, 899, 2246, 2248, 2245, 116, 121, 0, 0, 803, - 0, 800, 0, 794, 796, 177, 764, 801, 137, 169, - 0, 0, 1520, 0, 0, 0, 1620, 1670, 1591, 1592, - 0, 1580, 0, 1574, 1575, 1576, 1581, 0, 0, 823, - 818, 64, 95, 0, 98, 68, 83, 0, 84, 0, - 0, 0, 0, 1037, 1044, 1058, 1194, 1374, 1043, 0, - 0, 541, 546, 0, 549, 550, 1100, 1099, 0, 1086, - 1087, 0, 1094, 0, 0, 1184, 1185, 1186, 1296, 1297, - 1298, 1254, 1202, 0, -2, 1307, 0, 0, 1198, 1220, - 1254, 0, 0, 1232, 0, 1239, 0, 1237, 1230, 841, - 728, 901, 1241, 451, 1293, 1283, 0, 1285, 0, 0, - 0, 0, 1264, -2, 0, 1429, 1431, 1432, 1435, 1436, - 1437, 1488, 1489, 1490, 0, 0, 1440, 1485, 1486, 1487, - 1441, 0, 0, 0, 0, 0, 1790, 1791, 1481, 0, - 0, 1399, 1401, 1402, 1403, 1404, 1405, 1406, 1407, 1408, - 1400, 0, 0, 0, 1391, 1393, 464, 0, 0, 1885, - 1101, 352, 0, 0, 972, 974, 969, 970, 893, 0, - 0, 0, 0, 111, 113, 128, 0, 802, 168, 0, - 803, 139, 0, 160, 0, 1221, 0, 1531, 0, 0, - 0, 1590, 1577, 0, 0, 0, 0, 0, 1794, 1795, - 1796, 0, 1537, 1541, 94, 0, 66, 0, 85, 86, - 0, 0, 0, 0, 1059, 1060, 1068, 1069, 0, 1071, - 1072, 547, 1081, 1089, 1093, 1096, 0, 1148, 1256, 0, - 1204, 1187, 1309, 1885, 1207, 1256, 0, 1301, 1885, 1885, - 1222, 0, 1234, 0, 1246, 0, 1240, 836, 841, 440, - 0, 1243, 1279, 1284, 1286, 1288, 0, 1292, 1290, 1265, - -2, 0, 1273, 0, 0, 1438, 1439, 0, 0, 1689, - 1885, 0, 1471, 0, 1148, 1148, 1148, 1148, 0, 516, - 474, 0, 949, 963, 0, 900, 0, 0, 0, 0, - 0, 792, 129, 0, 138, 157, 0, 170, 171, 0, - 0, 0, 0, 1213, 0, 1479, 1480, 0, 1566, 0, - 0, 0, 1570, 1571, 1572, 1573, 65, 68, 0, 0, - 87, 0, 1036, 0, 1070, 1095, 1097, 1147, 1197, 0, - 1293, 1308, 0, 1199, 1300, 0, 0, 0, 1233, 1245, - 0, 1248, 725, 836, 1242, 1260, 0, 1289, 1266, 1274, - 0, 1269, 0, 0, 0, 1484, 0, 1445, 0, 1450, - 1459, 1472, 0, 0, 1380, 0, 1382, 0, 1386, 0, - 1388, 0, 0, 476, 973, 975, 0, 1740, 895, 896, - 0, 805, 795, 140, 144, 0, 166, 163, 0, 172, - 0, 0, 0, 0, 1209, 0, 1477, 0, 1567, 1568, - 1569, 67, 69, 89, 0, 1038, 1039, 1052, 1149, 1885, - 1885, 0, 0, 0, 1155, 1156, 1885, 1885, 1885, 1885, - 0, 1281, 1313, 1302, 1303, 1304, 1247, 726, 1280, 1268, - 0, -2, 1276, 0, 0, 1742, 1752, 1753, 1443, 1449, - 1458, 1460, 1461, 0, 1473, 1474, 1475, 1482, 1148, 1148, - 1148, 1148, 1390, 894, 0, 0, 804, 0, 131, 0, + 1024, 720, 889, 901, 908, 980, 982, 142, 904, 0, + 127, 19, 126, 118, 119, 0, 19, 0, 0, 0, + 0, 1867, 1866, 1852, 0, 1853, 1864, 1869, 0, 1872, + 0, 429, 794, 0, 0, 774, 776, 0, 0, 774, + 0, 0, 783, 0, 0, 0, 0, 0, 0, 0, + 774, 850, 790, 0, 847, 845, 846, 0, 0, 682, + 152, 424, 0, 0, 0, 0, 0, 707, 0, 1124, + 186, 0, 0, 206, 0, 0, 0, 1214, 1209, 1736, + 1765, 1767, 0, 1774, 1770, 1506, 1515, 1542, 0, 0, + 1548, 1560, 1560, 0, 0, 0, 1551, 1865, 1865, 1554, + 1861, 1863, 1861, 1560, 1560, 0, 1159, 0, 1160, 844, + 143, 0, 0, 1620, 0, 0, 0, 770, 0, 0, + 0, 1581, 1583, 1585, 1585, 1592, 1586, 1593, 1594, 1585, + 1585, 1585, 1585, 1599, 1585, 1585, 1585, 1585, 1585, 1585, + 1585, 1585, 1585, 1585, 1585, 1579, 0, 0, 1795, 1796, + 779, 0, 0, 821, 822, 823, 824, 825, 0, 0, + 61, 61, 1214, 0, 100, 92, 0, 0, 0, 0, + 0, 336, 0, 77, 78, 80, 0, 0, 0, 0, + 0, 0, 0, 90, 0, 0, 1018, 0, 0, 0, + 1368, 0, 1074, 1071, 1072, 1073, 0, 1114, 537, 538, + 539, 540, 0, 0, 0, 1118, 0, 0, 1082, 0, + 0, 0, 1163, 1164, 1165, 1166, 1167, 1168, 1169, 1170, + -2, 1179, 0, 0, 0, 1368, 1198, 0, 0, 1203, + 1368, 1368, 0, 1232, 0, 1221, 782, 0, -2, 0, + 0, 730, 0, 0, 948, 604, 610, 898, 634, 836, + 837, 1362, 898, 898, 660, 678, 674, 1232, 1223, 0, + 449, 499, 0, 1278, 0, 0, 1284, 0, 1291, 453, + 0, 501, 0, 1381, 1409, 1392, 1409, 1454, 1409, 1409, + 1175, 0, 501, 0, 0, 471, 0, 0, 0, 0, + 0, 467, 504, 844, 454, 456, 457, 458, 508, 509, + 511, 0, 513, 514, 473, 485, 486, 487, 488, 0, + 0, 0, 480, 493, 494, 495, 496, 455, 1307, 1308, + 1309, 1312, 1313, 1314, 1315, 0, 0, 1318, 1319, 1320, + 1321, 1322, 1406, 1407, 1408, 1323, 1324, 1325, 1326, 1327, + 1328, 1329, 1348, 1349, 1350, 1351, 1352, 1353, 1331, 1332, + 1333, 1334, 1335, 1336, 1337, 1338, 0, 0, 1343, 0, + 0, 0, 1074, 0, 0, 0, 0, 0, 1114, 530, + 0, 0, 531, 1089, 0, 1107, 0, 1101, 1102, 0, + 0, 752, 898, 354, 0, 943, 934, 0, 918, 0, + 920, 940, 921, 941, 0, 0, 925, 0, 927, 0, + 923, 924, 929, 922, 898, 910, 950, 975, 952, 955, + 957, 958, 964, 0, 0, 0, 0, 265, 274, 275, + 276, 283, 0, 556, 289, 806, 0, 1359, 710, 711, + 1249, 1250, 718, 0, 1031, 887, 0, 0, 122, 125, + 0, 120, 0, 0, 0, 0, 112, 110, 1860, 0, + 0, 796, 166, 0, 0, 0, 772, 0, 777, 774, + 758, 768, 757, 765, 766, 785, 1363, 1364, 1365, 1366, + 0, 774, 748, 747, 809, 794, 842, 843, 0, 1422, + 391, 0, 1121, 186, 191, 192, 193, 187, 185, 1128, + 0, 1130, 0, 1207, 0, 0, 1771, 1547, 1516, 1549, + 1561, 1562, 1550, 0, 1518, 1519, 1552, 1553, 1555, 1556, + 1557, 1558, 1559, 1520, 0, 1161, 1616, 0, 1618, 1626, + 1627, 0, 1676, 1680, 0, 0, 0, 0, 0, 1590, + 1591, 1595, 1596, 1597, 1598, 1600, 1601, 1602, 1603, 1604, + 1605, 1606, 1607, 1608, 1609, 1610, 838, 1580, 0, 0, + 0, 0, 0, 0, 0, 819, 0, 0, 0, 63, + 0, 63, 1213, 1215, 0, 978, 0, 0, 97, 0, + 0, 79, 81, 0, 2014, 0, 0, 0, 0, 88, + 1006, 1009, 1015, 1017, 0, 0, 0, 1369, 1370, 1372, + 1373, 1374, 0, 1042, 0, 0, 1062, 1063, 1064, 1076, + 0, 542, 543, 0, 0, 0, 555, 551, 552, 553, + 533, 1113, 1096, 0, 0, 1085, 0, 0, 1095, 0, + 1180, 1882, 1882, 1882, 0, 0, 1292, 1882, 1882, 0, + 1200, 1202, 0, 0, 1296, 1235, 0, 0, 1226, 0, + 973, 0, 0, 898, 729, 732, 733, 830, 611, 649, + 653, 650, 898, 1235, 441, 1256, 0, 0, 0, 0, + 0, 1288, 0, 0, 1260, 0, 472, 502, 0, -2, + 0, 1410, 0, 1395, 1410, 0, 0, 1409, 0, 461, + 501, 0, 0, 0, 515, 520, 521, 0, 517, 518, + 1449, 0, 519, 0, 506, 0, 512, 1310, 1311, 0, + 1316, 1317, 0, 1341, 0, 0, 0, 452, 522, 0, + 0, 0, 523, 524, 529, 1115, 1116, 1082, 0, 1096, + 0, 1106, 0, 1103, 1104, 838, 0, 0, 915, 944, + 0, 0, 916, 0, 917, 919, 942, 0, 936, 926, + 928, 353, 959, 0, 0, 961, 962, 963, 954, 291, + 851, 1028, 0, 872, 0, 0, 905, 0, 19, 0, + 0, 115, 1870, 1873, 798, 0, 795, 167, 0, 0, + 0, 0, 762, 773, 756, 1367, 746, 796, 848, 849, + 188, 183, 1129, 1217, 0, 1208, 0, 1473, 1529, 0, + 1628, 0, 1585, 1582, 1585, 1584, 1576, 0, 1533, 0, + 1535, 1536, 1537, 0, 1539, 1540, 0, 817, 0, 59, + 0, 62, 60, 0, 99, 93, 0, 0, 0, 82, + 0, 0, 0, 0, 0, 0, 0, 1048, 1296, 0, + 1048, 1075, 1061, 0, 0, 544, 545, 0, 548, 554, + 1077, 0, 0, 1079, 1080, 1081, 0, 0, 1093, 0, + 0, 0, 0, 1172, 1186, 0, 0, 0, -2, 0, + -2, 1197, 0, 1241, 0, 1233, 0, 1225, 0, 1228, + 898, 898, -2, 726, 731, 0, 654, 1241, 1258, 0, + 1279, 0, 0, 0, 0, 0, 0, 0, 1259, 0, + 1272, 503, 1411, -2, 1425, 1427, 0, 1185, 1430, 1431, + 0, 0, 0, 0, 0, 0, 1480, 1439, 0, 0, + 1443, 1444, 1445, 0, 0, 1448, 0, 1789, 1790, 0, + 1452, 0, 0, 0, 0, 0, 0, 0, 1389, 462, + 463, 0, 465, 466, 1882, 1450, 505, 459, 1882, 475, + 1340, 1344, 1345, 1342, 528, 525, 526, 1085, 1088, 1099, + 1108, 753, 833, 355, 356, 945, 0, 935, 937, 968, + 965, 0, 0, 1032, 888, 896, 2243, 2245, 2242, 116, + 121, 0, 0, 800, 0, 797, 0, 791, 793, 177, + 761, 798, 137, 169, 0, 0, 1517, 0, 0, 0, + 1617, 1667, 1588, 1589, 0, 1577, 0, 1571, 1572, 1573, + 1578, 0, 0, 820, 815, 64, 95, 0, 98, 68, + 83, 0, 84, 0, 0, 0, 0, 1034, 1041, 1055, + 1191, 1371, 1040, 0, 0, 541, 546, 0, 549, 550, + 1097, 1096, 0, 1083, 1084, 0, 1091, 0, 0, 1181, + 1182, 1183, 1293, 1294, 1295, 1251, 1199, 0, -2, 1304, + 0, 0, 1195, 1217, 1251, 0, 0, 1229, 0, 1236, + 0, 1234, 1227, 838, 727, 1238, 451, 1290, 1280, 0, + 1282, 0, 0, 0, 0, 1261, -2, 0, 1426, 1428, + 1429, 1432, 1433, 1434, 1485, 1486, 1487, 0, 0, 1437, + 1482, 1483, 1484, 1438, 0, 0, 0, 0, 0, 1787, + 1788, 1478, 0, 0, 1396, 1398, 1399, 1400, 1401, 1402, + 1403, 1404, 1405, 1397, 0, 0, 0, 1388, 1390, 464, + 0, 0, 1882, 1098, 352, 0, 0, 969, 971, 966, + 967, 890, 0, 0, 0, 0, 111, 113, 128, 0, + 799, 168, 0, 800, 139, 0, 160, 0, 1218, 0, + 1528, 0, 0, 0, 1587, 1574, 0, 0, 0, 0, + 0, 1791, 1792, 1793, 0, 1534, 1538, 94, 0, 66, + 0, 85, 86, 0, 0, 0, 0, 1056, 1057, 1065, + 1066, 0, 1068, 1069, 547, 1078, 1086, 1090, 1093, 0, + 1145, 1253, 0, 1201, 1184, 1306, 1882, 1204, 1253, 0, + 1298, 1882, 1882, 1219, 0, 1231, 0, 1243, 0, 1237, + 833, 440, 0, 1240, 1276, 1281, 1283, 1285, 0, 1289, + 1287, 1262, -2, 0, 1270, 0, 0, 1435, 1436, 0, + 0, 1686, 1882, 0, 1468, 0, 1145, 1145, 1145, 1145, + 0, 516, 474, 0, 946, 960, 0, 897, 0, 0, + 0, 0, 0, 789, 129, 0, 138, 157, 0, 170, + 171, 0, 0, 0, 0, 1210, 0, 1476, 1477, 0, + 1563, 0, 0, 0, 1567, 1568, 1569, 1570, 65, 68, + 0, 0, 87, 0, 1033, 0, 1067, 1092, 1094, 1144, + 1194, 0, 1290, 1305, 0, 1196, 1297, 0, 0, 0, + 1230, 1242, 0, 1245, 725, 1239, 1257, 0, 1286, 1263, + 1271, 0, 1266, 0, 0, 0, 1481, 0, 1442, 0, + 1447, 1456, 1469, 0, 0, 1377, 0, 1379, 0, 1383, + 0, 1385, 0, 0, 476, 970, 972, 0, 1737, 892, + 893, 0, 802, 792, 140, 144, 0, 166, 163, 0, + 172, 0, 0, 0, 0, 1206, 0, 1474, 0, 1564, + 1565, 1566, 67, 69, 89, 0, 1035, 1036, 1049, 1146, + 1882, 1882, 0, 0, 0, 1152, 1153, 1882, 1882, 1882, + 1882, 0, 1278, 1310, 1299, 1300, 1301, 1244, 1277, 1265, + 0, -2, 1273, 0, 0, 1739, 1749, 1750, 1440, 1446, + 1455, 1457, 1458, 0, 1470, 1471, 1472, 1479, 1145, 1145, + 1145, 1145, 1387, 891, 0, 0, 801, 0, 131, 0, 0, 161, 162, 164, 0, 173, 0, 175, 176, 0, - 0, 1578, 1040, 0, 0, 1152, 1153, 0, 0, 0, - 0, 0, 1257, 0, 1259, 1270, -2, 0, 1278, 0, - 1444, 1462, 0, 1463, 0, 0, 0, 1381, 1383, 1387, - 1389, 1740, 897, 806, 1219, 0, 145, 0, 147, 149, - 150, 1415, 158, 159, 165, 174, 0, 0, 1025, 1041, - 0, 1150, 1151, 1154, 1157, 1158, 1159, 1160, 0, 1261, - 1277, 1743, 1464, 1466, 1467, 0, 0, 1465, 0, 132, - 133, 0, 146, 0, 0, 1214, 1478, 1042, 1258, 1255, - 1468, 1470, 1469, 898, 0, 0, 148, 1416, 134, 135, - 136, 0, 1417, + 0, 1575, 1037, 0, 0, 1149, 1150, 0, 0, 0, + 0, 0, 1254, 0, 1256, 1267, -2, 0, 1275, 0, + 1441, 1459, 0, 1460, 0, 0, 0, 1378, 1380, 1384, + 1386, 1737, 894, 803, 1216, 0, 145, 0, 147, 149, + 150, 1412, 158, 159, 165, 174, 0, 0, 1022, 1038, + 0, 1147, 1148, 1151, 1154, 1155, 1156, 1157, 0, 1258, + 1274, 1740, 1461, 1463, 1464, 0, 0, 1462, 0, 132, + 133, 0, 146, 0, 0, 1211, 1475, 1039, 1255, 1252, + 1465, 1467, 1466, 895, 0, 0, 148, 1413, 134, 135, + 136, 0, 1414, } var yyTok1 = [...]int{ @@ -16108,30 +16043,9 @@ yydefault: } yyVAL.union = yyLOCAL case 726: - yyDollar = yyS[yypt-12 : yypt+1] - var yyLOCAL tree.Statement -//line mysql_sql.y:4839 - { - // Single-Table Syntax - t := &tree.AliasedTableExpr{ - Expr: yyDollar[7].tableNameUnion(), - As: tree.AliasClause{ - Alias: tree.Identifier(yyDollar[9].str), - }, - } - yyLOCAL = &tree.Delete{ - Tables: tree.TableExprs{t}, - Where: yyDollar[10].whereUnion(), - OrderBy: yyDollar[11].orderByUnion(), - Limit: yyDollar[12].limitUnion(), - IsCdc: true, - } - } - yyVAL.union = yyLOCAL - case 727: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4856 +//line mysql_sql.y:4839 { // Multiple-Table Syntax yyLOCAL = &tree.Delete{ @@ -16141,10 +16055,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 728: + case 727: yyDollar = yyS[yypt-9 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4869 +//line mysql_sql.y:4852 { // Multiple-Table Syntax yyLOCAL = &tree.Delete{ @@ -16154,36 +16068,36 @@ yydefault: } } yyVAL.union = yyLOCAL - case 729: + case 728: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.TableExprs -//line mysql_sql.y:4880 +//line mysql_sql.y:4863 { yyLOCAL = tree.TableExprs{yyDollar[1].tableNameUnion()} } yyVAL.union = yyLOCAL - case 730: + case 729: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableExprs -//line mysql_sql.y:4884 +//line mysql_sql.y:4867 { yyLOCAL = append(yyDollar[1].tableExprsUnion(), yyDollar[3].tableNameUnion()) } yyVAL.union = yyLOCAL - case 731: + case 730: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.TableName -//line mysql_sql.y:4890 +//line mysql_sql.y:4873 { tblName := yylex.(*Lexer).GetDbOrTblName(yyDollar[1].cstrUnion().Origin()) prefix := tree.ObjectNamePrefix{ExplicitSchema: false} yyLOCAL = tree.NewTableName(tree.Identifier(tblName), prefix, nil) } yyVAL.union = yyLOCAL - case 732: + case 731: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.TableName -//line mysql_sql.y:4896 +//line mysql_sql.y:4879 { dbName := yylex.(*Lexer).GetDbOrTblName(yyDollar[1].cstrUnion().Origin()) tblName := yylex.(*Lexer).GetDbOrTblName(yyDollar[3].cstrUnion().Origin()) @@ -16191,35 +16105,35 @@ yydefault: yyLOCAL = tree.NewTableName(tree.Identifier(tblName), prefix, nil) } yyVAL.union = yyLOCAL - case 733: + case 732: yyDollar = yyS[yypt-0 : yypt+1] -//line mysql_sql.y:4905 +//line mysql_sql.y:4888 { } - case 734: + case 733: yyDollar = yyS[yypt-2 : yypt+1] -//line mysql_sql.y:4907 +//line mysql_sql.y:4890 { } - case 735: + case 734: yyDollar = yyS[yypt-0 : yypt+1] -//line mysql_sql.y:4910 +//line mysql_sql.y:4893 { } - case 740: + case 739: yyDollar = yyS[yypt-0 : yypt+1] -//line mysql_sql.y:4919 +//line mysql_sql.y:4902 { } - case 742: + case 741: yyDollar = yyS[yypt-0 : yypt+1] -//line mysql_sql.y:4923 +//line mysql_sql.y:4906 { } - case 744: + case 743: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:4928 +//line mysql_sql.y:4911 { rep := yyDollar[4].replaceUnion() rep.Table = yyDollar[2].tableExprUnion() @@ -16227,22 +16141,10 @@ yydefault: yyLOCAL = rep } yyVAL.union = yyLOCAL - case 745: - yyDollar = yyS[yypt-5 : yypt+1] - var yyLOCAL tree.Statement -//line mysql_sql.y:4935 - { - rep := yyDollar[5].replaceUnion() - rep.Table = yyDollar[3].tableExprUnion() - rep.PartitionNames = yyDollar[4].identifierListUnion() - rep.IsCdc = true - yyLOCAL = rep - } - yyVAL.union = yyLOCAL - case 746: + case 744: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.Replace -//line mysql_sql.y:4945 +//line mysql_sql.y:4920 { vc := tree.NewValuesClause(yyDollar[2].rowsExprsUnion()) yyLOCAL = &tree.Replace{ @@ -16250,20 +16152,20 @@ yydefault: } } yyVAL.union = yyLOCAL - case 747: + case 745: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.Replace -//line mysql_sql.y:4952 +//line mysql_sql.y:4927 { yyLOCAL = &tree.Replace{ Rows: yyDollar[1].selectUnion(), } } yyVAL.union = yyLOCAL - case 748: + case 746: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *tree.Replace -//line mysql_sql.y:4958 +//line mysql_sql.y:4933 { vc := tree.NewValuesClause(yyDollar[5].rowsExprsUnion()) yyLOCAL = &tree.Replace{ @@ -16272,10 +16174,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 749: + case 747: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.Replace -//line mysql_sql.y:4966 +//line mysql_sql.y:4941 { vc := tree.NewValuesClause(yyDollar[4].rowsExprsUnion()) yyLOCAL = &tree.Replace{ @@ -16283,10 +16185,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 750: + case 748: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.Replace -//line mysql_sql.y:4973 +//line mysql_sql.y:4948 { yyLOCAL = &tree.Replace{ Columns: yyDollar[2].identifierListUnion(), @@ -16294,10 +16196,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 751: + case 749: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.Replace -//line mysql_sql.y:4980 +//line mysql_sql.y:4955 { if yyDollar[2].assignmentsUnion() == nil { yylex.Error("the set list of replace can not be empty") @@ -16316,10 +16218,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 752: + case 750: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:5000 +//line mysql_sql.y:4975 { ins := yyDollar[4].insertUnion() ins.Table = yyDollar[2].tableExprUnion() @@ -16328,10 +16230,10 @@ yydefault: yyLOCAL = ins } yyVAL.union = yyLOCAL - case 753: + case 751: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:5008 +//line mysql_sql.y:4983 { ins := yyDollar[5].insertUnion() ins.Table = yyDollar[3].tableExprUnion() @@ -16340,39 +16242,26 @@ yydefault: yyLOCAL = ins } yyVAL.union = yyLOCAL - case 754: - yyDollar = yyS[yypt-6 : yypt+1] - var yyLOCAL tree.Statement -//line mysql_sql.y:5016 - { - ins := yyDollar[5].insertUnion() - ins.Table = yyDollar[3].tableExprUnion() - ins.PartitionNames = yyDollar[4].identifierListUnion() - ins.OnDuplicateUpdate = yyDollar[6].updateExprsUnion() - ins.IsCdc = true - yyLOCAL = ins - } - yyVAL.union = yyLOCAL - case 755: + case 752: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.IdentifierList -//line mysql_sql.y:5027 +//line mysql_sql.y:4993 { yyLOCAL = tree.IdentifierList{tree.Identifier(yyDollar[1].str)} } yyVAL.union = yyLOCAL - case 756: + case 753: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.IdentifierList -//line mysql_sql.y:5031 +//line mysql_sql.y:4997 { yyLOCAL = append(yyDollar[1].identifierListUnion(), tree.Identifier(yyDollar[3].str)) } yyVAL.union = yyLOCAL - case 757: + case 754: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.Insert -//line mysql_sql.y:5037 +//line mysql_sql.y:5003 { vc := tree.NewValuesClause(yyDollar[2].rowsExprsUnion()) yyLOCAL = &tree.Insert{ @@ -16380,20 +16269,20 @@ yydefault: } } yyVAL.union = yyLOCAL - case 758: + case 755: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.Insert -//line mysql_sql.y:5044 +//line mysql_sql.y:5010 { yyLOCAL = &tree.Insert{ Rows: yyDollar[1].selectUnion(), } } yyVAL.union = yyLOCAL - case 759: + case 756: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *tree.Insert -//line mysql_sql.y:5050 +//line mysql_sql.y:5016 { vc := tree.NewValuesClause(yyDollar[5].rowsExprsUnion()) yyLOCAL = &tree.Insert{ @@ -16402,10 +16291,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 760: + case 757: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.Insert -//line mysql_sql.y:5058 +//line mysql_sql.y:5024 { vc := tree.NewValuesClause(yyDollar[4].rowsExprsUnion()) yyLOCAL = &tree.Insert{ @@ -16413,10 +16302,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 761: + case 758: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.Insert -//line mysql_sql.y:5065 +//line mysql_sql.y:5031 { yyLOCAL = &tree.Insert{ Columns: yyDollar[2].identifierListUnion(), @@ -16424,10 +16313,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 762: + case 759: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.Insert -//line mysql_sql.y:5072 +//line mysql_sql.y:5038 { if yyDollar[2].assignmentsUnion() == nil { yylex.Error("the set list of insert can not be empty") @@ -16446,58 +16335,58 @@ yydefault: } } yyVAL.union = yyLOCAL - case 763: + case 760: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.UpdateExprs -//line mysql_sql.y:5091 +//line mysql_sql.y:5057 { yyLOCAL = []*tree.UpdateExpr{} } yyVAL.union = yyLOCAL - case 764: + case 761: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.UpdateExprs -//line mysql_sql.y:5095 +//line mysql_sql.y:5061 { yyLOCAL = yyDollar[5].updateExprsUnion() } yyVAL.union = yyLOCAL - case 765: + case 762: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.UpdateExprs -//line mysql_sql.y:5099 +//line mysql_sql.y:5065 { yyLOCAL = []*tree.UpdateExpr{nil} } yyVAL.union = yyLOCAL - case 766: + case 763: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL []*tree.Assignment -//line mysql_sql.y:5104 +//line mysql_sql.y:5070 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 767: + case 764: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []*tree.Assignment -//line mysql_sql.y:5108 +//line mysql_sql.y:5074 { yyLOCAL = []*tree.Assignment{yyDollar[1].assignmentUnion()} } yyVAL.union = yyLOCAL - case 768: + case 765: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []*tree.Assignment -//line mysql_sql.y:5112 +//line mysql_sql.y:5078 { yyLOCAL = append(yyDollar[1].assignmentsUnion(), yyDollar[3].assignmentUnion()) } yyVAL.union = yyLOCAL - case 769: + case 766: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.Assignment -//line mysql_sql.y:5118 +//line mysql_sql.y:5084 { yyLOCAL = &tree.Assignment{ Column: tree.Identifier(yyDollar[1].str), @@ -16505,155 +16394,155 @@ yydefault: } } yyVAL.union = yyLOCAL - case 770: + case 767: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.IdentifierList -//line mysql_sql.y:5127 +//line mysql_sql.y:5093 { yyLOCAL = tree.IdentifierList{tree.Identifier(yyDollar[1].str)} } yyVAL.union = yyLOCAL - case 771: + case 768: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.IdentifierList -//line mysql_sql.y:5131 +//line mysql_sql.y:5097 { yyLOCAL = append(yyDollar[1].identifierListUnion(), tree.Identifier(yyDollar[3].str)) } yyVAL.union = yyLOCAL - case 772: + case 769: yyDollar = yyS[yypt-1 : yypt+1] -//line mysql_sql.y:5137 +//line mysql_sql.y:5103 { yyVAL.str = yylex.(*Lexer).GetDbOrTblName(yyDollar[1].cstrUnion().Origin()) } - case 773: + case 770: yyDollar = yyS[yypt-3 : yypt+1] -//line mysql_sql.y:5141 +//line mysql_sql.y:5107 { yyVAL.str = yylex.(*Lexer).GetDbOrTblName(yyDollar[3].cstrUnion().Origin()) } - case 774: + case 771: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []tree.Exprs -//line mysql_sql.y:5147 +//line mysql_sql.y:5113 { yyLOCAL = []tree.Exprs{yyDollar[1].exprsUnion()} } yyVAL.union = yyLOCAL - case 775: + case 772: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []tree.Exprs -//line mysql_sql.y:5151 +//line mysql_sql.y:5117 { yyLOCAL = append(yyDollar[1].rowsExprsUnion(), yyDollar[3].exprsUnion()) } yyVAL.union = yyLOCAL - case 776: + case 773: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Exprs -//line mysql_sql.y:5157 +//line mysql_sql.y:5123 { yyLOCAL = yyDollar[3].exprsUnion() } yyVAL.union = yyLOCAL - case 777: + case 774: yyDollar = yyS[yypt-0 : yypt+1] -//line mysql_sql.y:5162 +//line mysql_sql.y:5128 { } - case 779: + case 776: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.Exprs -//line mysql_sql.y:5166 +//line mysql_sql.y:5132 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 781: + case 778: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Exprs -//line mysql_sql.y:5173 +//line mysql_sql.y:5139 { yyLOCAL = tree.Exprs{yyDollar[1].exprUnion()} } yyVAL.union = yyLOCAL - case 782: + case 779: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Exprs -//line mysql_sql.y:5177 +//line mysql_sql.y:5143 { yyLOCAL = append(yyDollar[1].exprsUnion(), yyDollar[3].exprUnion()) } yyVAL.union = yyLOCAL - case 784: + case 781: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:5184 +//line mysql_sql.y:5150 { yyLOCAL = &tree.DefaultVal{} } yyVAL.union = yyLOCAL - case 785: + case 782: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.IdentifierList -//line mysql_sql.y:5189 +//line mysql_sql.y:5155 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 786: + case 783: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.IdentifierList -//line mysql_sql.y:5193 +//line mysql_sql.y:5159 { yyLOCAL = yyDollar[3].identifierListUnion() } yyVAL.union = yyLOCAL - case 787: + case 784: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.IdentifierList -//line mysql_sql.y:5199 +//line mysql_sql.y:5165 { yyLOCAL = tree.IdentifierList{tree.Identifier(yyDollar[1].cstrUnion().Compare())} } yyVAL.union = yyLOCAL - case 788: + case 785: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.IdentifierList -//line mysql_sql.y:5203 +//line mysql_sql.y:5169 { yyLOCAL = append(yyDollar[1].identifierListUnion(), tree.Identifier(yyDollar[3].cstrUnion().Compare())) } yyVAL.union = yyLOCAL - case 789: + case 786: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.TableExpr -//line mysql_sql.y:5209 +//line mysql_sql.y:5175 { yyLOCAL = yyDollar[2].tableNameUnion() } yyVAL.union = yyLOCAL - case 790: + case 787: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.TableExpr -//line mysql_sql.y:5213 +//line mysql_sql.y:5179 { yyLOCAL = yyDollar[1].tableNameUnion() } yyVAL.union = yyLOCAL - case 791: + case 788: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.ExportParam -//line mysql_sql.y:5218 +//line mysql_sql.y:5184 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 792: + case 789: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL *tree.ExportParam -//line mysql_sql.y:5222 +//line mysql_sql.y:5188 { yyLOCAL = &tree.ExportParam{ Outfile: true, @@ -16666,10 +16555,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 793: + case 790: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.Fields -//line mysql_sql.y:5235 +//line mysql_sql.y:5201 { yyLOCAL = &tree.Fields{ Terminated: &tree.Terminated{ @@ -16681,10 +16570,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 794: + case 791: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.Fields -//line mysql_sql.y:5246 +//line mysql_sql.y:5212 { yyLOCAL = &tree.Fields{ Terminated: &tree.Terminated{ @@ -16696,10 +16585,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 795: + case 792: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL *tree.Fields -//line mysql_sql.y:5257 +//line mysql_sql.y:5223 { str := yyDollar[7].str if str != "\\" && len(str) > 1 { @@ -16722,10 +16611,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 796: + case 793: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.Fields -//line mysql_sql.y:5279 +//line mysql_sql.y:5245 { str := yyDollar[4].str if str != "\\" && len(str) > 1 { @@ -16748,10 +16637,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 797: + case 794: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.Lines -//line mysql_sql.y:5302 +//line mysql_sql.y:5268 { yyLOCAL = &tree.Lines{ TerminatedBy: &tree.Terminated{ @@ -16760,10 +16649,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 798: + case 795: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.Lines -//line mysql_sql.y:5310 +//line mysql_sql.y:5276 { yyLOCAL = &tree.Lines{ TerminatedBy: &tree.Terminated{ @@ -16772,18 +16661,18 @@ yydefault: } } yyVAL.union = yyLOCAL - case 799: + case 796: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:5319 +//line mysql_sql.y:5285 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 800: + case 797: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:5323 +//line mysql_sql.y:5289 { str := strings.ToLower(yyDollar[2].str) if str == "true" { @@ -16796,131 +16685,131 @@ yydefault: } } yyVAL.union = yyLOCAL - case 801: + case 798: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL int64 -//line mysql_sql.y:5336 +//line mysql_sql.y:5302 { yyLOCAL = 0 } yyVAL.union = yyLOCAL - case 802: + case 799: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL int64 -//line mysql_sql.y:5340 +//line mysql_sql.y:5306 { yyLOCAL = yyDollar[2].item.(int64) } yyVAL.union = yyLOCAL - case 803: + case 800: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL []string -//line mysql_sql.y:5345 +//line mysql_sql.y:5311 { yyLOCAL = []string{} } yyVAL.union = yyLOCAL - case 804: + case 801: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL []string -//line mysql_sql.y:5349 +//line mysql_sql.y:5315 { yyLOCAL = yyDollar[3].strsUnion() } yyVAL.union = yyLOCAL - case 805: + case 802: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []string -//line mysql_sql.y:5356 +//line mysql_sql.y:5322 { yyLOCAL = make([]string, 0, 4) yyLOCAL = append(yyLOCAL, yyDollar[1].cstrUnion().Compare()) } yyVAL.union = yyLOCAL - case 806: + case 803: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []string -//line mysql_sql.y:5361 +//line mysql_sql.y:5327 { yyLOCAL = append(yyDollar[1].strsUnion(), yyDollar[3].cstrUnion().Compare()) } yyVAL.union = yyLOCAL - case 808: + case 805: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.Select -//line mysql_sql.y:5368 +//line mysql_sql.y:5334 { yyLOCAL = &tree.Select{Select: yyDollar[1].selectStatementUnion()} } yyVAL.union = yyLOCAL - case 809: + case 806: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.Select -//line mysql_sql.y:5374 +//line mysql_sql.y:5340 { yyLOCAL = &tree.Select{Select: yyDollar[1].selectStatementUnion(), TimeWindow: yyDollar[2].timeWindowUnion(), OrderBy: yyDollar[3].orderByUnion(), Limit: yyDollar[4].limitUnion(), Ep: yyDollar[5].exportParmUnion(), SelectLockInfo: yyDollar[6].selectLockInfoUnion()} } yyVAL.union = yyLOCAL - case 810: + case 807: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.Select -//line mysql_sql.y:5378 +//line mysql_sql.y:5344 { yyLOCAL = &tree.Select{Select: yyDollar[1].selectStatementUnion(), TimeWindow: yyDollar[2].timeWindowUnion(), OrderBy: yyDollar[3].orderByUnion(), Ep: yyDollar[4].exportParmUnion()} } yyVAL.union = yyLOCAL - case 811: + case 808: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *tree.Select -//line mysql_sql.y:5382 +//line mysql_sql.y:5348 { yyLOCAL = &tree.Select{Select: yyDollar[1].selectStatementUnion(), TimeWindow: yyDollar[2].timeWindowUnion(), OrderBy: yyDollar[3].orderByUnion(), Limit: yyDollar[4].limitUnion(), Ep: yyDollar[5].exportParmUnion()} } yyVAL.union = yyLOCAL - case 812: + case 809: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL *tree.Select -//line mysql_sql.y:5386 +//line mysql_sql.y:5352 { yyLOCAL = &tree.Select{Select: yyDollar[2].selectStatementUnion(), TimeWindow: yyDollar[3].timeWindowUnion(), OrderBy: yyDollar[4].orderByUnion(), Limit: yyDollar[5].limitUnion(), Ep: yyDollar[6].exportParmUnion(), SelectLockInfo: yyDollar[7].selectLockInfoUnion(), With: yyDollar[1].withClauseUnion()} } yyVAL.union = yyLOCAL - case 813: + case 810: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.Select -//line mysql_sql.y:5390 +//line mysql_sql.y:5356 { yyLOCAL = &tree.Select{Select: yyDollar[2].selectStatementUnion(), OrderBy: yyDollar[3].orderByUnion(), Ep: yyDollar[4].exportParmUnion(), With: yyDollar[1].withClauseUnion()} } yyVAL.union = yyLOCAL - case 814: + case 811: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *tree.Select -//line mysql_sql.y:5394 +//line mysql_sql.y:5360 { yyLOCAL = &tree.Select{Select: yyDollar[2].selectStatementUnion(), OrderBy: yyDollar[3].orderByUnion(), Limit: yyDollar[4].limitUnion(), Ep: yyDollar[5].exportParmUnion(), With: yyDollar[1].withClauseUnion()} } yyVAL.union = yyLOCAL - case 815: + case 812: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.TimeWindow -//line mysql_sql.y:5399 +//line mysql_sql.y:5365 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 816: + case 813: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.TimeWindow -//line mysql_sql.y:5403 +//line mysql_sql.y:5369 { yyLOCAL = yyDollar[1].timeWindowUnion() } yyVAL.union = yyLOCAL - case 817: + case 814: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.TimeWindow -//line mysql_sql.y:5409 +//line mysql_sql.y:5375 { yyLOCAL = &tree.TimeWindow{ Interval: yyDollar[1].timeIntervalUnion(), @@ -16929,10 +16818,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 818: + case 815: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL *tree.Interval -//line mysql_sql.y:5419 +//line mysql_sql.y:5385 { str := fmt.Sprintf("%v", yyDollar[5].item) v, errStr := util.GetInt64(yyDollar[5].item) @@ -16947,18 +16836,18 @@ yydefault: } } yyVAL.union = yyLOCAL - case 819: + case 816: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.Sliding -//line mysql_sql.y:5434 +//line mysql_sql.y:5400 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 820: + case 817: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.Sliding -//line mysql_sql.y:5438 +//line mysql_sql.y:5404 { str := fmt.Sprintf("%v", yyDollar[3].item) v, errStr := util.GetInt64(yyDollar[3].item) @@ -16972,28 +16861,28 @@ yydefault: } } yyVAL.union = yyLOCAL - case 821: + case 818: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.Fill -//line mysql_sql.y:5452 +//line mysql_sql.y:5418 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 822: + case 819: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.Fill -//line mysql_sql.y:5456 +//line mysql_sql.y:5422 { yyLOCAL = &tree.Fill{ Mode: yyDollar[3].fillModeUnion(), } } yyVAL.union = yyLOCAL - case 823: + case 820: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.Fill -//line mysql_sql.y:5462 +//line mysql_sql.y:5428 { yyLOCAL = &tree.Fill{ Mode: tree.FillValue, @@ -17001,50 +16890,50 @@ yydefault: } } yyVAL.union = yyLOCAL - case 824: + case 821: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.FillMode -//line mysql_sql.y:5471 +//line mysql_sql.y:5437 { yyLOCAL = tree.FillPrev } yyVAL.union = yyLOCAL - case 825: + case 822: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.FillMode -//line mysql_sql.y:5475 +//line mysql_sql.y:5441 { yyLOCAL = tree.FillNext } yyVAL.union = yyLOCAL - case 826: + case 823: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.FillMode -//line mysql_sql.y:5479 +//line mysql_sql.y:5445 { yyLOCAL = tree.FillNone } yyVAL.union = yyLOCAL - case 827: + case 824: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.FillMode -//line mysql_sql.y:5483 +//line mysql_sql.y:5449 { yyLOCAL = tree.FillNull } yyVAL.union = yyLOCAL - case 828: + case 825: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.FillMode -//line mysql_sql.y:5487 +//line mysql_sql.y:5453 { yyLOCAL = tree.FillLinear } yyVAL.union = yyLOCAL - case 829: + case 826: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.With -//line mysql_sql.y:5493 +//line mysql_sql.y:5459 { yyLOCAL = &tree.With{ IsRecursive: false, @@ -17052,10 +16941,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 830: + case 827: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.With -//line mysql_sql.y:5500 +//line mysql_sql.y:5466 { yyLOCAL = &tree.With{ IsRecursive: true, @@ -17063,26 +16952,26 @@ yydefault: } } yyVAL.union = yyLOCAL - case 831: + case 828: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []*tree.CTE -//line mysql_sql.y:5509 +//line mysql_sql.y:5475 { yyLOCAL = []*tree.CTE{yyDollar[1].cteUnion()} } yyVAL.union = yyLOCAL - case 832: + case 829: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []*tree.CTE -//line mysql_sql.y:5513 +//line mysql_sql.y:5479 { yyLOCAL = append(yyDollar[1].cteListUnion(), yyDollar[3].cteUnion()) } yyVAL.union = yyLOCAL - case 833: + case 830: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.CTE -//line mysql_sql.y:5519 +//line mysql_sql.y:5485 { yyLOCAL = &tree.CTE{ Name: &tree.AliasClause{Alias: tree.Identifier(yyDollar[1].cstrUnion().Compare()), Cols: yyDollar[2].identifierListUnion()}, @@ -17090,196 +16979,196 @@ yydefault: } } yyVAL.union = yyLOCAL - case 834: + case 831: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.IdentifierList -//line mysql_sql.y:5527 +//line mysql_sql.y:5493 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 835: + case 832: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.IdentifierList -//line mysql_sql.y:5531 +//line mysql_sql.y:5497 { yyLOCAL = yyDollar[2].identifierListUnion() } yyVAL.union = yyLOCAL - case 836: + case 833: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.Limit -//line mysql_sql.y:5536 +//line mysql_sql.y:5502 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 837: + case 834: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.Limit -//line mysql_sql.y:5540 +//line mysql_sql.y:5506 { yyLOCAL = yyDollar[1].limitUnion() } yyVAL.union = yyLOCAL - case 838: + case 835: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.Limit -//line mysql_sql.y:5546 +//line mysql_sql.y:5512 { yyLOCAL = &tree.Limit{Count: yyDollar[2].exprUnion()} } yyVAL.union = yyLOCAL - case 839: + case 836: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.Limit -//line mysql_sql.y:5550 +//line mysql_sql.y:5516 { yyLOCAL = &tree.Limit{Offset: yyDollar[2].exprUnion(), Count: yyDollar[4].exprUnion()} } yyVAL.union = yyLOCAL - case 840: + case 837: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.Limit -//line mysql_sql.y:5554 +//line mysql_sql.y:5520 { yyLOCAL = &tree.Limit{Offset: yyDollar[4].exprUnion(), Count: yyDollar[2].exprUnion()} } yyVAL.union = yyLOCAL - case 841: + case 838: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.OrderBy -//line mysql_sql.y:5559 +//line mysql_sql.y:5525 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 842: + case 839: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.OrderBy -//line mysql_sql.y:5563 +//line mysql_sql.y:5529 { yyLOCAL = yyDollar[1].orderByUnion() } yyVAL.union = yyLOCAL - case 843: + case 840: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.OrderBy -//line mysql_sql.y:5569 +//line mysql_sql.y:5535 { yyLOCAL = yyDollar[3].orderByUnion() } yyVAL.union = yyLOCAL - case 844: + case 841: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.OrderBy -//line mysql_sql.y:5575 +//line mysql_sql.y:5541 { yyLOCAL = tree.OrderBy{yyDollar[1].orderUnion()} } yyVAL.union = yyLOCAL - case 845: + case 842: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.OrderBy -//line mysql_sql.y:5579 +//line mysql_sql.y:5545 { yyLOCAL = append(yyDollar[1].orderByUnion(), yyDollar[3].orderUnion()) } yyVAL.union = yyLOCAL - case 846: + case 843: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.Order -//line mysql_sql.y:5585 +//line mysql_sql.y:5551 { yyLOCAL = &tree.Order{Expr: yyDollar[1].exprUnion(), Direction: yyDollar[2].directionUnion(), NullsPosition: yyDollar[3].nullsPositionUnion()} } yyVAL.union = yyLOCAL - case 847: + case 844: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.Direction -//line mysql_sql.y:5590 +//line mysql_sql.y:5556 { yyLOCAL = tree.DefaultDirection } yyVAL.union = yyLOCAL - case 848: + case 845: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Direction -//line mysql_sql.y:5594 +//line mysql_sql.y:5560 { yyLOCAL = tree.Ascending } yyVAL.union = yyLOCAL - case 849: + case 846: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Direction -//line mysql_sql.y:5598 +//line mysql_sql.y:5564 { yyLOCAL = tree.Descending } yyVAL.union = yyLOCAL - case 850: + case 847: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.NullsPosition -//line mysql_sql.y:5603 +//line mysql_sql.y:5569 { yyLOCAL = tree.DefaultNullsPosition } yyVAL.union = yyLOCAL - case 851: + case 848: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.NullsPosition -//line mysql_sql.y:5607 +//line mysql_sql.y:5573 { yyLOCAL = tree.NullsFirst } yyVAL.union = yyLOCAL - case 852: + case 849: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.NullsPosition -//line mysql_sql.y:5611 +//line mysql_sql.y:5577 { yyLOCAL = tree.NullsLast } yyVAL.union = yyLOCAL - case 853: + case 850: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.SelectLockInfo -//line mysql_sql.y:5616 +//line mysql_sql.y:5582 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 854: + case 851: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.SelectLockInfo -//line mysql_sql.y:5620 +//line mysql_sql.y:5586 { yyLOCAL = &tree.SelectLockInfo{ LockType: tree.SelectLockForUpdate, } } yyVAL.union = yyLOCAL - case 855: + case 852: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.SelectStatement -//line mysql_sql.y:5628 +//line mysql_sql.y:5594 { yyLOCAL = &tree.ParenSelect{Select: yyDollar[2].selectUnion()} } yyVAL.union = yyLOCAL - case 856: + case 853: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.SelectStatement -//line mysql_sql.y:5632 +//line mysql_sql.y:5598 { yyLOCAL = &tree.ParenSelect{Select: &tree.Select{Select: yyDollar[2].selectStatementUnion()}} } yyVAL.union = yyLOCAL - case 857: + case 854: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.SelectStatement -//line mysql_sql.y:5636 +//line mysql_sql.y:5602 { valuesStmt := yyDollar[2].statementUnion().(*tree.ValuesStatement) yyLOCAL = &tree.ParenSelect{Select: &tree.Select{ @@ -17292,18 +17181,18 @@ yydefault: }} } yyVAL.union = yyLOCAL - case 858: + case 855: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.SelectStatement -//line mysql_sql.y:5650 +//line mysql_sql.y:5616 { yyLOCAL = yyDollar[1].selectStatementUnion() } yyVAL.union = yyLOCAL - case 859: + case 856: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.SelectStatement -//line mysql_sql.y:5654 +//line mysql_sql.y:5620 { yyLOCAL = &tree.UnionClause{ Type: yyDollar[2].unionTypeRecordUnion().Type, @@ -17314,10 +17203,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 860: + case 857: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.SelectStatement -//line mysql_sql.y:5664 +//line mysql_sql.y:5630 { yyLOCAL = &tree.UnionClause{ Type: yyDollar[2].unionTypeRecordUnion().Type, @@ -17328,10 +17217,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 861: + case 858: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.SelectStatement -//line mysql_sql.y:5674 +//line mysql_sql.y:5640 { yyLOCAL = &tree.UnionClause{ Type: yyDollar[2].unionTypeRecordUnion().Type, @@ -17342,10 +17231,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 862: + case 859: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.SelectStatement -//line mysql_sql.y:5684 +//line mysql_sql.y:5650 { yyLOCAL = &tree.UnionClause{ Type: yyDollar[2].unionTypeRecordUnion().Type, @@ -17356,10 +17245,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 863: + case 860: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.UnionTypeRecord -//line mysql_sql.y:5696 +//line mysql_sql.y:5662 { yyLOCAL = &tree.UnionTypeRecord{ Type: tree.UNION, @@ -17368,10 +17257,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 864: + case 861: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.UnionTypeRecord -//line mysql_sql.y:5704 +//line mysql_sql.y:5670 { yyLOCAL = &tree.UnionTypeRecord{ Type: tree.UNION, @@ -17380,10 +17269,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 865: + case 862: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.UnionTypeRecord -//line mysql_sql.y:5712 +//line mysql_sql.y:5678 { yyLOCAL = &tree.UnionTypeRecord{ Type: tree.UNION, @@ -17392,10 +17281,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 866: + case 863: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.UnionTypeRecord -//line mysql_sql.y:5721 +//line mysql_sql.y:5687 { yyLOCAL = &tree.UnionTypeRecord{ Type: tree.EXCEPT, @@ -17404,10 +17293,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 867: + case 864: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.UnionTypeRecord -//line mysql_sql.y:5729 +//line mysql_sql.y:5695 { yyLOCAL = &tree.UnionTypeRecord{ Type: tree.EXCEPT, @@ -17416,10 +17305,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 868: + case 865: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.UnionTypeRecord -//line mysql_sql.y:5737 +//line mysql_sql.y:5703 { yyLOCAL = &tree.UnionTypeRecord{ Type: tree.EXCEPT, @@ -17428,10 +17317,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 869: + case 866: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.UnionTypeRecord -//line mysql_sql.y:5745 +//line mysql_sql.y:5711 { yyLOCAL = &tree.UnionTypeRecord{ Type: tree.INTERSECT, @@ -17440,10 +17329,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 870: + case 867: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.UnionTypeRecord -//line mysql_sql.y:5753 +//line mysql_sql.y:5719 { yyLOCAL = &tree.UnionTypeRecord{ Type: tree.INTERSECT, @@ -17452,10 +17341,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 871: + case 868: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.UnionTypeRecord -//line mysql_sql.y:5761 +//line mysql_sql.y:5727 { yyLOCAL = &tree.UnionTypeRecord{ Type: tree.INTERSECT, @@ -17464,10 +17353,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 872: + case 869: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.UnionTypeRecord -//line mysql_sql.y:5769 +//line mysql_sql.y:5735 { yyLOCAL = &tree.UnionTypeRecord{ Type: tree.UT_MINUS, @@ -17476,10 +17365,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 873: + case 870: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.UnionTypeRecord -//line mysql_sql.y:5777 +//line mysql_sql.y:5743 { yyLOCAL = &tree.UnionTypeRecord{ Type: tree.UT_MINUS, @@ -17488,10 +17377,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 874: + case 871: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.UnionTypeRecord -//line mysql_sql.y:5785 +//line mysql_sql.y:5751 { yyLOCAL = &tree.UnionTypeRecord{ Type: tree.UT_MINUS, @@ -17500,10 +17389,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 875: + case 872: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL tree.SelectStatement -//line mysql_sql.y:5795 +//line mysql_sql.y:5761 { yyLOCAL = &tree.SelectClause{ Distinct: tree.QuerySpecOptionDistinct&yyDollar[2].selectOptionsUnion() != 0, @@ -17516,146 +17405,146 @@ yydefault: } } yyVAL.union = yyLOCAL - case 876: + case 873: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL uint64 -//line mysql_sql.y:5808 +//line mysql_sql.y:5774 { yyLOCAL = tree.QuerySpecOptionNone } yyVAL.union = yyLOCAL - case 877: + case 874: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL uint64 -//line mysql_sql.y:5812 +//line mysql_sql.y:5778 { yyLOCAL = yyDollar[1].selectOptionsUnion() } yyVAL.union = yyLOCAL - case 878: + case 875: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL uint64 -//line mysql_sql.y:5818 +//line mysql_sql.y:5784 { yyLOCAL = yyDollar[1].selectOptionUnion() } yyVAL.union = yyLOCAL - case 879: + case 876: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL uint64 -//line mysql_sql.y:5822 +//line mysql_sql.y:5788 { yyLOCAL = yyDollar[1].selectOptionsUnion() | yyDollar[2].selectOptionUnion() } yyVAL.union = yyLOCAL - case 880: + case 877: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL uint64 -//line mysql_sql.y:5828 +//line mysql_sql.y:5794 { yyLOCAL = tree.QuerySpecOptionSqlSmallResult } yyVAL.union = yyLOCAL - case 881: + case 878: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL uint64 -//line mysql_sql.y:5832 +//line mysql_sql.y:5798 { yyLOCAL = tree.QuerySpecOptionSqlBigResult } yyVAL.union = yyLOCAL - case 882: + case 879: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL uint64 -//line mysql_sql.y:5836 +//line mysql_sql.y:5802 { yyLOCAL = tree.QuerySpecOptionSqlBufferResult } yyVAL.union = yyLOCAL - case 883: + case 880: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL uint64 -//line mysql_sql.y:5840 +//line mysql_sql.y:5806 { yyLOCAL = tree.QuerySpecOptionStraightJoin } yyVAL.union = yyLOCAL - case 884: + case 881: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL uint64 -//line mysql_sql.y:5844 +//line mysql_sql.y:5810 { yyLOCAL = tree.QuerySpecOptionHighPriority } yyVAL.union = yyLOCAL - case 885: + case 882: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL uint64 -//line mysql_sql.y:5848 +//line mysql_sql.y:5814 { yyLOCAL = tree.QuerySpecOptionSqlCalcFoundRows } yyVAL.union = yyLOCAL - case 886: + case 883: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL uint64 -//line mysql_sql.y:5852 +//line mysql_sql.y:5818 { yyLOCAL = tree.QuerySpecOptionSqlNoCache } yyVAL.union = yyLOCAL - case 887: + case 884: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL uint64 -//line mysql_sql.y:5856 +//line mysql_sql.y:5822 { yyLOCAL = tree.QuerySpecOptionAll } yyVAL.union = yyLOCAL - case 888: + case 885: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL uint64 -//line mysql_sql.y:5860 +//line mysql_sql.y:5826 { yyLOCAL = tree.QuerySpecOptionDistinct } yyVAL.union = yyLOCAL - case 889: + case 886: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL uint64 -//line mysql_sql.y:5864 +//line mysql_sql.y:5830 { yyLOCAL = tree.QuerySpecOptionDistinctRow } yyVAL.union = yyLOCAL - case 890: + case 887: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.Where -//line mysql_sql.y:5886 +//line mysql_sql.y:5852 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 891: + case 888: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.Where -//line mysql_sql.y:5890 +//line mysql_sql.y:5856 { yyLOCAL = &tree.Where{Type: tree.AstHaving, Expr: yyDollar[2].exprUnion()} } yyVAL.union = yyLOCAL - case 892: + case 889: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.GroupByClause -//line mysql_sql.y:5895 +//line mysql_sql.y:5861 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 893: + case 890: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.GroupByClause -//line mysql_sql.y:5899 +//line mysql_sql.y:5865 { exprsList := []tree.Exprs{yyDollar[3].exprsUnion()} yyLOCAL = &tree.GroupByClause{ @@ -17666,10 +17555,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 894: + case 891: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL *tree.GroupByClause -//line mysql_sql.y:5909 +//line mysql_sql.y:5875 { yyLOCAL = &tree.GroupByClause{ GroupByExprsList: yyDollar[6].rowsExprsUnion(), @@ -17679,10 +17568,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 895: + case 892: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.GroupByClause -//line mysql_sql.y:5918 +//line mysql_sql.y:5884 { yyLOCAL = &tree.GroupByClause{ GroupByExprsList: []tree.Exprs{yyDollar[5].exprsUnion()}, @@ -17692,10 +17581,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 896: + case 893: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.GroupByClause -//line mysql_sql.y:5927 +//line mysql_sql.y:5893 { yyLOCAL = &tree.GroupByClause{ GroupByExprsList: []tree.Exprs{yyDollar[5].exprsUnion()}, @@ -17705,106 +17594,106 @@ yydefault: } } yyVAL.union = yyLOCAL - case 897: + case 894: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []tree.Exprs -//line mysql_sql.y:5938 +//line mysql_sql.y:5904 { yyLOCAL = []tree.Exprs{yyDollar[2].exprsUnion()} } yyVAL.union = yyLOCAL - case 898: + case 895: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL []tree.Exprs -//line mysql_sql.y:5942 +//line mysql_sql.y:5908 { yyLOCAL = append(yyDollar[1].rowsExprsUnion(), yyDollar[4].exprsUnion()) } yyVAL.union = yyLOCAL - case 899: + case 896: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:5947 +//line mysql_sql.y:5913 { yyLOCAL = false } yyVAL.union = yyLOCAL - case 900: + case 897: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:5951 +//line mysql_sql.y:5917 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 901: + case 898: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.Where -//line mysql_sql.y:5956 +//line mysql_sql.y:5922 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 902: + case 899: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.Where -//line mysql_sql.y:5960 +//line mysql_sql.y:5926 { yyLOCAL = &tree.Where{Type: tree.AstWhere, Expr: yyDollar[2].exprUnion()} } yyVAL.union = yyLOCAL - case 903: + case 900: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.SelectExprs -//line mysql_sql.y:5966 +//line mysql_sql.y:5932 { yyLOCAL = tree.SelectExprs{yyDollar[1].selectExprUnion()} } yyVAL.union = yyLOCAL - case 904: + case 901: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.SelectExprs -//line mysql_sql.y:5970 +//line mysql_sql.y:5936 { yyLOCAL = append(yyDollar[1].selectExprsUnion(), yyDollar[3].selectExprUnion()) } yyVAL.union = yyLOCAL - case 905: + case 902: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.SelectExpr -//line mysql_sql.y:5976 +//line mysql_sql.y:5942 { yyLOCAL = tree.SelectExpr{Expr: tree.StarExpr()} } yyVAL.union = yyLOCAL - case 906: + case 903: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.SelectExpr -//line mysql_sql.y:5980 +//line mysql_sql.y:5946 { yyLOCAL = tree.SelectExpr{Expr: yyDollar[1].exprUnion(), As: yyDollar[2].cstrUnion()} } yyVAL.union = yyLOCAL - case 907: + case 904: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.SelectExpr -//line mysql_sql.y:5984 +//line mysql_sql.y:5950 { yyLOCAL = tree.SelectExpr{Expr: tree.NewUnresolvedNameWithStar(yyDollar[1].cstrUnion())} } yyVAL.union = yyLOCAL - case 908: + case 905: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.SelectExpr -//line mysql_sql.y:5988 +//line mysql_sql.y:5954 { yyLOCAL = tree.SelectExpr{Expr: tree.NewUnresolvedNameWithStar(yyDollar[1].cstrUnion(), yyDollar[3].cstrUnion())} } yyVAL.union = yyLOCAL - case 909: + case 906: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.From -//line mysql_sql.y:5993 +//line mysql_sql.y:5959 { prefix := tree.ObjectNamePrefix{ExplicitSchema: false} tn := tree.NewTableName(tree.Identifier(""), prefix, nil) @@ -17813,28 +17702,28 @@ yydefault: } } yyVAL.union = yyLOCAL - case 910: + case 907: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.From -//line mysql_sql.y:6001 +//line mysql_sql.y:5967 { yyLOCAL = yyDollar[1].fromUnion() } yyVAL.union = yyLOCAL - case 911: + case 908: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.From -//line mysql_sql.y:6007 +//line mysql_sql.y:5973 { yyLOCAL = &tree.From{ Tables: tree.TableExprs{yyDollar[2].tableExprUnion()}, } } yyVAL.union = yyLOCAL - case 912: + case 909: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.TableExpr -//line mysql_sql.y:6015 +//line mysql_sql.y:5981 { if t, ok := yyDollar[1].tableExprUnion().(*tree.JoinTableExpr); ok { yyLOCAL = t @@ -17845,34 +17734,34 @@ yydefault: } } yyVAL.union = yyLOCAL - case 913: + case 910: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableExpr -//line mysql_sql.y:6025 +//line mysql_sql.y:5991 { yyLOCAL = &tree.JoinTableExpr{Left: yyDollar[1].tableExprUnion(), Right: yyDollar[3].tableExprUnion(), JoinType: tree.JOIN_TYPE_CROSS} } yyVAL.union = yyLOCAL - case 916: + case 913: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.TableExpr -//line mysql_sql.y:6035 +//line mysql_sql.y:6001 { yyLOCAL = yyDollar[1].joinTableExprUnion() } yyVAL.union = yyLOCAL - case 917: + case 914: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.TableExpr -//line mysql_sql.y:6039 +//line mysql_sql.y:6005 { yyLOCAL = yyDollar[1].applyTableExprUnion() } yyVAL.union = yyLOCAL - case 918: + case 915: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.JoinTableExpr -//line mysql_sql.y:6045 +//line mysql_sql.y:6011 { if strings.Contains(yyDollar[2].str, ":") { ss := strings.SplitN(yyDollar[2].str, ":", 2) @@ -17893,10 +17782,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 919: + case 916: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.JoinTableExpr -//line mysql_sql.y:6065 +//line mysql_sql.y:6031 { yyLOCAL = &tree.JoinTableExpr{ Left: yyDollar[1].tableExprUnion(), @@ -17906,10 +17795,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 920: + case 917: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.JoinTableExpr -//line mysql_sql.y:6074 +//line mysql_sql.y:6040 { yyLOCAL = &tree.JoinTableExpr{ Left: yyDollar[1].tableExprUnion(), @@ -17919,10 +17808,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 921: + case 918: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.JoinTableExpr -//line mysql_sql.y:6083 +//line mysql_sql.y:6049 { yyLOCAL = &tree.JoinTableExpr{ Left: yyDollar[1].tableExprUnion(), @@ -17931,10 +17820,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 922: + case 919: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.JoinTableExpr -//line mysql_sql.y:6091 +//line mysql_sql.y:6057 { yyLOCAL = &tree.JoinTableExpr{ Left: yyDollar[1].tableExprUnion(), @@ -17944,10 +17833,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 923: + case 920: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.ApplyTableExpr -//line mysql_sql.y:6102 +//line mysql_sql.y:6068 { yyLOCAL = &tree.ApplyTableExpr{ Left: yyDollar[1].tableExprUnion(), @@ -17956,27 +17845,27 @@ yydefault: } } yyVAL.union = yyLOCAL - case 924: + case 921: yyDollar = yyS[yypt-2 : yypt+1] -//line mysql_sql.y:6112 +//line mysql_sql.y:6078 { yyVAL.str = tree.APPLY_TYPE_CROSS } - case 925: + case 922: yyDollar = yyS[yypt-2 : yypt+1] -//line mysql_sql.y:6116 +//line mysql_sql.y:6082 { yyVAL.str = tree.APPLY_TYPE_OUTER } - case 926: + case 923: yyDollar = yyS[yypt-2 : yypt+1] -//line mysql_sql.y:6122 +//line mysql_sql.y:6088 { yyVAL.str = tree.JOIN_TYPE_NATURAL } - case 927: + case 924: yyDollar = yyS[yypt-2 : yypt+1] -//line mysql_sql.y:6126 +//line mysql_sql.y:6092 { if yyDollar[2].str == tree.JOIN_TYPE_LEFT { yyVAL.str = tree.JOIN_TYPE_NATURAL_LEFT @@ -17984,40 +17873,40 @@ yydefault: yyVAL.str = tree.JOIN_TYPE_NATURAL_RIGHT } } - case 928: + case 925: yyDollar = yyS[yypt-2 : yypt+1] -//line mysql_sql.y:6136 +//line mysql_sql.y:6102 { yyVAL.str = tree.JOIN_TYPE_LEFT } - case 929: + case 926: yyDollar = yyS[yypt-3 : yypt+1] -//line mysql_sql.y:6140 +//line mysql_sql.y:6106 { yyVAL.str = tree.JOIN_TYPE_LEFT } - case 930: + case 927: yyDollar = yyS[yypt-2 : yypt+1] -//line mysql_sql.y:6144 +//line mysql_sql.y:6110 { yyVAL.str = tree.JOIN_TYPE_RIGHT } - case 931: + case 928: yyDollar = yyS[yypt-3 : yypt+1] -//line mysql_sql.y:6148 +//line mysql_sql.y:6114 { yyVAL.str = tree.JOIN_TYPE_RIGHT } - case 932: + case 929: yyDollar = yyS[yypt-2 : yypt+1] -//line mysql_sql.y:6154 +//line mysql_sql.y:6120 { yyVAL.str = tree.JOIN_TYPE_DEDUP } - case 933: + case 930: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:6160 +//line mysql_sql.y:6126 { yyLOCAL = &tree.ValuesStatement{ Rows: yyDollar[2].rowsExprsUnion(), @@ -18026,148 +17915,148 @@ yydefault: } } yyVAL.union = yyLOCAL - case 934: + case 931: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []tree.Exprs -//line mysql_sql.y:6171 +//line mysql_sql.y:6137 { yyLOCAL = []tree.Exprs{yyDollar[1].exprsUnion()} } yyVAL.union = yyLOCAL - case 935: + case 932: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []tree.Exprs -//line mysql_sql.y:6175 +//line mysql_sql.y:6141 { yyLOCAL = append(yyDollar[1].rowsExprsUnion(), yyDollar[3].exprsUnion()) } yyVAL.union = yyLOCAL - case 936: + case 933: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Exprs -//line mysql_sql.y:6181 +//line mysql_sql.y:6147 { yyLOCAL = yyDollar[3].exprsUnion() } yyVAL.union = yyLOCAL - case 937: + case 934: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.JoinCond -//line mysql_sql.y:6187 +//line mysql_sql.y:6153 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 938: + case 935: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.JoinCond -//line mysql_sql.y:6191 +//line mysql_sql.y:6157 { yyLOCAL = &tree.OnJoinCond{Expr: yyDollar[2].exprUnion()} } yyVAL.union = yyLOCAL - case 939: + case 936: yyDollar = yyS[yypt-1 : yypt+1] -//line mysql_sql.y:6197 +//line mysql_sql.y:6163 { yyVAL.str = yyDollar[1].str } - case 940: + case 937: yyDollar = yyS[yypt-3 : yypt+1] -//line mysql_sql.y:6204 +//line mysql_sql.y:6170 { yyVAL.str = yyDollar[2].str } - case 941: + case 938: yyDollar = yyS[yypt-1 : yypt+1] -//line mysql_sql.y:6210 +//line mysql_sql.y:6176 { yyVAL.str = tree.JOIN_TYPE_STRAIGHT } - case 942: + case 939: yyDollar = yyS[yypt-1 : yypt+1] -//line mysql_sql.y:6216 +//line mysql_sql.y:6182 { yyVAL.str = tree.JOIN_TYPE_INNER } - case 943: + case 940: yyDollar = yyS[yypt-2 : yypt+1] -//line mysql_sql.y:6220 +//line mysql_sql.y:6186 { yyVAL.str = tree.JOIN_TYPE_INNER } - case 944: + case 941: yyDollar = yyS[yypt-2 : yypt+1] -//line mysql_sql.y:6224 +//line mysql_sql.y:6190 { yyVAL.str = tree.JOIN_TYPE_CROSS } - case 945: + case 942: yyDollar = yyS[yypt-3 : yypt+1] -//line mysql_sql.y:6228 +//line mysql_sql.y:6194 { yyVAL.str = tree.JOIN_TYPE_CENTROIDX + ":" + yyDollar[2].str } - case 946: + case 943: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.JoinCond -//line mysql_sql.y:6234 +//line mysql_sql.y:6200 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 947: + case 944: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.JoinCond -//line mysql_sql.y:6238 +//line mysql_sql.y:6204 { yyLOCAL = yyDollar[1].joinCondUnion() } yyVAL.union = yyLOCAL - case 948: + case 945: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.JoinCond -//line mysql_sql.y:6244 +//line mysql_sql.y:6210 { yyLOCAL = &tree.OnJoinCond{Expr: yyDollar[2].exprUnion()} } yyVAL.union = yyLOCAL - case 949: + case 946: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.JoinCond -//line mysql_sql.y:6248 +//line mysql_sql.y:6214 { yyLOCAL = &tree.UsingJoinCond{Cols: yyDollar[3].identifierListUnion()} } yyVAL.union = yyLOCAL - case 950: + case 947: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.IdentifierList -//line mysql_sql.y:6254 +//line mysql_sql.y:6220 { yyLOCAL = tree.IdentifierList{tree.Identifier(yyDollar[1].cstrUnion().Compare())} } yyVAL.union = yyLOCAL - case 951: + case 948: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.IdentifierList -//line mysql_sql.y:6258 +//line mysql_sql.y:6224 { yyLOCAL = append(yyDollar[1].identifierListUnion(), tree.Identifier(yyDollar[3].cstrUnion().Compare())) } yyVAL.union = yyLOCAL - case 952: + case 949: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.TableExpr -//line mysql_sql.y:6264 +//line mysql_sql.y:6230 { yyLOCAL = yyDollar[1].aliasedTableExprUnion() } yyVAL.union = yyLOCAL - case 953: + case 950: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableExpr -//line mysql_sql.y:6268 +//line mysql_sql.y:6234 { yyLOCAL = &tree.AliasedTableExpr{ Expr: yyDollar[1].parenTableExprUnion(), @@ -18178,10 +18067,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 954: + case 951: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.TableExpr -//line mysql_sql.y:6278 +//line mysql_sql.y:6244 { if yyDollar[2].str != "" { yyLOCAL = &tree.AliasedTableExpr{ @@ -18195,26 +18084,26 @@ yydefault: } } yyVAL.union = yyLOCAL - case 955: + case 952: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableExpr -//line mysql_sql.y:6291 +//line mysql_sql.y:6257 { yyLOCAL = yyDollar[2].tableExprUnion() } yyVAL.union = yyLOCAL - case 956: + case 953: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.ParenTableExpr -//line mysql_sql.y:6297 +//line mysql_sql.y:6263 { yyLOCAL = &tree.ParenTableExpr{Expr: yyDollar[1].selectStatementUnion().(*tree.ParenSelect).Select} } yyVAL.union = yyLOCAL - case 957: + case 954: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.TableExpr -//line mysql_sql.y:6303 +//line mysql_sql.y:6269 { name := tree.NewUnresolvedName(yyDollar[1].cstrUnion()) yyLOCAL = &tree.TableFunction{ @@ -18227,10 +18116,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 958: + case 955: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.AliasedTableExpr -//line mysql_sql.y:6317 +//line mysql_sql.y:6283 { yyLOCAL = &tree.AliasedTableExpr{ Expr: yyDollar[1].tableNameUnion(), @@ -18241,34 +18130,34 @@ yydefault: } } yyVAL.union = yyLOCAL - case 959: + case 956: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL []*tree.IndexHint -//line mysql_sql.y:6328 +//line mysql_sql.y:6294 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 961: + case 958: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []*tree.IndexHint -//line mysql_sql.y:6335 +//line mysql_sql.y:6301 { yyLOCAL = []*tree.IndexHint{yyDollar[1].indexHintUnion()} } yyVAL.union = yyLOCAL - case 962: + case 959: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL []*tree.IndexHint -//line mysql_sql.y:6339 +//line mysql_sql.y:6305 { yyLOCAL = append(yyDollar[1].indexHintListUnion(), yyDollar[2].indexHintUnion()) } yyVAL.union = yyLOCAL - case 963: + case 960: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *tree.IndexHint -//line mysql_sql.y:6345 +//line mysql_sql.y:6311 { yyLOCAL = &tree.IndexHint{ IndexNames: yyDollar[4].strsUnion(), @@ -18277,182 +18166,182 @@ yydefault: } } yyVAL.union = yyLOCAL - case 964: + case 961: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.IndexHintType -//line mysql_sql.y:6355 +//line mysql_sql.y:6321 { yyLOCAL = tree.HintUse } yyVAL.union = yyLOCAL - case 965: + case 962: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.IndexHintType -//line mysql_sql.y:6359 +//line mysql_sql.y:6325 { yyLOCAL = tree.HintIgnore } yyVAL.union = yyLOCAL - case 966: + case 963: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.IndexHintType -//line mysql_sql.y:6363 +//line mysql_sql.y:6329 { yyLOCAL = tree.HintForce } yyVAL.union = yyLOCAL - case 967: + case 964: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.IndexHintScope -//line mysql_sql.y:6368 +//line mysql_sql.y:6334 { yyLOCAL = tree.HintForScan } yyVAL.union = yyLOCAL - case 968: + case 965: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.IndexHintScope -//line mysql_sql.y:6372 +//line mysql_sql.y:6338 { yyLOCAL = tree.HintForJoin } yyVAL.union = yyLOCAL - case 969: + case 966: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.IndexHintScope -//line mysql_sql.y:6376 +//line mysql_sql.y:6342 { yyLOCAL = tree.HintForOrderBy } yyVAL.union = yyLOCAL - case 970: + case 967: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.IndexHintScope -//line mysql_sql.y:6380 +//line mysql_sql.y:6346 { yyLOCAL = tree.HintForGroupBy } yyVAL.union = yyLOCAL - case 971: + case 968: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL []string -//line mysql_sql.y:6385 +//line mysql_sql.y:6351 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 972: + case 969: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []string -//line mysql_sql.y:6389 +//line mysql_sql.y:6355 { yyLOCAL = []string{yyDollar[1].cstrUnion().Compare()} } yyVAL.union = yyLOCAL - case 973: + case 970: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []string -//line mysql_sql.y:6393 +//line mysql_sql.y:6359 { yyLOCAL = append(yyDollar[1].strsUnion(), yyDollar[3].cstrUnion().Compare()) } yyVAL.union = yyLOCAL - case 974: + case 971: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []string -//line mysql_sql.y:6397 +//line mysql_sql.y:6363 { yyLOCAL = []string{yyDollar[1].str} } yyVAL.union = yyLOCAL - case 975: + case 972: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []string -//line mysql_sql.y:6401 +//line mysql_sql.y:6367 { yyLOCAL = append(yyDollar[1].strsUnion(), yyDollar[3].str) } yyVAL.union = yyLOCAL - case 976: + case 973: yyDollar = yyS[yypt-0 : yypt+1] -//line mysql_sql.y:6406 +//line mysql_sql.y:6372 { yyVAL.str = "" } - case 977: + case 974: yyDollar = yyS[yypt-1 : yypt+1] -//line mysql_sql.y:6410 +//line mysql_sql.y:6376 { yyVAL.str = yyDollar[1].str } - case 978: + case 975: yyDollar = yyS[yypt-2 : yypt+1] -//line mysql_sql.y:6414 +//line mysql_sql.y:6380 { yyVAL.str = yyDollar[2].str } - case 979: + case 976: yyDollar = yyS[yypt-1 : yypt+1] -//line mysql_sql.y:6420 +//line mysql_sql.y:6386 { yyVAL.str = yylex.(*Lexer).GetDbOrTblName(yyDollar[1].cstrUnion().Origin()) } - case 980: + case 977: yyDollar = yyS[yypt-1 : yypt+1] -//line mysql_sql.y:6424 +//line mysql_sql.y:6390 { yyVAL.str = yylex.(*Lexer).GetDbOrTblName(yyDollar[1].str) } - case 981: + case 978: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.CStr -//line mysql_sql.y:6429 +//line mysql_sql.y:6395 { yyLOCAL = tree.NewCStr("", 1) } yyVAL.union = yyLOCAL - case 982: + case 979: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.CStr -//line mysql_sql.y:6433 +//line mysql_sql.y:6399 { yyLOCAL = yyDollar[1].cstrUnion() } yyVAL.union = yyLOCAL - case 983: + case 980: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.CStr -//line mysql_sql.y:6437 +//line mysql_sql.y:6403 { yyLOCAL = yyDollar[2].cstrUnion() } yyVAL.union = yyLOCAL - case 984: + case 981: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.CStr -//line mysql_sql.y:6441 +//line mysql_sql.y:6407 { yyLOCAL = tree.NewCStr(yyDollar[1].str, 1) } yyVAL.union = yyLOCAL - case 985: + case 982: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.CStr -//line mysql_sql.y:6445 +//line mysql_sql.y:6411 { yyLOCAL = tree.NewCStr(yyDollar[2].str, 1) } yyVAL.union = yyLOCAL - case 986: + case 983: yyDollar = yyS[yypt-1 : yypt+1] -//line mysql_sql.y:6451 +//line mysql_sql.y:6417 { yyVAL.str = yyDollar[1].cstrUnion().Compare() } - case 1009: + case 1006: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:6493 +//line mysql_sql.y:6459 { var Language = yyDollar[3].str var Name = tree.Identifier(yyDollar[5].str) @@ -18464,22 +18353,22 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1010: + case 1007: yyDollar = yyS[yypt-1 : yypt+1] -//line mysql_sql.y:6506 +//line mysql_sql.y:6472 { yyVAL.str = yyDollar[1].cstrUnion().Compare() } - case 1011: + case 1008: yyDollar = yyS[yypt-1 : yypt+1] -//line mysql_sql.y:6512 +//line mysql_sql.y:6478 { yyVAL.str = yyDollar[1].cstrUnion().Compare() } - case 1012: + case 1009: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:6518 +//line mysql_sql.y:6484 { var Name = yyDollar[3].procNameUnion() var Args = yyDollar[5].procArgsUnion() @@ -18491,101 +18380,101 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1013: + case 1010: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.ProcedureName -//line mysql_sql.y:6531 +//line mysql_sql.y:6497 { prefix := tree.ObjectNamePrefix{ExplicitSchema: false} yyLOCAL = tree.NewProcedureName(tree.Identifier(yyDollar[1].cstrUnion().Compare()), prefix) } yyVAL.union = yyLOCAL - case 1014: + case 1011: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.ProcedureName -//line mysql_sql.y:6536 +//line mysql_sql.y:6502 { dbName := yylex.(*Lexer).GetDbOrTblName(yyDollar[1].cstrUnion().Origin()) prefix := tree.ObjectNamePrefix{SchemaName: tree.Identifier(dbName), ExplicitSchema: true} yyLOCAL = tree.NewProcedureName(tree.Identifier(yyDollar[3].cstrUnion().Compare()), prefix) } yyVAL.union = yyLOCAL - case 1015: + case 1012: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.ProcedureArgs -//line mysql_sql.y:6543 +//line mysql_sql.y:6509 { yyLOCAL = tree.ProcedureArgs(nil) } yyVAL.union = yyLOCAL - case 1017: + case 1014: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.ProcedureArgs -//line mysql_sql.y:6550 +//line mysql_sql.y:6516 { yyLOCAL = tree.ProcedureArgs{yyDollar[1].procArgUnion()} } yyVAL.union = yyLOCAL - case 1018: + case 1015: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.ProcedureArgs -//line mysql_sql.y:6554 +//line mysql_sql.y:6520 { yyLOCAL = append(yyDollar[1].procArgsUnion(), yyDollar[3].procArgUnion()) } yyVAL.union = yyLOCAL - case 1019: + case 1016: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.ProcedureArg -//line mysql_sql.y:6560 +//line mysql_sql.y:6526 { yyLOCAL = tree.ProcedureArg(yyDollar[1].procArgDeclUnion()) } yyVAL.union = yyLOCAL - case 1020: + case 1017: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.ProcedureArgDecl -//line mysql_sql.y:6566 +//line mysql_sql.y:6532 { yyLOCAL = tree.NewProcedureArgDecl(yyDollar[1].procArgTypeUnion(), yyDollar[2].unresolvedNameUnion(), yyDollar[3].columnTypeUnion()) } yyVAL.union = yyLOCAL - case 1021: + case 1018: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.InOutArgType -//line mysql_sql.y:6571 +//line mysql_sql.y:6537 { yyLOCAL = tree.TYPE_IN } yyVAL.union = yyLOCAL - case 1022: + case 1019: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.InOutArgType -//line mysql_sql.y:6575 +//line mysql_sql.y:6541 { yyLOCAL = tree.TYPE_IN } yyVAL.union = yyLOCAL - case 1023: + case 1020: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.InOutArgType -//line mysql_sql.y:6579 +//line mysql_sql.y:6545 { yyLOCAL = tree.TYPE_OUT } yyVAL.union = yyLOCAL - case 1024: + case 1021: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.InOutArgType -//line mysql_sql.y:6583 +//line mysql_sql.y:6549 { yyLOCAL = tree.TYPE_INOUT } yyVAL.union = yyLOCAL - case 1025: + case 1022: yyDollar = yyS[yypt-14 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:6590 +//line mysql_sql.y:6556 { if yyDollar[13].str == "" { yylex.Error("no function body error") @@ -18617,127 +18506,127 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1026: + case 1023: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.FunctionName -//line mysql_sql.y:6623 +//line mysql_sql.y:6589 { prefix := tree.ObjectNamePrefix{ExplicitSchema: false} yyLOCAL = tree.NewFuncName(tree.Identifier(yyDollar[1].cstrUnion().Compare()), prefix) } yyVAL.union = yyLOCAL - case 1027: + case 1024: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.FunctionName -//line mysql_sql.y:6628 +//line mysql_sql.y:6594 { dbName := yylex.(*Lexer).GetDbOrTblName(yyDollar[1].cstrUnion().Origin()) prefix := tree.ObjectNamePrefix{SchemaName: tree.Identifier(dbName), ExplicitSchema: true} yyLOCAL = tree.NewFuncName(tree.Identifier(yyDollar[3].cstrUnion().Compare()), prefix) } yyVAL.union = yyLOCAL - case 1028: + case 1025: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.FunctionArgs -//line mysql_sql.y:6635 +//line mysql_sql.y:6601 { yyLOCAL = tree.FunctionArgs(nil) } yyVAL.union = yyLOCAL - case 1030: + case 1027: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.FunctionArgs -//line mysql_sql.y:6642 +//line mysql_sql.y:6608 { yyLOCAL = tree.FunctionArgs{yyDollar[1].funcArgUnion()} } yyVAL.union = yyLOCAL - case 1031: + case 1028: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.FunctionArgs -//line mysql_sql.y:6646 +//line mysql_sql.y:6612 { yyLOCAL = append(yyDollar[1].funcArgsUnion(), yyDollar[3].funcArgUnion()) } yyVAL.union = yyLOCAL - case 1032: + case 1029: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.FunctionArg -//line mysql_sql.y:6652 +//line mysql_sql.y:6618 { yyLOCAL = tree.FunctionArg(yyDollar[1].funcArgDeclUnion()) } yyVAL.union = yyLOCAL - case 1033: + case 1030: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.FunctionArgDecl -//line mysql_sql.y:6658 +//line mysql_sql.y:6624 { yyLOCAL = tree.NewFunctionArgDecl(nil, yyDollar[1].columnTypeUnion(), nil) } yyVAL.union = yyLOCAL - case 1034: + case 1031: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.FunctionArgDecl -//line mysql_sql.y:6662 +//line mysql_sql.y:6628 { yyLOCAL = tree.NewFunctionArgDecl(yyDollar[1].unresolvedNameUnion(), yyDollar[2].columnTypeUnion(), nil) } yyVAL.union = yyLOCAL - case 1035: + case 1032: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.FunctionArgDecl -//line mysql_sql.y:6666 +//line mysql_sql.y:6632 { yyLOCAL = tree.NewFunctionArgDecl(yyDollar[1].unresolvedNameUnion(), yyDollar[2].columnTypeUnion(), yyDollar[4].exprUnion()) } yyVAL.union = yyLOCAL - case 1036: + case 1033: yyDollar = yyS[yypt-1 : yypt+1] -//line mysql_sql.y:6672 +//line mysql_sql.y:6638 { yyVAL.str = yyDollar[1].cstrUnion().Compare() } - case 1037: + case 1034: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.ReturnType -//line mysql_sql.y:6678 +//line mysql_sql.y:6644 { yyLOCAL = tree.NewReturnType(yyDollar[1].columnTypeUnion()) } yyVAL.union = yyLOCAL - case 1038: + case 1035: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:6684 +//line mysql_sql.y:6650 { yyLOCAL = false } yyVAL.union = yyLOCAL - case 1039: + case 1036: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:6688 +//line mysql_sql.y:6654 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 1040: + case 1037: yyDollar = yyS[yypt-0 : yypt+1] -//line mysql_sql.y:6694 +//line mysql_sql.y:6660 { yyVAL.str = "" } - case 1042: + case 1039: yyDollar = yyS[yypt-2 : yypt+1] -//line mysql_sql.y:6701 +//line mysql_sql.y:6667 { yyVAL.str = yyDollar[2].str } - case 1043: + case 1040: yyDollar = yyS[yypt-9 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:6707 +//line mysql_sql.y:6673 { var Replace bool var Name = yyDollar[5].tableNameUnion() @@ -18753,10 +18642,10 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1044: + case 1041: yyDollar = yyS[yypt-9 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:6722 +//line mysql_sql.y:6688 { var Replace = yyDollar[2].sourceOptionalUnion() var Name = yyDollar[5].tableNameUnion() @@ -18772,10 +18661,10 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1045: + case 1042: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:6739 +//line mysql_sql.y:6705 { var IfNotExists = yyDollar[3].ifNotExistsUnion() var Name = yyDollar[4].exprUnion() @@ -18791,81 +18680,81 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1046: + case 1043: yyDollar = yyS[yypt-1 : yypt+1] -//line mysql_sql.y:6756 +//line mysql_sql.y:6722 { yyVAL.str = yyDollar[1].str } - case 1047: + case 1044: yyDollar = yyS[yypt-2 : yypt+1] -//line mysql_sql.y:6760 +//line mysql_sql.y:6726 { yyVAL.str = yyVAL.str + yyDollar[2].str } - case 1048: + case 1045: yyDollar = yyS[yypt-3 : yypt+1] -//line mysql_sql.y:6766 +//line mysql_sql.y:6732 { yyVAL.str = "ALGORITHM = " + yyDollar[3].str } - case 1049: + case 1046: yyDollar = yyS[yypt-3 : yypt+1] -//line mysql_sql.y:6770 +//line mysql_sql.y:6736 { yyVAL.str = "DEFINER = " } - case 1050: + case 1047: yyDollar = yyS[yypt-3 : yypt+1] -//line mysql_sql.y:6774 +//line mysql_sql.y:6740 { yyVAL.str = "SQL SECURITY " + yyDollar[3].str } - case 1051: + case 1048: yyDollar = yyS[yypt-0 : yypt+1] -//line mysql_sql.y:6779 +//line mysql_sql.y:6745 { yyVAL.str = "" } - case 1052: + case 1049: yyDollar = yyS[yypt-4 : yypt+1] -//line mysql_sql.y:6783 +//line mysql_sql.y:6749 { yyVAL.str = "WITH " + yyDollar[2].str + " CHECK OPTION" } - case 1058: + case 1055: yyDollar = yyS[yypt-0 : yypt+1] -//line mysql_sql.y:6797 +//line mysql_sql.y:6763 { yyVAL.str = "" } - case 1061: + case 1058: yyDollar = yyS[yypt-1 : yypt+1] -//line mysql_sql.y:6805 +//line mysql_sql.y:6771 { yyVAL.str = yyDollar[1].cstrUnion().Compare() } - case 1062: + case 1059: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:6811 +//line mysql_sql.y:6777 { var str = yyDollar[1].cstrUnion().Compare() yyLOCAL = tree.NewNumVal(str, str, false, tree.P_char) } yyVAL.union = yyLOCAL - case 1063: + case 1060: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:6816 +//line mysql_sql.y:6782 { yyLOCAL = tree.NewParamExpr(yylex.(*Lexer).GetParamIndex()) } yyVAL.union = yyLOCAL - case 1064: + case 1061: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.AccountAuthOption -//line mysql_sql.y:6822 +//line mysql_sql.y:6788 { var Equal = yyDollar[2].str var AdminName = yyDollar[3].exprUnion() @@ -18877,36 +18766,36 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1065: + case 1062: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:6835 +//line mysql_sql.y:6801 { var str = yyDollar[1].str yyLOCAL = tree.NewNumVal(str, str, false, tree.P_char) } yyVAL.union = yyLOCAL - case 1066: + case 1063: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:6840 +//line mysql_sql.y:6806 { var str = yyDollar[1].cstrUnion().Compare() yyLOCAL = tree.NewNumVal(str, str, false, tree.P_char) } yyVAL.union = yyLOCAL - case 1067: + case 1064: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:6845 +//line mysql_sql.y:6811 { yyLOCAL = tree.NewParamExpr(yylex.(*Lexer).GetParamIndex()) } yyVAL.union = yyLOCAL - case 1068: + case 1065: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.AccountIdentified -//line mysql_sql.y:6851 +//line mysql_sql.y:6817 { yyLOCAL = *tree.NewAccountIdentified( tree.AccountIdentifiedByPassword, @@ -18914,10 +18803,10 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1069: + case 1066: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.AccountIdentified -//line mysql_sql.y:6858 +//line mysql_sql.y:6824 { yyLOCAL = *tree.NewAccountIdentified( tree.AccountIdentifiedByPassword, @@ -18925,10 +18814,10 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1070: + case 1067: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.AccountIdentified -//line mysql_sql.y:6865 +//line mysql_sql.y:6831 { yyLOCAL = *tree.NewAccountIdentified( tree.AccountIdentifiedByRandomPassword, @@ -18936,10 +18825,10 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1071: + case 1068: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.AccountIdentified -//line mysql_sql.y:6872 +//line mysql_sql.y:6838 { yyLOCAL = *tree.NewAccountIdentified( tree.AccountIdentifiedWithSSL, @@ -18947,10 +18836,10 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1072: + case 1069: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.AccountIdentified -//line mysql_sql.y:6879 +//line mysql_sql.y:6845 { yyLOCAL = *tree.NewAccountIdentified( tree.AccountIdentifiedWithSSL, @@ -18958,20 +18847,20 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1073: + case 1070: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.AccountStatus -//line mysql_sql.y:6887 +//line mysql_sql.y:6853 { as := tree.NewAccountStatus() as.Exist = false yyLOCAL = *as } yyVAL.union = yyLOCAL - case 1074: + case 1071: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.AccountStatus -//line mysql_sql.y:6893 +//line mysql_sql.y:6859 { as := tree.NewAccountStatus() as.Exist = true @@ -18979,10 +18868,10 @@ yydefault: yyLOCAL = *as } yyVAL.union = yyLOCAL - case 1075: + case 1072: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.AccountStatus -//line mysql_sql.y:6900 +//line mysql_sql.y:6866 { as := tree.NewAccountStatus() as.Exist = true @@ -18990,10 +18879,10 @@ yydefault: yyLOCAL = *as } yyVAL.union = yyLOCAL - case 1076: + case 1073: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.AccountStatus -//line mysql_sql.y:6907 +//line mysql_sql.y:6873 { as := tree.NewAccountStatus() as.Exist = true @@ -19001,20 +18890,20 @@ yydefault: yyLOCAL = *as } yyVAL.union = yyLOCAL - case 1077: + case 1074: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.AccountComment -//line mysql_sql.y:6915 +//line mysql_sql.y:6881 { ac := tree.NewAccountComment() ac.Exist = false yyLOCAL = *ac } yyVAL.union = yyLOCAL - case 1078: + case 1075: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.AccountComment -//line mysql_sql.y:6921 +//line mysql_sql.y:6887 { ac := tree.NewAccountComment() ac.Exist = true @@ -19022,10 +18911,10 @@ yydefault: yyLOCAL = *ac } yyVAL.union = yyLOCAL - case 1079: + case 1076: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:6930 +//line mysql_sql.y:6896 { var IfNotExists = yyDollar[3].ifNotExistsUnion() var Users = yyDollar[4].usersUnion() @@ -19041,10 +18930,10 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1080: + case 1077: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:6947 +//line mysql_sql.y:6913 { var IfNotExists = yyDollar[3].ifNotExistsUnion() var Name = tree.Identifier(yyDollar[4].cstrUnion().Compare()) @@ -19061,10 +18950,10 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1081: + case 1078: yyDollar = yyS[yypt-10 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:6963 +//line mysql_sql.y:6929 { var IfNotExists = yyDollar[3].ifNotExistsUnion() var Name = tree.Identifier(yyDollar[4].cstrUnion().Compare()) @@ -19082,30 +18971,30 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1082: + case 1079: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.AccountsSetOption -//line mysql_sql.y:6982 +//line mysql_sql.y:6948 { yyLOCAL = &tree.AccountsSetOption{ All: true, } } yyVAL.union = yyLOCAL - case 1083: + case 1080: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.AccountsSetOption -//line mysql_sql.y:6988 +//line mysql_sql.y:6954 { yyLOCAL = &tree.AccountsSetOption{ SetAccounts: yyDollar[2].identifierListUnion(), } } yyVAL.union = yyLOCAL - case 1084: + case 1081: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:6997 +//line mysql_sql.y:6963 { var IfNotExists = yyDollar[3].ifNotExistsUnion() var Name = tree.Identifier(yyDollar[4].cstrUnion().Compare()) @@ -19123,20 +19012,20 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1085: + case 1082: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.StageStatus -//line mysql_sql.y:7015 +//line mysql_sql.y:6981 { yyLOCAL = tree.StageStatus{ Exist: false, } } yyVAL.union = yyLOCAL - case 1086: + case 1083: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.StageStatus -//line mysql_sql.y:7021 +//line mysql_sql.y:6987 { yyLOCAL = tree.StageStatus{ Exist: true, @@ -19144,10 +19033,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1087: + case 1084: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.StageStatus -//line mysql_sql.y:7028 +//line mysql_sql.y:6994 { yyLOCAL = tree.StageStatus{ Exist: true, @@ -19155,20 +19044,20 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1088: + case 1085: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.StageComment -//line mysql_sql.y:7036 +//line mysql_sql.y:7002 { yyLOCAL = tree.StageComment{ Exist: false, } } yyVAL.union = yyLOCAL - case 1089: + case 1086: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.StageComment -//line mysql_sql.y:7042 +//line mysql_sql.y:7008 { yyLOCAL = tree.StageComment{ Exist: true, @@ -19176,20 +19065,20 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1090: + case 1087: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.StageUrl -//line mysql_sql.y:7050 +//line mysql_sql.y:7016 { yyLOCAL = tree.StageUrl{ Exist: false, } } yyVAL.union = yyLOCAL - case 1091: + case 1088: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.StageUrl -//line mysql_sql.y:7056 +//line mysql_sql.y:7022 { yyLOCAL = tree.StageUrl{ Exist: true, @@ -19197,20 +19086,20 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1092: + case 1089: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.StageCredentials -//line mysql_sql.y:7064 +//line mysql_sql.y:7030 { yyLOCAL = tree.StageCredentials{ Exist: false, } } yyVAL.union = yyLOCAL - case 1093: + case 1090: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.StageCredentials -//line mysql_sql.y:7070 +//line mysql_sql.y:7036 { yyLOCAL = tree.StageCredentials{ Exist: true, @@ -19218,61 +19107,61 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1094: + case 1091: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []string -//line mysql_sql.y:7079 +//line mysql_sql.y:7045 { yyLOCAL = yyDollar[1].strsUnion() } yyVAL.union = yyLOCAL - case 1095: + case 1092: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []string -//line mysql_sql.y:7083 +//line mysql_sql.y:7049 { yyLOCAL = append(yyDollar[1].strsUnion(), yyDollar[3].strsUnion()...) } yyVAL.union = yyLOCAL - case 1096: + case 1093: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL []string -//line mysql_sql.y:7088 +//line mysql_sql.y:7054 { yyLOCAL = []string{} } yyVAL.union = yyLOCAL - case 1097: + case 1094: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []string -//line mysql_sql.y:7092 +//line mysql_sql.y:7058 { yyLOCAL = append(yyLOCAL, yyDollar[1].str) yyLOCAL = append(yyLOCAL, yyDollar[3].str) } yyVAL.union = yyLOCAL - case 1098: + case 1095: yyDollar = yyS[yypt-3 : yypt+1] -//line mysql_sql.y:7099 +//line mysql_sql.y:7065 { yyVAL.str = yyDollar[3].str } - case 1099: + case 1096: yyDollar = yyS[yypt-0 : yypt+1] -//line mysql_sql.y:7104 +//line mysql_sql.y:7070 { yyVAL.str = "" } - case 1100: + case 1097: yyDollar = yyS[yypt-2 : yypt+1] -//line mysql_sql.y:7108 +//line mysql_sql.y:7074 { yyVAL.str = yyDollar[2].str } - case 1101: + case 1098: yyDollar = yyS[yypt-9 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:7114 +//line mysql_sql.y:7080 { var ifNotExists = yyDollar[3].boolValUnion() var name = tree.Identifier(yyDollar[4].cstrUnion().Compare()) @@ -19283,10 +19172,10 @@ yydefault: yyLOCAL = tree.NewAlterStage(ifNotExists, name, urlOption, credentialsOption, statusOption, comment) } yyVAL.union = yyLOCAL - case 1102: + case 1099: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:7127 +//line mysql_sql.y:7093 { var ifExists = yyDollar[3].boolValUnion() var name = tree.Identifier(yyDollar[4].cstrUnion().Compare()) @@ -19297,132 +19186,132 @@ yydefault: yyLOCAL = tree.NewAlterPublication(ifExists, name, accountsSet, dbName, table, comment) } yyVAL.union = yyLOCAL - case 1103: + case 1100: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.AccountsSetOption -//line mysql_sql.y:7138 +//line mysql_sql.y:7104 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1104: + case 1101: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.AccountsSetOption -//line mysql_sql.y:7142 +//line mysql_sql.y:7108 { yyLOCAL = &tree.AccountsSetOption{ All: true, } } yyVAL.union = yyLOCAL - case 1105: + case 1102: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.AccountsSetOption -//line mysql_sql.y:7148 +//line mysql_sql.y:7114 { yyLOCAL = &tree.AccountsSetOption{ SetAccounts: yyDollar[2].identifierListUnion(), } } yyVAL.union = yyLOCAL - case 1106: + case 1103: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.AccountsSetOption -//line mysql_sql.y:7154 +//line mysql_sql.y:7120 { yyLOCAL = &tree.AccountsSetOption{ AddAccounts: yyDollar[3].identifierListUnion(), } } yyVAL.union = yyLOCAL - case 1107: + case 1104: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.AccountsSetOption -//line mysql_sql.y:7160 +//line mysql_sql.y:7126 { yyLOCAL = &tree.AccountsSetOption{ DropAccounts: yyDollar[3].identifierListUnion(), } } yyVAL.union = yyLOCAL - case 1108: + case 1105: yyDollar = yyS[yypt-0 : yypt+1] -//line mysql_sql.y:7167 +//line mysql_sql.y:7133 { yyVAL.str = "" } - case 1109: + case 1106: yyDollar = yyS[yypt-2 : yypt+1] -//line mysql_sql.y:7171 +//line mysql_sql.y:7137 { yyVAL.str = yyDollar[2].str } - case 1110: + case 1107: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.TableNames -//line mysql_sql.y:7176 +//line mysql_sql.y:7142 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1111: + case 1108: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.TableNames -//line mysql_sql.y:7180 +//line mysql_sql.y:7146 { yyLOCAL = yyDollar[2].tableNamesUnion() } yyVAL.union = yyLOCAL - case 1112: + case 1109: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:7186 +//line mysql_sql.y:7152 { var ifExists = yyDollar[3].boolValUnion() var name = tree.Identifier(yyDollar[4].cstrUnion().Compare()) yyLOCAL = tree.NewDropPublication(ifExists, name) } yyVAL.union = yyLOCAL - case 1113: + case 1110: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:7194 +//line mysql_sql.y:7160 { var ifNotExists = yyDollar[3].boolValUnion() var name = tree.Identifier(yyDollar[4].cstrUnion().Compare()) yyLOCAL = tree.NewDropStage(ifNotExists, name) } yyVAL.union = yyLOCAL - case 1114: + case 1111: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:7202 +//line mysql_sql.y:7168 { var ifExists = yyDollar[3].boolValUnion() var name = tree.Identifier(yyDollar[4].cstrUnion().Compare()) yyLOCAL = tree.NewDropSnapShot(ifExists, name) } yyVAL.union = yyLOCAL - case 1115: + case 1112: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:7210 +//line mysql_sql.y:7176 { var ifExists = yyDollar[3].boolValUnion() var name = tree.Identifier(yyDollar[4].cstrUnion().Compare()) yyLOCAL = tree.NewDropPitr(ifExists, name) } yyVAL.union = yyLOCAL - case 1116: + case 1113: yyDollar = yyS[yypt-1 : yypt+1] -//line mysql_sql.y:7218 +//line mysql_sql.y:7184 { yyVAL.str = yyDollar[1].cstrUnion().Compare() } - case 1117: + case 1114: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.AccountCommentOrAttribute -//line mysql_sql.y:7223 +//line mysql_sql.y:7189 { var Exist = false var IsComment bool @@ -19435,10 +19324,10 @@ yydefault: } yyVAL.union = yyLOCAL - case 1118: + case 1115: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.AccountCommentOrAttribute -//line mysql_sql.y:7235 +//line mysql_sql.y:7201 { var Exist = true var IsComment = true @@ -19450,10 +19339,10 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1119: + case 1116: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.AccountCommentOrAttribute -//line mysql_sql.y:7246 +//line mysql_sql.y:7212 { var Exist = true var IsComment = false @@ -19465,26 +19354,26 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1120: + case 1117: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []*tree.User -//line mysql_sql.y:7355 +//line mysql_sql.y:7321 { yyLOCAL = []*tree.User{yyDollar[1].userUnion()} } yyVAL.union = yyLOCAL - case 1121: + case 1118: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []*tree.User -//line mysql_sql.y:7359 +//line mysql_sql.y:7325 { yyLOCAL = append(yyDollar[1].usersUnion(), yyDollar[3].userUnion()) } yyVAL.union = yyLOCAL - case 1122: + case 1119: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.User -//line mysql_sql.y:7365 +//line mysql_sql.y:7331 { var Username = yyDollar[1].usernameRecordUnion().Username var Hostname = yyDollar[1].usernameRecordUnion().Hostname @@ -19496,26 +19385,26 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1123: + case 1120: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []*tree.User -//line mysql_sql.y:7378 +//line mysql_sql.y:7344 { yyLOCAL = []*tree.User{yyDollar[1].userUnion()} } yyVAL.union = yyLOCAL - case 1124: + case 1121: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []*tree.User -//line mysql_sql.y:7382 +//line mysql_sql.y:7348 { yyLOCAL = append(yyDollar[1].usersUnion(), yyDollar[3].userUnion()) } yyVAL.union = yyLOCAL - case 1125: + case 1122: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.User -//line mysql_sql.y:7388 +//line mysql_sql.y:7354 { var Username = yyDollar[1].usernameRecordUnion().Username var Hostname = yyDollar[1].usernameRecordUnion().Hostname @@ -19527,50 +19416,50 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1126: + case 1123: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.UsernameRecord -//line mysql_sql.y:7401 +//line mysql_sql.y:7367 { yyLOCAL = &tree.UsernameRecord{Username: yyDollar[1].str, Hostname: "%"} } yyVAL.union = yyLOCAL - case 1127: + case 1124: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.UsernameRecord -//line mysql_sql.y:7405 +//line mysql_sql.y:7371 { yyLOCAL = &tree.UsernameRecord{Username: yyDollar[1].str, Hostname: yyDollar[3].str} } yyVAL.union = yyLOCAL - case 1128: + case 1125: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.UsernameRecord -//line mysql_sql.y:7409 +//line mysql_sql.y:7375 { yyLOCAL = &tree.UsernameRecord{Username: yyDollar[1].str, Hostname: yyDollar[2].str} } yyVAL.union = yyLOCAL - case 1129: + case 1126: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.AccountIdentified -//line mysql_sql.y:7414 +//line mysql_sql.y:7380 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1130: + case 1127: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.AccountIdentified -//line mysql_sql.y:7418 +//line mysql_sql.y:7384 { yyLOCAL = yyDollar[1].userIdentifiedUnion() } yyVAL.union = yyLOCAL - case 1131: + case 1128: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.AccountIdentified -//line mysql_sql.y:7424 +//line mysql_sql.y:7390 { yyLOCAL = &tree.AccountIdentified{ Typ: tree.AccountIdentifiedByPassword, @@ -19578,20 +19467,20 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1132: + case 1129: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.AccountIdentified -//line mysql_sql.y:7431 +//line mysql_sql.y:7397 { yyLOCAL = &tree.AccountIdentified{ Typ: tree.AccountIdentifiedByRandomPassword, } } yyVAL.union = yyLOCAL - case 1133: + case 1130: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.AccountIdentified -//line mysql_sql.y:7437 +//line mysql_sql.y:7403 { yyLOCAL = &tree.AccountIdentified{ Typ: tree.AccountIdentifiedWithSSL, @@ -19599,16 +19488,16 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1134: + case 1131: yyDollar = yyS[yypt-1 : yypt+1] -//line mysql_sql.y:7446 +//line mysql_sql.y:7412 { yyVAL.str = yyDollar[1].cstrUnion().Compare() } - case 1136: + case 1133: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:7453 +//line mysql_sql.y:7419 { var IfNotExists = yyDollar[3].ifNotExistsUnion() var Roles = yyDollar[4].rolesUnion() @@ -19618,26 +19507,26 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1137: + case 1134: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []*tree.Role -//line mysql_sql.y:7464 +//line mysql_sql.y:7430 { yyLOCAL = []*tree.Role{yyDollar[1].roleUnion()} } yyVAL.union = yyLOCAL - case 1138: + case 1135: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []*tree.Role -//line mysql_sql.y:7468 +//line mysql_sql.y:7434 { yyLOCAL = append(yyDollar[1].rolesUnion(), yyDollar[3].roleUnion()) } yyVAL.union = yyLOCAL - case 1139: + case 1136: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.Role -//line mysql_sql.y:7474 +//line mysql_sql.y:7440 { var UserName = yyDollar[1].cstrUnion().Compare() yyLOCAL = tree.NewRole( @@ -19645,66 +19534,66 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1140: + case 1137: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.CStr -//line mysql_sql.y:7483 +//line mysql_sql.y:7449 { yyLOCAL = tree.NewCStr(yyDollar[1].str, 1) } yyVAL.union = yyLOCAL - case 1141: + case 1138: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.CStr -//line mysql_sql.y:7487 +//line mysql_sql.y:7453 { yyLOCAL = tree.NewCStr(yyDollar[1].str, 1) } yyVAL.union = yyLOCAL - case 1142: + case 1139: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.CStr -//line mysql_sql.y:7491 +//line mysql_sql.y:7457 { yyLOCAL = tree.NewCStr(yyDollar[1].str, 1) } yyVAL.union = yyLOCAL - case 1143: + case 1140: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.IndexCategory -//line mysql_sql.y:7496 +//line mysql_sql.y:7462 { yyLOCAL = tree.INDEX_CATEGORY_NONE } yyVAL.union = yyLOCAL - case 1144: + case 1141: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.IndexCategory -//line mysql_sql.y:7500 +//line mysql_sql.y:7466 { yyLOCAL = tree.INDEX_CATEGORY_FULLTEXT } yyVAL.union = yyLOCAL - case 1145: + case 1142: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.IndexCategory -//line mysql_sql.y:7504 +//line mysql_sql.y:7470 { yyLOCAL = tree.INDEX_CATEGORY_SPATIAL } yyVAL.union = yyLOCAL - case 1146: + case 1143: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.IndexCategory -//line mysql_sql.y:7508 +//line mysql_sql.y:7474 { yyLOCAL = tree.INDEX_CATEGORY_UNIQUE } yyVAL.union = yyLOCAL - case 1147: + case 1144: yyDollar = yyS[yypt-11 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:7514 +//line mysql_sql.y:7480 { var io *tree.IndexOption = nil if yyDollar[11].indexOptionUnion() == nil && yyDollar[5].indexTypeUnion() != tree.INDEX_TYPE_INVALID { @@ -19735,18 +19624,18 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1148: + case 1145: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.IndexOption -//line mysql_sql.y:7545 +//line mysql_sql.y:7511 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1149: + case 1146: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.IndexOption -//line mysql_sql.y:7549 +//line mysql_sql.y:7515 { // Merge the options if yyDollar[1].indexOptionUnion() == nil { @@ -19779,20 +19668,20 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1150: + case 1147: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.IndexOption -//line mysql_sql.y:7583 +//line mysql_sql.y:7549 { io := tree.NewIndexOption() io.KeyBlockSize = uint64(yyDollar[3].item.(int64)) yyLOCAL = io } yyVAL.union = yyLOCAL - case 1151: + case 1148: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.IndexOption -//line mysql_sql.y:7589 +//line mysql_sql.y:7555 { val := int64(yyDollar[3].item.(int64)) if val <= 0 { @@ -19805,60 +19694,60 @@ yydefault: yyLOCAL = io } yyVAL.union = yyLOCAL - case 1152: + case 1149: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.IndexOption -//line mysql_sql.y:7601 +//line mysql_sql.y:7567 { io := tree.NewIndexOption() io.AlgoParamVectorOpType = yyDollar[2].str yyLOCAL = io } yyVAL.union = yyLOCAL - case 1153: + case 1150: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.IndexOption -//line mysql_sql.y:7607 +//line mysql_sql.y:7573 { io := tree.NewIndexOption() io.Comment = yyDollar[2].str yyLOCAL = io } yyVAL.union = yyLOCAL - case 1154: + case 1151: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.IndexOption -//line mysql_sql.y:7613 +//line mysql_sql.y:7579 { io := tree.NewIndexOption() io.ParserName = yyDollar[3].cstrUnion().Compare() yyLOCAL = io } yyVAL.union = yyLOCAL - case 1155: + case 1152: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.IndexOption -//line mysql_sql.y:7619 +//line mysql_sql.y:7585 { io := tree.NewIndexOption() io.Visible = tree.VISIBLE_TYPE_VISIBLE yyLOCAL = io } yyVAL.union = yyLOCAL - case 1156: + case 1153: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.IndexOption -//line mysql_sql.y:7625 +//line mysql_sql.y:7591 { io := tree.NewIndexOption() io.Visible = tree.VISIBLE_TYPE_INVISIBLE yyLOCAL = io } yyVAL.union = yyLOCAL - case 1157: + case 1154: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.IndexOption -//line mysql_sql.y:7631 +//line mysql_sql.y:7597 { val := int64(yyDollar[3].item.(int64)) if val <= 0 { @@ -19870,10 +19759,10 @@ yydefault: yyLOCAL = io } yyVAL.union = yyLOCAL - case 1158: + case 1155: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.IndexOption -//line mysql_sql.y:7642 +//line mysql_sql.y:7608 { val := int64(yyDollar[3].item.(int64)) if val <= 0 { @@ -19885,10 +19774,10 @@ yydefault: yyLOCAL = io } yyVAL.union = yyLOCAL - case 1159: + case 1156: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.IndexOption -//line mysql_sql.y:7653 +//line mysql_sql.y:7619 { val := int64(yyDollar[3].item.(int64)) if val <= 0 { @@ -19900,36 +19789,36 @@ yydefault: yyLOCAL = io } yyVAL.union = yyLOCAL - case 1160: + case 1157: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.IndexOption -//line mysql_sql.y:7664 +//line mysql_sql.y:7630 { io := tree.NewIndexOption() io.HnswQuantization = yyDollar[3].str yyLOCAL = io } yyVAL.union = yyLOCAL - case 1161: + case 1158: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []*tree.KeyPart -//line mysql_sql.y:7673 +//line mysql_sql.y:7639 { yyLOCAL = []*tree.KeyPart{yyDollar[1].keyPartUnion()} } yyVAL.union = yyLOCAL - case 1162: + case 1159: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []*tree.KeyPart -//line mysql_sql.y:7677 +//line mysql_sql.y:7643 { yyLOCAL = append(yyDollar[1].keyPartsUnion(), yyDollar[3].keyPartUnion()) } yyVAL.union = yyLOCAL - case 1163: + case 1160: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.KeyPart -//line mysql_sql.y:7683 +//line mysql_sql.y:7649 { // Order is parsed but just ignored as MySQL dtree. var ColName = yyDollar[1].unresolvedNameUnion() @@ -19944,10 +19833,10 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1164: + case 1161: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.KeyPart -//line mysql_sql.y:7697 +//line mysql_sql.y:7663 { var ColName *tree.UnresolvedName var Length int @@ -19961,74 +19850,74 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1165: + case 1162: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.IndexType -//line mysql_sql.y:7711 +//line mysql_sql.y:7677 { yyLOCAL = tree.INDEX_TYPE_INVALID } yyVAL.union = yyLOCAL - case 1166: + case 1163: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.IndexType -//line mysql_sql.y:7715 +//line mysql_sql.y:7681 { yyLOCAL = tree.INDEX_TYPE_BTREE } yyVAL.union = yyLOCAL - case 1167: + case 1164: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.IndexType -//line mysql_sql.y:7719 +//line mysql_sql.y:7685 { yyLOCAL = tree.INDEX_TYPE_IVFFLAT } yyVAL.union = yyLOCAL - case 1168: + case 1165: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.IndexType -//line mysql_sql.y:7723 +//line mysql_sql.y:7689 { yyLOCAL = tree.INDEX_TYPE_HNSW } yyVAL.union = yyLOCAL - case 1169: + case 1166: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.IndexType -//line mysql_sql.y:7727 +//line mysql_sql.y:7693 { yyLOCAL = tree.INDEX_TYPE_MASTER } yyVAL.union = yyLOCAL - case 1170: + case 1167: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.IndexType -//line mysql_sql.y:7731 +//line mysql_sql.y:7697 { yyLOCAL = tree.INDEX_TYPE_HASH } yyVAL.union = yyLOCAL - case 1171: + case 1168: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.IndexType -//line mysql_sql.y:7735 +//line mysql_sql.y:7701 { yyLOCAL = tree.INDEX_TYPE_RTREE } yyVAL.union = yyLOCAL - case 1172: + case 1169: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.IndexType -//line mysql_sql.y:7739 +//line mysql_sql.y:7705 { yyLOCAL = tree.INDEX_TYPE_BSI } yyVAL.union = yyLOCAL - case 1173: + case 1170: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:7745 +//line mysql_sql.y:7711 { var IfNotExists = yyDollar[3].ifNotExistsUnion() var Name = tree.Identifier(yyDollar[4].str) @@ -20042,76 +19931,76 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1174: + case 1171: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.SubscriptionOption -//line mysql_sql.y:7760 +//line mysql_sql.y:7726 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1175: + case 1172: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.SubscriptionOption -//line mysql_sql.y:7764 +//line mysql_sql.y:7730 { var From = tree.Identifier(yyDollar[2].str) var Publication = tree.Identifier(yyDollar[4].cstrUnion().Compare()) yyLOCAL = tree.NewSubscriptionOption(From, Publication) } yyVAL.union = yyLOCAL - case 1178: + case 1175: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:7775 +//line mysql_sql.y:7741 { yyLOCAL = false } yyVAL.union = yyLOCAL - case 1179: + case 1176: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:7779 +//line mysql_sql.y:7745 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 1180: + case 1177: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL []tree.CreateOption -//line mysql_sql.y:7784 +//line mysql_sql.y:7750 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1181: + case 1178: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []tree.CreateOption -//line mysql_sql.y:7788 +//line mysql_sql.y:7754 { yyLOCAL = yyDollar[1].createOptionsUnion() } yyVAL.union = yyLOCAL - case 1182: + case 1179: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []tree.CreateOption -//line mysql_sql.y:7794 +//line mysql_sql.y:7760 { yyLOCAL = []tree.CreateOption{yyDollar[1].createOptionUnion()} } yyVAL.union = yyLOCAL - case 1183: + case 1180: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL []tree.CreateOption -//line mysql_sql.y:7798 +//line mysql_sql.y:7764 { yyLOCAL = append(yyDollar[1].createOptionsUnion(), yyDollar[2].createOptionUnion()) } yyVAL.union = yyLOCAL - case 1184: + case 1181: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.CreateOption -//line mysql_sql.y:7804 +//line mysql_sql.y:7770 { var IsDefault = yyDollar[1].defaultOptionalUnion() var Charset = yyDollar[4].str @@ -20121,10 +20010,10 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1185: + case 1182: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.CreateOption -//line mysql_sql.y:7813 +//line mysql_sql.y:7779 { var IsDefault = yyDollar[1].defaultOptionalUnion() var Collate = yyDollar[4].str @@ -20134,35 +20023,35 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1186: + case 1183: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.CreateOption -//line mysql_sql.y:7822 +//line mysql_sql.y:7788 { var Encrypt = yyDollar[4].str yyLOCAL = tree.NewCreateOptionEncryption(Encrypt) } yyVAL.union = yyLOCAL - case 1187: + case 1184: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:7828 +//line mysql_sql.y:7794 { yyLOCAL = false } yyVAL.union = yyLOCAL - case 1188: + case 1185: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:7832 +//line mysql_sql.y:7798 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 1189: + case 1186: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:7838 +//line mysql_sql.y:7804 { var TableName = yyDollar[4].tableNameUnion() var Options = yyDollar[7].connectorOptionsUnion() @@ -20172,18 +20061,18 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1190: + case 1187: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:7849 +//line mysql_sql.y:7815 { yyLOCAL = &tree.ShowConnectors{} } yyVAL.union = yyLOCAL - case 1191: + case 1188: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:7855 +//line mysql_sql.y:7821 { var taskID uint64 switch v := yyDollar[4].item.(type) { @@ -20200,10 +20089,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1192: + case 1189: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:7873 +//line mysql_sql.y:7839 { var taskID uint64 switch v := yyDollar[4].item.(type) { @@ -20220,10 +20109,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1193: + case 1190: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:7891 +//line mysql_sql.y:7857 { var taskID uint64 switch v := yyDollar[4].item.(type) { @@ -20240,10 +20129,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1194: + case 1191: yyDollar = yyS[yypt-9 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:7909 +//line mysql_sql.y:7875 { var Replace = yyDollar[2].sourceOptionalUnion() var IfNotExists = yyDollar[4].ifNotExistsUnion() @@ -20259,26 +20148,26 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1195: + case 1192: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:7925 +//line mysql_sql.y:7891 { yyLOCAL = false } yyVAL.union = yyLOCAL - case 1196: + case 1193: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:7929 +//line mysql_sql.y:7895 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 1197: + case 1194: yyDollar = yyS[yypt-11 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:7938 +//line mysql_sql.y:7904 { t := tree.NewCreateTable() t.Temporary = yyDollar[2].boolValUnion() @@ -20291,10 +20180,10 @@ yydefault: yyLOCAL = t } yyVAL.union = yyLOCAL - case 1198: + case 1195: yyDollar = yyS[yypt-9 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:7950 +//line mysql_sql.y:7916 { t := tree.NewCreateTable() t.IfNotExists = yyDollar[4].ifNotExistsUnion() @@ -20304,10 +20193,10 @@ yydefault: yyLOCAL = t } yyVAL.union = yyLOCAL - case 1199: + case 1196: yyDollar = yyS[yypt-11 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:7959 +//line mysql_sql.y:7925 { t := tree.NewCreateTable() t.IsClusterTable = true @@ -20320,10 +20209,10 @@ yydefault: yyLOCAL = t } yyVAL.union = yyLOCAL - case 1200: + case 1197: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:7971 +//line mysql_sql.y:7937 { t := tree.NewCreateTable() t.IsDynamicTable = true @@ -20334,10 +20223,10 @@ yydefault: yyLOCAL = t } yyVAL.union = yyLOCAL - case 1201: + case 1198: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:7981 +//line mysql_sql.y:7947 { t := tree.NewCreateTable() t.IsAsSelect = true @@ -20348,10 +20237,10 @@ yydefault: yyLOCAL = t } yyVAL.union = yyLOCAL - case 1202: + case 1199: yyDollar = yyS[yypt-9 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:7991 +//line mysql_sql.y:7957 { t := tree.NewCreateTable() t.IsAsSelect = true @@ -20363,10 +20252,10 @@ yydefault: yyLOCAL = t } yyVAL.union = yyLOCAL - case 1203: + case 1200: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:8002 +//line mysql_sql.y:7968 { t := tree.NewCreateTable() t.IsAsSelect = true @@ -20377,10 +20266,10 @@ yydefault: yyLOCAL = t } yyVAL.union = yyLOCAL - case 1204: + case 1201: yyDollar = yyS[yypt-10 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:8012 +//line mysql_sql.y:7978 { t := tree.NewCreateTable() t.IsAsSelect = true @@ -20392,10 +20281,10 @@ yydefault: yyLOCAL = t } yyVAL.union = yyLOCAL - case 1205: + case 1202: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:8023 +//line mysql_sql.y:7989 { t := tree.NewCreateTable() t.IsAsLike = true @@ -20404,10 +20293,10 @@ yydefault: yyLOCAL = t } yyVAL.union = yyLOCAL - case 1206: + case 1203: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:8031 +//line mysql_sql.y:7997 { t := tree.NewCreateTable() t.Temporary = yyDollar[2].boolValUnion() @@ -20417,19 +20306,19 @@ yydefault: yyLOCAL = t } yyVAL.union = yyLOCAL - case 1207: + case 1204: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.ExternParam -//line mysql_sql.y:8042 +//line mysql_sql.y:8008 { yyLOCAL = yyDollar[1].loadParamUnion() yyLOCAL.Tail = yyDollar[2].tailParamUnion() } yyVAL.union = yyLOCAL - case 1208: + case 1205: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.ExternParam -//line mysql_sql.y:8049 +//line mysql_sql.y:8015 { yyLOCAL = &tree.ExternParam{ ExParamConst: tree.ExParamConst{ @@ -20440,10 +20329,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1209: + case 1206: yyDollar = yyS[yypt-9 : yypt+1] var yyLOCAL *tree.ExternParam -//line mysql_sql.y:8059 +//line mysql_sql.y:8025 { yyLOCAL = &tree.ExternParam{ ExParamConst: tree.ExParamConst{ @@ -20457,10 +20346,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1210: + case 1207: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.ExternParam -//line mysql_sql.y:8072 +//line mysql_sql.y:8038 { yyLOCAL = &tree.ExternParam{ ExParamConst: tree.ExParamConst{ @@ -20469,10 +20358,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1211: + case 1208: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *tree.ExternParam -//line mysql_sql.y:8080 +//line mysql_sql.y:8046 { yyLOCAL = &tree.ExternParam{ ExParamConst: tree.ExParamConst{ @@ -20482,10 +20371,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1212: + case 1209: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.ExternParam -//line mysql_sql.y:8089 +//line mysql_sql.y:8055 { yyLOCAL = &tree.ExternParam{ ExParamConst: tree.ExParamConst{ @@ -20494,55 +20383,55 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1213: + case 1210: yyDollar = yyS[yypt-0 : yypt+1] -//line mysql_sql.y:8098 +//line mysql_sql.y:8064 { yyVAL.str = "" } - case 1214: + case 1211: yyDollar = yyS[yypt-4 : yypt+1] -//line mysql_sql.y:8102 +//line mysql_sql.y:8068 { yyVAL.str = yyDollar[4].str } - case 1215: + case 1212: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []string -//line mysql_sql.y:8108 +//line mysql_sql.y:8074 { yyLOCAL = yyDollar[1].strsUnion() } yyVAL.union = yyLOCAL - case 1216: + case 1213: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []string -//line mysql_sql.y:8112 +//line mysql_sql.y:8078 { yyLOCAL = append(yyDollar[1].strsUnion(), yyDollar[3].strsUnion()...) } yyVAL.union = yyLOCAL - case 1217: + case 1214: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL []string -//line mysql_sql.y:8117 +//line mysql_sql.y:8083 { yyLOCAL = []string{} } yyVAL.union = yyLOCAL - case 1218: + case 1215: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []string -//line mysql_sql.y:8121 +//line mysql_sql.y:8087 { yyLOCAL = append(yyLOCAL, yyDollar[1].str) yyLOCAL = append(yyLOCAL, yyDollar[3].str) } yyVAL.union = yyLOCAL - case 1219: + case 1216: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.TailParameter -//line mysql_sql.y:8128 +//line mysql_sql.y:8094 { yyLOCAL = &tree.TailParameter{ Charset: yyDollar[1].str, @@ -20554,22 +20443,22 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1220: + case 1217: yyDollar = yyS[yypt-0 : yypt+1] -//line mysql_sql.y:8140 +//line mysql_sql.y:8106 { yyVAL.str = "" } - case 1221: + case 1218: yyDollar = yyS[yypt-2 : yypt+1] -//line mysql_sql.y:8144 +//line mysql_sql.y:8110 { yyVAL.str = yyDollar[2].str } - case 1222: + case 1219: yyDollar = yyS[yypt-10 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:8150 +//line mysql_sql.y:8116 { var Name = yyDollar[4].tableNameUnion() var Type = yyDollar[5].columnTypeUnion() @@ -20591,10 +20480,10 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1223: + case 1220: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:8171 +//line mysql_sql.y:8137 { locale := "" fstr := "bigint" @@ -20609,44 +20498,44 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1224: + case 1221: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:8185 +//line mysql_sql.y:8151 { yyLOCAL = yyDollar[2].columnTypeUnion() } yyVAL.union = yyLOCAL - case 1225: + case 1222: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.TypeOption -//line mysql_sql.y:8189 +//line mysql_sql.y:8155 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1226: + case 1223: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.TypeOption -//line mysql_sql.y:8193 +//line mysql_sql.y:8159 { yyLOCAL = &tree.TypeOption{ Type: yyDollar[2].columnTypeUnion(), } } yyVAL.union = yyLOCAL - case 1227: + case 1224: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.IncrementByOption -//line mysql_sql.y:8199 +//line mysql_sql.y:8165 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1228: + case 1225: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.IncrementByOption -//line mysql_sql.y:8203 +//line mysql_sql.y:8169 { yyLOCAL = &tree.IncrementByOption{ Minus: false, @@ -20654,10 +20543,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1229: + case 1226: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.IncrementByOption -//line mysql_sql.y:8210 +//line mysql_sql.y:8176 { yyLOCAL = &tree.IncrementByOption{ Minus: false, @@ -20665,10 +20554,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1230: + case 1227: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.IncrementByOption -//line mysql_sql.y:8217 +//line mysql_sql.y:8183 { yyLOCAL = &tree.IncrementByOption{ Minus: true, @@ -20676,10 +20565,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1231: + case 1228: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.IncrementByOption -//line mysql_sql.y:8224 +//line mysql_sql.y:8190 { yyLOCAL = &tree.IncrementByOption{ Minus: true, @@ -20687,42 +20576,42 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1232: + case 1229: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:8231 +//line mysql_sql.y:8197 { yyLOCAL = false } yyVAL.union = yyLOCAL - case 1233: + case 1230: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:8235 +//line mysql_sql.y:8201 { yyLOCAL = false } yyVAL.union = yyLOCAL - case 1234: + case 1231: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:8239 +//line mysql_sql.y:8205 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 1235: + case 1232: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.MinValueOption -//line mysql_sql.y:8243 +//line mysql_sql.y:8209 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1236: + case 1233: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.MinValueOption -//line mysql_sql.y:8247 +//line mysql_sql.y:8213 { yyLOCAL = &tree.MinValueOption{ Minus: false, @@ -20730,10 +20619,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1237: + case 1234: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.MinValueOption -//line mysql_sql.y:8254 +//line mysql_sql.y:8220 { yyLOCAL = &tree.MinValueOption{ Minus: true, @@ -20741,18 +20630,18 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1238: + case 1235: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.MaxValueOption -//line mysql_sql.y:8261 +//line mysql_sql.y:8227 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1239: + case 1236: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.MaxValueOption -//line mysql_sql.y:8265 +//line mysql_sql.y:8231 { yyLOCAL = &tree.MaxValueOption{ Minus: false, @@ -20760,10 +20649,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1240: + case 1237: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.MaxValueOption -//line mysql_sql.y:8272 +//line mysql_sql.y:8238 { yyLOCAL = &tree.MaxValueOption{ Minus: true, @@ -20771,46 +20660,46 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1241: + case 1238: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.CycleOption -//line mysql_sql.y:8279 +//line mysql_sql.y:8245 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1242: + case 1239: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.CycleOption -//line mysql_sql.y:8283 +//line mysql_sql.y:8249 { yyLOCAL = &tree.CycleOption{ Cycle: false, } } yyVAL.union = yyLOCAL - case 1243: + case 1240: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.CycleOption -//line mysql_sql.y:8289 +//line mysql_sql.y:8255 { yyLOCAL = &tree.CycleOption{ Cycle: true, } } yyVAL.union = yyLOCAL - case 1244: + case 1241: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.StartWithOption -//line mysql_sql.y:8295 +//line mysql_sql.y:8261 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1245: + case 1242: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.StartWithOption -//line mysql_sql.y:8299 +//line mysql_sql.y:8265 { yyLOCAL = &tree.StartWithOption{ Minus: false, @@ -20818,10 +20707,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1246: + case 1243: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.StartWithOption -//line mysql_sql.y:8306 +//line mysql_sql.y:8272 { yyLOCAL = &tree.StartWithOption{ Minus: false, @@ -20829,10 +20718,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1247: + case 1244: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.StartWithOption -//line mysql_sql.y:8313 +//line mysql_sql.y:8279 { yyLOCAL = &tree.StartWithOption{ Minus: true, @@ -20840,10 +20729,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1248: + case 1245: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.StartWithOption -//line mysql_sql.y:8320 +//line mysql_sql.y:8286 { yyLOCAL = &tree.StartWithOption{ Minus: true, @@ -20851,58 +20740,58 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1249: + case 1246: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:8327 +//line mysql_sql.y:8293 { yyLOCAL = false } yyVAL.union = yyLOCAL - case 1250: + case 1247: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:8331 +//line mysql_sql.y:8297 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 1251: + case 1248: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:8336 +//line mysql_sql.y:8302 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 1252: + case 1249: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:8340 +//line mysql_sql.y:8306 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 1253: + case 1250: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:8344 +//line mysql_sql.y:8310 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 1254: + case 1251: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.PartitionOption -//line mysql_sql.y:8349 +//line mysql_sql.y:8315 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1255: + case 1252: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.PartitionOption -//line mysql_sql.y:8353 +//line mysql_sql.y:8319 { yyDollar[3].partitionByUnion().Num = uint64(yyDollar[4].int64ValUnion()) var PartBy = yyDollar[3].partitionByUnion() @@ -20915,18 +20804,18 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1256: + case 1253: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.ClusterByOption -//line mysql_sql.y:8366 +//line mysql_sql.y:8332 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1257: + case 1254: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.ClusterByOption -//line mysql_sql.y:8370 +//line mysql_sql.y:8336 { var ColumnList = []*tree.UnresolvedName{yyDollar[3].unresolvedNameUnion()} yyLOCAL = tree.NewClusterByOption( @@ -20935,10 +20824,10 @@ yydefault: } yyVAL.union = yyLOCAL - case 1258: + case 1255: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *tree.ClusterByOption -//line mysql_sql.y:8378 +//line mysql_sql.y:8344 { var ColumnList = yyDollar[4].unresolveNamesUnion() yyLOCAL = tree.NewClusterByOption( @@ -20946,18 +20835,18 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1259: + case 1256: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.PartitionBy -//line mysql_sql.y:8386 +//line mysql_sql.y:8352 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1260: + case 1257: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.PartitionBy -//line mysql_sql.y:8390 +//line mysql_sql.y:8356 { var IsSubPartition = true var PType = yyDollar[3].partitionByUnion() @@ -20969,42 +20858,42 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1261: + case 1258: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL []*tree.Partition -//line mysql_sql.y:8402 +//line mysql_sql.y:8368 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1262: + case 1259: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []*tree.Partition -//line mysql_sql.y:8406 +//line mysql_sql.y:8372 { yyLOCAL = yyDollar[2].partitionsUnion() } yyVAL.union = yyLOCAL - case 1263: + case 1260: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []*tree.Partition -//line mysql_sql.y:8412 +//line mysql_sql.y:8378 { yyLOCAL = []*tree.Partition{yyDollar[1].partitionUnion()} } yyVAL.union = yyLOCAL - case 1264: + case 1261: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []*tree.Partition -//line mysql_sql.y:8416 +//line mysql_sql.y:8382 { yyLOCAL = append(yyDollar[1].partitionsUnion(), yyDollar[3].partitionUnion()) } yyVAL.union = yyLOCAL - case 1265: + case 1262: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.Partition -//line mysql_sql.y:8422 +//line mysql_sql.y:8388 { var Name = tree.Identifier(yyDollar[2].cstrUnion().Compare()) var Values = yyDollar[3].valuesUnion() @@ -21018,10 +20907,10 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1266: + case 1263: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *tree.Partition -//line mysql_sql.y:8435 +//line mysql_sql.y:8401 { var Name = tree.Identifier(yyDollar[2].cstrUnion().Compare()) var Values = yyDollar[3].valuesUnion() @@ -21035,42 +20924,42 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1267: + case 1264: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL []*tree.SubPartition -//line mysql_sql.y:8449 +//line mysql_sql.y:8415 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1268: + case 1265: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []*tree.SubPartition -//line mysql_sql.y:8453 +//line mysql_sql.y:8419 { yyLOCAL = yyDollar[2].subPartitionsUnion() } yyVAL.union = yyLOCAL - case 1269: + case 1266: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []*tree.SubPartition -//line mysql_sql.y:8459 +//line mysql_sql.y:8425 { yyLOCAL = []*tree.SubPartition{yyDollar[1].subPartitionUnion()} } yyVAL.union = yyLOCAL - case 1270: + case 1267: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []*tree.SubPartition -//line mysql_sql.y:8463 +//line mysql_sql.y:8429 { yyLOCAL = append(yyDollar[1].subPartitionsUnion(), yyDollar[3].subPartitionUnion()) } yyVAL.union = yyLOCAL - case 1271: + case 1268: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.SubPartition -//line mysql_sql.y:8469 +//line mysql_sql.y:8435 { var Name = tree.Identifier(yyDollar[2].cstrUnion().Compare()) var Options []tree.TableOption @@ -21080,10 +20969,10 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1272: + case 1269: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.SubPartition -//line mysql_sql.y:8478 +//line mysql_sql.y:8444 { var Name = tree.Identifier(yyDollar[2].cstrUnion().Compare()) var Options = yyDollar[3].tableOptionsUnion() @@ -21093,53 +20982,53 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1273: + case 1270: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []tree.TableOption -//line mysql_sql.y:8489 +//line mysql_sql.y:8455 { yyLOCAL = []tree.TableOption{yyDollar[1].tableOptionUnion()} } yyVAL.union = yyLOCAL - case 1274: + case 1271: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL []tree.TableOption -//line mysql_sql.y:8493 +//line mysql_sql.y:8459 { yyLOCAL = append(yyDollar[1].tableOptionsUnion(), yyDollar[2].tableOptionUnion()) } yyVAL.union = yyLOCAL - case 1275: + case 1272: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.Values -//line mysql_sql.y:8498 +//line mysql_sql.y:8464 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1276: + case 1273: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Values -//line mysql_sql.y:8502 +//line mysql_sql.y:8468 { expr := tree.NewMaxValue() var valueList = tree.Exprs{expr} yyLOCAL = tree.NewValuesLessThan(valueList) } yyVAL.union = yyLOCAL - case 1277: + case 1274: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL tree.Values -//line mysql_sql.y:8508 +//line mysql_sql.y:8474 { var valueList = yyDollar[5].exprsUnion() yyLOCAL = tree.NewValuesLessThan(valueList) } yyVAL.union = yyLOCAL - case 1278: + case 1275: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.Values -//line mysql_sql.y:8513 +//line mysql_sql.y:8479 { var valueList = yyDollar[4].exprsUnion() yyLOCAL = tree.NewValuesIn( @@ -21147,18 +21036,18 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1279: + case 1276: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL int64 -//line mysql_sql.y:8521 +//line mysql_sql.y:8487 { yyLOCAL = 0 } yyVAL.union = yyLOCAL - case 1280: + case 1277: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL int64 -//line mysql_sql.y:8525 +//line mysql_sql.y:8491 { res := yyDollar[2].item.(int64) if res == 0 { @@ -21168,18 +21057,18 @@ yydefault: yyLOCAL = res } yyVAL.union = yyLOCAL - case 1281: + case 1278: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL int64 -//line mysql_sql.y:8535 +//line mysql_sql.y:8501 { yyLOCAL = 0 } yyVAL.union = yyLOCAL - case 1282: + case 1279: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL int64 -//line mysql_sql.y:8539 +//line mysql_sql.y:8505 { res := yyDollar[2].item.(int64) if res == 0 { @@ -21189,10 +21078,10 @@ yydefault: yyLOCAL = res } yyVAL.union = yyLOCAL - case 1283: + case 1280: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.PartitionBy -//line mysql_sql.y:8550 +//line mysql_sql.y:8516 { rangeTyp := tree.NewRangeType() rangeTyp.Expr = yyDollar[3].exprUnion() @@ -21201,10 +21090,10 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1284: + case 1281: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *tree.PartitionBy -//line mysql_sql.y:8558 +//line mysql_sql.y:8524 { rangeTyp := tree.NewRangeType() rangeTyp.ColumnList = yyDollar[4].unresolveNamesUnion() @@ -21213,10 +21102,10 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1285: + case 1282: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.PartitionBy -//line mysql_sql.y:8566 +//line mysql_sql.y:8532 { listTyp := tree.NewListType() listTyp.Expr = yyDollar[3].exprUnion() @@ -21225,10 +21114,10 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1286: + case 1283: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *tree.PartitionBy -//line mysql_sql.y:8574 +//line mysql_sql.y:8540 { listTyp := tree.NewListType() listTyp.ColumnList = yyDollar[4].unresolveNamesUnion() @@ -21237,10 +21126,10 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1288: + case 1285: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *tree.PartitionBy -//line mysql_sql.y:8585 +//line mysql_sql.y:8551 { keyTyp := tree.NewKeyType() keyTyp.Linear = yyDollar[1].boolValUnion() @@ -21250,10 +21139,10 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1289: + case 1286: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.PartitionBy -//line mysql_sql.y:8594 +//line mysql_sql.y:8560 { keyTyp := tree.NewKeyType() keyTyp.Linear = yyDollar[1].boolValUnion() @@ -21264,10 +21153,10 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1290: + case 1287: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *tree.PartitionBy -//line mysql_sql.y:8604 +//line mysql_sql.y:8570 { Linear := yyDollar[1].boolValUnion() Expr := yyDollar[4].exprUnion() @@ -21277,58 +21166,58 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1291: + case 1288: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL int64 -//line mysql_sql.y:8614 +//line mysql_sql.y:8580 { yyLOCAL = 2 } yyVAL.union = yyLOCAL - case 1292: + case 1289: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL int64 -//line mysql_sql.y:8618 +//line mysql_sql.y:8584 { yyLOCAL = yyDollar[3].item.(int64) } yyVAL.union = yyLOCAL - case 1293: + case 1290: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:8623 +//line mysql_sql.y:8589 { yyLOCAL = false } yyVAL.union = yyLOCAL - case 1294: + case 1291: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:8627 +//line mysql_sql.y:8593 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 1295: + case 1292: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []*tree.ConnectorOption -//line mysql_sql.y:8633 +//line mysql_sql.y:8599 { yyLOCAL = []*tree.ConnectorOption{yyDollar[1].connectorOptionUnion()} } yyVAL.union = yyLOCAL - case 1296: + case 1293: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []*tree.ConnectorOption -//line mysql_sql.y:8637 +//line mysql_sql.y:8603 { yyLOCAL = append(yyDollar[1].connectorOptionsUnion(), yyDollar[3].connectorOptionUnion()) } yyVAL.union = yyLOCAL - case 1297: + case 1294: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.ConnectorOption -//line mysql_sql.y:8643 +//line mysql_sql.y:8609 { var Key = tree.Identifier(yyDollar[1].cstrUnion().Compare()) var Val = yyDollar[3].exprUnion() @@ -21338,10 +21227,10 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1298: + case 1295: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.ConnectorOption -//line mysql_sql.y:8652 +//line mysql_sql.y:8618 { var Key = tree.Identifier(yyDollar[1].str) var Val = yyDollar[3].exprUnion() @@ -21351,42 +21240,42 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1299: + case 1296: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL []tree.TableOption -//line mysql_sql.y:8662 +//line mysql_sql.y:8628 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1300: + case 1297: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL []tree.TableOption -//line mysql_sql.y:8666 +//line mysql_sql.y:8632 { yyLOCAL = yyDollar[3].tableOptionsUnion() } yyVAL.union = yyLOCAL - case 1301: + case 1298: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []tree.TableOption -//line mysql_sql.y:8672 +//line mysql_sql.y:8638 { yyLOCAL = []tree.TableOption{yyDollar[1].tableOptionUnion()} } yyVAL.union = yyLOCAL - case 1302: + case 1299: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []tree.TableOption -//line mysql_sql.y:8676 +//line mysql_sql.y:8642 { yyLOCAL = append(yyDollar[1].tableOptionsUnion(), yyDollar[3].tableOptionUnion()) } yyVAL.union = yyLOCAL - case 1303: + case 1300: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:8682 +//line mysql_sql.y:8648 { var Key = tree.Identifier(yyDollar[1].cstrUnion().Compare()) var Val = yyDollar[3].exprUnion() @@ -21396,10 +21285,10 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1304: + case 1301: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:8691 +//line mysql_sql.y:8657 { var Key = tree.Identifier(yyDollar[1].str) var Val = yyDollar[3].exprUnion() @@ -21409,348 +21298,348 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1305: + case 1302: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL []tree.TableOption -//line mysql_sql.y:8701 +//line mysql_sql.y:8667 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1306: + case 1303: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []tree.TableOption -//line mysql_sql.y:8705 +//line mysql_sql.y:8671 { yyLOCAL = yyDollar[1].tableOptionsUnion() } yyVAL.union = yyLOCAL - case 1307: + case 1304: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []tree.TableOption -//line mysql_sql.y:8711 +//line mysql_sql.y:8677 { yyLOCAL = []tree.TableOption{yyDollar[1].tableOptionUnion()} } yyVAL.union = yyLOCAL - case 1308: + case 1305: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []tree.TableOption -//line mysql_sql.y:8715 +//line mysql_sql.y:8681 { yyLOCAL = append(yyDollar[1].tableOptionsUnion(), yyDollar[3].tableOptionUnion()) } yyVAL.union = yyLOCAL - case 1309: + case 1306: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL []tree.TableOption -//line mysql_sql.y:8719 +//line mysql_sql.y:8685 { yyLOCAL = append(yyDollar[1].tableOptionsUnion(), yyDollar[2].tableOptionUnion()) } yyVAL.union = yyLOCAL - case 1310: + case 1307: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:8725 +//line mysql_sql.y:8691 { yyLOCAL = tree.NewTableOptionAUTOEXTEND_SIZE(uint64(yyDollar[3].item.(int64))) } yyVAL.union = yyLOCAL - case 1311: + case 1308: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:8729 +//line mysql_sql.y:8695 { yyLOCAL = tree.NewTableOptionAutoIncrement(uint64(yyDollar[3].item.(int64))) } yyVAL.union = yyLOCAL - case 1312: + case 1309: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:8733 +//line mysql_sql.y:8699 { yyLOCAL = tree.NewTableOptionAvgRowLength(uint64(yyDollar[3].item.(int64))) } yyVAL.union = yyLOCAL - case 1313: + case 1310: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:8737 +//line mysql_sql.y:8703 { yyLOCAL = tree.NewTableOptionCharset(yyDollar[4].str) } yyVAL.union = yyLOCAL - case 1314: + case 1311: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:8741 +//line mysql_sql.y:8707 { yyLOCAL = tree.NewTableOptionCollate(yyDollar[4].str) } yyVAL.union = yyLOCAL - case 1315: + case 1312: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:8745 +//line mysql_sql.y:8711 { yyLOCAL = tree.NewTableOptionChecksum(uint64(yyDollar[3].item.(int64))) } yyVAL.union = yyLOCAL - case 1316: + case 1313: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:8749 +//line mysql_sql.y:8715 { str := util.DealCommentString(yyDollar[3].str) yyLOCAL = tree.NewTableOptionComment(str) } yyVAL.union = yyLOCAL - case 1317: + case 1314: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:8754 +//line mysql_sql.y:8720 { yyLOCAL = tree.NewTableOptionCompression(yyDollar[3].str) } yyVAL.union = yyLOCAL - case 1318: + case 1315: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:8758 +//line mysql_sql.y:8724 { yyLOCAL = tree.NewTableOptionConnection(yyDollar[3].str) } yyVAL.union = yyLOCAL - case 1319: + case 1316: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:8762 +//line mysql_sql.y:8728 { yyLOCAL = tree.NewTableOptionDataDirectory(yyDollar[4].str) } yyVAL.union = yyLOCAL - case 1320: + case 1317: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:8766 +//line mysql_sql.y:8732 { yyLOCAL = tree.NewTableOptionIndexDirectory(yyDollar[4].str) } yyVAL.union = yyLOCAL - case 1321: + case 1318: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:8770 +//line mysql_sql.y:8736 { yyLOCAL = tree.NewTableOptionDelayKeyWrite(uint64(yyDollar[3].item.(int64))) } yyVAL.union = yyLOCAL - case 1322: + case 1319: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:8774 +//line mysql_sql.y:8740 { yyLOCAL = tree.NewTableOptionEncryption(yyDollar[3].str) } yyVAL.union = yyLOCAL - case 1323: + case 1320: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:8778 +//line mysql_sql.y:8744 { yyLOCAL = tree.NewTableOptionEngine(yyDollar[3].str) } yyVAL.union = yyLOCAL - case 1324: + case 1321: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:8782 +//line mysql_sql.y:8748 { yyLOCAL = tree.NewTableOptionEngineAttr(yyDollar[3].str) } yyVAL.union = yyLOCAL - case 1325: + case 1322: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:8786 +//line mysql_sql.y:8752 { yyLOCAL = tree.NewTableOptionInsertMethod(yyDollar[3].str) } yyVAL.union = yyLOCAL - case 1326: + case 1323: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:8790 +//line mysql_sql.y:8756 { yyLOCAL = tree.NewTableOptionKeyBlockSize(uint64(yyDollar[3].item.(int64))) } yyVAL.union = yyLOCAL - case 1327: + case 1324: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:8794 +//line mysql_sql.y:8760 { yyLOCAL = tree.NewTableOptionMaxRows(uint64(yyDollar[3].item.(int64))) } yyVAL.union = yyLOCAL - case 1328: + case 1325: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:8798 +//line mysql_sql.y:8764 { yyLOCAL = tree.NewTableOptionMinRows(uint64(yyDollar[3].item.(int64))) } yyVAL.union = yyLOCAL - case 1329: + case 1326: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:8802 +//line mysql_sql.y:8768 { t := tree.NewTableOptionPackKeys() t.Value = yyDollar[3].item.(int64) yyLOCAL = t } yyVAL.union = yyLOCAL - case 1330: + case 1327: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:8808 +//line mysql_sql.y:8774 { t := tree.NewTableOptionPackKeys() t.Default = true yyLOCAL = t } yyVAL.union = yyLOCAL - case 1331: + case 1328: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:8814 +//line mysql_sql.y:8780 { yyLOCAL = tree.NewTableOptionPassword(yyDollar[3].str) } yyVAL.union = yyLOCAL - case 1332: + case 1329: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:8818 +//line mysql_sql.y:8784 { yyLOCAL = tree.NewTableOptionRowFormat(yyDollar[3].rowFormatTypeUnion()) } yyVAL.union = yyLOCAL - case 1333: + case 1330: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:8822 +//line mysql_sql.y:8788 { yyLOCAL = tree.NewTTableOptionStartTrans(true) } yyVAL.union = yyLOCAL - case 1334: + case 1331: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:8826 +//line mysql_sql.y:8792 { yyLOCAL = tree.NewTTableOptionSecondaryEngineAttr(yyDollar[3].str) } yyVAL.union = yyLOCAL - case 1335: + case 1332: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:8830 +//line mysql_sql.y:8796 { t := tree.NewTableOptionStatsAutoRecalc() t.Value = uint64(yyDollar[3].item.(int64)) yyLOCAL = t } yyVAL.union = yyLOCAL - case 1336: + case 1333: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:8836 +//line mysql_sql.y:8802 { t := tree.NewTableOptionStatsAutoRecalc() t.Default = true yyLOCAL = t } yyVAL.union = yyLOCAL - case 1337: + case 1334: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:8842 +//line mysql_sql.y:8808 { t := tree.NewTableOptionStatsPersistent() t.Value = uint64(yyDollar[3].item.(int64)) yyLOCAL = t } yyVAL.union = yyLOCAL - case 1338: + case 1335: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:8848 +//line mysql_sql.y:8814 { t := tree.NewTableOptionStatsPersistent() t.Default = true yyLOCAL = t } yyVAL.union = yyLOCAL - case 1339: + case 1336: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:8854 +//line mysql_sql.y:8820 { t := tree.NewTableOptionStatsSamplePages() t.Value = uint64(yyDollar[3].item.(int64)) yyLOCAL = t } yyVAL.union = yyLOCAL - case 1340: + case 1337: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:8860 +//line mysql_sql.y:8826 { t := tree.NewTableOptionStatsSamplePages() t.Default = true yyLOCAL = t } yyVAL.union = yyLOCAL - case 1341: + case 1338: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:8866 +//line mysql_sql.y:8832 { yyLOCAL = tree.NewTableOptionTablespace(yyDollar[3].cstrUnion().Compare(), "") } yyVAL.union = yyLOCAL - case 1342: + case 1339: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:8870 +//line mysql_sql.y:8836 { yyLOCAL = tree.NewTableOptionTablespace("", yyDollar[1].str) } yyVAL.union = yyLOCAL - case 1343: + case 1340: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:8874 +//line mysql_sql.y:8840 { yyLOCAL = tree.NewTableOptionUnion(yyDollar[4].tableNamesUnion()) } yyVAL.union = yyLOCAL - case 1344: + case 1341: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:8878 +//line mysql_sql.y:8844 { var Preperties = yyDollar[3].propertiesUnion() yyLOCAL = tree.NewTableOptionProperties(Preperties) } yyVAL.union = yyLOCAL - case 1345: + case 1342: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:8883 +//line mysql_sql.y:8849 { var retentionPeriod = uint64(yyDollar[4].item.(int64)) var retentionUnit = strings.ToLower(yyDollar[5].str) @@ -21760,26 +21649,26 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1346: + case 1343: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []tree.Property -//line mysql_sql.y:8894 +//line mysql_sql.y:8860 { yyLOCAL = []tree.Property{yyDollar[1].propertyUnion()} } yyVAL.union = yyLOCAL - case 1347: + case 1344: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []tree.Property -//line mysql_sql.y:8898 +//line mysql_sql.y:8864 { yyLOCAL = append(yyDollar[1].propertiesUnion(), yyDollar[3].propertyUnion()) } yyVAL.union = yyLOCAL - case 1348: + case 1345: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Property -//line mysql_sql.y:8904 +//line mysql_sql.y:8870 { var Key = yyDollar[1].str var Value = yyDollar[3].str @@ -21789,96 +21678,96 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1349: + case 1346: yyDollar = yyS[yypt-2 : yypt+1] -//line mysql_sql.y:8915 +//line mysql_sql.y:8881 { yyVAL.str = " " + yyDollar[1].str + " " + yyDollar[2].str } - case 1350: + case 1347: yyDollar = yyS[yypt-2 : yypt+1] -//line mysql_sql.y:8919 +//line mysql_sql.y:8885 { yyVAL.str = " " + yyDollar[1].str + " " + yyDollar[2].str } - case 1351: + case 1348: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.RowFormatType -//line mysql_sql.y:8925 +//line mysql_sql.y:8891 { yyLOCAL = tree.ROW_FORMAT_DEFAULT } yyVAL.union = yyLOCAL - case 1352: + case 1349: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.RowFormatType -//line mysql_sql.y:8929 +//line mysql_sql.y:8895 { yyLOCAL = tree.ROW_FORMAT_DYNAMIC } yyVAL.union = yyLOCAL - case 1353: + case 1350: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.RowFormatType -//line mysql_sql.y:8933 +//line mysql_sql.y:8899 { yyLOCAL = tree.ROW_FORMAT_FIXED } yyVAL.union = yyLOCAL - case 1354: + case 1351: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.RowFormatType -//line mysql_sql.y:8937 +//line mysql_sql.y:8903 { yyLOCAL = tree.ROW_FORMAT_COMPRESSED } yyVAL.union = yyLOCAL - case 1355: + case 1352: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.RowFormatType -//line mysql_sql.y:8941 +//line mysql_sql.y:8907 { yyLOCAL = tree.ROW_FORMAT_REDUNDANT } yyVAL.union = yyLOCAL - case 1356: + case 1353: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.RowFormatType -//line mysql_sql.y:8945 +//line mysql_sql.y:8911 { yyLOCAL = tree.ROW_FORMAT_COMPACT } yyVAL.union = yyLOCAL - case 1361: + case 1358: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.TableNames -//line mysql_sql.y:8959 +//line mysql_sql.y:8925 { yyLOCAL = tree.TableNames{yyDollar[1].tableNameUnion()} } yyVAL.union = yyLOCAL - case 1362: + case 1359: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableNames -//line mysql_sql.y:8963 +//line mysql_sql.y:8929 { yyLOCAL = append(yyDollar[1].tableNamesUnion(), yyDollar[3].tableNameUnion()) } yyVAL.union = yyLOCAL - case 1363: + case 1360: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.TableName -//line mysql_sql.y:8972 +//line mysql_sql.y:8938 { tblName := yylex.(*Lexer).GetDbOrTblName(yyDollar[1].cstrUnion().Origin()) prefix := tree.ObjectNamePrefix{ExplicitSchema: false} yyLOCAL = tree.NewTableName(tree.Identifier(tblName), prefix, yyDollar[2].atTimeStampUnion()) } yyVAL.union = yyLOCAL - case 1364: + case 1361: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.TableName -//line mysql_sql.y:8978 +//line mysql_sql.y:8944 { dbName := yylex.(*Lexer).GetDbOrTblName(yyDollar[1].cstrUnion().Origin()) tblName := yylex.(*Lexer).GetDbOrTblName(yyDollar[3].cstrUnion().Origin()) @@ -21886,18 +21775,18 @@ yydefault: yyLOCAL = tree.NewTableName(tree.Identifier(tblName), prefix, yyDollar[4].atTimeStampUnion()) } yyVAL.union = yyLOCAL - case 1365: + case 1362: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.AtTimeStamp -//line mysql_sql.y:8986 +//line mysql_sql.y:8952 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1366: + case 1363: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *tree.AtTimeStamp -//line mysql_sql.y:8990 +//line mysql_sql.y:8956 { yyLOCAL = &tree.AtTimeStamp{ Type: tree.ATTIMESTAMPTIME, @@ -21905,10 +21794,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1367: + case 1364: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *tree.AtTimeStamp -//line mysql_sql.y:8997 +//line mysql_sql.y:8963 { var str = yyDollar[4].cstrUnion().Compare() yyLOCAL = &tree.AtTimeStamp{ @@ -21918,10 +21807,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1368: + case 1365: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *tree.AtTimeStamp -//line mysql_sql.y:9006 +//line mysql_sql.y:8972 { yyLOCAL = &tree.AtTimeStamp{ Type: tree.ATTIMESTAMPSNAPSHOT, @@ -21930,10 +21819,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1369: + case 1366: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *tree.AtTimeStamp -//line mysql_sql.y:9014 +//line mysql_sql.y:8980 { yyLOCAL = &tree.AtTimeStamp{ Type: tree.ATMOTIMESTAMP, @@ -21941,10 +21830,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1370: + case 1367: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.AtTimeStamp -//line mysql_sql.y:9021 +//line mysql_sql.y:8987 { yyLOCAL = &tree.AtTimeStamp{ Type: tree.ASOFTIMESTAMP, @@ -21952,74 +21841,74 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1371: + case 1368: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.TableDefs -//line mysql_sql.y:9029 +//line mysql_sql.y:8995 { yyLOCAL = tree.TableDefs(nil) } yyVAL.union = yyLOCAL - case 1373: + case 1370: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.TableDefs -//line mysql_sql.y:9036 +//line mysql_sql.y:9002 { yyLOCAL = tree.TableDefs{yyDollar[1].tableDefUnion()} } yyVAL.union = yyLOCAL - case 1374: + case 1371: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableDefs -//line mysql_sql.y:9040 +//line mysql_sql.y:9006 { yyLOCAL = append(yyDollar[1].tableDefsUnion(), yyDollar[3].tableDefUnion()) } yyVAL.union = yyLOCAL - case 1375: + case 1372: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.TableDef -//line mysql_sql.y:9046 +//line mysql_sql.y:9012 { yyLOCAL = tree.TableDef(yyDollar[1].columnTableDefUnion()) } yyVAL.union = yyLOCAL - case 1376: + case 1373: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.TableDef -//line mysql_sql.y:9050 +//line mysql_sql.y:9016 { yyLOCAL = yyDollar[1].tableDefUnion() } yyVAL.union = yyLOCAL - case 1377: + case 1374: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.TableDef -//line mysql_sql.y:9054 +//line mysql_sql.y:9020 { yyLOCAL = yyDollar[1].tableDefUnion() } yyVAL.union = yyLOCAL - case 1378: + case 1375: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.TableDef -//line mysql_sql.y:9060 +//line mysql_sql.y:9026 { yyLOCAL = yyDollar[1].tableDefUnion() } yyVAL.union = yyLOCAL - case 1379: + case 1376: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.TableDef -//line mysql_sql.y:9064 +//line mysql_sql.y:9030 { yyLOCAL = yyDollar[1].tableDefUnion() } yyVAL.union = yyLOCAL - case 1380: + case 1377: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL tree.TableDef -//line mysql_sql.y:9070 +//line mysql_sql.y:9036 { var KeyParts = yyDollar[5].keyPartsUnion() var Name = yyDollar[3].str @@ -22033,10 +21922,10 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1381: + case 1378: yyDollar = yyS[yypt-9 : yypt+1] var yyLOCAL tree.TableDef -//line mysql_sql.y:9083 +//line mysql_sql.y:9049 { var KeyParts = yyDollar[5].keyPartsUnion() var Name = yyDollar[3].str @@ -22050,10 +21939,10 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1382: + case 1379: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL tree.TableDef -//line mysql_sql.y:9096 +//line mysql_sql.y:9062 { keyTyp := tree.INDEX_TYPE_INVALID if yyDollar[3].strsUnion()[1] != "" { @@ -22095,10 +21984,10 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1383: + case 1380: yyDollar = yyS[yypt-9 : yypt+1] var yyLOCAL tree.TableDef -//line mysql_sql.y:9137 +//line mysql_sql.y:9103 { keyTyp := tree.INDEX_TYPE_INVALID if yyDollar[3].strsUnion()[1] != "" { @@ -22139,10 +22028,10 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1384: + case 1381: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.TableDef -//line mysql_sql.y:9179 +//line mysql_sql.y:9145 { if yyDollar[1].str != "" { switch v := yyDollar[2].tableDefUnion().(type) { @@ -22157,18 +22046,18 @@ yydefault: yyLOCAL = yyDollar[2].tableDefUnion() } yyVAL.union = yyLOCAL - case 1385: + case 1382: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.TableDef -//line mysql_sql.y:9193 +//line mysql_sql.y:9159 { yyLOCAL = yyDollar[1].tableDefUnion() } yyVAL.union = yyLOCAL - case 1386: + case 1383: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL tree.TableDef -//line mysql_sql.y:9199 +//line mysql_sql.y:9165 { var KeyParts = yyDollar[5].keyPartsUnion() var Name = yyDollar[3].strsUnion()[0] @@ -22182,10 +22071,10 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1387: + case 1384: yyDollar = yyS[yypt-9 : yypt+1] var yyLOCAL tree.TableDef -//line mysql_sql.y:9212 +//line mysql_sql.y:9178 { var KeyParts = yyDollar[5].keyPartsUnion() var Name = yyDollar[3].strsUnion()[0] @@ -22199,10 +22088,10 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1388: + case 1385: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL tree.TableDef -//line mysql_sql.y:9225 +//line mysql_sql.y:9191 { var KeyParts = yyDollar[5].keyPartsUnion() var Name = yyDollar[3].strsUnion()[0] @@ -22216,10 +22105,10 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1389: + case 1386: yyDollar = yyS[yypt-9 : yypt+1] var yyLOCAL tree.TableDef -//line mysql_sql.y:9238 +//line mysql_sql.y:9204 { var KeyParts = yyDollar[5].keyPartsUnion() var Name = yyDollar[3].strsUnion()[0] @@ -22233,10 +22122,10 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1390: + case 1387: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL tree.TableDef -//line mysql_sql.y:9251 +//line mysql_sql.y:9217 { var IfNotExists = yyDollar[3].ifNotExistsUnion() var KeyParts = yyDollar[6].keyPartsUnion() @@ -22252,10 +22141,10 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1391: + case 1388: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.TableDef -//line mysql_sql.y:9266 +//line mysql_sql.y:9232 { var Expr = yyDollar[3].exprUnion() var Enforced = yyDollar[5].boolValUnion() @@ -22265,327 +22154,327 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1392: + case 1389: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:9276 +//line mysql_sql.y:9242 { yyLOCAL = false } yyVAL.union = yyLOCAL - case 1394: + case 1391: yyDollar = yyS[yypt-0 : yypt+1] -//line mysql_sql.y:9282 +//line mysql_sql.y:9248 { yyVAL.str = "" } - case 1395: + case 1392: yyDollar = yyS[yypt-1 : yypt+1] -//line mysql_sql.y:9286 +//line mysql_sql.y:9252 { yyVAL.str = yyDollar[1].str } - case 1398: + case 1395: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []string -//line mysql_sql.y:9296 +//line mysql_sql.y:9262 { yyLOCAL = make([]string, 2) yyLOCAL[0] = yyDollar[1].str yyLOCAL[1] = "" } yyVAL.union = yyLOCAL - case 1399: + case 1396: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []string -//line mysql_sql.y:9302 +//line mysql_sql.y:9268 { yyLOCAL = make([]string, 2) yyLOCAL[0] = yyDollar[1].str yyLOCAL[1] = yyDollar[3].str } yyVAL.union = yyLOCAL - case 1400: + case 1397: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []string -//line mysql_sql.y:9308 +//line mysql_sql.y:9274 { yyLOCAL = make([]string, 2) yyLOCAL[0] = yyDollar[1].cstrUnion().Compare() yyLOCAL[1] = yyDollar[3].str } yyVAL.union = yyLOCAL - case 1412: + case 1409: yyDollar = yyS[yypt-0 : yypt+1] -//line mysql_sql.y:9330 +//line mysql_sql.y:9296 { yyVAL.str = "" } - case 1413: + case 1410: yyDollar = yyS[yypt-1 : yypt+1] -//line mysql_sql.y:9334 +//line mysql_sql.y:9300 { yyVAL.str = yyDollar[1].cstrUnion().Compare() } - case 1414: + case 1411: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.ColumnTableDef -//line mysql_sql.y:9340 +//line mysql_sql.y:9306 { yyLOCAL = tree.NewColumnTableDef(yyDollar[1].unresolvedNameUnion(), yyDollar[2].columnTypeUnion(), yyDollar[3].columnAttributesUnion()) } yyVAL.union = yyLOCAL - case 1415: + case 1412: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.UnresolvedName -//line mysql_sql.y:9346 +//line mysql_sql.y:9312 { yyLOCAL = tree.NewUnresolvedName(yyDollar[1].cstrUnion()) } yyVAL.union = yyLOCAL - case 1416: + case 1413: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.UnresolvedName -//line mysql_sql.y:9350 +//line mysql_sql.y:9316 { tblNameCStr := yylex.(*Lexer).GetDbOrTblNameCStr(yyDollar[1].cstrUnion().Origin()) yyLOCAL = tree.NewUnresolvedName(tblNameCStr, yyDollar[3].cstrUnion()) } yyVAL.union = yyLOCAL - case 1417: + case 1414: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *tree.UnresolvedName -//line mysql_sql.y:9355 +//line mysql_sql.y:9321 { dbNameCStr := yylex.(*Lexer).GetDbOrTblNameCStr(yyDollar[1].cstrUnion().Origin()) tblNameCStr := yylex.(*Lexer).GetDbOrTblNameCStr(yyDollar[3].cstrUnion().Origin()) yyLOCAL = tree.NewUnresolvedName(dbNameCStr, tblNameCStr, yyDollar[5].cstrUnion()) } yyVAL.union = yyLOCAL - case 1418: + case 1415: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.CStr -//line mysql_sql.y:9363 +//line mysql_sql.y:9329 { yyLOCAL = tree.NewCStr(yyDollar[1].str, 1) } yyVAL.union = yyLOCAL - case 1419: + case 1416: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.CStr -//line mysql_sql.y:9367 +//line mysql_sql.y:9333 { yyLOCAL = tree.NewCStr(yyDollar[1].str, 1) } yyVAL.union = yyLOCAL - case 1420: + case 1417: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.CStr -//line mysql_sql.y:9371 +//line mysql_sql.y:9337 { yyLOCAL = tree.NewCStr(yyDollar[1].str, 1) } yyVAL.union = yyLOCAL - case 1421: + case 1418: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.CStr -//line mysql_sql.y:9375 +//line mysql_sql.y:9341 { yyLOCAL = tree.NewCStr(yyDollar[1].str, 1) } yyVAL.union = yyLOCAL - case 1422: + case 1419: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.CStr -//line mysql_sql.y:9381 +//line mysql_sql.y:9347 { yyLOCAL = yylex.(*Lexer).GetDbOrTblNameCStr(yyDollar[1].cstrUnion().Origin()) } yyVAL.union = yyLOCAL - case 1423: + case 1420: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.UnresolvedName -//line mysql_sql.y:9387 +//line mysql_sql.y:9353 { yyLOCAL = tree.NewUnresolvedName(yyDollar[1].cstrUnion()) } yyVAL.union = yyLOCAL - case 1424: + case 1421: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.UnresolvedName -//line mysql_sql.y:9391 +//line mysql_sql.y:9357 { tblNameCStr := yylex.(*Lexer).GetDbOrTblNameCStr(yyDollar[1].cstrUnion().Origin()) yyLOCAL = tree.NewUnresolvedName(tblNameCStr, yyDollar[3].cstrUnion()) } yyVAL.union = yyLOCAL - case 1425: + case 1422: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *tree.UnresolvedName -//line mysql_sql.y:9396 +//line mysql_sql.y:9362 { dbNameCStr := yylex.(*Lexer).GetDbOrTblNameCStr(yyDollar[1].cstrUnion().Origin()) tblNameCStr := yylex.(*Lexer).GetDbOrTblNameCStr(yyDollar[3].cstrUnion().Origin()) yyLOCAL = tree.NewUnresolvedName(dbNameCStr, tblNameCStr, yyDollar[5].cstrUnion()) } yyVAL.union = yyLOCAL - case 1426: + case 1423: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL []tree.ColumnAttribute -//line mysql_sql.y:9403 +//line mysql_sql.y:9369 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1427: + case 1424: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []tree.ColumnAttribute -//line mysql_sql.y:9407 +//line mysql_sql.y:9373 { yyLOCAL = yyDollar[1].columnAttributesUnion() } yyVAL.union = yyLOCAL - case 1428: + case 1425: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []tree.ColumnAttribute -//line mysql_sql.y:9413 +//line mysql_sql.y:9379 { yyLOCAL = []tree.ColumnAttribute{yyDollar[1].columnAttributeUnion()} } yyVAL.union = yyLOCAL - case 1429: + case 1426: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL []tree.ColumnAttribute -//line mysql_sql.y:9417 +//line mysql_sql.y:9383 { yyLOCAL = append(yyDollar[1].columnAttributesUnion(), yyDollar[2].columnAttributeUnion()) } yyVAL.union = yyLOCAL - case 1430: + case 1427: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.ColumnAttribute -//line mysql_sql.y:9423 +//line mysql_sql.y:9389 { yyLOCAL = tree.NewAttributeNull(true) } yyVAL.union = yyLOCAL - case 1431: + case 1428: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.ColumnAttribute -//line mysql_sql.y:9427 +//line mysql_sql.y:9393 { yyLOCAL = tree.NewAttributeNull(false) } yyVAL.union = yyLOCAL - case 1432: + case 1429: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.ColumnAttribute -//line mysql_sql.y:9431 +//line mysql_sql.y:9397 { yyLOCAL = tree.NewAttributeDefault(yyDollar[2].exprUnion()) } yyVAL.union = yyLOCAL - case 1433: + case 1430: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.ColumnAttribute -//line mysql_sql.y:9435 +//line mysql_sql.y:9401 { yyLOCAL = tree.NewAttributeAutoIncrement() } yyVAL.union = yyLOCAL - case 1434: + case 1431: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.ColumnAttribute -//line mysql_sql.y:9439 +//line mysql_sql.y:9405 { yyLOCAL = yyDollar[1].columnAttributeUnion() } yyVAL.union = yyLOCAL - case 1435: + case 1432: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.ColumnAttribute -//line mysql_sql.y:9443 +//line mysql_sql.y:9409 { str := util.DealCommentString(yyDollar[2].str) yyLOCAL = tree.NewAttributeComment(tree.NewNumVal(str, str, false, tree.P_char)) } yyVAL.union = yyLOCAL - case 1436: + case 1433: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.ColumnAttribute -//line mysql_sql.y:9448 +//line mysql_sql.y:9414 { yyLOCAL = tree.NewAttributeCollate(yyDollar[2].str) } yyVAL.union = yyLOCAL - case 1437: + case 1434: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.ColumnAttribute -//line mysql_sql.y:9452 +//line mysql_sql.y:9418 { yyLOCAL = tree.NewAttributeColumnFormat(yyDollar[2].str) } yyVAL.union = yyLOCAL - case 1438: + case 1435: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.ColumnAttribute -//line mysql_sql.y:9456 +//line mysql_sql.y:9422 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1439: + case 1436: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.ColumnAttribute -//line mysql_sql.y:9460 +//line mysql_sql.y:9426 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1440: + case 1437: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.ColumnAttribute -//line mysql_sql.y:9464 +//line mysql_sql.y:9430 { yyLOCAL = tree.NewAttributeStorage(yyDollar[2].str) } yyVAL.union = yyLOCAL - case 1441: + case 1438: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.ColumnAttribute -//line mysql_sql.y:9468 +//line mysql_sql.y:9434 { yyLOCAL = tree.NewAttributeAutoRandom(int(yyDollar[2].int64ValUnion())) } yyVAL.union = yyLOCAL - case 1442: + case 1439: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.ColumnAttribute -//line mysql_sql.y:9472 +//line mysql_sql.y:9438 { yyLOCAL = yyDollar[1].attributeReferenceUnion() } yyVAL.union = yyLOCAL - case 1443: + case 1440: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.ColumnAttribute -//line mysql_sql.y:9476 +//line mysql_sql.y:9442 { yyLOCAL = tree.NewAttributeCheckConstraint(yyDollar[4].exprUnion(), false, yyDollar[1].str) } yyVAL.union = yyLOCAL - case 1444: + case 1441: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL tree.ColumnAttribute -//line mysql_sql.y:9480 +//line mysql_sql.y:9446 { yyLOCAL = tree.NewAttributeCheckConstraint(yyDollar[4].exprUnion(), yyDollar[6].boolValUnion(), yyDollar[1].str) } yyVAL.union = yyLOCAL - case 1445: + case 1442: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.ColumnAttribute -//line mysql_sql.y:9484 +//line mysql_sql.y:9450 { name := tree.NewUnresolvedColName(yyDollar[3].str) var es tree.Exprs = nil @@ -22600,98 +22489,98 @@ yydefault: yyLOCAL = tree.NewAttributeOnUpdate(expr) } yyVAL.union = yyLOCAL - case 1446: + case 1443: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.ColumnAttribute -//line mysql_sql.y:9498 +//line mysql_sql.y:9464 { yyLOCAL = tree.NewAttributeLowCardinality() } yyVAL.union = yyLOCAL - case 1447: + case 1444: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.ColumnAttribute -//line mysql_sql.y:9502 +//line mysql_sql.y:9468 { yyLOCAL = tree.NewAttributeVisable(true) } yyVAL.union = yyLOCAL - case 1448: + case 1445: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.ColumnAttribute -//line mysql_sql.y:9506 +//line mysql_sql.y:9472 { yyLOCAL = tree.NewAttributeVisable(false) } yyVAL.union = yyLOCAL - case 1449: + case 1446: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.ColumnAttribute -//line mysql_sql.y:9510 +//line mysql_sql.y:9476 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1450: + case 1447: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.ColumnAttribute -//line mysql_sql.y:9514 +//line mysql_sql.y:9480 { yyLOCAL = tree.NewAttributeHeader(yyDollar[3].str) } yyVAL.union = yyLOCAL - case 1451: + case 1448: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.ColumnAttribute -//line mysql_sql.y:9518 +//line mysql_sql.y:9484 { yyLOCAL = tree.NewAttributeHeaders() } yyVAL.union = yyLOCAL - case 1452: + case 1449: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:9524 +//line mysql_sql.y:9490 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 1453: + case 1450: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:9528 +//line mysql_sql.y:9494 { yyLOCAL = false } yyVAL.union = yyLOCAL - case 1454: + case 1451: yyDollar = yyS[yypt-0 : yypt+1] -//line mysql_sql.y:9533 +//line mysql_sql.y:9499 { yyVAL.str = "" } - case 1455: + case 1452: yyDollar = yyS[yypt-1 : yypt+1] -//line mysql_sql.y:9537 +//line mysql_sql.y:9503 { yyVAL.str = yyDollar[1].str } - case 1456: + case 1453: yyDollar = yyS[yypt-1 : yypt+1] -//line mysql_sql.y:9543 +//line mysql_sql.y:9509 { yyVAL.str = "" } - case 1457: + case 1454: yyDollar = yyS[yypt-2 : yypt+1] -//line mysql_sql.y:9547 +//line mysql_sql.y:9513 { yyVAL.str = yyDollar[2].cstrUnion().Compare() } - case 1458: + case 1455: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *tree.AttributeReference -//line mysql_sql.y:9553 +//line mysql_sql.y:9519 { var TableName = yyDollar[2].tableNameUnion() var KeyParts = yyDollar[3].keyPartsUnion() @@ -22707,10 +22596,10 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1459: + case 1456: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.ReferenceOnRecord -//line mysql_sql.y:9570 +//line mysql_sql.y:9536 { yyLOCAL = &tree.ReferenceOnRecord{ OnDelete: tree.REFERENCE_OPTION_INVALID, @@ -22718,10 +22607,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1460: + case 1457: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.ReferenceOnRecord -//line mysql_sql.y:9577 +//line mysql_sql.y:9543 { yyLOCAL = &tree.ReferenceOnRecord{ OnDelete: yyDollar[1].referenceOptionTypeUnion(), @@ -22729,10 +22618,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1461: + case 1458: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.ReferenceOnRecord -//line mysql_sql.y:9584 +//line mysql_sql.y:9550 { yyLOCAL = &tree.ReferenceOnRecord{ OnDelete: tree.REFERENCE_OPTION_INVALID, @@ -22740,10 +22629,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1462: + case 1459: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.ReferenceOnRecord -//line mysql_sql.y:9591 +//line mysql_sql.y:9557 { yyLOCAL = &tree.ReferenceOnRecord{ OnDelete: yyDollar[1].referenceOptionTypeUnion(), @@ -22751,10 +22640,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1463: + case 1460: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.ReferenceOnRecord -//line mysql_sql.y:9598 +//line mysql_sql.y:9564 { yyLOCAL = &tree.ReferenceOnRecord{ OnDelete: yyDollar[2].referenceOptionTypeUnion(), @@ -22762,354 +22651,354 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1464: + case 1461: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.ReferenceOptionType -//line mysql_sql.y:9607 +//line mysql_sql.y:9573 { yyLOCAL = yyDollar[3].referenceOptionTypeUnion() } yyVAL.union = yyLOCAL - case 1465: + case 1462: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.ReferenceOptionType -//line mysql_sql.y:9613 +//line mysql_sql.y:9579 { yyLOCAL = yyDollar[3].referenceOptionTypeUnion() } yyVAL.union = yyLOCAL - case 1466: + case 1463: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.ReferenceOptionType -//line mysql_sql.y:9619 +//line mysql_sql.y:9585 { yyLOCAL = tree.REFERENCE_OPTION_RESTRICT } yyVAL.union = yyLOCAL - case 1467: + case 1464: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.ReferenceOptionType -//line mysql_sql.y:9623 +//line mysql_sql.y:9589 { yyLOCAL = tree.REFERENCE_OPTION_CASCADE } yyVAL.union = yyLOCAL - case 1468: + case 1465: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.ReferenceOptionType -//line mysql_sql.y:9627 +//line mysql_sql.y:9593 { yyLOCAL = tree.REFERENCE_OPTION_SET_NULL } yyVAL.union = yyLOCAL - case 1469: + case 1466: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.ReferenceOptionType -//line mysql_sql.y:9631 +//line mysql_sql.y:9597 { yyLOCAL = tree.REFERENCE_OPTION_NO_ACTION } yyVAL.union = yyLOCAL - case 1470: + case 1467: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.ReferenceOptionType -//line mysql_sql.y:9635 +//line mysql_sql.y:9601 { yyLOCAL = tree.REFERENCE_OPTION_SET_DEFAULT } yyVAL.union = yyLOCAL - case 1471: + case 1468: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.MatchType -//line mysql_sql.y:9640 +//line mysql_sql.y:9606 { yyLOCAL = tree.MATCH_INVALID } yyVAL.union = yyLOCAL - case 1473: + case 1470: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.MatchType -//line mysql_sql.y:9647 +//line mysql_sql.y:9613 { yyLOCAL = tree.MATCH_FULL } yyVAL.union = yyLOCAL - case 1474: + case 1471: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.MatchType -//line mysql_sql.y:9651 +//line mysql_sql.y:9617 { yyLOCAL = tree.MATCH_PARTIAL } yyVAL.union = yyLOCAL - case 1475: + case 1472: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.MatchType -//line mysql_sql.y:9655 +//line mysql_sql.y:9621 { yyLOCAL = tree.MATCH_SIMPLE } yyVAL.union = yyLOCAL - case 1476: + case 1473: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.FullTextSearchType -//line mysql_sql.y:9660 +//line mysql_sql.y:9626 { yyLOCAL = tree.FULLTEXT_DEFAULT } yyVAL.union = yyLOCAL - case 1477: + case 1474: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.FullTextSearchType -//line mysql_sql.y:9664 +//line mysql_sql.y:9630 { yyLOCAL = tree.FULLTEXT_NL } yyVAL.union = yyLOCAL - case 1478: + case 1475: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL tree.FullTextSearchType -//line mysql_sql.y:9668 +//line mysql_sql.y:9634 { yyLOCAL = tree.FULLTEXT_NL_QUERY_EXPANSION } yyVAL.union = yyLOCAL - case 1479: + case 1476: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.FullTextSearchType -//line mysql_sql.y:9672 +//line mysql_sql.y:9638 { yyLOCAL = tree.FULLTEXT_BOOLEAN } yyVAL.union = yyLOCAL - case 1480: + case 1477: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.FullTextSearchType -//line mysql_sql.y:9676 +//line mysql_sql.y:9642 { yyLOCAL = tree.FULLTEXT_QUERY_EXPANSION } yyVAL.union = yyLOCAL - case 1481: + case 1478: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL []*tree.KeyPart -//line mysql_sql.y:9681 +//line mysql_sql.y:9647 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1482: + case 1479: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []*tree.KeyPart -//line mysql_sql.y:9685 +//line mysql_sql.y:9651 { yyLOCAL = yyDollar[2].keyPartsUnion() } yyVAL.union = yyLOCAL - case 1483: + case 1480: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL int64 -//line mysql_sql.y:9690 +//line mysql_sql.y:9656 { yyLOCAL = -1 } yyVAL.union = yyLOCAL - case 1484: + case 1481: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL int64 -//line mysql_sql.y:9694 +//line mysql_sql.y:9660 { yyLOCAL = yyDollar[2].item.(int64) } yyVAL.union = yyLOCAL - case 1491: + case 1488: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.Subquery -//line mysql_sql.y:9710 +//line mysql_sql.y:9676 { yyLOCAL = &tree.Subquery{Select: yyDollar[1].selectStatementUnion(), Exists: false} } yyVAL.union = yyLOCAL - case 1492: + case 1489: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:9716 +//line mysql_sql.y:9682 { yyLOCAL = tree.NewBinaryExpr(tree.BIT_AND, yyDollar[1].exprUnion(), yyDollar[3].exprUnion()) } yyVAL.union = yyLOCAL - case 1493: + case 1490: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:9720 +//line mysql_sql.y:9686 { yyLOCAL = tree.NewBinaryExpr(tree.BIT_OR, yyDollar[1].exprUnion(), yyDollar[3].exprUnion()) } yyVAL.union = yyLOCAL - case 1494: + case 1491: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:9724 +//line mysql_sql.y:9690 { yyLOCAL = tree.NewBinaryExpr(tree.BIT_XOR, yyDollar[1].exprUnion(), yyDollar[3].exprUnion()) } yyVAL.union = yyLOCAL - case 1495: + case 1492: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:9728 +//line mysql_sql.y:9694 { yyLOCAL = tree.NewBinaryExpr(tree.PLUS, yyDollar[1].exprUnion(), yyDollar[3].exprUnion()) } yyVAL.union = yyLOCAL - case 1496: + case 1493: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:9732 +//line mysql_sql.y:9698 { yyLOCAL = tree.NewBinaryExpr(tree.MINUS, yyDollar[1].exprUnion(), yyDollar[3].exprUnion()) } yyVAL.union = yyLOCAL - case 1497: + case 1494: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:9736 +//line mysql_sql.y:9702 { yyLOCAL = tree.NewBinaryExpr(tree.MULTI, yyDollar[1].exprUnion(), yyDollar[3].exprUnion()) } yyVAL.union = yyLOCAL - case 1498: + case 1495: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:9740 +//line mysql_sql.y:9706 { yyLOCAL = tree.NewBinaryExpr(tree.DIV, yyDollar[1].exprUnion(), yyDollar[3].exprUnion()) } yyVAL.union = yyLOCAL - case 1499: + case 1496: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:9744 +//line mysql_sql.y:9710 { yyLOCAL = tree.NewBinaryExpr(tree.INTEGER_DIV, yyDollar[1].exprUnion(), yyDollar[3].exprUnion()) } yyVAL.union = yyLOCAL - case 1500: + case 1497: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:9748 +//line mysql_sql.y:9714 { yyLOCAL = tree.NewBinaryExpr(tree.MOD, yyDollar[1].exprUnion(), yyDollar[3].exprUnion()) } yyVAL.union = yyLOCAL - case 1501: + case 1498: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:9752 +//line mysql_sql.y:9718 { yyLOCAL = tree.NewBinaryExpr(tree.MOD, yyDollar[1].exprUnion(), yyDollar[3].exprUnion()) } yyVAL.union = yyLOCAL - case 1502: + case 1499: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:9756 +//line mysql_sql.y:9722 { yyLOCAL = tree.NewBinaryExpr(tree.LEFT_SHIFT, yyDollar[1].exprUnion(), yyDollar[3].exprUnion()) } yyVAL.union = yyLOCAL - case 1503: + case 1500: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:9760 +//line mysql_sql.y:9726 { yyLOCAL = tree.NewBinaryExpr(tree.RIGHT_SHIFT, yyDollar[1].exprUnion(), yyDollar[3].exprUnion()) } yyVAL.union = yyLOCAL - case 1504: + case 1501: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:9764 +//line mysql_sql.y:9730 { yyLOCAL = yyDollar[1].exprUnion() } yyVAL.union = yyLOCAL - case 1505: + case 1502: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:9770 +//line mysql_sql.y:9736 { yyLOCAL = yyDollar[1].unresolvedNameUnion() } yyVAL.union = yyLOCAL - case 1506: + case 1503: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:9774 +//line mysql_sql.y:9740 { yyLOCAL = yyDollar[1].varExprUnion() } yyVAL.union = yyLOCAL - case 1507: + case 1504: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:9778 +//line mysql_sql.y:9744 { yyLOCAL = yyDollar[1].exprUnion() } yyVAL.union = yyLOCAL - case 1508: + case 1505: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:9782 +//line mysql_sql.y:9748 { yyLOCAL = tree.NewParentExpr(yyDollar[2].exprUnion()) } yyVAL.union = yyLOCAL - case 1509: + case 1506: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:9786 +//line mysql_sql.y:9752 { yyLOCAL = tree.NewTuple(append(yyDollar[2].exprsUnion(), yyDollar[4].exprUnion())) } yyVAL.union = yyLOCAL - case 1510: + case 1507: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:9790 +//line mysql_sql.y:9756 { yyLOCAL = tree.NewUnaryExpr(tree.UNARY_PLUS, yyDollar[2].exprUnion()) } yyVAL.union = yyLOCAL - case 1511: + case 1508: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:9794 +//line mysql_sql.y:9760 { yyLOCAL = tree.NewUnaryExpr(tree.UNARY_MINUS, yyDollar[2].exprUnion()) } yyVAL.union = yyLOCAL - case 1512: + case 1509: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:9798 +//line mysql_sql.y:9764 { yyLOCAL = tree.NewUnaryExpr(tree.UNARY_TILDE, yyDollar[2].exprUnion()) } yyVAL.union = yyLOCAL - case 1513: + case 1510: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:9802 +//line mysql_sql.y:9768 { yyLOCAL = tree.NewUnaryExpr(tree.UNARY_MARK, yyDollar[2].exprUnion()) } yyVAL.union = yyLOCAL - case 1514: + case 1511: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:9806 +//line mysql_sql.y:9772 { hint := strings.ToLower(yyDollar[2].cstrUnion().Compare()) switch hint { @@ -23152,35 +23041,35 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1515: + case 1512: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:9848 +//line mysql_sql.y:9814 { yyLOCAL = yyDollar[1].exprUnion() } yyVAL.union = yyLOCAL - case 1516: + case 1513: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:9852 +//line mysql_sql.y:9818 { yyLOCAL = yyDollar[1].subqueryUnion() } yyVAL.union = yyLOCAL - case 1517: + case 1514: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:9856 +//line mysql_sql.y:9822 { yyDollar[2].subqueryUnion().Exists = true yyLOCAL = yyDollar[2].subqueryUnion() } yyVAL.union = yyLOCAL - case 1518: + case 1515: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:9861 +//line mysql_sql.y:9827 { yyLOCAL = &tree.CaseExpr{ Expr: yyDollar[2].exprUnion(), @@ -23189,42 +23078,42 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1519: + case 1516: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:9869 +//line mysql_sql.y:9835 { yyLOCAL = tree.NewCastExpr(yyDollar[3].exprUnion(), yyDollar[5].columnTypeUnion()) } yyVAL.union = yyLOCAL - case 1520: + case 1517: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:9873 +//line mysql_sql.y:9839 { yyLOCAL = tree.NewSerialExtractExpr(yyDollar[3].exprUnion(), yyDollar[5].exprUnion(), yyDollar[7].columnTypeUnion()) } yyVAL.union = yyLOCAL - case 1521: + case 1518: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:9877 +//line mysql_sql.y:9843 { yyLOCAL = tree.NewBitCastExpr(yyDollar[3].exprUnion(), yyDollar[5].columnTypeUnion()) } yyVAL.union = yyLOCAL - case 1522: + case 1519: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:9881 +//line mysql_sql.y:9847 { yyLOCAL = tree.NewCastExpr(yyDollar[3].exprUnion(), yyDollar[5].columnTypeUnion()) } yyVAL.union = yyLOCAL - case 1523: + case 1520: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:9885 +//line mysql_sql.y:9851 { name := tree.NewUnresolvedColName(yyDollar[1].str) es := tree.NewNumVal(yyDollar[5].str, yyDollar[5].str, false, tree.P_char) @@ -23235,66 +23124,66 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1524: + case 1521: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:9895 +//line mysql_sql.y:9861 { yyLOCAL = yyDollar[1].funcExprUnion() } yyVAL.union = yyLOCAL - case 1525: + case 1522: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:9899 +//line mysql_sql.y:9865 { yyLOCAL = yyDollar[1].funcExprUnion() } yyVAL.union = yyLOCAL - case 1526: + case 1523: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:9903 +//line mysql_sql.y:9869 { yyLOCAL = yyDollar[1].funcExprUnion() } yyVAL.union = yyLOCAL - case 1527: + case 1524: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:9907 +//line mysql_sql.y:9873 { yyLOCAL = yyDollar[1].funcExprUnion() } yyVAL.union = yyLOCAL - case 1528: + case 1525: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:9911 +//line mysql_sql.y:9877 { yyLOCAL = yyDollar[1].funcExprUnion() } yyVAL.union = yyLOCAL - case 1529: + case 1526: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:9915 +//line mysql_sql.y:9881 { yyLOCAL = yyDollar[1].exprUnion() } yyVAL.union = yyLOCAL - case 1530: + case 1527: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:9919 +//line mysql_sql.y:9885 { yyLOCAL = yyDollar[1].exprUnion() } yyVAL.union = yyLOCAL - case 1531: + case 1528: yyDollar = yyS[yypt-9 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:9923 +//line mysql_sql.y:9889 { val, err := tree.NewFullTextMatchFuncExpression(yyDollar[3].keyPartsUnion(), yyDollar[7].str, yyDollar[8].fullTextSearchTypeUnion()) if err != nil { @@ -23304,16 +23193,16 @@ yydefault: yyLOCAL = val } yyVAL.union = yyLOCAL - case 1532: + case 1529: yyDollar = yyS[yypt-1 : yypt+1] -//line mysql_sql.y:9936 +//line mysql_sql.y:9902 { yyVAL.str = yyDollar[1].str } - case 1533: + case 1530: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:9942 +//line mysql_sql.y:9908 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -23323,10 +23212,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1534: + case 1531: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:9951 +//line mysql_sql.y:9917 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -23336,10 +23225,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1535: + case 1532: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:9960 +//line mysql_sql.y:9926 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -23349,10 +23238,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1536: + case 1533: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:9971 +//line mysql_sql.y:9937 { v := int(yyDollar[5].item.(int64)) val, err := tree.NewSampleRowsFuncExpression(v, true, nil, "block") @@ -23363,10 +23252,10 @@ yydefault: yyLOCAL = val } yyVAL.union = yyLOCAL - case 1537: + case 1534: yyDollar = yyS[yypt-9 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:9981 +//line mysql_sql.y:9947 { v := int(yyDollar[5].item.(int64)) val, err := tree.NewSampleRowsFuncExpression(v, true, nil, yyDollar[8].str) @@ -23377,10 +23266,10 @@ yydefault: yyLOCAL = val } yyVAL.union = yyLOCAL - case 1538: + case 1535: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:9991 +//line mysql_sql.y:9957 { val, err := tree.NewSamplePercentFuncExpression1(yyDollar[5].item.(int64), true, nil) if err != nil { @@ -23390,10 +23279,10 @@ yydefault: yyLOCAL = val } yyVAL.union = yyLOCAL - case 1539: + case 1536: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:10000 +//line mysql_sql.y:9966 { val, err := tree.NewSamplePercentFuncExpression2(yyDollar[5].item.(float64), true, nil) if err != nil { @@ -23403,10 +23292,10 @@ yydefault: yyLOCAL = val } yyVAL.union = yyLOCAL - case 1540: + case 1537: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:10010 +//line mysql_sql.y:9976 { v := int(yyDollar[5].item.(int64)) val, err := tree.NewSampleRowsFuncExpression(v, false, yyDollar[3].exprsUnion(), "block") @@ -23417,10 +23306,10 @@ yydefault: yyLOCAL = val } yyVAL.union = yyLOCAL - case 1541: + case 1538: yyDollar = yyS[yypt-9 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:10020 +//line mysql_sql.y:9986 { v := int(yyDollar[5].item.(int64)) val, err := tree.NewSampleRowsFuncExpression(v, false, yyDollar[3].exprsUnion(), yyDollar[8].str) @@ -23431,10 +23320,10 @@ yydefault: yyLOCAL = val } yyVAL.union = yyLOCAL - case 1542: + case 1539: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:10030 +//line mysql_sql.y:9996 { val, err := tree.NewSamplePercentFuncExpression1(yyDollar[5].item.(int64), false, yyDollar[3].exprsUnion()) if err != nil { @@ -23444,10 +23333,10 @@ yydefault: yyLOCAL = val } yyVAL.union = yyLOCAL - case 1543: + case 1540: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:10039 +//line mysql_sql.y:10005 { val, err := tree.NewSamplePercentFuncExpression2(yyDollar[5].item.(float64), false, yyDollar[3].exprsUnion()) if err != nil { @@ -23457,58 +23346,58 @@ yydefault: yyLOCAL = val } yyVAL.union = yyLOCAL - case 1544: + case 1541: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:10049 +//line mysql_sql.y:10015 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1545: + case 1542: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:10053 +//line mysql_sql.y:10019 { yyLOCAL = yyDollar[2].exprUnion() } yyVAL.union = yyLOCAL - case 1546: + case 1543: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:10058 +//line mysql_sql.y:10024 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1547: + case 1544: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:10062 +//line mysql_sql.y:10028 { yyLOCAL = yyDollar[1].exprUnion() } yyVAL.union = yyLOCAL - case 1548: + case 1545: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []*tree.When -//line mysql_sql.y:10068 +//line mysql_sql.y:10034 { yyLOCAL = []*tree.When{yyDollar[1].whenClauseUnion()} } yyVAL.union = yyLOCAL - case 1549: + case 1546: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL []*tree.When -//line mysql_sql.y:10072 +//line mysql_sql.y:10038 { yyLOCAL = append(yyDollar[1].whenClauseListUnion(), yyDollar[2].whenClauseUnion()) } yyVAL.union = yyLOCAL - case 1550: + case 1547: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.When -//line mysql_sql.y:10078 +//line mysql_sql.y:10044 { yyLOCAL = &tree.When{ Cond: yyDollar[2].exprUnion(), @@ -23516,9 +23405,9 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1551: + case 1548: yyDollar = yyS[yypt-1 : yypt+1] -//line mysql_sql.y:10087 +//line mysql_sql.y:10053 { t := yyVAL.columnTypeUnion() str := strings.ToLower(t.InternalType.FamilyString) @@ -23531,10 +23420,10 @@ yydefault: } } } - case 1552: + case 1549: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:10099 +//line mysql_sql.y:10065 { name := yyDollar[1].str if yyDollar[2].str != "" { @@ -23552,10 +23441,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1553: + case 1550: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:10116 +//line mysql_sql.y:10082 { locale := "" yyLOCAL = &tree.T{ @@ -23570,10 +23459,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1555: + case 1552: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:10133 +//line mysql_sql.y:10099 { locale := "" yyLOCAL = &tree.T{ @@ -23587,10 +23476,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1556: + case 1553: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:10146 +//line mysql_sql.y:10112 { locale := "" yyLOCAL = &tree.T{ @@ -23604,10 +23493,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1557: + case 1554: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:10159 +//line mysql_sql.y:10125 { locale := "" yyLOCAL = &tree.T{ @@ -23620,10 +23509,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1558: + case 1555: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:10171 +//line mysql_sql.y:10137 { locale := "" yyLOCAL = &tree.T{ @@ -23638,10 +23527,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1559: + case 1556: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:10185 +//line mysql_sql.y:10151 { locale := "" yyLOCAL = &tree.T{ @@ -23657,10 +23546,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1560: + case 1557: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:10200 +//line mysql_sql.y:10166 { locale := "" yyLOCAL = &tree.T{ @@ -23676,10 +23565,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1561: + case 1558: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:10215 +//line mysql_sql.y:10181 { name := yyDollar[1].str if yyDollar[2].str != "" { @@ -23697,10 +23586,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1562: + case 1559: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:10232 +//line mysql_sql.y:10198 { locale := "" yyLOCAL = &tree.T{ @@ -23715,95 +23604,95 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1563: + case 1560: yyDollar = yyS[yypt-0 : yypt+1] -//line mysql_sql.y:10247 +//line mysql_sql.y:10213 { } - case 1567: + case 1564: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.FrameBound -//line mysql_sql.y:10254 +//line mysql_sql.y:10220 { yyLOCAL = &tree.FrameBound{Type: tree.Following, UnBounded: true} } yyVAL.union = yyLOCAL - case 1568: + case 1565: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.FrameBound -//line mysql_sql.y:10258 +//line mysql_sql.y:10224 { yyLOCAL = &tree.FrameBound{Type: tree.Following, Expr: yyDollar[1].exprUnion()} } yyVAL.union = yyLOCAL - case 1569: + case 1566: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.FrameBound -//line mysql_sql.y:10262 +//line mysql_sql.y:10228 { yyLOCAL = &tree.FrameBound{Type: tree.Following, Expr: yyDollar[1].exprUnion()} } yyVAL.union = yyLOCAL - case 1570: + case 1567: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.FrameBound -//line mysql_sql.y:10268 +//line mysql_sql.y:10234 { yyLOCAL = &tree.FrameBound{Type: tree.CurrentRow} } yyVAL.union = yyLOCAL - case 1571: + case 1568: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.FrameBound -//line mysql_sql.y:10272 +//line mysql_sql.y:10238 { yyLOCAL = &tree.FrameBound{Type: tree.Preceding, UnBounded: true} } yyVAL.union = yyLOCAL - case 1572: + case 1569: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.FrameBound -//line mysql_sql.y:10276 +//line mysql_sql.y:10242 { yyLOCAL = &tree.FrameBound{Type: tree.Preceding, Expr: yyDollar[1].exprUnion()} } yyVAL.union = yyLOCAL - case 1573: + case 1570: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.FrameBound -//line mysql_sql.y:10280 +//line mysql_sql.y:10246 { yyLOCAL = &tree.FrameBound{Type: tree.Preceding, Expr: yyDollar[1].exprUnion()} } yyVAL.union = yyLOCAL - case 1574: + case 1571: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.FrameType -//line mysql_sql.y:10286 +//line mysql_sql.y:10252 { yyLOCAL = tree.Rows } yyVAL.union = yyLOCAL - case 1575: + case 1572: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.FrameType -//line mysql_sql.y:10290 +//line mysql_sql.y:10256 { yyLOCAL = tree.Range } yyVAL.union = yyLOCAL - case 1576: + case 1573: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.FrameType -//line mysql_sql.y:10294 +//line mysql_sql.y:10260 { yyLOCAL = tree.Groups } yyVAL.union = yyLOCAL - case 1577: + case 1574: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.FrameClause -//line mysql_sql.y:10300 +//line mysql_sql.y:10266 { yyLOCAL = &tree.FrameClause{ Type: yyDollar[1].frameTypeUnion(), @@ -23812,10 +23701,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1578: + case 1575: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *tree.FrameClause -//line mysql_sql.y:10308 +//line mysql_sql.y:10274 { yyLOCAL = &tree.FrameClause{ Type: yyDollar[1].frameTypeUnion(), @@ -23825,82 +23714,82 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1579: + case 1576: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.FrameClause -//line mysql_sql.y:10318 +//line mysql_sql.y:10284 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1580: + case 1577: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.FrameClause -//line mysql_sql.y:10322 +//line mysql_sql.y:10288 { yyLOCAL = yyDollar[1].frameClauseUnion() } yyVAL.union = yyLOCAL - case 1581: + case 1578: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Exprs -//line mysql_sql.y:10329 +//line mysql_sql.y:10295 { yyLOCAL = yyDollar[3].exprsUnion() } yyVAL.union = yyLOCAL - case 1582: + case 1579: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.Exprs -//line mysql_sql.y:10334 +//line mysql_sql.y:10300 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1583: + case 1580: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Exprs -//line mysql_sql.y:10338 +//line mysql_sql.y:10304 { yyLOCAL = yyDollar[1].exprsUnion() } yyVAL.union = yyLOCAL - case 1584: + case 1581: yyDollar = yyS[yypt-0 : yypt+1] -//line mysql_sql.y:10343 +//line mysql_sql.y:10309 { yyVAL.str = "," } - case 1585: + case 1582: yyDollar = yyS[yypt-2 : yypt+1] -//line mysql_sql.y:10347 +//line mysql_sql.y:10313 { yyVAL.str = yyDollar[2].str } - case 1586: + case 1583: yyDollar = yyS[yypt-0 : yypt+1] -//line mysql_sql.y:10352 +//line mysql_sql.y:10318 { yyVAL.str = "1,vector_l2_ops,random,false" } - case 1587: + case 1584: yyDollar = yyS[yypt-2 : yypt+1] -//line mysql_sql.y:10356 +//line mysql_sql.y:10322 { yyVAL.str = yyDollar[2].str } - case 1588: + case 1585: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.WindowSpec -//line mysql_sql.y:10361 +//line mysql_sql.y:10327 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1590: + case 1587: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.WindowSpec -//line mysql_sql.y:10368 +//line mysql_sql.y:10334 { hasFrame := true var f *tree.FrameClause @@ -23925,10 +23814,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1591: + case 1588: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10394 +//line mysql_sql.y:10360 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -23941,10 +23830,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1592: + case 1589: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10406 +//line mysql_sql.y:10372 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -23957,10 +23846,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1593: + case 1590: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10418 +//line mysql_sql.y:10384 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -23972,10 +23861,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1594: + case 1591: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10429 +//line mysql_sql.y:10395 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -23987,10 +23876,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1595: + case 1592: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10440 +//line mysql_sql.y:10406 { name := tree.NewUnresolvedColName(yyDollar[1].str) es := tree.NewNumVal("*", "*", false, tree.P_char) @@ -24002,10 +23891,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1596: + case 1593: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10451 +//line mysql_sql.y:10417 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -24016,10 +23905,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1597: + case 1594: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10461 +//line mysql_sql.y:10427 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -24030,10 +23919,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1598: + case 1595: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10471 +//line mysql_sql.y:10437 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -24045,10 +23934,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1599: + case 1596: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10482 +//line mysql_sql.y:10448 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -24060,10 +23949,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1600: + case 1597: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10493 +//line mysql_sql.y:10459 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -24075,10 +23964,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1601: + case 1598: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10504 +//line mysql_sql.y:10470 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -24090,10 +23979,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1602: + case 1599: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10515 +//line mysql_sql.y:10481 { name := tree.NewUnresolvedColName(yyDollar[1].str) es := tree.NewNumVal("*", "*", false, tree.P_char) @@ -24105,10 +23994,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1603: + case 1600: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10526 +//line mysql_sql.y:10492 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -24120,10 +24009,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1604: + case 1601: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10537 +//line mysql_sql.y:10503 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -24135,10 +24024,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1605: + case 1602: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10548 +//line mysql_sql.y:10514 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -24150,10 +24039,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1606: + case 1603: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10559 +//line mysql_sql.y:10525 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -24165,10 +24054,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1607: + case 1604: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10570 +//line mysql_sql.y:10536 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -24180,10 +24069,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1608: + case 1605: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10581 +//line mysql_sql.y:10547 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -24195,10 +24084,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1609: + case 1606: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10592 +//line mysql_sql.y:10558 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -24210,10 +24099,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1610: + case 1607: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10603 +//line mysql_sql.y:10569 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -24225,10 +24114,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1611: + case 1608: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10614 +//line mysql_sql.y:10580 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -24240,10 +24129,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1612: + case 1609: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10625 +//line mysql_sql.y:10591 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -24255,10 +24144,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1613: + case 1610: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10636 +//line mysql_sql.y:10602 { name := tree.NewUnresolvedColName(yyDollar[1].str) var columnList tree.Exprs @@ -24276,10 +24165,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1617: + case 1614: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10660 +//line mysql_sql.y:10626 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -24289,10 +24178,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1618: + case 1615: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10669 +//line mysql_sql.y:10635 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -24302,10 +24191,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1619: + case 1616: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10678 +//line mysql_sql.y:10644 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -24315,10 +24204,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1620: + case 1617: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10687 +//line mysql_sql.y:10653 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -24328,10 +24217,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1621: + case 1618: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10696 +//line mysql_sql.y:10662 { name := tree.NewUnresolvedColName(yyDollar[1].str) str := strings.ToLower(yyDollar[3].str) @@ -24343,10 +24232,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1622: + case 1619: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10707 +//line mysql_sql.y:10673 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -24356,10 +24245,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1623: + case 1620: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10716 +//line mysql_sql.y:10682 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -24370,10 +24259,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1624: + case 1621: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10726 +//line mysql_sql.y:10692 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -24383,10 +24272,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1625: + case 1622: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10735 +//line mysql_sql.y:10701 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -24396,10 +24285,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1626: + case 1623: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10744 +//line mysql_sql.y:10710 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -24409,10 +24298,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1627: + case 1624: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10753 +//line mysql_sql.y:10719 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -24422,10 +24311,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1628: + case 1625: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10762 +//line mysql_sql.y:10728 { name := tree.NewUnresolvedColName(yyDollar[1].str) arg0 := tree.NewNumVal(int64(0), "0", false, tree.P_int64) @@ -24438,10 +24327,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1629: + case 1626: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10774 +//line mysql_sql.y:10740 { name := tree.NewUnresolvedColName(yyDollar[1].str) arg0 := tree.NewNumVal(int64(1), "1", false, tree.P_int64) @@ -24453,10 +24342,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1630: + case 1627: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10785 +//line mysql_sql.y:10751 { name := tree.NewUnresolvedColName(yyDollar[1].str) arg0 := tree.NewNumVal(int64(2), "2", false, tree.P_int64) @@ -24470,10 +24359,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1631: + case 1628: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10798 +//line mysql_sql.y:10764 { name := tree.NewUnresolvedColName(yyDollar[1].str) arg0 := tree.NewNumVal(int64(3), "3", false, tree.P_int64) @@ -24486,10 +24375,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1632: + case 1629: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10810 +//line mysql_sql.y:10776 { column := tree.NewUnresolvedColName(yyDollar[3].str) name := tree.NewUnresolvedColName(yyDollar[1].str) @@ -24500,16 +24389,16 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1639: + case 1636: yyDollar = yyS[yypt-1 : yypt+1] -//line mysql_sql.y:10833 +//line mysql_sql.y:10799 { yyVAL.str = yyDollar[1].str } - case 1668: + case 1665: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10869 +//line mysql_sql.y:10835 { name := tree.NewUnresolvedColName(yyDollar[1].str) var es tree.Exprs = nil @@ -24523,10 +24412,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1669: + case 1666: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10882 +//line mysql_sql.y:10848 { name := tree.NewUnresolvedColName(yyDollar[1].str) var es tree.Exprs = nil @@ -24540,10 +24429,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1670: + case 1667: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10895 +//line mysql_sql.y:10861 { name := tree.NewUnresolvedColName(yyDollar[1].str) str := strings.ToLower(yyDollar[3].str) @@ -24555,10 +24444,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1671: + case 1668: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10907 +//line mysql_sql.y:10873 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -24568,10 +24457,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1672: + case 1669: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10916 +//line mysql_sql.y:10882 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -24580,10 +24469,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1673: + case 1670: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10924 +//line mysql_sql.y:10890 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -24592,10 +24481,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1674: + case 1671: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10932 +//line mysql_sql.y:10898 { name := tree.NewUnresolvedColName(yyDollar[1].str) var es tree.Exprs = nil @@ -24609,10 +24498,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1675: + case 1672: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10945 +//line mysql_sql.y:10911 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -24622,10 +24511,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1676: + case 1673: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10954 +//line mysql_sql.y:10920 { name := tree.NewUnresolvedColName(yyDollar[1].str) exprs := make([]tree.Expr, 1) @@ -24637,10 +24526,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1677: + case 1674: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10965 +//line mysql_sql.y:10931 { name := tree.NewUnresolvedColName(yyDollar[1].str) exprs := make([]tree.Expr, 1) @@ -24652,10 +24541,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1678: + case 1675: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10976 +//line mysql_sql.y:10942 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -24665,10 +24554,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1679: + case 1676: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10985 +//line mysql_sql.y:10951 { cn := tree.NewNumVal(yyDollar[5].str, yyDollar[5].str, false, tree.P_char) es := yyDollar[3].exprsUnion() @@ -24681,10 +24570,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1680: + case 1677: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10997 +//line mysql_sql.y:10963 { val := tree.NewNumVal(yyDollar[2].str, yyDollar[2].str, false, tree.P_char) name := tree.NewUnresolvedColName(yyDollar[1].str) @@ -24695,10 +24584,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1681: + case 1678: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:11007 +//line mysql_sql.y:10973 { val := tree.NewNumVal(yyDollar[2].str, yyDollar[2].str, false, tree.P_char) name := tree.NewUnresolvedColName(yyDollar[1].str) @@ -24709,10 +24598,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1682: + case 1679: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:11017 +//line mysql_sql.y:10983 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -24722,10 +24611,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1683: + case 1680: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:11026 +//line mysql_sql.y:10992 { es := tree.Exprs{yyDollar[3].exprUnion()} es = append(es, yyDollar[5].exprUnion()) @@ -24737,10 +24626,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1684: + case 1681: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:11037 +//line mysql_sql.y:11003 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -24750,10 +24639,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1685: + case 1682: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:11046 +//line mysql_sql.y:11012 { val := tree.NewNumVal(yyDollar[2].str, yyDollar[2].str, false, tree.P_char) name := tree.NewUnresolvedColName(yyDollar[1].str) @@ -24764,10 +24653,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1686: + case 1683: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:11056 +//line mysql_sql.y:11022 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -24777,10 +24666,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1687: + case 1684: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:11065 +//line mysql_sql.y:11031 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -24790,10 +24679,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1688: + case 1685: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:11074 +//line mysql_sql.y:11040 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -24803,34 +24692,34 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1689: + case 1686: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11084 +//line mysql_sql.y:11050 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1690: + case 1687: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11088 +//line mysql_sql.y:11054 { yyLOCAL = yyDollar[1].exprUnion() } yyVAL.union = yyLOCAL - case 1691: + case 1688: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11094 +//line mysql_sql.y:11060 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1692: + case 1689: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11098 +//line mysql_sql.y:11064 { ival, errStr := util.GetInt64(yyDollar[2].item) if errStr != "" { @@ -24841,20 +24730,20 @@ yydefault: yyLOCAL = tree.NewNumVal(ival, str, false, tree.P_int64) } yyVAL.union = yyLOCAL - case 1699: + case 1696: yyDollar = yyS[yypt-0 : yypt+1] -//line mysql_sql.y:11117 +//line mysql_sql.y:11083 { } - case 1700: + case 1697: yyDollar = yyS[yypt-2 : yypt+1] -//line mysql_sql.y:11119 +//line mysql_sql.y:11085 { } - case 1735: + case 1732: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11161 +//line mysql_sql.y:11127 { name := tree.NewUnresolvedColName(yyDollar[1].str) str := strings.ToLower(yyDollar[3].str) @@ -24866,106 +24755,106 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1736: + case 1733: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.FuncType -//line mysql_sql.y:11173 +//line mysql_sql.y:11139 { yyLOCAL = tree.FUNC_TYPE_DEFAULT } yyVAL.union = yyLOCAL - case 1737: + case 1734: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.FuncType -//line mysql_sql.y:11177 +//line mysql_sql.y:11143 { yyLOCAL = tree.FUNC_TYPE_DISTINCT } yyVAL.union = yyLOCAL - case 1738: + case 1735: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.FuncType -//line mysql_sql.y:11181 +//line mysql_sql.y:11147 { yyLOCAL = tree.FUNC_TYPE_ALL } yyVAL.union = yyLOCAL - case 1739: + case 1736: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.Tuple -//line mysql_sql.y:11187 +//line mysql_sql.y:11153 { yyLOCAL = tree.NewTuple(yyDollar[2].exprsUnion()) } yyVAL.union = yyLOCAL - case 1740: + case 1737: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.Exprs -//line mysql_sql.y:11192 +//line mysql_sql.y:11158 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1741: + case 1738: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Exprs -//line mysql_sql.y:11196 +//line mysql_sql.y:11162 { yyLOCAL = yyDollar[1].exprsUnion() } yyVAL.union = yyLOCAL - case 1742: + case 1739: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Exprs -//line mysql_sql.y:11202 +//line mysql_sql.y:11168 { yyLOCAL = tree.Exprs{yyDollar[1].exprUnion()} } yyVAL.union = yyLOCAL - case 1743: + case 1740: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Exprs -//line mysql_sql.y:11206 +//line mysql_sql.y:11172 { yyLOCAL = append(yyDollar[1].exprsUnion(), yyDollar[3].exprUnion()) } yyVAL.union = yyLOCAL - case 1744: + case 1741: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Exprs -//line mysql_sql.y:11212 +//line mysql_sql.y:11178 { yyLOCAL = tree.Exprs{yyDollar[1].exprUnion()} } yyVAL.union = yyLOCAL - case 1745: + case 1742: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Exprs -//line mysql_sql.y:11216 +//line mysql_sql.y:11182 { yyLOCAL = append(yyDollar[1].exprsUnion(), yyDollar[3].exprUnion()) } yyVAL.union = yyLOCAL - case 1746: + case 1743: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11223 +//line mysql_sql.y:11189 { yyLOCAL = tree.NewAndExpr(yyDollar[1].exprUnion(), yyDollar[3].exprUnion()) } yyVAL.union = yyLOCAL - case 1747: + case 1744: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11227 +//line mysql_sql.y:11193 { yyLOCAL = tree.NewOrExpr(yyDollar[1].exprUnion(), yyDollar[3].exprUnion()) } yyVAL.union = yyLOCAL - case 1748: + case 1745: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11231 +//line mysql_sql.y:11197 { name := tree.NewUnresolvedColName("concat") yyLOCAL = &tree.FuncExpr{ @@ -24975,355 +24864,355 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1749: + case 1746: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11240 +//line mysql_sql.y:11206 { yyLOCAL = tree.NewXorExpr(yyDollar[1].exprUnion(), yyDollar[3].exprUnion()) } yyVAL.union = yyLOCAL - case 1750: + case 1747: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11244 +//line mysql_sql.y:11210 { yyLOCAL = tree.NewNotExpr(yyDollar[2].exprUnion()) } yyVAL.union = yyLOCAL - case 1751: + case 1748: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11248 +//line mysql_sql.y:11214 { yyLOCAL = yyDollar[1].exprUnion() } yyVAL.union = yyLOCAL - case 1752: + case 1749: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11253 +//line mysql_sql.y:11219 { yyLOCAL = yyDollar[1].exprUnion() } yyVAL.union = yyLOCAL - case 1753: + case 1750: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11257 +//line mysql_sql.y:11223 { yyLOCAL = tree.NewMaxValue() } yyVAL.union = yyLOCAL - case 1754: + case 1751: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11263 +//line mysql_sql.y:11229 { yyLOCAL = tree.NewIsNullExpr(yyDollar[1].exprUnion()) } yyVAL.union = yyLOCAL - case 1755: + case 1752: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11267 +//line mysql_sql.y:11233 { yyLOCAL = tree.NewIsNotNullExpr(yyDollar[1].exprUnion()) } yyVAL.union = yyLOCAL - case 1756: + case 1753: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11271 +//line mysql_sql.y:11237 { yyLOCAL = tree.NewIsUnknownExpr(yyDollar[1].exprUnion()) } yyVAL.union = yyLOCAL - case 1757: + case 1754: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11275 +//line mysql_sql.y:11241 { yyLOCAL = tree.NewIsNotUnknownExpr(yyDollar[1].exprUnion()) } yyVAL.union = yyLOCAL - case 1758: + case 1755: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11279 +//line mysql_sql.y:11245 { yyLOCAL = tree.NewIsTrueExpr(yyDollar[1].exprUnion()) } yyVAL.union = yyLOCAL - case 1759: + case 1756: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11283 +//line mysql_sql.y:11249 { yyLOCAL = tree.NewIsNotTrueExpr(yyDollar[1].exprUnion()) } yyVAL.union = yyLOCAL - case 1760: + case 1757: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11287 +//line mysql_sql.y:11253 { yyLOCAL = tree.NewIsFalseExpr(yyDollar[1].exprUnion()) } yyVAL.union = yyLOCAL - case 1761: + case 1758: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11291 +//line mysql_sql.y:11257 { yyLOCAL = tree.NewIsNotFalseExpr(yyDollar[1].exprUnion()) } yyVAL.union = yyLOCAL - case 1762: + case 1759: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11295 +//line mysql_sql.y:11261 { yyLOCAL = tree.NewComparisonExpr(yyDollar[2].comparisonOpUnion(), yyDollar[1].exprUnion(), yyDollar[3].exprUnion()) } yyVAL.union = yyLOCAL - case 1763: + case 1760: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11299 +//line mysql_sql.y:11265 { yyLOCAL = tree.NewSubqueryComparisonExpr(yyDollar[2].comparisonOpUnion(), yyDollar[3].comparisonOpUnion(), yyDollar[1].exprUnion(), yyDollar[4].subqueryUnion()) yyLOCAL = tree.NewSubqueryComparisonExpr(yyDollar[2].comparisonOpUnion(), yyDollar[3].comparisonOpUnion(), yyDollar[1].exprUnion(), yyDollar[4].subqueryUnion()) } yyVAL.union = yyLOCAL - case 1765: + case 1762: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11307 +//line mysql_sql.y:11273 { yyLOCAL = tree.NewComparisonExpr(tree.IN, yyDollar[1].exprUnion(), yyDollar[3].exprUnion()) } yyVAL.union = yyLOCAL - case 1766: + case 1763: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11311 +//line mysql_sql.y:11277 { yyLOCAL = tree.NewComparisonExpr(tree.NOT_IN, yyDollar[1].exprUnion(), yyDollar[4].exprUnion()) } yyVAL.union = yyLOCAL - case 1767: + case 1764: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11315 +//line mysql_sql.y:11281 { yyLOCAL = tree.NewComparisonExprWithEscape(tree.LIKE, yyDollar[1].exprUnion(), yyDollar[3].exprUnion(), yyDollar[4].exprUnion()) } yyVAL.union = yyLOCAL - case 1768: + case 1765: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11319 +//line mysql_sql.y:11285 { yyLOCAL = tree.NewComparisonExprWithEscape(tree.NOT_LIKE, yyDollar[1].exprUnion(), yyDollar[4].exprUnion(), yyDollar[5].exprUnion()) } yyVAL.union = yyLOCAL - case 1769: + case 1766: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11323 +//line mysql_sql.y:11289 { yyLOCAL = tree.NewComparisonExprWithEscape(tree.ILIKE, yyDollar[1].exprUnion(), yyDollar[3].exprUnion(), yyDollar[4].exprUnion()) } yyVAL.union = yyLOCAL - case 1770: + case 1767: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11327 +//line mysql_sql.y:11293 { yyLOCAL = tree.NewComparisonExprWithEscape(tree.NOT_ILIKE, yyDollar[1].exprUnion(), yyDollar[4].exprUnion(), yyDollar[5].exprUnion()) } yyVAL.union = yyLOCAL - case 1771: + case 1768: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11331 +//line mysql_sql.y:11297 { yyLOCAL = tree.NewComparisonExpr(tree.REG_MATCH, yyDollar[1].exprUnion(), yyDollar[3].exprUnion()) } yyVAL.union = yyLOCAL - case 1772: + case 1769: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11335 +//line mysql_sql.y:11301 { yyLOCAL = tree.NewComparisonExpr(tree.NOT_REG_MATCH, yyDollar[1].exprUnion(), yyDollar[4].exprUnion()) } yyVAL.union = yyLOCAL - case 1773: + case 1770: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11339 +//line mysql_sql.y:11305 { yyLOCAL = tree.NewRangeCond(false, yyDollar[1].exprUnion(), yyDollar[3].exprUnion(), yyDollar[5].exprUnion()) } yyVAL.union = yyLOCAL - case 1774: + case 1771: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11343 +//line mysql_sql.y:11309 { yyLOCAL = tree.NewRangeCond(true, yyDollar[1].exprUnion(), yyDollar[4].exprUnion(), yyDollar[6].exprUnion()) } yyVAL.union = yyLOCAL - case 1776: + case 1773: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11349 +//line mysql_sql.y:11315 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1777: + case 1774: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11353 +//line mysql_sql.y:11319 { yyLOCAL = yyDollar[2].exprUnion() } yyVAL.union = yyLOCAL - case 1778: + case 1775: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11359 +//line mysql_sql.y:11325 { yyLOCAL = yyDollar[1].tupleUnion() } yyVAL.union = yyLOCAL - case 1779: + case 1776: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11363 +//line mysql_sql.y:11329 { yyLOCAL = yyDollar[1].subqueryUnion() } yyVAL.union = yyLOCAL - case 1780: + case 1777: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.ComparisonOp -//line mysql_sql.y:11370 +//line mysql_sql.y:11336 { yyLOCAL = tree.ALL } yyVAL.union = yyLOCAL - case 1781: + case 1778: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.ComparisonOp -//line mysql_sql.y:11374 +//line mysql_sql.y:11340 { yyLOCAL = tree.ANY } yyVAL.union = yyLOCAL - case 1782: + case 1779: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.ComparisonOp -//line mysql_sql.y:11378 +//line mysql_sql.y:11344 { yyLOCAL = tree.SOME } yyVAL.union = yyLOCAL - case 1783: + case 1780: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.ComparisonOp -//line mysql_sql.y:11384 +//line mysql_sql.y:11350 { yyLOCAL = tree.EQUAL } yyVAL.union = yyLOCAL - case 1784: + case 1781: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.ComparisonOp -//line mysql_sql.y:11388 +//line mysql_sql.y:11354 { yyLOCAL = tree.LESS_THAN } yyVAL.union = yyLOCAL - case 1785: + case 1782: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.ComparisonOp -//line mysql_sql.y:11392 +//line mysql_sql.y:11358 { yyLOCAL = tree.GREAT_THAN } yyVAL.union = yyLOCAL - case 1786: + case 1783: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.ComparisonOp -//line mysql_sql.y:11396 +//line mysql_sql.y:11362 { yyLOCAL = tree.LESS_THAN_EQUAL } yyVAL.union = yyLOCAL - case 1787: + case 1784: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.ComparisonOp -//line mysql_sql.y:11400 +//line mysql_sql.y:11366 { yyLOCAL = tree.GREAT_THAN_EQUAL } yyVAL.union = yyLOCAL - case 1788: + case 1785: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.ComparisonOp -//line mysql_sql.y:11404 +//line mysql_sql.y:11370 { yyLOCAL = tree.NOT_EQUAL } yyVAL.union = yyLOCAL - case 1789: + case 1786: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.ComparisonOp -//line mysql_sql.y:11408 +//line mysql_sql.y:11374 { yyLOCAL = tree.NULL_SAFE_EQUAL } yyVAL.union = yyLOCAL - case 1790: + case 1787: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.ColumnAttribute -//line mysql_sql.y:11414 +//line mysql_sql.y:11380 { yyLOCAL = tree.NewAttributePrimaryKey() } yyVAL.union = yyLOCAL - case 1791: + case 1788: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.ColumnAttribute -//line mysql_sql.y:11418 +//line mysql_sql.y:11384 { yyLOCAL = tree.NewAttributeUniqueKey() } yyVAL.union = yyLOCAL - case 1792: + case 1789: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.ColumnAttribute -//line mysql_sql.y:11422 +//line mysql_sql.y:11388 { yyLOCAL = tree.NewAttributeUnique() } yyVAL.union = yyLOCAL - case 1793: + case 1790: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.ColumnAttribute -//line mysql_sql.y:11426 +//line mysql_sql.y:11392 { yyLOCAL = tree.NewAttributeKey() } yyVAL.union = yyLOCAL - case 1794: + case 1791: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11432 +//line mysql_sql.y:11398 { str := fmt.Sprintf("%v", yyDollar[1].item) switch v := yyDollar[1].item.(type) { @@ -25337,35 +25226,35 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1795: + case 1792: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11445 +//line mysql_sql.y:11411 { fval := yyDollar[1].item.(float64) yyLOCAL = tree.NewNumVal(fval, yylex.(*Lexer).scanner.LastToken, false, tree.P_float64) } yyVAL.union = yyLOCAL - case 1796: + case 1793: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11450 +//line mysql_sql.y:11416 { yyLOCAL = tree.NewNumVal(yyDollar[1].str, yyDollar[1].str, false, tree.P_decimal) } yyVAL.union = yyLOCAL - case 1797: + case 1794: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11456 +//line mysql_sql.y:11422 { yyLOCAL = tree.NewNumVal(yyDollar[1].str, yyDollar[1].str, false, tree.P_char) } yyVAL.union = yyLOCAL - case 1798: + case 1795: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11460 +//line mysql_sql.y:11426 { str := fmt.Sprintf("%v", yyDollar[1].item) switch v := yyDollar[1].item.(type) { @@ -25379,51 +25268,51 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1799: + case 1796: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11473 +//line mysql_sql.y:11439 { fval := yyDollar[1].item.(float64) yyLOCAL = tree.NewNumVal(fval, yylex.(*Lexer).scanner.LastToken, false, tree.P_float64) } yyVAL.union = yyLOCAL - case 1800: + case 1797: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11478 +//line mysql_sql.y:11444 { yyLOCAL = tree.NewNumVal(true, "true", false, tree.P_bool) } yyVAL.union = yyLOCAL - case 1801: + case 1798: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11482 +//line mysql_sql.y:11448 { yyLOCAL = tree.NewNumVal(false, "false", false, tree.P_bool) } yyVAL.union = yyLOCAL - case 1802: + case 1799: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11486 +//line mysql_sql.y:11452 { yyLOCAL = tree.NewNumVal("null", "null", false, tree.P_null) } yyVAL.union = yyLOCAL - case 1803: + case 1800: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11490 +//line mysql_sql.y:11456 { yyLOCAL = tree.NewNumVal(yyDollar[1].str, yyDollar[1].str, false, tree.P_hexnum) } yyVAL.union = yyLOCAL - case 1804: + case 1801: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11494 +//line mysql_sql.y:11460 { if strings.HasPrefix(yyDollar[2].str, "0x") { yyDollar[2].str = yyDollar[2].str[2:] @@ -25431,69 +25320,69 @@ yydefault: yyLOCAL = tree.NewNumVal(yyDollar[2].str, yyDollar[2].str, false, tree.P_bit) } yyVAL.union = yyLOCAL - case 1805: + case 1802: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11501 +//line mysql_sql.y:11467 { yyLOCAL = tree.NewNumVal(yyDollar[1].str, yyDollar[1].str, false, tree.P_decimal) } yyVAL.union = yyLOCAL - case 1806: + case 1803: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11505 +//line mysql_sql.y:11471 { yyLOCAL = tree.NewNumVal(yyDollar[1].str, yyDollar[1].str, false, tree.P_bit) } yyVAL.union = yyLOCAL - case 1807: + case 1804: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11509 +//line mysql_sql.y:11475 { yyLOCAL = tree.NewParamExpr(yylex.(*Lexer).GetParamIndex()) } yyVAL.union = yyLOCAL - case 1808: + case 1805: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11513 +//line mysql_sql.y:11479 { yyLOCAL = tree.NewNumVal(yyDollar[2].str, yyDollar[2].str, false, tree.P_ScoreBinary) } yyVAL.union = yyLOCAL - case 1809: + case 1806: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:11520 +//line mysql_sql.y:11486 { yyLOCAL = yyDollar[1].columnTypeUnion() yyLOCAL.InternalType.Unsigned = yyDollar[2].unsignedOptUnion() yyLOCAL.InternalType.Zerofill = yyDollar[3].zeroFillOptUnion() } yyVAL.union = yyLOCAL - case 1813: + case 1810: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:11531 +//line mysql_sql.y:11497 { yyLOCAL = yyDollar[1].columnTypeUnion() yyLOCAL.InternalType.DisplayWith = yyDollar[2].lengthOptUnion() } yyVAL.union = yyLOCAL - case 1814: + case 1811: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:11536 +//line mysql_sql.y:11502 { yyLOCAL = yyDollar[1].columnTypeUnion() } yyVAL.union = yyLOCAL - case 1815: + case 1812: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:11542 +//line mysql_sql.y:11508 { locale := "" yyLOCAL = &tree.T{ @@ -25506,10 +25395,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1816: + case 1813: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:11554 +//line mysql_sql.y:11520 { locale := "" yyLOCAL = &tree.T{ @@ -25522,10 +25411,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1817: + case 1814: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:11566 +//line mysql_sql.y:11532 { locale := "" yyLOCAL = &tree.T{ @@ -25538,10 +25427,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1818: + case 1815: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:11578 +//line mysql_sql.y:11544 { locale := "" yyLOCAL = &tree.T{ @@ -25555,10 +25444,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1819: + case 1816: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:11591 +//line mysql_sql.y:11557 { locale := "" yyLOCAL = &tree.T{ @@ -25572,10 +25461,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1820: + case 1817: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:11604 +//line mysql_sql.y:11570 { locale := "" yyLOCAL = &tree.T{ @@ -25589,10 +25478,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1821: + case 1818: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:11617 +//line mysql_sql.y:11583 { locale := "" yyLOCAL = &tree.T{ @@ -25606,10 +25495,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1822: + case 1819: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:11630 +//line mysql_sql.y:11596 { locale := "" yyLOCAL = &tree.T{ @@ -25623,10 +25512,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1823: + case 1820: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:11643 +//line mysql_sql.y:11609 { locale := "" yyLOCAL = &tree.T{ @@ -25640,10 +25529,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1824: + case 1821: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:11656 +//line mysql_sql.y:11622 { locale := "" yyLOCAL = &tree.T{ @@ -25657,10 +25546,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1825: + case 1822: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:11669 +//line mysql_sql.y:11635 { locale := "" yyLOCAL = &tree.T{ @@ -25674,10 +25563,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1826: + case 1823: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:11682 +//line mysql_sql.y:11648 { locale := "" yyLOCAL = &tree.T{ @@ -25691,10 +25580,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1827: + case 1824: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:11695 +//line mysql_sql.y:11661 { locale := "" yyLOCAL = &tree.T{ @@ -25708,10 +25597,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1828: + case 1825: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:11708 +//line mysql_sql.y:11674 { locale := "" yyLOCAL = &tree.T{ @@ -25725,10 +25614,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1829: + case 1826: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:11723 +//line mysql_sql.y:11689 { locale := "" if yyDollar[2].lengthScaleOptUnion().DisplayWith > 255 { @@ -25756,10 +25645,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1830: + case 1827: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:11750 +//line mysql_sql.y:11716 { locale := "" if yyDollar[2].lengthScaleOptUnion().DisplayWith > 255 { @@ -25801,10 +25690,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1831: + case 1828: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:11792 +//line mysql_sql.y:11758 { locale := "" if yyDollar[2].lengthScaleOptUnion().Scale != tree.NotDefineDec && yyDollar[2].lengthScaleOptUnion().Scale > yyDollar[2].lengthScaleOptUnion().DisplayWith { @@ -25841,10 +25730,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1832: + case 1829: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:11828 +//line mysql_sql.y:11794 { locale := "" if yyDollar[2].lengthScaleOptUnion().Scale != tree.NotDefineDec && yyDollar[2].lengthScaleOptUnion().Scale > yyDollar[2].lengthScaleOptUnion().DisplayWith { @@ -25881,10 +25770,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1833: + case 1830: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:11864 +//line mysql_sql.y:11830 { locale := "" yyLOCAL = &tree.T{ @@ -25900,10 +25789,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1834: + case 1831: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:11881 +//line mysql_sql.y:11847 { locale := "" yyLOCAL = &tree.T{ @@ -25916,10 +25805,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1835: + case 1832: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:11893 +//line mysql_sql.y:11859 { locale := "" if yyDollar[2].lengthOptUnion() < 0 || yyDollar[2].lengthOptUnion() > 6 { @@ -25940,10 +25829,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1836: + case 1833: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:11913 +//line mysql_sql.y:11879 { locale := "" if yyDollar[2].lengthOptUnion() < 0 || yyDollar[2].lengthOptUnion() > 6 { @@ -25964,10 +25853,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1837: + case 1834: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:11933 +//line mysql_sql.y:11899 { locale := "" if yyDollar[2].lengthOptUnion() < 0 || yyDollar[2].lengthOptUnion() > 6 { @@ -25988,10 +25877,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1838: + case 1835: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:11953 +//line mysql_sql.y:11919 { locale := "" yyLOCAL = &tree.T{ @@ -26006,10 +25895,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1839: + case 1836: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:11969 +//line mysql_sql.y:11935 { locale := "" yyLOCAL = &tree.T{ @@ -26023,10 +25912,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1840: + case 1837: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:11982 +//line mysql_sql.y:11948 { locale := "" yyLOCAL = &tree.T{ @@ -26040,10 +25929,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1841: + case 1838: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:11995 +//line mysql_sql.y:11961 { locale := "" yyLOCAL = &tree.T{ @@ -26057,10 +25946,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1842: + case 1839: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:12008 +//line mysql_sql.y:11974 { locale := "" yyLOCAL = &tree.T{ @@ -26074,10 +25963,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1843: + case 1840: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:12021 +//line mysql_sql.y:11987 { locale := "" yyLOCAL = &tree.T{ @@ -26090,10 +25979,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1844: + case 1841: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:12033 +//line mysql_sql.y:11999 { locale := "" yyLOCAL = &tree.T{ @@ -26106,10 +25995,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1845: + case 1842: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:12045 +//line mysql_sql.y:12011 { locale := "" yyLOCAL = &tree.T{ @@ -26122,10 +26011,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1846: + case 1843: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:12057 +//line mysql_sql.y:12023 { locale := "" yyLOCAL = &tree.T{ @@ -26138,10 +26027,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1847: + case 1844: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:12069 +//line mysql_sql.y:12035 { locale := "" yyLOCAL = &tree.T{ @@ -26154,10 +26043,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1848: + case 1845: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:12081 +//line mysql_sql.y:12047 { locale := "" yyLOCAL = &tree.T{ @@ -26170,10 +26059,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1849: + case 1846: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:12093 +//line mysql_sql.y:12059 { locale := "" yyLOCAL = &tree.T{ @@ -26186,10 +26075,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1850: + case 1847: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:12105 +//line mysql_sql.y:12071 { locale := "" yyLOCAL = &tree.T{ @@ -26202,10 +26091,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1851: + case 1848: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:12117 +//line mysql_sql.y:12083 { locale := "" yyLOCAL = &tree.T{ @@ -26218,10 +26107,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1852: + case 1849: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:12129 +//line mysql_sql.y:12095 { locale := "" yyLOCAL = &tree.T{ @@ -26234,10 +26123,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1853: + case 1850: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:12141 +//line mysql_sql.y:12107 { locale := "" yyLOCAL = &tree.T{ @@ -26251,10 +26140,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1854: + case 1851: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:12154 +//line mysql_sql.y:12120 { locale := "" yyLOCAL = &tree.T{ @@ -26268,10 +26157,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1855: + case 1852: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:12167 +//line mysql_sql.y:12133 { locale := "" yyLOCAL = &tree.T{ @@ -26285,10 +26174,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1856: + case 1853: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:12180 +//line mysql_sql.y:12146 { locale := "" yyLOCAL = &tree.T{ @@ -26302,10 +26191,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1857: + case 1854: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:12193 +//line mysql_sql.y:12159 { locale := "" yyLOCAL = &tree.T{ @@ -26319,20 +26208,20 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1858: + case 1855: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:12208 +//line mysql_sql.y:12174 { yyLOCAL = &tree.Do{ Exprs: yyDollar[2].exprsUnion(), } } yyVAL.union = yyLOCAL - case 1859: + case 1856: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:12216 +//line mysql_sql.y:12182 { yyLOCAL = &tree.Declare{ Variables: yyDollar[2].strsUnion(), @@ -26341,10 +26230,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1860: + case 1857: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:12225 +//line mysql_sql.y:12191 { yyLOCAL = &tree.Declare{ Variables: yyDollar[2].strsUnion(), @@ -26353,10 +26242,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1861: + case 1858: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:12235 +//line mysql_sql.y:12201 { locale := "" yyLOCAL = &tree.T{ @@ -26369,75 +26258,75 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1862: + case 1859: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []string -//line mysql_sql.y:12258 +//line mysql_sql.y:12224 { yyLOCAL = make([]string, 0, 4) yyLOCAL = append(yyLOCAL, yyDollar[1].str) } yyVAL.union = yyLOCAL - case 1863: + case 1860: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []string -//line mysql_sql.y:12263 +//line mysql_sql.y:12229 { yyLOCAL = append(yyDollar[1].strsUnion(), yyDollar[3].str) } yyVAL.union = yyLOCAL - case 1864: + case 1861: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL int32 -//line mysql_sql.y:12269 +//line mysql_sql.y:12235 { yyLOCAL = 0 } yyVAL.union = yyLOCAL - case 1866: + case 1863: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL int32 -//line mysql_sql.y:12276 +//line mysql_sql.y:12242 { yyLOCAL = 0 } yyVAL.union = yyLOCAL - case 1867: + case 1864: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL int32 -//line mysql_sql.y:12280 +//line mysql_sql.y:12246 { yyLOCAL = int32(yyDollar[2].item.(int64)) } yyVAL.union = yyLOCAL - case 1868: + case 1865: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL int32 -//line mysql_sql.y:12285 +//line mysql_sql.y:12251 { yyLOCAL = int32(-1) } yyVAL.union = yyLOCAL - case 1869: + case 1866: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL int32 -//line mysql_sql.y:12289 +//line mysql_sql.y:12255 { yyLOCAL = int32(yyDollar[2].item.(int64)) } yyVAL.union = yyLOCAL - case 1870: + case 1867: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL int32 -//line mysql_sql.y:12295 +//line mysql_sql.y:12261 { yyLOCAL = tree.GetDisplayWith(int32(yyDollar[2].item.(int64))) } yyVAL.union = yyLOCAL - case 1871: + case 1868: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.LengthScaleOpt -//line mysql_sql.y:12301 +//line mysql_sql.y:12267 { yyLOCAL = tree.LengthScaleOpt{ DisplayWith: tree.NotDefineDisplayWidth, @@ -26445,10 +26334,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1872: + case 1869: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.LengthScaleOpt -//line mysql_sql.y:12308 +//line mysql_sql.y:12274 { yyLOCAL = tree.LengthScaleOpt{ DisplayWith: tree.GetDisplayWith(int32(yyDollar[2].item.(int64))), @@ -26456,10 +26345,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1873: + case 1870: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.LengthScaleOpt -//line mysql_sql.y:12315 +//line mysql_sql.y:12281 { yyLOCAL = tree.LengthScaleOpt{ DisplayWith: tree.GetDisplayWith(int32(yyDollar[2].item.(int64))), @@ -26467,10 +26356,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1874: + case 1871: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.LengthScaleOpt -//line mysql_sql.y:12324 +//line mysql_sql.y:12290 { yyLOCAL = tree.LengthScaleOpt{ DisplayWith: 38, // this is the default precision for decimal @@ -26478,10 +26367,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1875: + case 1872: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.LengthScaleOpt -//line mysql_sql.y:12331 +//line mysql_sql.y:12297 { yyLOCAL = tree.LengthScaleOpt{ DisplayWith: tree.GetDisplayWith(int32(yyDollar[2].item.(int64))), @@ -26489,10 +26378,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1876: + case 1873: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.LengthScaleOpt -//line mysql_sql.y:12338 +//line mysql_sql.y:12304 { yyLOCAL = tree.LengthScaleOpt{ DisplayWith: tree.GetDisplayWith(int32(yyDollar[2].item.(int64))), @@ -26500,52 +26389,52 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1877: + case 1874: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:12347 +//line mysql_sql.y:12313 { yyLOCAL = false } yyVAL.union = yyLOCAL - case 1878: + case 1875: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:12351 +//line mysql_sql.y:12317 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 1879: + case 1876: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:12355 +//line mysql_sql.y:12321 { yyLOCAL = false } yyVAL.union = yyLOCAL - case 1880: + case 1877: yyDollar = yyS[yypt-0 : yypt+1] -//line mysql_sql.y:12361 +//line mysql_sql.y:12327 { } - case 1881: + case 1878: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:12363 +//line mysql_sql.y:12329 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 1885: + case 1882: yyDollar = yyS[yypt-0 : yypt+1] -//line mysql_sql.y:12373 +//line mysql_sql.y:12339 { yyVAL.str = "" } - case 1886: + case 1883: yyDollar = yyS[yypt-1 : yypt+1] -//line mysql_sql.y:12377 +//line mysql_sql.y:12343 { yyVAL.str = string(yyDollar[1].str) } diff --git a/pkg/sql/parsers/dialect/mysql/mysql_sql.y b/pkg/sql/parsers/dialect/mysql/mysql_sql.y index 354482031929c..79ed5d3610dd9 100644 --- a/pkg/sql/parsers/dialect/mysql/mysql_sql.y +++ b/pkg/sql/parsers/dialect/mysql/mysql_sql.y @@ -4835,23 +4835,6 @@ delete_without_using_stmt: Limit: $11, } } -| DELETE CDC priority_opt quick_opt ignore_opt FROM table_name partition_clause_opt as_opt_id where_expression_opt order_by_opt limit_opt - { - // Single-Table Syntax - t := &tree.AliasedTableExpr { - Expr: $7, - As: tree.AliasClause{ - Alias: tree.Identifier($9), - }, - } - $$ = &tree.Delete{ - Tables: tree.TableExprs{t}, - Where: $10, - OrderBy: $11, - Limit: $12, - IsCdc: true, - } - } | DELETE priority_opt quick_opt ignore_opt table_name_wild_list FROM table_references where_expression_opt { // Multiple-Table Syntax @@ -4931,14 +4914,6 @@ replace_stmt: rep.PartitionNames = $3 $$ = rep } -| REPLACE CDC into_table_name partition_clause_opt replace_data - { - rep := $5 - rep.Table = $3 - rep.PartitionNames = $4 - rep.IsCdc = true - $$ = rep - } replace_data: VALUES values_list @@ -5012,15 +4987,6 @@ insert_stmt: ins.OnDuplicateUpdate = []*tree.UpdateExpr{nil} $$ = ins } -| INSERT CDC into_table_name partition_clause_opt insert_data on_duplicate_key_update_opt - { - ins := $5 - ins.Table = $3 - ins.PartitionNames = $4 - ins.OnDuplicateUpdate = $6 - ins.IsCdc = true - $$ = ins - } accounts_list: account_name diff --git a/pkg/sql/parsers/dialect/mysql/mysql_sql_test.go b/pkg/sql/parsers/dialect/mysql/mysql_sql_test.go index 0c9e92d0b1a1a..3ef99b4364390 100644 --- a/pkg/sql/parsers/dialect/mysql/mysql_sql_test.go +++ b/pkg/sql/parsers/dialect/mysql/mysql_sql_test.go @@ -3221,18 +3221,6 @@ var ( input: "select t.a from sa.t centroidx ('Vector_ip_ops') join u", output: "select t.a from sa.t centroidx ('vector_ip_ops') join u", }, - { - input: "insert cdc into t values (0, 1)", - output: "insert cdc into t values (0, 1)", - }, - { - input: "replace cdc into t values (0, 1)", - output: "replace cdc into t values (0, 1)", - }, - { - input: "delete cdc from t where a in (0, 1)", - output: "delete cdc from t where a in (0, 1)", - }, { input: "alter user u1 lock", }, diff --git a/pkg/sql/parsers/tree/delete.go b/pkg/sql/parsers/tree/delete.go index fa971e52d5f43..4c65cdd8ea2f7 100644 --- a/pkg/sql/parsers/tree/delete.go +++ b/pkg/sql/parsers/tree/delete.go @@ -24,7 +24,6 @@ type Delete struct { OrderBy OrderBy Limit *Limit With *With - IsCdc bool } func (node *Delete) Format(ctx *FmtCtx) { @@ -32,11 +31,7 @@ func (node *Delete) Format(ctx *FmtCtx) { node.With.Format(ctx) ctx.WriteByte(' ') } - ctx.WriteString("delete ") - if node.IsCdc { - ctx.WriteString("cdc ") - } - ctx.WriteString("from ") + ctx.WriteString("delete from ") prefix := "" for _, a := range node.Tables { diff --git a/pkg/sql/parsers/tree/insert.go b/pkg/sql/parsers/tree/insert.go index 05795965f2906..8dfcdf9815f00 100644 --- a/pkg/sql/parsers/tree/insert.go +++ b/pkg/sql/parsers/tree/insert.go @@ -27,15 +27,10 @@ type Insert struct { IsRestore bool IsRestoreByTs bool FromDataTenantID uint32 - IsCdc bool } func (node *Insert) Format(ctx *FmtCtx) { - ctx.WriteString("insert ") - if node.IsCdc { - ctx.WriteString("cdc ") - } - ctx.WriteString("into ") + ctx.WriteString("insert into ") node.Table.Format(ctx) if node.PartitionNames != nil { diff --git a/pkg/sql/parsers/tree/replace.go b/pkg/sql/parsers/tree/replace.go index bc2c3386d7b0a..68935d181bd94 100644 --- a/pkg/sql/parsers/tree/replace.go +++ b/pkg/sql/parsers/tree/replace.go @@ -31,15 +31,10 @@ type Replace struct { PartitionNames IdentifierList Columns IdentifierList Rows *Select - IsCdc bool } func (node *Replace) Format(ctx *FmtCtx) { - ctx.WriteString("replace ") - if node.IsCdc { - ctx.WriteString("cdc ") - } - ctx.WriteString("into ") + ctx.WriteString("replace into ") node.Table.Format(ctx) if node.PartitionNames != nil { diff --git a/pkg/sql/plan/build_delete.go b/pkg/sql/plan/build_delete.go index 6162489e4467c..f00246a831ffb 100644 --- a/pkg/sql/plan/build_delete.go +++ b/pkg/sql/plan/build_delete.go @@ -36,7 +36,6 @@ func buildDelete(stmt *tree.Delete, ctx CompilerContext, isPrepareStmt bool) (*P return nil, err } builder := NewQueryBuilder(plan.Query_SELECT, ctx, isPrepareStmt, false) - builder.isCdc = stmt.IsCdc queryBindCtx := NewBindContext(builder, nil) lastNodeId, err := deleteToSelect(builder, queryBindCtx, stmt, true, tblInfo) diff --git a/pkg/sql/plan/build_insert.go b/pkg/sql/plan/build_insert.go index ae92d61eb56dc..8601c1d1b6fb5 100644 --- a/pkg/sql/plan/build_insert.go +++ b/pkg/sql/plan/build_insert.go @@ -74,7 +74,6 @@ func buildInsert(stmt *tree.Insert, ctx CompilerContext, isReplace bool, isPrepa builder := NewQueryBuilder(plan.Query_SELECT, ctx, isPrepareStmt, false) builder.haveOnDuplicateKey = len(stmt.OnDuplicateUpdate) > 0 - builder.isCdc = stmt.IsCdc if stmt.IsRestore { builder.isRestore = true if stmt.IsRestoreByTs { @@ -739,7 +738,6 @@ func getRewriteToReplaceStmt(tableDef *TableDef, stmt *tree.Insert, info *dmlSel PartitionNames: stmt.PartitionNames, Columns: stmt.Columns, Rows: stmt.Rows, - IsCdc: stmt.IsCdc, } return replaceStmt } diff --git a/pkg/sql/plan/types.go b/pkg/sql/plan/types.go index 9a3826de4c5a2..7e9a9bdd85097 100644 --- a/pkg/sql/plan/types.go +++ b/pkg/sql/plan/types.go @@ -185,7 +185,6 @@ type QueryBuilder struct { isRestoreByTs bool isSkipResolveTableDef bool skipStats bool - isCdc bool // if it's a query from CDC or index update deleteNode map[uint64]int32 //delete node in this query. key is tableId, value is the nodeId of sinkScan node in the delete plan From 9006006ef5cf918c3b9951eda18a45a176a7220c Mon Sep 17 00:00:00 2001 From: cpegeric Date: Tue, 27 May 2025 12:10:43 +0100 Subject: [PATCH 060/223] update sca --- pkg/vectorindex/hnsw/model.go | 2 -- 1 file changed, 2 deletions(-) diff --git a/pkg/vectorindex/hnsw/model.go b/pkg/vectorindex/hnsw/model.go index c1b5b442e56a2..78a9e164134aa 100644 --- a/pkg/vectorindex/hnsw/model.go +++ b/pkg/vectorindex/hnsw/model.go @@ -434,7 +434,6 @@ func (idx *HnswModel) LoadIndex(proc *process.Process, idxcfg vectorindex.IndexC } else { err = usearchidx.Load(idx.Path) usearchidx.Reserve(uint(tblcfg.IndexCapacity)) - fmt.Printf("LoadIndex Reserver %d\n", tblcfg.IndexCapacity) } if err != nil { return err @@ -458,7 +457,6 @@ func (idx *HnswModel) LoadIndex(proc *process.Process, idxcfg vectorindex.IndexC idx.MaxCapacity = uint(tblcfg.IndexCapacity) } } - fmt.Printf("LoadIndex Check cap %d\n", idx.MaxCapacity) return nil } From c2a30cbca909abafb7d9eac8598480087f8bb0a1 Mon Sep 17 00:00:00 2001 From: cpegeric Date: Tue, 27 May 2025 12:26:37 +0100 Subject: [PATCH 061/223] fix sca test --- pkg/cdc/sinker_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/cdc/sinker_test.go b/pkg/cdc/sinker_test.go index c091f8cd0b91a..cd6a4b10535be 100644 --- a/pkg/cdc/sinker_test.go +++ b/pkg/cdc/sinker_test.go @@ -119,7 +119,7 @@ func TestNewSinker(t *testing.T) { for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - got, err := NewSinker(tt.args.sinkUri, tt.args.dbTblInfo, tt.args.watermarkUpdater, tt.args.tableDef, tt.args.retryTimes, tt.args.retryDuration, tt.args.ar, CDCDefaultTaskExtra_MaxSQLLen, CDCDefaultSendSqlTimeout) + got, err := NewSinker("", tt.args.sinkUri, tt.args.dbTblInfo, tt.args.watermarkUpdater, tt.args.tableDef, tt.args.retryTimes, tt.args.retryDuration, tt.args.ar, CDCDefaultTaskExtra_MaxSQLLen, CDCDefaultSendSqlTimeout) if !tt.wantErr(t, err, fmt.Sprintf("NewSinker(%v, %v, %v, %v, %v, %v)", tt.args.sinkUri, tt.args.dbTblInfo, tt.args.watermarkUpdater, tt.args.tableDef, tt.args.retryTimes, tt.args.retryDuration)) { return } From 04f097d8cc2e8c748257399af24858c486ddee76 Mon Sep 17 00:00:00 2001 From: cpegeric Date: Tue, 27 May 2025 12:35:35 +0100 Subject: [PATCH 062/223] check nil vector --- pkg/cdc/hnsw_sinker.go | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/pkg/cdc/hnsw_sinker.go b/pkg/cdc/hnsw_sinker.go index 60503152e392f..7bdb82caa6c7b 100644 --- a/pkg/cdc/hnsw_sinker.go +++ b/pkg/cdc/hnsw_sinker.go @@ -368,10 +368,16 @@ func (s *hnswSyncSinker[T]) sinkSnapshot(ctx context.Context, bat *batch.Batch) vecvec := bat.Vecs[s.veccol] for i := 0; i < batchRowCount(bat); i++ { pk := vector.GetFixedAtWithTypeCheck[int64](pkvec, i) - v := vector.GetArrayAt[T](vecvec, i) - // TODO: check null - s.cdc.Upsert(pk, v) + // check null + if vecvec.IsNull(uint64(i)) { + // nil vector means delete + s.cdc.Delete(pk) + } else { + v := vector.GetArrayAt[T](vecvec, i) + + s.cdc.Upsert(pk, v) + } // check full if s.cdc.Full() { @@ -453,9 +459,16 @@ func (s *hnswSyncSinker[T]) sinkUpsert(ctx context.Context, upsertIter *atomicBa pkvec := bat.Vecs[s.pkcol] vecvec := bat.Vecs[s.veccol] pk := vector.GetFixedAtWithTypeCheck[int64](pkvec, row.Offset) - v := vector.GetArrayAt[T](vecvec, row.Offset) - s.cdc.Upsert(pk, v) + // check null + if vecvec.IsNull(uint64(row.Offset)) { + // nil vector means delete + s.cdc.Delete(pk) + } else { + v := vector.GetArrayAt[T](vecvec, row.Offset) + + s.cdc.Upsert(pk, v) + } if s.cdc.Full() { // send SQL From d21748a002207967c3312751473333960e33f582 Mon Sep 17 00:00:00 2001 From: cpegeric Date: Tue, 27 May 2025 13:28:09 +0100 Subject: [PATCH 063/223] fix sca --- pkg/cdc/hnsw_sinker.go | 18 ++++-------------- 1 file changed, 4 insertions(+), 14 deletions(-) diff --git a/pkg/cdc/hnsw_sinker.go b/pkg/cdc/hnsw_sinker.go index 7bdb82caa6c7b..1684ab23290de 100644 --- a/pkg/cdc/hnsw_sinker.go +++ b/pkg/cdc/hnsw_sinker.go @@ -53,14 +53,9 @@ type hnswSyncSinker[T types.RealNumbers] struct { err atomic.Value sqlBufSendCh chan []byte - // only contains user defined column types, no mo meta cols - upsertTypes []*types.Type - // only contains pk columns - deleteTypes []*types.Type - pkColNames []string - pkcol int32 - veccol int32 - exec executor.SQLExecutor + pkcol int32 + veccol int32 + exec executor.SQLExecutor } var NewHnswSyncSinker = func( @@ -452,9 +447,6 @@ func (s *hnswSyncSinker[T]) sinkUpsert(ctx context.Context, upsertIter *atomicBa // get row from the batch row := upsertIter.Item() bat := row.Src - if err != nil { - return err - } pkvec := bat.Vecs[s.pkcol] vecvec := bat.Vecs[s.veccol] @@ -483,9 +475,7 @@ func (s *hnswSyncSinker[T]) sinkDelete(ctx context.Context, deleteIter *atomicBa // get row from the batch row := deleteIter.Item() bat := row.Src - if err != nil { - return err - } + pkvec := bat.Vecs[s.pkcol] pk := vector.GetFixedAtWithTypeCheck[int64](pkvec, row.Offset) From 5747b921763234f2363a20b923ed9df47dc3da19 Mon Sep 17 00:00:00 2001 From: cpegeric Date: Tue, 27 May 2025 14:30:46 +0100 Subject: [PATCH 064/223] bug fix --- pkg/frontend/cdc_test.go | 2 +- pkg/sql/plan/function/function_id_test.go | 4 +++- pkg/vectorindex/hnsw/model.go | 18 ++++++++++-------- pkg/vectorindex/hnsw/model_test.go | 4 ++-- pkg/vectorindex/hnsw/sync.go | 7 ++++--- 5 files changed, 20 insertions(+), 15 deletions(-) diff --git a/pkg/frontend/cdc_test.go b/pkg/frontend/cdc_test.go index ea66b4126a025..cfb03d091f175 100644 --- a/pkg/frontend/cdc_test.go +++ b/pkg/frontend/cdc_test.go @@ -2891,7 +2891,7 @@ func TestCdcTask_addExecPipelineForTable(t *testing.T) { }) defer stubGetTableDef.Reset() - stubSinker := gostub.Stub(&cdc.NewSinker, func(cdc.UriInfo, *cdc.DbTableInfo, cdc.IWatermarkUpdater, + stubSinker := gostub.Stub(&cdc.NewSinker, func(string, cdc.UriInfo, *cdc.DbTableInfo, cdc.IWatermarkUpdater, *plan.TableDef, int, time.Duration, *cdc.ActiveRoutine, uint64, string) (cdc.Sinker, error) { return &mockSinker{}, nil }) diff --git a/pkg/sql/plan/function/function_id_test.go b/pkg/sql/plan/function/function_id_test.go index 156665bb40eb5..567e564465f89 100644 --- a/pkg/sql/plan/function/function_id_test.go +++ b/pkg/sql/plan/function/function_id_test.go @@ -391,7 +391,9 @@ var predefinedFunids = map[int]int{ L2_DISTANCE_XC: 341, L2_DISTANCE_SQ_XC: 342, - FUNCTION_END_NUMBER: 343, + HNSW_CDC_UPDATE: 343, + + FUNCTION_END_NUMBER: 344, } func Test_funids(t *testing.T) { diff --git a/pkg/vectorindex/hnsw/model.go b/pkg/vectorindex/hnsw/model.go index 78a9e164134aa..379789bb0983d 100644 --- a/pkg/vectorindex/hnsw/model.go +++ b/pkg/vectorindex/hnsw/model.go @@ -20,6 +20,7 @@ import ( "math" "os" "strings" + "sync/atomic" "github.com/detailyang/go-fallocate" "github.com/matrixorigin/matrixone/pkg/catalog" @@ -46,9 +47,9 @@ type HnswModel struct { Checksum string // for cdc update - Dirty bool + Dirty atomic.Bool View bool - Len uint + Len atomic.Int64 } // New HnswModel struct @@ -107,7 +108,7 @@ func (idx *HnswModel) SaveToFile() error { return nil } - if !idx.Dirty { + if !idx.Dirty.Load() { // nothing change. ignore return nil } @@ -282,8 +283,8 @@ func (idx *HnswModel) Add(key int64, vec []float32) error { if idx.Index == nil { return moerr.NewInternalErrorNoCtx("usearch index is nil") } - idx.Dirty = true - idx.Len++ + idx.Dirty.Store(true) + idx.Len.Add(1) return idx.Index.Add(uint64(key), vec) } @@ -292,8 +293,8 @@ func (idx *HnswModel) Remove(key int64) error { if idx.Index == nil { return moerr.NewInternalErrorNoCtx("usearch index is nil") } - idx.Dirty = true - idx.Len-- + idx.Dirty.Store(true) + idx.Len.Add(-1) return idx.Index.Remove(uint64(key)) } @@ -441,10 +442,11 @@ func (idx *HnswModel) LoadIndex(proc *process.Process, idxcfg vectorindex.IndexC // always get the number of item and capacity when model loaded. idx.Index = usearchidx - idx.Len, err = idx.Index.Len() + idxLen, err := idx.Index.Len() if err != nil { return err } + idx.Len.Store(int64(idxLen)) idx.MaxCapacity, err = idx.Index.Capacity() if err != nil { diff --git a/pkg/vectorindex/hnsw/model_test.go b/pkg/vectorindex/hnsw/model_test.go index 18f4afa8031a9..84bcf03691da8 100644 --- a/pkg/vectorindex/hnsw/model_test.go +++ b/pkg/vectorindex/hnsw/model_test.go @@ -81,7 +81,7 @@ func TestModel(t *testing.T) { doModelSearchTest(t, idx, 0, fp32a) - require.Equal(t, idx.Dirty, false) + require.Equal(t, idx.Dirty.Load(), false) err = idx.Unload() require.Nil(t, err) @@ -117,7 +117,7 @@ func TestModel(t *testing.T) { err = idx.Add(int64(key), v) require.Nil(t, err) - require.Equal(t, idx.Dirty, true) + require.Equal(t, idx.Dirty.Load(), true) err = idx.Unload() require.Nil(t, err) diff --git a/pkg/vectorindex/hnsw/sync.go b/pkg/vectorindex/hnsw/sync.go index b1ba04acb8d1e..061b1fe345d95 100644 --- a/pkg/vectorindex/hnsw/sync.go +++ b/pkg/vectorindex/hnsw/sync.go @@ -253,8 +253,9 @@ func (s *HnswSync) run(proc *process.Process) error { } else { last = s.indexes[len(s.indexes)-1] // last model not load yet so check the last.Len instead of Full() - if last.Len >= last.MaxCapacity { - os.Stderr.WriteString(fmt.Sprintf("full len %d, cap %d\n", last.Len, last.MaxCapacity)) + idxlen := uint(last.Len.Load()) + if idxlen >= last.MaxCapacity { + os.Stderr.WriteString(fmt.Sprintf("full len %d, cap %d\n", idxlen, last.MaxCapacity)) id := s.getModelId() // model is already full, create a new model for insert newmodel, err := NewHnswModelForBuild(id, s.idxcfg, int(s.tblcfg.ThreadsBuild), maxcap) @@ -429,7 +430,7 @@ func (s *HnswSync) ToSql(ts int64) ([]string, error) { metas := make([]string, 0, len(s.indexes)) for _, idx := range s.indexes { // check Dirty. Only update when Dirty is true - if !idx.Dirty { + if !idx.Dirty.Load() { continue } From ea5e8e67843665c7ffe8776b0bac3fb7c03bd586 Mon Sep 17 00:00:00 2001 From: cpegeric Date: Mon, 2 Jun 2025 09:43:09 +0100 Subject: [PATCH 065/223] add test --- pkg/vectorindex/types_test.go | 62 +++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 pkg/vectorindex/types_test.go diff --git a/pkg/vectorindex/types_test.go b/pkg/vectorindex/types_test.go new file mode 100644 index 0000000000000..520f3c6d254b6 --- /dev/null +++ b/pkg/vectorindex/types_test.go @@ -0,0 +1,62 @@ +// Copyright 2022 Matrix Origin +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package vectorindex + +import ( + "testing" + + "github.com/stretchr/testify/require" +) + +func TestCdc(t *testing.T) { + key := int64(0) + v := []float32{0, 1, 2} + key2 := int64(1) + v2 := []float32{1, 2, 3} + + cdc := NewVectorIndexCdc[float32]() + + // Insert + cdc.Insert(key, v) + + js, err := cdc.ToJson() + require.Nil(t, err) + + require.Equal(t, js, `{"start":"","end":"","cdc":[{"t":"I","pk":0,"v":[0,1,2]}]}`) + + // delete + cdc.Delete(key) + js, err = cdc.ToJson() + require.Nil(t, err) + + require.Equal(t, js, `{"start":"","end":"","cdc":[{"t":"I","pk":0,"v":[0,1,2]},{"t":"D","pk":0}]}`) + + // upsert + cdc.Upsert(key2, v2) + + js, err = cdc.ToJson() + require.Nil(t, err) + + require.Equal(t, js, `{"start":"","end":"","cdc":[{"t":"I","pk":0,"v":[0,1,2]},{"t":"D","pk":0},{"t":"U","pk":1,"v":[1,2,3]}]}`) + + require.False(t, cdc.Empty()) + + require.False(t, cdc.Full()) + + cdc.Reset() + + js, err = cdc.ToJson() + require.Equal(t, js, `{"start":"","end":"","cdc":[]}`) +} From 390e9075bc4437347a97cc7cb2aa62e8c0a9f959 Mon Sep 17 00:00:00 2001 From: cpegeric Date: Mon, 2 Jun 2025 11:26:29 +0100 Subject: [PATCH 066/223] clear cache after cdc sync --- pkg/vectorindex/hnsw/sync.go | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/pkg/vectorindex/hnsw/sync.go b/pkg/vectorindex/hnsw/sync.go index 061b1fe345d95..9925580854cfa 100644 --- a/pkg/vectorindex/hnsw/sync.go +++ b/pkg/vectorindex/hnsw/sync.go @@ -26,6 +26,7 @@ import ( "github.com/matrixorigin/matrixone/pkg/common/moerr" "github.com/matrixorigin/matrixone/pkg/util/executor" "github.com/matrixorigin/matrixone/pkg/vectorindex" + veccache "github.com/matrixorigin/matrixone/pkg/vectorindex/cache" "github.com/matrixorigin/matrixone/pkg/vectorindex/metric" "github.com/matrixorigin/matrixone/pkg/vectorindex/sqlexec" "github.com/matrixorigin/matrixone/pkg/vm/process" @@ -177,7 +178,15 @@ func CdcSync(proc *process.Process, db string, tbl string, dimension int32, cdc ts := time.Now().Unix() sync := &HnswSync{indexes: indexes, idxcfg: idxcfg, tblcfg: idxtblcfg, cdc: cdc, uid: uid, ts: ts} defer sync.destroy() - return sync.run(proc) + err = sync.run(proc) + if err != nil { + return err + } + + // clear the cache (it only work in standalone mode though) + veccache.Cache.Remove(idxtblcfg.IndexTable) + + return nil } type HnswSync struct { From 66eef842ca17e4c95847fb39376463f3338feb87 Mon Sep 17 00:00:00 2001 From: cpegeric Date: Mon, 2 Jun 2025 11:31:30 +0100 Subject: [PATCH 067/223] add bvt test --- .../cases/vector/vector_hnsw_sync.result | 28 ++++++++++++++++++ .../cases/vector/vector_hnsw_sync.sql | 29 +++++++++++++++++++ 2 files changed, 57 insertions(+) create mode 100644 test/distributed/cases/vector/vector_hnsw_sync.result create mode 100644 test/distributed/cases/vector/vector_hnsw_sync.sql diff --git a/test/distributed/cases/vector/vector_hnsw_sync.result b/test/distributed/cases/vector/vector_hnsw_sync.result new file mode 100644 index 0000000000000..41b25054a9a74 --- /dev/null +++ b/test/distributed/cases/vector/vector_hnsw_sync.result @@ -0,0 +1,28 @@ +SET experimental_hnsw_index = 1; +create database if not exists hnsw_cdc; +use hnsw_cdc; +create table vector_index_01(a bigint primary key, b vecf32(3),c int,key c_k(c)); +create index idx01 using hnsw on vector_index_01(b) op_type "vector_l2_ops" M 48 EF_CONSTRUCTION 64 EF_SEARCH 64; +insert into vector_index_01 values (0, "[1,2,3]", 1); +select * from vector_index_01 order by L2_DISTANCE(b,"[1,2,3]") ASC LIMIT 10; +a b c +select hnsw_cdc_update('hnsw_cdc', 'vector_index_01', 3, '{"start":"", "end":"", "cdc":[{"t":"U", "pk":0, "v":[1,2,3]}]}'); +hnsw_cdc_update(hnsw_cdc, vector_index_01, 3, {"start":"", "end":"", "cdc":[{"t":"U", "pk":0, "v":[1,2,3]}]}) +0 +select * from vector_index_01 order by L2_DISTANCE(b,"[1,2,3]") ASC LIMIT 10; +a b c +0 [1, 2, 3] 1 +DELETE FROM vector_index_01 WHERE a=0; +select hnsw_cdc_update('hnsw_cdc', 'vector_index_01', 3, '{"start":"", "end":"", "cdc":[{"t":"D", "pk":0}]}'); +hnsw_cdc_update(hnsw_cdc, vector_index_01, 3, {"start":"", "end":"", "cdc":[{"t":"D", "pk":0}]}) +0 +select * from vector_index_01 order by L2_DISTANCE(b,"[1,2,3]") ASC LIMIT 10; +a b c +insert into vector_index_01 values (1, "[2,3,4]", 1); +select hnsw_cdc_update('hnsw_cdc', 'vector_index_01', 3, '{"start":"", "end":"", "cdc":[{"t":"I", "pk":1, "v":[2,3,4]}]}'); +hnsw_cdc_update(hnsw_cdc, vector_index_01, 3, {"start":"", "end":"", "cdc":[{"t":"I", "pk":1, "v":[2,3,4]}]}) +0 +select * from vector_index_01 order by L2_DISTANCE(b,"[2,3,4]") ASC LIMIT 10; +a b c +1 [2, 3, 4] 1 +drop database hnsw_cdc; diff --git a/test/distributed/cases/vector/vector_hnsw_sync.sql b/test/distributed/cases/vector/vector_hnsw_sync.sql new file mode 100644 index 0000000000000..e09385cff9ef2 --- /dev/null +++ b/test/distributed/cases/vector/vector_hnsw_sync.sql @@ -0,0 +1,29 @@ +SET experimental_hnsw_index = 1; + +create database if not exists hnsw_cdc; +use hnsw_cdc; + +create table vector_index_01(a bigint primary key, b vecf32(3),c int,key c_k(c)); + +-- empty data +create index idx01 using hnsw on vector_index_01(b) op_type "vector_l2_ops" M 48 EF_CONSTRUCTION 64 EF_SEARCH 64; + +insert into vector_index_01 values (0, "[1,2,3]", 1); + +select * from vector_index_01 order by L2_DISTANCE(b,"[1,2,3]") ASC LIMIT 10; + +select hnsw_cdc_update('hnsw_cdc', 'vector_index_01', 3, '{"start":"", "end":"", "cdc":[{"t":"U", "pk":0, "v":[1,2,3]}]}'); + +select * from vector_index_01 order by L2_DISTANCE(b,"[1,2,3]") ASC LIMIT 10; + +DELETE FROM vector_index_01 WHERE a=0; +select hnsw_cdc_update('hnsw_cdc', 'vector_index_01', 3, '{"start":"", "end":"", "cdc":[{"t":"D", "pk":0}]}'); + +select * from vector_index_01 order by L2_DISTANCE(b,"[1,2,3]") ASC LIMIT 10; + +insert into vector_index_01 values (1, "[2,3,4]", 1); +select hnsw_cdc_update('hnsw_cdc', 'vector_index_01', 3, '{"start":"", "end":"", "cdc":[{"t":"I", "pk":1, "v":[2,3,4]}]}'); + +select * from vector_index_01 order by L2_DISTANCE(b,"[2,3,4]") ASC LIMIT 10; + +drop database hnsw_cdc; From eddf530af86ec9f291c13bdebafa325e27d6718d Mon Sep 17 00:00:00 2001 From: cpegeric Date: Mon, 2 Jun 2025 13:05:03 +0100 Subject: [PATCH 068/223] fix test --- pkg/vectorindex/types_test.go | 1 + 1 file changed, 1 insertion(+) diff --git a/pkg/vectorindex/types_test.go b/pkg/vectorindex/types_test.go index 520f3c6d254b6..9c7f24261c17f 100644 --- a/pkg/vectorindex/types_test.go +++ b/pkg/vectorindex/types_test.go @@ -58,5 +58,6 @@ func TestCdc(t *testing.T) { cdc.Reset() js, err = cdc.ToJson() + require.NoError(t, err) require.Equal(t, js, `{"start":"","end":"","cdc":[]}`) } From 3f355c7457287ff31fe039903ec1fc3e21d3bfa3 Mon Sep 17 00:00:00 2001 From: cpegeric Date: Mon, 2 Jun 2025 17:01:51 +0100 Subject: [PATCH 069/223] update unittest --- pkg/cdc/hnsw_sinker.go | 102 ++++--- pkg/cdc/hnsw_sinker_test.go | 565 ++++++++++++++++++++++++++++++++++++ 2 files changed, 633 insertions(+), 34 deletions(-) create mode 100644 pkg/cdc/hnsw_sinker_test.go diff --git a/pkg/cdc/hnsw_sinker.go b/pkg/cdc/hnsw_sinker.go index 1684ab23290de..3a8aa81116a84 100644 --- a/pkg/cdc/hnsw_sinker.go +++ b/pkg/cdc/hnsw_sinker.go @@ -42,6 +42,8 @@ import ( var _ Sinker = &hnswSyncSinker[float32]{} +var sqlExecutorFactory = _sqlExecutorFactory + type hnswSyncSinker[T types.RealNumbers] struct { cnUUID string dbTblInfo *DbTableInfo @@ -58,6 +60,17 @@ type hnswSyncSinker[T types.RealNumbers] struct { exec executor.SQLExecutor } +func _sqlExecutorFactory(cnUUID string) (executor.SQLExecutor, error) { + // sql executor + v, ok := runtime.ServiceRuntime(cnUUID).GetGlobalVariables(runtime.InternalSQLExecutor) + if !ok { + os.Stderr.WriteString(fmt.Sprintf("sql executor create failed. cnUUID = %s\n", cnUUID)) + return nil, moerr.NewNotSupportedNoCtx("no implement sqlExecutor") + } + exec := v.(executor.SQLExecutor) + return exec, nil +} + var NewHnswSyncSinker = func( cnUUID string, sinkUri UriInfo, @@ -72,12 +85,10 @@ var NewHnswSyncSinker = func( ) (Sinker, error) { // sql executor - v, ok := runtime.ServiceRuntime(cnUUID).GetGlobalVariables(runtime.InternalSQLExecutor) - if !ok { - os.Stderr.WriteString(fmt.Sprintf("sql executor create failed. cnUUID = %s\n", cnUUID)) - return nil, moerr.NewNotSupportedNoCtx("no implement sqlExecutor") + exec, err := sqlExecutorFactory(cnUUID) + if err != nil { + return nil, err } - exec := v.(executor.SQLExecutor) // check the tabledef and indexdef if len(tableDef.Pkey.Names) != 1 { @@ -200,11 +211,22 @@ func (s *hnswSyncSinker[T]) Run(ctx context.Context, ar *ActiveRoutine) { for { + txnbegin := false // make sure there is a BEGIN before start transaction - for sqlBuf := range s.sqlBufSendCh { - //os.Stderr.WriteString(fmt.Sprintf("Wait for BEGIN.... %s\n", string(sqlBuf))) - if bytes.Equal(sqlBuf, begin) { - break + for !txnbegin { + + select { + case <-ctx.Done(): + return + case sqlBuf, ok := <-s.sqlBufSendCh: + if !ok { + return + } + //os.Stderr.WriteString(fmt.Sprintf("Wait for BEGIN.... %s\n", string(sqlBuf))) + if bytes.Equal(sqlBuf, begin) { + txnbegin = true + break + } } } @@ -215,26 +237,36 @@ func (s *hnswSyncSinker[T]) Run(ctx context.Context, ar *ActiveRoutine) { err := s.exec.ExecTxn(newctx, func(exec executor.TxnExecutor) error { - for sqlBuf := range s.sqlBufSendCh { - if bytes.Equal(sqlBuf, dummy) { - - } else if bytes.Equal(sqlBuf, begin) { - // BEGIN - } else if bytes.Equal(sqlBuf, commit) { - // COMMIT - end of data - return nil - } else if bytes.Equal(sqlBuf, rollback) { - // ROLLBACK - return moerr.NewQueryInterrupted(ctx) - } else { - res, err := exec.Exec(string(sqlBuf), opts.StatementOption()) - if err != nil { - logutil.Errorf("cdc hnswSyncSinker(%v) send sql failed, err: %v, sql: %s", s.dbTblInfo, err, sqlBuf[sqlBufReserved:]) - os.Stderr.WriteString(fmt.Sprintf("sql executor run failed. %s\n", string(sqlBuf))) - os.Stderr.WriteString(fmt.Sprintf("err :%v\n", err)) - return err + for { + select { + case <-ctx.Done(): + return ctx.Err() + case sqlBuf, ok := <-s.sqlBufSendCh: + if !ok { + // channel closed + return nil + } + + if bytes.Equal(sqlBuf, dummy) { + + } else if bytes.Equal(sqlBuf, begin) { + // BEGIN + } else if bytes.Equal(sqlBuf, commit) { + // COMMIT - end of data + return nil + } else if bytes.Equal(sqlBuf, rollback) { + // ROLLBACK + return moerr.NewQueryInterrupted(ctx) + } else { + res, err := exec.Exec(string(sqlBuf), opts.StatementOption()) + if err != nil { + logutil.Errorf("cdc hnswSyncSinker(%v) send sql failed, err: %v, sql: %s", s.dbTblInfo, err, sqlBuf[sqlBufReserved:]) + os.Stderr.WriteString(fmt.Sprintf("sql executor run failed. %s\n", string(sqlBuf))) + os.Stderr.WriteString(fmt.Sprintf("err :%v\n", err)) + return err + } + res.Close() } - res.Close() } } @@ -327,13 +359,15 @@ func (s *hnswSyncSinker[T]) SendDummy() { func (s *hnswSyncSinker[T]) Error() error { if ptr := s.err.Load(); ptr != nil { errPtr := ptr.(*error) - if moErr, ok := (*errPtr).(*moerr.Error); !ok { - return moerr.ConvertGoError(context.Background(), *errPtr) - } else { - if moErr == nil { - return nil + if errPtr != nil { + if moErr, ok := (*errPtr).(*moerr.Error); !ok { + return moerr.ConvertGoError(context.Background(), *errPtr) + } else { + if moErr == nil { + return nil + } + return moErr } - return moErr } } return nil diff --git a/pkg/cdc/hnsw_sinker_test.go b/pkg/cdc/hnsw_sinker_test.go new file mode 100644 index 0000000000000..4c7c4087a430e --- /dev/null +++ b/pkg/cdc/hnsw_sinker_test.go @@ -0,0 +1,565 @@ +// Copyright 2024 Matrix Origin +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package cdc + +import ( + "context" + "errors" + "fmt" + "strings" + "sync" + "testing" + "time" + + "github.com/matrixorigin/matrixone/pkg/catalog" + "github.com/matrixorigin/matrixone/pkg/common/moerr" + "github.com/matrixorigin/matrixone/pkg/container/types" + "github.com/matrixorigin/matrixone/pkg/container/vector" + "github.com/matrixorigin/matrixone/pkg/pb/plan" + "github.com/matrixorigin/matrixone/pkg/testutil" + "github.com/matrixorigin/matrixone/pkg/txn/client" + "github.com/matrixorigin/matrixone/pkg/util/executor" + "github.com/matrixorigin/matrixone/pkg/vectorindex" + "github.com/prashantv/gostub" + "github.com/stretchr/testify/require" +) + +func newTestTableDef(pkName string, pkType types.T, vecColName string, vecType types.T, vecWidth int32) *plan.TableDef { + return &plan.TableDef{ + Name: "test_orig_tbl", + Name2ColIndex: map[string]int32{ + pkName: 0, + vecColName: 1, + "dummy": 2, // Add another col to make sure pk/vec col indices are used + }, + Cols: []*plan.ColDef{ + {Name: pkName, Typ: plan.Type{Id: int32(pkType)}}, + {Name: vecColName, Typ: plan.Type{Id: int32(vecType), Width: vecWidth}}, + {Name: "dummy", Typ: plan.Type{Id: int32(types.T_int32)}}, + }, + Pkey: &plan.PrimaryKeyDef{ + Names: []string{pkName}, + PkeyColName: pkName, + }, + Indexes: []*plan.IndexDef{ + { + IndexName: "hnsw_meta_idx", + TableExist: true, + IndexAlgo: catalog.MoIndexHnswAlgo.ToString(), + IndexAlgoTableType: catalog.Hnsw_TblType_Metadata, + IndexTableName: "meta_tbl", + Parts: []string{vecColName}, + IndexAlgoParams: `{"m":"16","ef_construction":"200","ef_search":"100","op_type":"vector_l2_ops"}`, + }, + { + IndexName: "hnsw_storage_idx", + TableExist: true, + IndexAlgo: catalog.MoIndexHnswAlgo.ToString(), + IndexAlgoTableType: catalog.Hnsw_TblType_Storage, + IndexTableName: "storage_tbl", + Parts: []string{vecColName}, + IndexAlgoParams: `{"m":"16","ef_construction":"200","ef_search":"100","op_type":"vector_l2_ops"}`, + }, + }, + } +} + +func newTestDbTableInfo() *DbTableInfo { + return &DbTableInfo{ + SourceDbName: "test_db", + SourceTblName: "test_tbl", + SinkDbName: "sink_db", + SinkTblName: "sink_tbl", + } +} + +func newTestActiveRoutine() *ActiveRoutine { + ar := NewCdcActiveRoutine() + // ar.Start() // Don't start by default, let tests control + return ar +} + +type MockSQLExecutor struct { +} + +// Exec exec a sql in a exists txn. +func (exec MockSQLExecutor) Exec(ctx context.Context, sql string, opts executor.Options) (executor.Result, error) { + + return executor.Result{}, nil +} + +// ExecTxn executor sql in a txn. execFunc can use TxnExecutor to exec multiple sql +// in a transaction. +// NOTE: Pass SQL stmts one by one to TxnExecutor.Exec(). If you pass multiple SQL stmts to +// TxnExecutor.Exec() as `\n` seperated string, it will only execute the first SQL statement causing Bug. +func (exec MockSQLExecutor) ExecTxn(ctx context.Context, execFunc func(txn executor.TxnExecutor) error, opts executor.Options) error { + return nil +} + +type MockErrorTxnExecutor struct { + database string +} + +func (exec *MockErrorTxnExecutor) Use(db string) { + exec.database = db +} + +func (exec *MockErrorTxnExecutor) Exec( + sql string, + statementOption executor.StatementOption, +) (executor.Result, error) { + if strings.Contains(sql, "FAILSQL") { + return executor.Result{}, moerr.NewInternalErrorNoCtx("db error") + } + + return executor.Result{}, nil +} + +func (exec *MockErrorTxnExecutor) LockTable(table string) error { + return nil +} + +func (exec *MockErrorTxnExecutor) Txn() client.TxnOperator { + return nil +} + +func (exec *MockErrorTxnExecutor) commit() error { + return nil +} + +func (exec *MockErrorTxnExecutor) getDatabase() string { + return "" +} + +func (exec *MockErrorTxnExecutor) rollback(err error) error { + return nil +} + +var _ executor.TxnExecutor = new(MockErrorTxnExecutor) + +type MockErrorSQLExecutor struct { +} + +// Exec exec a sql in a exists txn. +func (exec MockErrorSQLExecutor) Exec(ctx context.Context, sql string, opts executor.Options) (executor.Result, error) { + if strings.Contains(sql, "FAILSQL") { + return executor.Result{}, moerr.NewInternalError(ctx, "db error") + } + return executor.Result{}, nil +} + +// ExecTxn executor sql in a txn. execFunc can use TxnExecutor to exec multiple sql +// in a transaction. +// NOTE: Pass SQL stmts one by one to TxnExecutor.Exec(). If you pass multiple SQL stmts to +// TxnExecutor.Exec() as `\n` seperated string, it will only execute the first SQL statement causing Bug. +func (exec MockErrorSQLExecutor) ExecTxn(ctx context.Context, execFunc func(txn executor.TxnExecutor) error, opts executor.Options) error { + + txnexec := &MockErrorTxnExecutor{} + err := execFunc(txnexec) + if moerr.IsMoErrCode(err, moerr.ErrQueryInterrupted) { + fmt.Printf("ROLLBACK...\n") + return nil // Simulating successful handling of rollback signal + } + return err +} + +var _ executor.SQLExecutor = new(MockSQLExecutor) +var _ executor.SQLExecutor = new(MockErrorSQLExecutor) + +func mockSqlExecutorFactory(uuid string) (executor.SQLExecutor, error) { + return MockSQLExecutor{}, nil +} + +func mockErrorSqlExecutorFactory(uuid string) (executor.SQLExecutor, error) { + return MockErrorSQLExecutor{}, nil +} + +func NewMockWatermarkUpdater() *WatermarkUpdater { + return &WatermarkUpdater{ + watermarkMap: &sync.Map{}, + } +} + +// Constants that might be missing in the test context +//const sqlBufReserved = 0 // Assuming 0 for tests, original code might have a value + +var ( +// Define these if they are not exported or available in the test package context +// For this test, we'll assume they are defined as in the original package. +// If not, they would be: +// begin = []byte("BEGIN") +// commit = []byte("COMMIT") +// rollback = []byte("ROLLBACK") +// dummy = []byte("DUMMY") +) + +// --- Test Cases --- + +func TestNewHnswSyncSinker(t *testing.T) { + + dbTblInfo := newTestDbTableInfo() + ar := newTestActiveRoutine() + watermarkUpdater := &WatermarkUpdater{ + watermarkMap: &sync.Map{}, + } + + sqlexecstub := gostub.Stub(&sqlExecutorFactory, mockSqlExecutorFactory) + defer sqlexecstub.Reset() + + t.Run("success float32", func(t *testing.T) { + tblDef := newTestTableDef("pk", types.T_int64, "vec", types.T_array_float32, 128) + sinker, err := NewHnswSyncSinker("test-uuid", UriInfo{}, dbTblInfo, watermarkUpdater, tblDef, 3, time.Second, ar, 1024, "10s") + require.NoError(t, err) + require.NotNil(t, sinker) + require.Equal(t, int32(0), sinker.(*hnswSyncSinker[float32]).pkcol) + require.Equal(t, int32(1), sinker.(*hnswSyncSinker[float32]).veccol) + sinker.Close() + }) + + t.Run("success float64", func(t *testing.T) { + tblDef := newTestTableDef("pk", types.T_int64, "vec", types.T_array_float64, 128) + sinker, err := NewHnswSyncSinker("test-uuid", UriInfo{}, dbTblInfo, watermarkUpdater, tblDef, 3, time.Second, ar, 1024, "10s") + require.NoError(t, err) + require.NotNil(t, sinker) + sinker.Close() + }) + + t.Run("invalid pkey count", func(t *testing.T) { + tblDef := newTestTableDef("pk", types.T_int64, "vec", types.T_array_float32, 128) + tblDef.Pkey.Names = []string{"pk1", "pk2"} + _, err := NewHnswSyncSinker("test-uuid", UriInfo{}, dbTblInfo, watermarkUpdater, tblDef, 3, time.Second, ar, 1024, "10s") + require.Error(t, err) + require.True(t, moerr.IsMoErrCode(err, moerr.ErrInternal)) + }) + + t.Run("invalid hnsw index count", func(t *testing.T) { + tblDef := newTestTableDef("pk", types.T_int64, "vec", types.T_array_float32, 128) + tblDef.Indexes = []*plan.IndexDef{tblDef.Indexes[0]} // Only one index + _, err := NewHnswSyncSinker("test-uuid", UriInfo{}, dbTblInfo, watermarkUpdater, tblDef, 3, time.Second, ar, 1024, "10s") + require.Error(t, err) + require.True(t, moerr.IsMoErrCode(err, moerr.ErrInternal)) + }) + + t.Run("invalid index parts count", func(t *testing.T) { + tblDef := newTestTableDef("pk", types.T_int64, "vec", types.T_array_float32, 128) + tblDef.Indexes[0].Parts = []string{"vec1", "vec2"} + _, err := NewHnswSyncSinker("test-uuid", UriInfo{}, dbTblInfo, watermarkUpdater, tblDef, 3, time.Second, ar, 1024, "10s") + require.Error(t, err) + require.True(t, moerr.IsMoErrCode(err, moerr.ErrInternal)) + }) + + t.Run("invalid pkey type", func(t *testing.T) { + tblDef := newTestTableDef("pk", types.T_int32, "vec", types.T_array_float32, 128) // PK is int32 + _, err := NewHnswSyncSinker("test-uuid", UriInfo{}, dbTblInfo, watermarkUpdater, tblDef, 3, time.Second, ar, 1024, "10s") + require.Error(t, err) + require.True(t, moerr.IsMoErrCode(err, moerr.ErrInternal)) + }) + + t.Run("missing meta index", func(t *testing.T) { + tblDef := newTestTableDef("pk", types.T_int64, "vec", types.T_array_float32, 128) + tblDef.Indexes[0].IndexAlgoTableType = "invalid" // Corrupt meta index type + _, err := NewHnswSyncSinker("test-uuid", UriInfo{}, dbTblInfo, watermarkUpdater, tblDef, 3, time.Second, ar, 1024, "10s") + require.Error(t, err) + require.True(t, moerr.IsMoErrCode(err, moerr.ErrInternal)) + }) + + t.Run("invalid hnsw params json", func(t *testing.T) { + tblDef := newTestTableDef("pk", types.T_int64, "vec", types.T_array_float32, 128) + tblDef.Indexes[0].IndexAlgoParams = `{"M":16, efConstruction":200 ...` // Invalid JSON + _, err := NewHnswSyncSinker("test-uuid", UriInfo{}, dbTblInfo, watermarkUpdater, tblDef, 3, time.Second, ar, 1024, "10s") + require.Error(t, err) + require.True(t, moerr.IsMoErrCode(err, moerr.ErrInternal)) + }) + + t.Run("unsupported vector type", func(t *testing.T) { + tblDef := newTestTableDef("pk", types.T_int64, "vec", types.T_int32, 128) // Vector is int32 + _, err := NewHnswSyncSinker("test-uuid", UriInfo{}, dbTblInfo, watermarkUpdater, tblDef, 3, time.Second, ar, 1024, "10s") + require.Error(t, err) + require.True(t, moerr.IsMoErrCode(err, moerr.ErrInternal)) + }) +} + +func TestHnswSyncSinker_Run(t *testing.T) { + sqlexecstub := gostub.Stub(&sqlExecutorFactory, mockSqlExecutorFactory) + defer sqlexecstub.Reset() + watermarkUpdater := NewMockWatermarkUpdater() + + tblDef := newTestTableDef("pk", types.T_int64, "vec", types.T_array_float32, 4) + sinker, err := NewHnswSyncSinker("test-uuid", UriInfo{}, newTestDbTableInfo(), watermarkUpdater, tblDef, 0, 0, newTestActiveRoutine(), 1024, "1s") + require.NoError(t, err) + defer sinker.Close() + + s := sinker.(*hnswSyncSinker[float32]) + ctx, cancel := context.WithCancel(context.Background()) + defer cancel() + + var wg sync.WaitGroup + wg.Add(1) + go func() { + defer wg.Done() + s.Run(ctx, nil) // ActiveRoutine not used by Run directly + }() + + t.Run("happy path commit", func(t *testing.T) { + s.ClearError() + //var executedSqls []string + + s.sqlBufSendCh <- begin + s.sqlBufSendCh <- []byte("SELECT 1") + s.sqlBufSendCh <- commit + + // Wait for processing or timeout + time.Sleep(100 * time.Millisecond) + require.NoError(t, s.Error()) + //require.Contains(t, executedSqls, "SELECT 1") + }) + + // To properly test sinker.Close() and stop the Run goroutine: + cancel() // Signal Run to stop its loop if it checks ctx.Done() + // Closing sqlBufSendCh is done by sinker.Close(), which should cause Run to exit. + wg.Wait() // Wait for Run goroutine to finish +} + +func TestHnswSyncSinker_RunError(t *testing.T) { + sqlexecstub := gostub.Stub(&sqlExecutorFactory, mockErrorSqlExecutorFactory) + defer sqlexecstub.Reset() + watermarkUpdater := NewMockWatermarkUpdater() + + tblDef := newTestTableDef("pk", types.T_int64, "vec", types.T_array_float32, 4) + sinker, err := NewHnswSyncSinker("test-uuid", UriInfo{}, newTestDbTableInfo(), watermarkUpdater, tblDef, 0, 0, newTestActiveRoutine(), 1024, "1s") + require.NoError(t, err) + defer sinker.Close() + + s := sinker.(*hnswSyncSinker[float32]) + ctx, cancel := context.WithCancel(context.Background()) + defer cancel() + + var wg sync.WaitGroup + wg.Add(1) + go func() { + defer wg.Done() + s.Run(ctx, nil) // ActiveRoutine not used by Run directly + }() + + t.Run("exec error", func(t *testing.T) { + s.ClearError() + s.sqlBufSendCh <- begin + s.sqlBufSendCh <- []byte("FAILSQL") + s.sqlBufSendCh <- commit // This commit might not be reached if error handling is strict + + time.Sleep(100 * time.Millisecond) + err := s.Error() + require.Error(t, err) + }) + + t.Run("rollback", func(t *testing.T) { + s.ClearError() + s.sqlBufSendCh <- begin + s.sqlBufSendCh <- rollback + + time.Sleep(100 * time.Millisecond) + require.NoError(t, s.Error()) + //require.True(t, rolledBack, "Rollback was not processed as expected") + }) + + fmt.Printf("finihsed......\n") + // To properly test sinker.Close() and stop the Run goroutine: + cancel() // Signal Run to stop its loop if it checks ctx.Done() + // Closing sqlBufSendCh is done by sinker.Close(), which should cause Run to exit. + // We already defer sinker.Close(), but for this test, let's be explicit. + wg.Wait() // Wait for Run goroutine to finish +} + +func TestHnswSyncSinker_Sink(t *testing.T) { + + proc := testutil.NewProcess() + + sqlexecstub := gostub.Stub(&sqlExecutorFactory, mockSqlExecutorFactory) + defer sqlexecstub.Reset() + + tblDef := newTestTableDef("pk", types.T_int64, "vec", types.T_array_float32, 2) + watermarkUpdater := NewMockWatermarkUpdater() + sinker, err := NewHnswSyncSinker("test-uuid", UriInfo{}, newTestDbTableInfo(), watermarkUpdater, tblDef, 0, 0, newTestActiveRoutine(), 1024, "1s") + require.NoError(t, err) + defer sinker.Close() + + s := sinker.(*hnswSyncSinker[float32]) + ctx := context.Background() + + t.Run("snapshot", func(t *testing.T) { + s.Reset() + + bat := testutil.NewBatchWithVectors( + []*vector.Vector{ + testutil.NewVector(2, types.T_int64.ToType(), proc.Mp(), false, []int64{1, 2}), + testutil.NewVector(2, types.T_array_float32.ToType(), proc.Mp(), false, [][]float32{[]float32{0.1, 0.2}, []float32{0.3, 0.4}}), + }, nil) + + defer bat.Clean(testutil.TestUtilMp) + + output := &DecoderOutput{ + fromTs: types.BuildTS(1, 0), + toTs: types.BuildTS(2, 0), + outputTyp: OutputTypeSnapshot, + checkpointBat: bat, + insertAtmBatch: nil, // Not used for snapshot + deleteAtmBatch: nil, // Not used for snapshot + noMoreData: false, + } + s.Sink(ctx, output) + require.NoError(t, s.Error()) + js, err := s.cdc.ToJson() + require.NoError(t, err) + require.Equal(t, string(js), `{"start":"1-0","end":"2-0","cdc":[{"t":"U","pk":1,"v":[0.1,0.2]},{"t":"U","pk":2,"v":[0.3,0.4]}]}`) + }) + + t.Run("noMoreData", func(t *testing.T) { + s.Reset() + s.cdc.Upsert(int64(100), []float32{1.0, 2.0}) // Add some data + require.False(t, s.cdc.Empty()) + + var sqlSent bool + doneCh := make(chan struct{}) + go func() { + // Need to consume from sqlBufSendCh or Sink will block + for range s.sqlBufSendCh { + sqlSent = true + close(doneCh) // Signal that SQL was processed + return // Assume only one SQL for this test + } + }() + + output := &DecoderOutput{ + fromTs: types.BuildTS(3, 0), + toTs: types.BuildTS(4, 0), + outputTyp: OutputTypeSnapshot, // Can be any type + noMoreData: true, + } + s.Sink(ctx, output) + require.NoError(t, s.Error()) + + select { + case <-doneCh: + // SQL was sent and consumed + case <-time.After(1 * time.Second): + t.Fatal("timed out waiting for SQL to be sent on noMoreData") + } + require.True(t, sqlSent) + require.True(t, s.cdc.Empty(), "CDC should be reset after noMoreData flush") + }) + +} + +func TestHnswSyncSinker_SendSql(t *testing.T) { + + sqlexecstub := gostub.Stub(&sqlExecutorFactory, mockSqlExecutorFactory) + defer sqlexecstub.Reset() + + watermarkUpdater := &WatermarkUpdater{ + watermarkMap: &sync.Map{}, + } + tblDef := newTestTableDef("pk", types.T_int64, "vec", types.T_array_float32, 2) + sinker, _ := NewHnswSyncSinker("test-uuid", UriInfo{}, newTestDbTableInfo(), watermarkUpdater, tblDef, 0, 0, newTestActiveRoutine(), 1024, "1s") + s := sinker.(*hnswSyncSinker[float32]) + defer s.Close() // Closes sqlBufSendCh + + t.Run("send sql happy path", func(t *testing.T) { + s.Reset() + s.cdc.Upsert(int64(1), []float32{0.1, 0.2}) + s.cdc.Delete(int64(2)) + s.cdc.Start = "ts1" + s.cdc.End = "ts2" + + var receivedSql []byte + var wg sync.WaitGroup + wg.Add(1) + go func() { + defer wg.Done() + receivedSql = <-s.sqlBufSendCh + }() + + err := s.sendSql() + require.NoError(t, err) + wg.Wait() // Wait for the goroutine to receive the SQL + + require.NotNil(t, receivedSql) + sqlStr := string(receivedSql) + + /* + expectedJsonPayload, _ := json.Marshal(map[string]any{ + "start_ts": s.cdc.Start, // These were reset before json was made + "end_ts": s.cdc.End, + "op_type": "hnsw_cdc_v1", + "upserts": []map[string]any{{"pk": int64(1), "vector": []float32{0.1, 0.2}}}, + "deletes": []int64{int64(2)}, + }) + */ + + // The cdc.Start and cdc.End are part of the ToJson output, but sendSql resets cdc *after* ToJson + // So we need to capture the state of cdc *before* it's reset for the expected JSON. + // Let's reconstruct the expected JSON more carefully. + cdcForJson := vectorindex.NewVectorIndexCdc[float32]() + cdcForJson.Upsert(int64(1), []float32{0.1, 0.2}) + cdcForJson.Delete(int64(2)) + cdcForJson.Start = "ts1" + cdcForJson.End = "ts2" + expectedJsonBytes, _ := cdcForJson.ToJson() + + expectedSql := fmt.Sprintf("%s SELECT hnsw_cdc_update('%s', '%s', %d, '%s');", + strings.Repeat(" ", sqlBufReserved), + s.param.DbName, s.param.Table, s.param.Dimension, string(expectedJsonBytes)) + require.Equal(t, expectedSql, sqlStr) + require.True(t, s.cdc.Empty(), "CDC should be reset after sending SQL") + }) + + t.Run("send sql empty cdc", func(t *testing.T) { + s.Reset() // Ensure CDC is empty + err := s.sendSql() + require.NoError(t, err) + select { + case <-s.sqlBufSendCh: + t.Fatal("SQL should not have been sent for empty CDC") + case <-time.After(50 * time.Millisecond): + // Expected behavior + } + }) +} + +func TestHnswSyncSinker_ErrorHandling(t *testing.T) { + sqlexecstub := gostub.Stub(&sqlExecutorFactory, mockSqlExecutorFactory) + defer sqlexecstub.Reset() + + s := &hnswSyncSinker[float32]{} // Minimal struct for error testing + s.err.Store((*error)(nil)) // Initialize with nil error pointer + + require.Nil(t, s.Error()) + + testErr := errors.New("test error") + s.SetError(testErr) + err := s.Error() + require.Error(t, err) + require.Equal(t, "internal error: convert go error to mo error test error", err.Error()) + + // Test with moerr + moTestErr := moerr.NewInternalErrorNoCtx("mo test error") + s.SetError(moTestErr) + err = s.Error() + require.Error(t, err) + require.True(t, moerr.IsMoErrCode(err, moerr.ErrInternal)) + require.Equal(t, moTestErr.Error(), err.Error()) + + s.ClearError() + require.Nil(t, s.Error()) +} From 53e2f96853fd175062c85c96b918c3f2fc717768 Mon Sep 17 00:00:00 2001 From: cpegeric Date: Mon, 2 Jun 2025 17:08:23 +0100 Subject: [PATCH 070/223] bug fix check channel closed --- pkg/cdc/hnsw_sinker.go | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/pkg/cdc/hnsw_sinker.go b/pkg/cdc/hnsw_sinker.go index 3a8aa81116a84..4ac8779148a6e 100644 --- a/pkg/cdc/hnsw_sinker.go +++ b/pkg/cdc/hnsw_sinker.go @@ -209,7 +209,8 @@ func (s *hnswSyncSinker[T]) Run(ctx context.Context, ar *ActiveRoutine) { logutil.Infof("cdc hnswSyncSinker(%v).Run: end", s.dbTblInfo) }() - for { + closed := false + for !closed { txnbegin := false // make sure there is a BEGIN before start transaction @@ -220,6 +221,7 @@ func (s *hnswSyncSinker[T]) Run(ctx context.Context, ar *ActiveRoutine) { return case sqlBuf, ok := <-s.sqlBufSendCh: if !ok { + closed = true return } //os.Stderr.WriteString(fmt.Sprintf("Wait for BEGIN.... %s\n", string(sqlBuf))) @@ -244,6 +246,7 @@ func (s *hnswSyncSinker[T]) Run(ctx context.Context, ar *ActiveRoutine) { case sqlBuf, ok := <-s.sqlBufSendCh: if !ok { // channel closed + closed = true return nil } From 89efa85e8e4908e84db806ea2fce8bda52a00b9e Mon Sep 17 00:00:00 2001 From: cpegeric Date: Mon, 2 Jun 2025 17:18:40 +0100 Subject: [PATCH 071/223] fix sca --- pkg/cdc/hnsw_sinker_test.go | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/pkg/cdc/hnsw_sinker_test.go b/pkg/cdc/hnsw_sinker_test.go index 4c7c4087a430e..3e083aab8c3a5 100644 --- a/pkg/cdc/hnsw_sinker_test.go +++ b/pkg/cdc/hnsw_sinker_test.go @@ -16,7 +16,6 @@ package cdc import ( "context" - "errors" "fmt" "strings" "sync" @@ -546,11 +545,11 @@ func TestHnswSyncSinker_ErrorHandling(t *testing.T) { require.Nil(t, s.Error()) - testErr := errors.New("test error") + testErr := moerr.NewInternalErrorNoCtx("test error") s.SetError(testErr) err := s.Error() require.Error(t, err) - require.Equal(t, "internal error: convert go error to mo error test error", err.Error()) + require.Equal(t, "internal error: test error", err.Error()) // Test with moerr moTestErr := moerr.NewInternalErrorNoCtx("mo test error") From f6609deb4e1bc27a17c37fbba90177178148582b Mon Sep 17 00:00:00 2001 From: cpegeric Date: Mon, 2 Jun 2025 17:40:55 +0100 Subject: [PATCH 072/223] fix sca --- pkg/cdc/hnsw_sinker.go | 3 --- pkg/cdc/hnsw_sinker_test.go | 2 ++ 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/pkg/cdc/hnsw_sinker.go b/pkg/cdc/hnsw_sinker.go index 4ac8779148a6e..b15fecd07c096 100644 --- a/pkg/cdc/hnsw_sinker.go +++ b/pkg/cdc/hnsw_sinker.go @@ -227,7 +227,6 @@ func (s *hnswSyncSinker[T]) Run(ctx context.Context, ar *ActiveRoutine) { //os.Stderr.WriteString(fmt.Sprintf("Wait for BEGIN.... %s\n", string(sqlBuf))) if bytes.Equal(sqlBuf, begin) { txnbegin = true - break } } } @@ -273,8 +272,6 @@ func (s *hnswSyncSinker[T]) Run(ctx context.Context, ar *ActiveRoutine) { } } - return nil - }, opts) if err != nil { diff --git a/pkg/cdc/hnsw_sinker_test.go b/pkg/cdc/hnsw_sinker_test.go index 3e083aab8c3a5..4c66d30f4ef62 100644 --- a/pkg/cdc/hnsw_sinker_test.go +++ b/pkg/cdc/hnsw_sinker_test.go @@ -134,6 +134,7 @@ func (exec *MockErrorTxnExecutor) Txn() client.TxnOperator { return nil } +/* func (exec *MockErrorTxnExecutor) commit() error { return nil } @@ -145,6 +146,7 @@ func (exec *MockErrorTxnExecutor) getDatabase() string { func (exec *MockErrorTxnExecutor) rollback(err error) error { return nil } +*/ var _ executor.TxnExecutor = new(MockErrorTxnExecutor) From 1575bd9fb609101f346ac6e99cac15858732d501 Mon Sep 17 00:00:00 2001 From: cpegeric Date: Mon, 2 Jun 2025 17:54:05 +0100 Subject: [PATCH 073/223] fix sca --- pkg/cdc/hnsw_sinker_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/cdc/hnsw_sinker_test.go b/pkg/cdc/hnsw_sinker_test.go index 4c66d30f4ef62..56270bd4a4ec2 100644 --- a/pkg/cdc/hnsw_sinker_test.go +++ b/pkg/cdc/hnsw_sinker_test.go @@ -405,7 +405,7 @@ func TestHnswSyncSinker_Sink(t *testing.T) { bat := testutil.NewBatchWithVectors( []*vector.Vector{ testutil.NewVector(2, types.T_int64.ToType(), proc.Mp(), false, []int64{1, 2}), - testutil.NewVector(2, types.T_array_float32.ToType(), proc.Mp(), false, [][]float32{[]float32{0.1, 0.2}, []float32{0.3, 0.4}}), + testutil.NewVector(2, types.T_array_float32.ToType(), proc.Mp(), false, [][]float32{{0.1, 0.2}, {0.3, 0.4}}), }, nil) defer bat.Clean(testutil.TestUtilMp) From 94549ac960a4fbadecde69495dce82863ce72197 Mon Sep 17 00:00:00 2001 From: cpegeric Date: Tue, 3 Jun 2025 10:36:57 +0100 Subject: [PATCH 074/223] check vector dimension when cast from string --- pkg/sql/plan/function/func_cast.go | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/pkg/sql/plan/function/func_cast.go b/pkg/sql/plan/function/func_cast.go index 85f8f978d027b..b2787aefffd64 100644 --- a/pkg/sql/plan/function/func_cast.go +++ b/pkg/sql/plan/function/func_cast.go @@ -4394,6 +4394,8 @@ func strToArray[T types.RealNumbers]( from vector.FunctionParameterWrapper[types.Varlena], to *vector.FunctionResult[types.Varlena], length int, _ types.Type) error { + toType := to.GetType() + var i uint64 var l = uint64(length) for i = 0; i < l; i++ { @@ -4403,11 +4405,17 @@ func strToArray[T types.RealNumbers]( return err } } else { - - b, err := types.StringToArrayToBytes[T](convertByteSliceToString(v)) + arr, err := types.StringToArray[T](convertByteSliceToString(v)) if err != nil { return err } + + if int(toType.Width) != len(arr) { + return moerr.NewArrayDefMismatchNoCtx(int(toType.Width), len(arr)) + } + + b := types.ArrayToBytes[T](arr) + if err = to.AppendBytes(b, false); err != nil { return err } From e34c04f018a96afa1fb1647f5b4c3d33fbbc60ca Mon Sep 17 00:00:00 2001 From: cpegeric Date: Tue, 3 Jun 2025 13:13:37 +0100 Subject: [PATCH 075/223] bypass dimension check when width is max dimension --- pkg/sql/plan/function/func_cast.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pkg/sql/plan/function/func_cast.go b/pkg/sql/plan/function/func_cast.go index b2787aefffd64..b957b02466bf6 100644 --- a/pkg/sql/plan/function/func_cast.go +++ b/pkg/sql/plan/function/func_cast.go @@ -4410,7 +4410,8 @@ func strToArray[T types.RealNumbers]( return err } - if int(toType.Width) != len(arr) { + // bypass the dimension check if width is max dimension + if int(toType.Width) != types.MaxArrayDimension && int(toType.Width) != len(arr) { return moerr.NewArrayDefMismatchNoCtx(int(toType.Width), len(arr)) } From 1f626f383cdfdb6377b0c9d6cefcc9e6b6b7891b Mon Sep 17 00:00:00 2001 From: cpegeric Date: Tue, 3 Jun 2025 13:53:03 +0100 Subject: [PATCH 076/223] fix bvt --- test/distributed/cases/array/array.result | 4 ++-- test/distributed/cases/vector/vector_hnsw.result | 2 +- test/distributed/cases/vector/vector_index.result | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/test/distributed/cases/array/array.result b/test/distributed/cases/array/array.result index b0ef7775263c1..24f96fb2b8d8d 100644 --- a/test/distributed/cases/array/array.result +++ b/test/distributed/cases/array/array.result @@ -54,9 +54,9 @@ select b + "[1,2,3]" from vec_table; b + [1,2,3] [2, 4, 6] select b + "[1,2]" from vec_table; -invalid input: vector ops between different dimensions (3, 2) is not permitted. +invalid input: expected vector dimension 3 != actual dimension 2. select b + "[1,2,3,4]" from vec_table; -invalid input: vector ops between different dimensions (3, 4) is not permitted. +invalid input: expected vector dimension 3 != actual dimension 4. select cast("[1,2,3]" as vecf32(3)); cast([1,2,3] as vecf32(3)) [1, 2, 3] diff --git a/test/distributed/cases/vector/vector_hnsw.result b/test/distributed/cases/vector/vector_hnsw.result index 0181cc7eb6dd4..ab662db603d07 100644 --- a/test/distributed/cases/vector/vector_hnsw.result +++ b/test/distributed/cases/vector/vector_hnsw.result @@ -114,7 +114,7 @@ create index idx01 using hnsw on vector_index_07(b) op_type "vector_l2_ops"; select * from vector_index_07 order by L2_DISTANCE(a, "[16, 15, 0, 0, 5, 46, 5, 5, 4, 0, 0, 0, 28, 118, 12, 5, 75, 44, 5, 0, 6, 32, 6, 49, 41, 74, 9, 1, 0, 0, 0, 9, 1, 9, 16, 41, 71, 80, 3, 0, 0, 4, 3, 5, 51, 106, 11, 3, 112, 28, 13, 1, 4, 8, 3, 104, 118, 14, 1, 1, 0, 0, 0, 88, 3, 27, 46, 118, 108, 49, 2, 0, 1, 46, 118, 118, 27, 12, 0, 0, 33, 118, 118, 8, 0, 0, 0, 4, 118, 95, 40, 0, 0, 0, 1, 11, 27, 38, 12, 12, 18, 29, 3, 2, 13, 30, 94, 78, 30, 19, 9, 3, 31, 45, 70, 42, 15, 1, 3, 12, 14, 22, 16, 2, 3, 17, 24, 13]") ASC LIMIT 2; invalid argument function l2_distance, bad value [BIGINT VARCHAR] select * from vector_index_07 order by L2_DISTANCE(b, "[16, 15, 3, 0, 0, 4, 3, 5, 51]") ASC LIMIT 2; -invalid input: vector ops between different dimensions (128, 9) is not permitted. +invalid input: expected vector dimension 128 != actual dimension 9. select * from vector_index_07 order by L2_DISTANCE(b, "abc") ASC LIMIT 2; internal error: malformed vector input: abc create table vector_index_08(a bigint auto_increment primary key, b vecf32(128),c int,key c_k(c)); diff --git a/test/distributed/cases/vector/vector_index.result b/test/distributed/cases/vector/vector_index.result index dfd896abe5482..8d734ce5f5734 100644 --- a/test/distributed/cases/vector/vector_index.result +++ b/test/distributed/cases/vector/vector_index.result @@ -125,7 +125,7 @@ create index idx01 using ivfflat on vector_index_07(b) lists=5 op_type "vector_l select * from vector_index_07 order by L2_DISTANCE(a, "[16, 15, 0, 0, 5, 46, 5, 5, 4, 0, 0, 0, 28, 118, 12, 5, 75, 44, 5, 0, 6, 32, 6, 49, 41, 74, 9, 1, 0, 0, 0, 9, 1, 9, 16, 41, 71, 80, 3, 0, 0, 4, 3, 5, 51, 106, 11, 3, 112, 28, 13, 1, 4, 8, 3, 104, 118, 14, 1, 1, 0, 0, 0, 88, 3, 27, 46, 118, 108, 49, 2, 0, 1, 46, 118, 118, 27, 12, 0, 0, 33, 118, 118, 8, 0, 0, 0, 4, 118, 95, 40, 0, 0, 0, 1, 11, 27, 38, 12, 12, 18, 29, 3, 2, 13, 30, 94, 78, 30, 19, 9, 3, 31, 45, 70, 42, 15, 1, 3, 12, 14, 22, 16, 2, 3, 17, 24, 13]") ASC LIMIT 2; invalid argument function l2_distance, bad value [INT VARCHAR] select * from vector_index_07 order by L2_DISTANCE(b, "[16, 15, 3, 0, 0, 4, 3, 5, 51]") ASC LIMIT 2; -invalid input: vector ops between different dimensions (128, 9) is not permitted. +invalid input: expected vector dimension 128 != actual dimension 9. select * from vector_index_07 order by L2_DISTANCE(b, "abc") ASC LIMIT 2; internal error: malformed vector input: abc create table vector_index_08(a int auto_increment primary key, b vecf32(128),c int,key c_k(c)); From 22eee6ba82ce15f651b110564c89512bc25b7f39 Mon Sep 17 00:00:00 2001 From: cpegeric Date: Wed, 4 Jun 2025 11:50:10 +0100 Subject: [PATCH 077/223] test atomicBatch --- pkg/cdc/hnsw_sinker_test.go | 92 +++++++++++++++++++++++++++++++++++++ 1 file changed, 92 insertions(+) diff --git a/pkg/cdc/hnsw_sinker_test.go b/pkg/cdc/hnsw_sinker_test.go index 56270bd4a4ec2..dc633518edcfa 100644 --- a/pkg/cdc/hnsw_sinker_test.go +++ b/pkg/cdc/hnsw_sinker_test.go @@ -24,6 +24,7 @@ import ( "github.com/matrixorigin/matrixone/pkg/catalog" "github.com/matrixorigin/matrixone/pkg/common/moerr" + "github.com/matrixorigin/matrixone/pkg/container/batch" "github.com/matrixorigin/matrixone/pkg/container/types" "github.com/matrixorigin/matrixone/pkg/container/vector" "github.com/matrixorigin/matrixone/pkg/pb/plan" @@ -33,6 +34,7 @@ import ( "github.com/matrixorigin/matrixone/pkg/vectorindex" "github.com/prashantv/gostub" "github.com/stretchr/testify/require" + "github.com/tidwall/btree" ) func newTestTableDef(pkName string, pkType types.T, vecColName string, vecType types.T, vecWidth int32) *plan.TableDef { @@ -406,6 +408,7 @@ func TestHnswSyncSinker_Sink(t *testing.T) { []*vector.Vector{ testutil.NewVector(2, types.T_int64.ToType(), proc.Mp(), false, []int64{1, 2}), testutil.NewVector(2, types.T_array_float32.ToType(), proc.Mp(), false, [][]float32{{0.1, 0.2}, {0.3, 0.4}}), + testutil.NewVector(2, types.T_int32.ToType(), proc.Mp(), false, []int32{1, 2}), }, nil) defer bat.Clean(testutil.TestUtilMp) @@ -564,3 +567,92 @@ func TestHnswSyncSinker_ErrorHandling(t *testing.T) { s.ClearError() require.Nil(t, s.Error()) } + +func TestHnswSyncSinker_Sink_AtomicBatch(t *testing.T) { + + proc := testutil.NewProcess() + + sqlexecstub := gostub.Stub(&sqlExecutorFactory, mockSqlExecutorFactory) + defer sqlexecstub.Reset() + + watermarkUpdater := &WatermarkUpdater{ + watermarkMap: &sync.Map{}, + } + tblDef := newTestTableDef("pk", types.T_int64, "vec", types.T_array_float32, 2) + sinker, _ := NewHnswSyncSinker("test-uuid", UriInfo{}, newTestDbTableInfo(), watermarkUpdater, tblDef, 0, 0, newTestActiveRoutine(), 1024, "1s") + s := sinker.(*hnswSyncSinker[float32]) + defer s.Close() // Closes sqlBufSendCh + + bat := testutil.NewBatchWithVectors( + []*vector.Vector{ + testutil.NewVector(2, types.T_int64.ToType(), proc.Mp(), false, []int64{1, 2}), + testutil.NewVector(2, types.T_array_float32.ToType(), proc.Mp(), false, [][]float32{{0.1, 0.2}, {0.3, 0.4}}), + testutil.NewVector(2, types.T_int32.ToType(), proc.Mp(), false, []int64{1, 2}), + }, nil) + defer bat.Clean(testutil.TestUtilMp) + + fromTs := types.BuildTS(1, 0) + insertAtomicBat := &AtomicBatch{ + Mp: nil, + Batches: []*batch.Batch{bat}, + Rows: btree.NewBTreeGOptions(AtomicBatchRow.Less, btree.Options{Degree: 64}), + } + insertAtomicBat.Rows.Set(AtomicBatchRow{Ts: fromTs, Pk: []byte{1}, Offset: 0, Src: bat}) + insertAtomicBat.Rows.Set(AtomicBatchRow{Ts: fromTs, Pk: []byte{2}, Offset: 1, Src: bat}) + + delbat := testutil.NewBatchWithVectors( + []*vector.Vector{ + testutil.NewVector(2, types.T_int64.ToType(), proc.Mp(), false, []int64{1, 2}), + testutil.NewVector(2, types.T_array_float32.ToType(), proc.Mp(), false, [][]float32{{0.1, 0.2}, {0.3, 0.4}}), + testutil.NewVector(2, types.T_int32.ToType(), proc.Mp(), false, []int64{1, 2}), + }, nil) + + defer delbat.Clean(testutil.TestUtilMp) + + delfromTs := types.BuildTS(2, 0) + delAtomicBat := &AtomicBatch{ + Mp: nil, + Batches: []*batch.Batch{delbat}, + Rows: btree.NewBTreeGOptions(AtomicBatchRow.Less, btree.Options{Degree: 64}), + } + delAtomicBat.Rows.Set(AtomicBatchRow{Ts: delfromTs, Pk: []byte{1}, Offset: 0, Src: bat}) + delAtomicBat.Rows.Set(AtomicBatchRow{Ts: delfromTs, Pk: []byte{2}, Offset: 1, Src: bat}) + + dout := &DecoderOutput{ + fromTs: types.BuildTS(1, 0), + toTs: types.BuildTS(2, 0), + outputTyp: OutputTypeTail, + insertAtmBatch: insertAtomicBat, + deleteAtmBatch: delAtomicBat, + } + + var receivedSql []byte + var wg sync.WaitGroup + wg.Add(1) + go func() { + defer wg.Done() + receivedSql = <-s.sqlBufSendCh + require.NotNil(t, receivedSql) + }() + + s.Sink(context.Background(), dout) + + wg.Wait() // Wait for the goroutine to receive the SQL + sqlStr := string(receivedSql) + + cdcForJson := vectorindex.NewVectorIndexCdc[float32]() + cdcForJson.Upsert(int64(1), []float32{0.1, 0.2}) + cdcForJson.Upsert(int64(2), []float32{0.3, 0.4}) + cdcForJson.Delete(int64(1)) + cdcForJson.Delete(int64(2)) + cdcForJson.Start = "1-0" + cdcForJson.End = "2-0" + expectedJsonBytes, _ := cdcForJson.ToJson() + + expectedSql := fmt.Sprintf("%s SELECT hnsw_cdc_update('%s', '%s', %d, '%s');", + strings.Repeat(" ", sqlBufReserved), + s.param.DbName, s.param.Table, s.param.Dimension, string(expectedJsonBytes)) + require.Equal(t, expectedSql, sqlStr) + require.True(t, s.cdc.Empty(), "CDC should be reset after sending SQL") + +} From ecfeab809b9a2c8027656948fa727915deb049a2 Mon Sep 17 00:00:00 2001 From: cpegeric Date: Wed, 4 Jun 2025 13:38:49 +0100 Subject: [PATCH 078/223] check errors --- pkg/cdc/hnsw_sinker_test.go | 36 +++++++++++++++++++++++++++++++++++- 1 file changed, 35 insertions(+), 1 deletion(-) diff --git a/pkg/cdc/hnsw_sinker_test.go b/pkg/cdc/hnsw_sinker_test.go index dc633518edcfa..a5568da1ac28a 100644 --- a/pkg/cdc/hnsw_sinker_test.go +++ b/pkg/cdc/hnsw_sinker_test.go @@ -16,6 +16,7 @@ package cdc import ( "context" + "errors" "fmt" "strings" "sync" @@ -111,6 +112,7 @@ func (exec MockSQLExecutor) ExecTxn(ctx context.Context, execFunc func(txn execu type MockErrorTxnExecutor struct { database string + ctx context.Context } func (exec *MockErrorTxnExecutor) Use(db string) { @@ -123,6 +125,16 @@ func (exec *MockErrorTxnExecutor) Exec( ) (executor.Result, error) { if strings.Contains(sql, "FAILSQL") { return executor.Result{}, moerr.NewInternalErrorNoCtx("db error") + } else if strings.Contains(sql, "MULTI_ERROR_NO_ROLLBACK") { + var errs error + errs = errors.Join(errs, moerr.NewInternalErrorNoCtx("db error")) + errs = errors.Join(errs, moerr.NewInternalErrorNoCtx("db error 2")) + return executor.Result{}, errs + } else if strings.Contains(sql, "MULTI_ERROR_ROLLBACK") { + var errs error + errs = errors.Join(errs, moerr.NewInternalErrorNoCtx("db error")) + errs = errors.Join(errs, moerr.NewQueryInterrupted(exec.ctx)) + return executor.Result{}, errs } return executor.Result{}, nil @@ -169,7 +181,7 @@ func (exec MockErrorSQLExecutor) Exec(ctx context.Context, sql string, opts exec // TxnExecutor.Exec() as `\n` seperated string, it will only execute the first SQL statement causing Bug. func (exec MockErrorSQLExecutor) ExecTxn(ctx context.Context, execFunc func(txn executor.TxnExecutor) error, opts executor.Options) error { - txnexec := &MockErrorTxnExecutor{} + txnexec := &MockErrorTxnExecutor{ctx: ctx} err := execFunc(txnexec) if moerr.IsMoErrCode(err, moerr.ErrQueryInterrupted) { fmt.Printf("ROLLBACK...\n") @@ -367,6 +379,28 @@ func TestHnswSyncSinker_RunError(t *testing.T) { require.Error(t, err) }) + t.Run("multi-error no rollback error", func(t *testing.T) { + s.ClearError() + s.sqlBufSendCh <- begin + s.sqlBufSendCh <- []byte("MULTI_ERROR_NO_ROLLBACK") + s.sqlBufSendCh <- commit // This commit might not be reached if error handling is strict + + time.Sleep(100 * time.Millisecond) + err := s.Error() + require.Error(t, err) + }) + + t.Run("multi-error with rollback error", func(t *testing.T) { + s.ClearError() + s.sqlBufSendCh <- begin + s.sqlBufSendCh <- []byte("MULTI_ERROR_ROLLBACK") + s.sqlBufSendCh <- commit // This commit might not be reached if error handling is strict + + time.Sleep(100 * time.Millisecond) + err := s.Error() + require.NoError(t, err) + }) + t.Run("rollback", func(t *testing.T) { s.ClearError() s.sqlBufSendCh <- begin From d9a6023e2d4170b76871c1c2218c6259255fa523 Mon Sep 17 00:00:00 2001 From: cpegeric Date: Wed, 4 Jun 2025 13:52:07 +0100 Subject: [PATCH 079/223] test sendX --- pkg/cdc/hnsw_sinker_test.go | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/pkg/cdc/hnsw_sinker_test.go b/pkg/cdc/hnsw_sinker_test.go index a5568da1ac28a..a90e8797f0343 100644 --- a/pkg/cdc/hnsw_sinker_test.go +++ b/pkg/cdc/hnsw_sinker_test.go @@ -331,9 +331,9 @@ func TestHnswSyncSinker_Run(t *testing.T) { s.ClearError() //var executedSqls []string - s.sqlBufSendCh <- begin + s.SendBegin() s.sqlBufSendCh <- []byte("SELECT 1") - s.sqlBufSendCh <- commit + s.SendCommit() // Wait for processing or timeout time.Sleep(100 * time.Millisecond) @@ -370,9 +370,9 @@ func TestHnswSyncSinker_RunError(t *testing.T) { t.Run("exec error", func(t *testing.T) { s.ClearError() - s.sqlBufSendCh <- begin + s.SendBegin() s.sqlBufSendCh <- []byte("FAILSQL") - s.sqlBufSendCh <- commit // This commit might not be reached if error handling is strict + s.SendCommit() // This commit might not be reached if error handling is strict time.Sleep(100 * time.Millisecond) err := s.Error() @@ -381,9 +381,9 @@ func TestHnswSyncSinker_RunError(t *testing.T) { t.Run("multi-error no rollback error", func(t *testing.T) { s.ClearError() - s.sqlBufSendCh <- begin + s.SendBegin() s.sqlBufSendCh <- []byte("MULTI_ERROR_NO_ROLLBACK") - s.sqlBufSendCh <- commit // This commit might not be reached if error handling is strict + s.SendCommit() // This commit might not be reached if error handling is strict time.Sleep(100 * time.Millisecond) err := s.Error() @@ -392,9 +392,9 @@ func TestHnswSyncSinker_RunError(t *testing.T) { t.Run("multi-error with rollback error", func(t *testing.T) { s.ClearError() - s.sqlBufSendCh <- begin + s.SendBegin() s.sqlBufSendCh <- []byte("MULTI_ERROR_ROLLBACK") - s.sqlBufSendCh <- commit // This commit might not be reached if error handling is strict + s.SendCommit() // This commit might not be reached if error handling is strict time.Sleep(100 * time.Millisecond) err := s.Error() @@ -403,8 +403,8 @@ func TestHnswSyncSinker_RunError(t *testing.T) { t.Run("rollback", func(t *testing.T) { s.ClearError() - s.sqlBufSendCh <- begin - s.sqlBufSendCh <- rollback + s.SendBegin() + s.SendRollback() time.Sleep(100 * time.Millisecond) require.NoError(t, s.Error()) From ea822666466430d03729f8469a7fb0e89ec5e8c7 Mon Sep 17 00:00:00 2001 From: cpegeric Date: Wed, 4 Jun 2025 16:51:50 +0100 Subject: [PATCH 080/223] update bvt with manual pitr and cdc task --- .../cases/vector/vector_hnsw_sync.result | 24 ++++++++++++----- .../cases/vector/vector_hnsw_sync.sql | 27 ++++++++++++++++--- 2 files changed, 40 insertions(+), 11 deletions(-) diff --git a/test/distributed/cases/vector/vector_hnsw_sync.result b/test/distributed/cases/vector/vector_hnsw_sync.result index 41b25054a9a74..9c1a60a52a2c5 100644 --- a/test/distributed/cases/vector/vector_hnsw_sync.result +++ b/test/distributed/cases/vector/vector_hnsw_sync.result @@ -3,26 +3,36 @@ create database if not exists hnsw_cdc; use hnsw_cdc; create table vector_index_01(a bigint primary key, b vecf32(3),c int,key c_k(c)); create index idx01 using hnsw on vector_index_01(b) op_type "vector_l2_ops" M 48 EF_CONSTRUCTION 64 EF_SEARCH 64; +drop pitr if exists `__mo_table_pitr_hnsw`; +create pitr `__mo_table_pitr_hnsw` for table hnsw_cdc vector_index_01 range 2 'h'; +create cdc `__mo_cdc_hnsw_idx01` 'mysql://root:111@127.0.0.1:6001' 'hnswsync' 'mysql://root:111@127.0.0.1:6001' 'hnsw_cdc.vector_index_01' {'Level'='table'}; +select sleep(30); +sleep(30) +0 insert into vector_index_01 values (0, "[1,2,3]", 1); +select sleep(1); +sleep(1) +0 select * from vector_index_01 order by L2_DISTANCE(b,"[1,2,3]") ASC LIMIT 10; a b c -select hnsw_cdc_update('hnsw_cdc', 'vector_index_01', 3, '{"start":"", "end":"", "cdc":[{"t":"U", "pk":0, "v":[1,2,3]}]}'); -hnsw_cdc_update(hnsw_cdc, vector_index_01, 3, {"start":"", "end":"", "cdc":[{"t":"U", "pk":0, "v":[1,2,3]}]}) -0 +0 [1, 2, 3] 1 select * from vector_index_01 order by L2_DISTANCE(b,"[1,2,3]") ASC LIMIT 10; a b c 0 [1, 2, 3] 1 DELETE FROM vector_index_01 WHERE a=0; -select hnsw_cdc_update('hnsw_cdc', 'vector_index_01', 3, '{"start":"", "end":"", "cdc":[{"t":"D", "pk":0}]}'); -hnsw_cdc_update(hnsw_cdc, vector_index_01, 3, {"start":"", "end":"", "cdc":[{"t":"D", "pk":0}]}) +select sleep(1); +sleep(1) 0 select * from vector_index_01 order by L2_DISTANCE(b,"[1,2,3]") ASC LIMIT 10; a b c insert into vector_index_01 values (1, "[2,3,4]", 1); -select hnsw_cdc_update('hnsw_cdc', 'vector_index_01', 3, '{"start":"", "end":"", "cdc":[{"t":"I", "pk":1, "v":[2,3,4]}]}'); -hnsw_cdc_update(hnsw_cdc, vector_index_01, 3, {"start":"", "end":"", "cdc":[{"t":"I", "pk":1, "v":[2,3,4]}]}) +select sleep(1); +sleep(1) 0 select * from vector_index_01 order by L2_DISTANCE(b,"[2,3,4]") ASC LIMIT 10; a b c 1 [2, 3, 4] 1 +drop cdc task `__mo_cdc_hnsw_idx01`; +drop pitr if exists `__mo_table_pitr_hnsw`; +drop table vector_index_01; drop database hnsw_cdc; diff --git a/test/distributed/cases/vector/vector_hnsw_sync.sql b/test/distributed/cases/vector/vector_hnsw_sync.sql index e09385cff9ef2..1c96db5472184 100644 --- a/test/distributed/cases/vector/vector_hnsw_sync.sql +++ b/test/distributed/cases/vector/vector_hnsw_sync.sql @@ -1,5 +1,5 @@ -SET experimental_hnsw_index = 1; +SET experimental_hnsw_index = 1; create database if not exists hnsw_cdc; use hnsw_cdc; @@ -8,22 +8,41 @@ create table vector_index_01(a bigint primary key, b vecf32(3),c int,key c_k(c)) -- empty data create index idx01 using hnsw on vector_index_01(b) op_type "vector_l2_ops" M 48 EF_CONSTRUCTION 64 EF_SEARCH 64; +drop pitr if exists `__mo_table_pitr_hnsw`; +create pitr `__mo_table_pitr_hnsw` for table hnsw_cdc vector_index_01 range 2 'h'; + +create cdc `__mo_cdc_hnsw_idx01` 'mysql://root:111@127.0.0.1:6001' 'hnswsync' 'mysql://root:111@127.0.0.1:6001' 'hnsw_cdc.vector_index_01' {'Level'='table'}; + +-- show cdc all; +select sleep(30); + insert into vector_index_01 values (0, "[1,2,3]", 1); +select sleep(1); + select * from vector_index_01 order by L2_DISTANCE(b,"[1,2,3]") ASC LIMIT 10; -select hnsw_cdc_update('hnsw_cdc', 'vector_index_01', 3, '{"start":"", "end":"", "cdc":[{"t":"U", "pk":0, "v":[1,2,3]}]}'); + +-- select hnsw_cdc_update('hnsw_cdc', 'vector_index_01', 3, '{"start":"", "end":"", "cdc":[{"t":"U", "pk":0, "v":[1,2,3]}]}'); select * from vector_index_01 order by L2_DISTANCE(b,"[1,2,3]") ASC LIMIT 10; DELETE FROM vector_index_01 WHERE a=0; -select hnsw_cdc_update('hnsw_cdc', 'vector_index_01', 3, '{"start":"", "end":"", "cdc":[{"t":"D", "pk":0}]}'); +-- select hnsw_cdc_update('hnsw_cdc', 'vector_index_01', 3, '{"start":"", "end":"", "cdc":[{"t":"D", "pk":0}]}'); +select sleep(1); select * from vector_index_01 order by L2_DISTANCE(b,"[1,2,3]") ASC LIMIT 10; insert into vector_index_01 values (1, "[2,3,4]", 1); -select hnsw_cdc_update('hnsw_cdc', 'vector_index_01', 3, '{"start":"", "end":"", "cdc":[{"t":"I", "pk":1, "v":[2,3,4]}]}'); +-- select hnsw_cdc_update('hnsw_cdc', 'vector_index_01', 3, '{"start":"", "end":"", "cdc":[{"t":"I", "pk":1, "v":[2,3,4]}]}'); + +select sleep(1); select * from vector_index_01 order by L2_DISTANCE(b,"[2,3,4]") ASC LIMIT 10; + +drop cdc task `__mo_cdc_hnsw_idx01`; +drop pitr if exists `__mo_table_pitr_hnsw`; +drop table vector_index_01; + drop database hnsw_cdc; From 6539fffb3ecfd6ab1e2e477db796b4e1621e5896 Mon Sep 17 00:00:00 2001 From: cpegeric Date: Wed, 4 Jun 2025 17:28:47 +0100 Subject: [PATCH 081/223] increase sleep --- test/distributed/cases/vector/vector_hnsw_sync.sql | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/test/distributed/cases/vector/vector_hnsw_sync.sql b/test/distributed/cases/vector/vector_hnsw_sync.sql index 1c96db5472184..3e484764a3c10 100644 --- a/test/distributed/cases/vector/vector_hnsw_sync.sql +++ b/test/distributed/cases/vector/vector_hnsw_sync.sql @@ -18,7 +18,7 @@ select sleep(30); insert into vector_index_01 values (0, "[1,2,3]", 1); -select sleep(1); +select sleep(4); select * from vector_index_01 order by L2_DISTANCE(b,"[1,2,3]") ASC LIMIT 10; @@ -29,14 +29,14 @@ select * from vector_index_01 order by L2_DISTANCE(b,"[1,2,3]") ASC LIMIT 10; DELETE FROM vector_index_01 WHERE a=0; -- select hnsw_cdc_update('hnsw_cdc', 'vector_index_01', 3, '{"start":"", "end":"", "cdc":[{"t":"D", "pk":0}]}'); -select sleep(1); +select sleep(4); select * from vector_index_01 order by L2_DISTANCE(b,"[1,2,3]") ASC LIMIT 10; insert into vector_index_01 values (1, "[2,3,4]", 1); -- select hnsw_cdc_update('hnsw_cdc', 'vector_index_01', 3, '{"start":"", "end":"", "cdc":[{"t":"I", "pk":1, "v":[2,3,4]}]}'); -select sleep(1); +select sleep(4); select * from vector_index_01 order by L2_DISTANCE(b,"[2,3,4]") ASC LIMIT 10; From 917356b935a202c25be851a1ddbdc27c8ec22dc2 Mon Sep 17 00:00:00 2001 From: cpegeric Date: Wed, 4 Jun 2025 17:34:01 +0100 Subject: [PATCH 082/223] update --- .../distributed/cases/vector/vector_hnsw_sync.result | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/test/distributed/cases/vector/vector_hnsw_sync.result b/test/distributed/cases/vector/vector_hnsw_sync.result index 9c1a60a52a2c5..bac0ceabc6c39 100644 --- a/test/distributed/cases/vector/vector_hnsw_sync.result +++ b/test/distributed/cases/vector/vector_hnsw_sync.result @@ -10,8 +10,8 @@ select sleep(30); sleep(30) 0 insert into vector_index_01 values (0, "[1,2,3]", 1); -select sleep(1); -sleep(1) +select sleep(4); +sleep(4) 0 select * from vector_index_01 order by L2_DISTANCE(b,"[1,2,3]") ASC LIMIT 10; a b c @@ -20,14 +20,14 @@ select * from vector_index_01 order by L2_DISTANCE(b,"[1,2,3]") ASC LIMIT 10; a b c 0 [1, 2, 3] 1 DELETE FROM vector_index_01 WHERE a=0; -select sleep(1); -sleep(1) +select sleep(4); +sleep(4) 0 select * from vector_index_01 order by L2_DISTANCE(b,"[1,2,3]") ASC LIMIT 10; a b c insert into vector_index_01 values (1, "[2,3,4]", 1); -select sleep(1); -sleep(1) +select sleep(4); +sleep(4) 0 select * from vector_index_01 order by L2_DISTANCE(b,"[2,3,4]") ASC LIMIT 10; a b c From 397f518fdf4bb1a46727a388dbdd4921d647ccb0 Mon Sep 17 00:00:00 2001 From: cpegeric Date: Thu, 5 Jun 2025 11:54:39 +0100 Subject: [PATCH 083/223] add tests --- .../cases/vector/vector_hnsw_sync.result | 33 ++++++++++++++- .../cases/vector/vector_hnsw_sync.sql | 40 +++++++++++++++--- .../resources/vector/sift128_base_10k.csv.gz | Bin 0 -> 1391404 bytes 3 files changed, 66 insertions(+), 7 deletions(-) create mode 100644 test/distributed/resources/vector/sift128_base_10k.csv.gz diff --git a/test/distributed/cases/vector/vector_hnsw_sync.result b/test/distributed/cases/vector/vector_hnsw_sync.result index bac0ceabc6c39..9a31d6ce6c57a 100644 --- a/test/distributed/cases/vector/vector_hnsw_sync.result +++ b/test/distributed/cases/vector/vector_hnsw_sync.result @@ -1,4 +1,5 @@ SET experimental_hnsw_index = 1; +drop database if exists hnsw_cdc; create database if not exists hnsw_cdc; use hnsw_cdc; create table vector_index_01(a bigint primary key, b vecf32(3),c int,key c_k(c)); @@ -16,9 +17,13 @@ sleep(4) select * from vector_index_01 order by L2_DISTANCE(b,"[1,2,3]") ASC LIMIT 10; a b c 0 [1, 2, 3] 1 -select * from vector_index_01 order by L2_DISTANCE(b,"[1,2,3]") ASC LIMIT 10; +UPDATE vector_index_01 set b = '[4,5,6]' where a = 0; +select sleep(4); +sleep(4) +0 +select * from vector_index_01 order by L2_DISTANCE(b,"[4,5,6]") ASC LIMIT 10; a b c -0 [1, 2, 3] 1 +0 [4, 5, 6] 1 DELETE FROM vector_index_01 WHERE a=0; select sleep(4); sleep(4) @@ -35,4 +40,28 @@ a b c drop cdc task `__mo_cdc_hnsw_idx01`; drop pitr if exists `__mo_table_pitr_hnsw`; drop table vector_index_01; +create table t2(a bigint primary key, b vecf32(128)); +create index idx2 using hnsw on t2(b) op_type "vector_l2_ops" M 48 EF_CONSTRUCTION 64 EF_SEARCH 64; +drop pitr if exists `__mo_table_pitr_hnsw_cdc_t2`; +create pitr `__mo_table_pitr_hnsw` for table hnsw_cdc t2 range 2 'h'; +create cdc `__mo_cdc_hnsw_cdc_t2_idx2` 'mysql://root:111@127.0.0.1:6001' 'hnswsync' 'mysql://root:111@127.0.0.1:6001' 'hnsw_cdc.t2' {'Level'='table'}; +select sleep(30); +sleep(30) +0 +load data infile {'filepath'='$resources/vector/sift128_base_10k.csv.gz', 'compression'='gzip'} into table t2 fields terminated by ':' parallel 'true'; +select count(*) from t2; +count(*) +10000 +select sleep(15); +sleep(15) +0 +select * from t2 order by L2_DISTANCE(b, "[14, 2, 0, 0, 0, 2, 42, 55, 9, 1, 0, 0, 18, 100, 77, 32, 89, 1, 0, 0, 19, 85, 15, 68, 52, 4, 0, 0, 0, 0, 2, 28, 34, 13, 5, 12, 49, 40, 39, 37, 24, 2, 0, 0, 34, 83, 88, 28, 119, 20, 0, 0, 41, 39, 13, 62, 119, 16, 2, 0, 0, 0, 10, 42, 9, 46, 82, 79, 64, 19, 2, 5, 10, 35, 26, 53, 84, 32, 34, 9, 119, 119, 21, 3, 3, 11, 17, 14, 119, 25, 8, 5, 0, 0, 11, 22, 23, 17, 42, 49, 17, 12, 5, 5, 12, 78, 119, 90, 27, 0, 4, 2, 48, 92, 112, 85, 15, 0, 2, 7, 50, 36, 15, 11, 1, 0, 0, 7]") ASC LIMIT 1; +a b +9999 [14, 2, 0, 0, 0, 2, 42, 55, 9, 1, 0, 0, 18, 100, 77, 32, 89, 1, 0, 0, 19, 85, 15, 68, 52, 4, 0, 0, 0, 0, 2, 28, 34, 13, 5, 12, 49, 40, 39, 37, 24, 2, 0, 0, 34, 83, 88, 28, 119, 20, 0, 0, 41, 39, 13, 62, 119, 16, 2, 0, 0, 0, 10, 42, 9, 46, 82, 79, 64, 19, 2, 5, 10, 35, 26, 53, 84, 32, 34, 9, 119, 119, 21, 3, 3, 11, 17, 14, 119, 25, 8, 5, 0, 0, 11, 22, 23, 17, 42, 49, 17, 12, 5, 5, 12, 78, 119, 90, 27, 0, 4, 2, 48, 92, 112, 85, 15, 0, 2, 7, 50, 36, 15, 11, 1, 0, 0, 7] +select * from t2 order by L2_DISTANCE(b, "[0, 16, 35, 5, 32, 31, 14, 10, 11, 78, 55, 10, 45, 83, 11, 6, 14, 57, 102, 75, 20, 8, 3, 5, 67, 17, 19, 26, 5, 0, 1, 22, 60, 26, 7, 1, 18, 22, 84, 53, 85, 119, 119, 4, 24, 18, 7, 7, 1, 81, 106, 102, 72, 30, 6, 0, 9, 1, 9, 119, 72, 1, 4, 33, 119, 29, 6, 1, 0, 1, 14, 52, 119, 30, 3, 0, 0, 55, 92, 111, 2, 5, 4, 9, 22, 89, 96, 14, 1, 0, 1, 82, 59, 16, 20, 5, 25, 14, 11, 4, 0, 0, 1, 26, 47, 23, 4, 0, 0, 4, 38, 83, 30, 14, 9, 4, 9, 17, 23, 41, 0, 0, 2, 8, 19, 25, 23, 1]") ASC LIMIT 1; +a b +0 [0, 16, 35, 5, 32, 31, 14, 10, 11, 78, 55, 10, 45, 83, 11, 6, 14, 57, 102, 75, 20, 8, 3, 5, 67, 17, 19, 26, 5, 0, 1, 22, 60, 26, 7, 1, 18, 22, 84, 53, 85, 119, 119, 4, 24, 18, 7, 7, 1, 81, 106, 102, 72, 30, 6, 0, 9, 1, 9, 119, 72, 1, 4, 33, 119, 29, 6, 1, 0, 1, 14, 52, 119, 30, 3, 0, 0, 55, 92, 111, 2, 5, 4, 9, 22, 89, 96, 14, 1, 0, 1, 82, 59, 16, 20, 5, 25, 14, 11, 4, 0, 0, 1, 26, 47, 23, 4, 0, 0, 4, 38, 83, 30, 14, 9, 4, 9, 17, 23, 41, 0, 0, 2, 8, 19, 25, 23, 1] +drop cdc task `__mo_cdc_hnsw_cdc_t2_idx2`; +drop pitr if exists `__mo_table_pitr_hnsw_cdc_t2`; +drop table t2; drop database hnsw_cdc; diff --git a/test/distributed/cases/vector/vector_hnsw_sync.sql b/test/distributed/cases/vector/vector_hnsw_sync.sql index 3e484764a3c10..98eede02432ec 100644 --- a/test/distributed/cases/vector/vector_hnsw_sync.sql +++ b/test/distributed/cases/vector/vector_hnsw_sync.sql @@ -1,5 +1,7 @@ SET experimental_hnsw_index = 1; + +drop database if exists hnsw_cdc; create database if not exists hnsw_cdc; use hnsw_cdc; @@ -7,25 +9,27 @@ create table vector_index_01(a bigint primary key, b vecf32(3),c int,key c_k(c)) -- empty data create index idx01 using hnsw on vector_index_01(b) op_type "vector_l2_ops" M 48 EF_CONSTRUCTION 64 EF_SEARCH 64; - drop pitr if exists `__mo_table_pitr_hnsw`; create pitr `__mo_table_pitr_hnsw` for table hnsw_cdc vector_index_01 range 2 'h'; - create cdc `__mo_cdc_hnsw_idx01` 'mysql://root:111@127.0.0.1:6001' 'hnswsync' 'mysql://root:111@127.0.0.1:6001' 'hnsw_cdc.vector_index_01' {'Level'='table'}; -- show cdc all; select sleep(30); insert into vector_index_01 values (0, "[1,2,3]", 1); +-- select hnsw_cdc_update('hnsw_cdc', 'vector_index_01', 3, '{"start":"", "end":"", "cdc":[{"t":"U", "pk":0, "v":[1,2,3]}]}'); select sleep(4); select * from vector_index_01 order by L2_DISTANCE(b,"[1,2,3]") ASC LIMIT 10; +UPDATE vector_index_01 set b = '[4,5,6]' where a = 0; +-- select hnsw_cdc_update('hnsw_cdc', 'vector_index_01', 3, '{"start":"", "end":"", "cdc":[{"t":"U", "pk":0, "v":[4,5,6]}]}'); --- select hnsw_cdc_update('hnsw_cdc', 'vector_index_01', 3, '{"start":"", "end":"", "cdc":[{"t":"U", "pk":0, "v":[1,2,3]}]}'); +select sleep(4); + +select * from vector_index_01 order by L2_DISTANCE(b,"[4,5,6]") ASC LIMIT 10; -select * from vector_index_01 order by L2_DISTANCE(b,"[1,2,3]") ASC LIMIT 10; DELETE FROM vector_index_01 WHERE a=0; -- select hnsw_cdc_update('hnsw_cdc', 'vector_index_01', 3, '{"start":"", "end":"", "cdc":[{"t":"D", "pk":0}]}'); @@ -40,9 +44,35 @@ select sleep(4); select * from vector_index_01 order by L2_DISTANCE(b,"[2,3,4]") ASC LIMIT 10; - drop cdc task `__mo_cdc_hnsw_idx01`; drop pitr if exists `__mo_table_pitr_hnsw`; drop table vector_index_01; +create table t2(a bigint primary key, b vecf32(128)); +create index idx2 using hnsw on t2(b) op_type "vector_l2_ops" M 48 EF_CONSTRUCTION 64 EF_SEARCH 64; +drop pitr if exists `__mo_table_pitr_hnsw_cdc_t2`; +create pitr `__mo_table_pitr_hnsw` for table hnsw_cdc t2 range 2 'h'; +create cdc `__mo_cdc_hnsw_cdc_t2_idx2` 'mysql://root:111@127.0.0.1:6001' 'hnswsync' 'mysql://root:111@127.0.0.1:6001' 'hnsw_cdc.t2' {'Level'='table'}; +select sleep(30); + +load data infile {'filepath'='$resources/vector/sift128_base_10k.csv.gz', 'compression'='gzip'} into table t2 fields terminated by ':' parallel 'true'; + +select count(*) from t2; + +select sleep(15); + +select * from t2 order by L2_DISTANCE(b, "[14, 2, 0, 0, 0, 2, 42, 55, 9, 1, 0, 0, 18, 100, 77, 32, 89, 1, 0, 0, 19, 85, 15, 68, 52, 4, 0, 0, 0, 0, 2, 28, 34, 13, 5, 12, 49, 40, 39, 37, 24, 2, 0, 0, 34, 83, 88, 28, 119, 20, 0, 0, 41, 39, 13, 62, 119, 16, 2, 0, 0, 0, 10, 42, 9, 46, 82, 79, 64, 19, 2, 5, 10, 35, 26, 53, 84, 32, 34, 9, 119, 119, 21, 3, 3, 11, 17, 14, 119, 25, 8, 5, 0, 0, 11, 22, 23, 17, 42, 49, 17, 12, 5, 5, 12, 78, 119, 90, 27, 0, 4, 2, 48, 92, 112, 85, 15, 0, 2, 7, 50, 36, 15, 11, 1, 0, 0, 7]") ASC LIMIT 1; + +select * from t2 order by L2_DISTANCE(b, "[0, 16, 35, 5, 32, 31, 14, 10, 11, 78, 55, 10, 45, 83, 11, 6, 14, 57, 102, 75, 20, 8, 3, 5, 67, 17, 19, 26, 5, 0, 1, 22, 60, 26, 7, 1, 18, 22, 84, 53, 85, 119, 119, 4, 24, 18, 7, 7, 1, 81, 106, 102, 72, 30, 6, 0, 9, 1, 9, 119, 72, 1, 4, 33, 119, 29, 6, 1, 0, 1, 14, 52, 119, 30, 3, 0, 0, 55, 92, 111, 2, 5, 4, 9, 22, 89, 96, 14, 1, 0, 1, 82, 59, 16, 20, 5, 25, 14, 11, 4, 0, 0, 1, 26, 47, 23, 4, 0, 0, 4, 38, 83, 30, 14, 9, 4, 9, 17, 23, 41, 0, 0, 2, 8, 19, 25, 23, 1]") ASC LIMIT 1; + + +-- delete whole table won't work for now. +-- delete from t2 +-- select sleep(10) + + +drop cdc task `__mo_cdc_hnsw_cdc_t2_idx2`; +drop pitr if exists `__mo_table_pitr_hnsw_cdc_t2`; +drop table t2; + drop database hnsw_cdc; diff --git a/test/distributed/resources/vector/sift128_base_10k.csv.gz b/test/distributed/resources/vector/sift128_base_10k.csv.gz new file mode 100644 index 0000000000000000000000000000000000000000..3c3b52655c35d6174ad5bd7772d89b2f80ee2b4a GIT binary patch literal 1391404 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 z zH3Ylo%UaG3P9?Y{y)KDRDjfq4KCEb5I&q^_gLp!#4~ad1a?4$?-Ni^9g9#MxXN7n)j!j;y?)VrUD9y#BHiG9W%Jvxq=ofFF2ZLRT{X)n z!NQJ(m?NZ6h2~0-PyCj10P*=Sj4Wz_;slPdgqXtg@IadRr=QFEYDxzHsB|KoqnMd< zF{aaOg-*SH{_Zt4Nu4q+qYE3Td%%9p++kY7+*NzV!i?Glic#3;tk)+Wnn=`>MF&aj zOxgmo)_eec&l51nX^^^&np!|5t4Ll?&&I$q-0BV~&Z{|RD*M`UXH31*w>!Ge4gsO} zZHM#psB=CwWLWKg;ych6yd`BZI2nRvXa*Rvnicr&@jOr65kCJ>scX&H2hE`|&rD!= zhM3N1g~X5=9B}f{lLv0O9Dnx>ceMpdBL?qFwcLUDk2#NiQm@S?UaDIH^FC^+UyBSR zy!_tZ$j>kfIm#q8C~2i-e9jXs>p2*<=Q^Byj0LKfAS3NO z^~WxjjJ&IaQw_R*22lfp@+&6LMa!2-e2;65d6mYcgU9;ysj? z1jA~q8>ICknoy|iU*MZM5hEq;eeNKCky^;>7LPWB#ZcqW%<$bIa#Cg2lWird{^X?> zwNH7A9jVkggg!Jf_1e^n|AlMQpB>X56LL326i$AXZEWN`(8P_R0ZSZDTw>V@@1wGP z=7Kx6>l@#*haLQec&Be262uEY->aTuq%m$-q@HS0OsS0b!GxT8`MFK)KNMH$U#a$V ze&O2tE}X0MWJmjl;4_SOMg7tkc6G#8#3E#=(1oSt;$DJNW$EHY`bU!*gcll0JGH|} ziUbvvZWsm8nzN<&6JcF{e!>%3!C^Y0L8<@;b%q0u+KZ|*QGJ!?;oqda2P{k06Z5Qc z_!lDAre@Qey~-587?&VJzxsx&0!|kzKhpuf=q(;y z=R(Dfu42RH5CWOB^qpbS^eRo|`w#aJOnWdg;CxDGKeaOtQvhO^ZMR>{3PR0@AYm`J+QTuW1sX8LcE zXNnb!Z_aaNpU+w!hw4<1%(17fSLBGY!)$oF1uqzUSf#A4^UvQ?3`PZWgS_NoPn_<9 z7F4%pYdmpgl|;est{R2-3mhaiyK45ZikJ~6ppV&kum2^HS0Jl|9vQ=~*H%R=l<6a? z3qhBA>3B=2k;zGtE@}is&vY!mvOswaOaeMmvEix8md2pSI*cePGX!ZB{{wT0-@^f4 zc<9>RqyF~I+cV=LV6maP!iS+!SHFegfDD-=eIUzvFuBR6dHB!t=>EZxP5oI}FHMAm>GPbAYV#lj(*=$iLTS0c zyU1_R`ou+XXqFpHmaK#e9#Z2^W4%RL{AVI0dmyQqe+O$PK;)k4H|YJ6ogk8#s`6D~ zp;vcb4XQ^-(|ogGd@Q=d*QNBLa!f~v{MB@PDCd|ACubEcYT7rx?HaD8p4#5Ud@$>H zwTsu^>Y(|zTGejZ;kUiI1e*)KI3y`+Yxy-3BMEQ zHEA0l-OI;`&Zf`FCvSaP<4xJsve;ayC_&9Xn8Kl1aW^rc;!G}nf36-OX=tVnaqQ4u zTybi%_wTDduF>{1raX(x7hBRz!D9?^hepHVoU^=Czbed10@H^T*D>xy?|5$vTkj=B zKgoBOvbaP|JS>9f2b~o$ypDM zbPST>7n#u@X+K1O~(xa0gBUcAKyU0=f zKVfH^WjD(+>j^!}%i!-!CG(%hNlVmK!tVP$KhjBhdm9i!DwROQZz~=&YQ%=%9WJ#s z(ndpuWt~qBYSx&+>-|^8#n3>2{p#ZkGuemp4GBdqgc;5S2Wa>H8;LxNE|^|;dqBN0 zNP-iXGA(ral40E{X+du$dtwqND-T`EI-ly6W*i{9vR$sdS2>Bh9fRc(WsdGAG(Z%d zk)8>LxzZAG+_)E`^0}^HQuj1*ISsf+lN6N7L8_ogp~?{uR&M_Jc#$xMq2w^uqT-|k zxe3Fpi?8%!*R5k1RBY(h_UA8EqGY5R%N@El$*LT?fn`+~gy{TDZl-=m9ARr&vSVB8 z^?D%XpVm6Y8p>P2!q_dBMmRc983BChK?K|22kPAwoNd8Y`2a<%rblTF4R!~Plti%v zz$-60Tn)QX$~ZSrjdis9@Y%^WPM|O?7jc{#RYh)9l(E_m!msILNAh7-c1g{Z0+v3X$>-0`|;o{@#H+K|sX7c9!k#C@{ zSP=peVCCX_(bBG2*r$~cb|~d_(k+}?otBZTYku4KDIilZPu=77-}^dF z5aN_CHE)P}yR6`oC*&)hne79}1i(W65sqM-?x_`KgSlVFSGjLw9r|?q4%kPC5_ar2 zgtYN-{>-B(A7z3GuFq~&@4yxItkdRM!l)4DqmjF^5Z5{0{JN9k7!w!nuf{(Zhmc|d zqfkxF6G^!ZB~zeztm?m&FtrN zKX0zJeMoxR#KtVPUk3`=kqmAd3U&VZd(_wn?H#|%^P-@q@psnli4Mh-JkqJDBc~>1 zbuQy_)W_PtRivv z{`?r)^m8>T*|q=d&!9Sg^JnO|=@Mt_-ugKW0ybck#5Y>`&r|n}%-$ z|3|i3Nx!|ow~DSqf$rR=H=TF+wdoM#Z`v~eXF!<0iN9^16vSJkyJL^nr?L93|B_BF znAMG}zdb24aJVe7C-aZkv*2EUcu^c6=eXY?;oMvm}O!hPE$pf zf16pxeMo*EFSlw|ns+CCcDs5P3dQf*dsG`{SsL_Hm))_+6m9~)4l+4ePkk{^dmNh_ zsOd6HJYJ|=IzP%+iSMA7fDoTnJwEy$or&2xdEsd2}*&xloN2|VyaR|$9P-(rwEVOL8`4myPW9uwopcwhdw41@_X!-Gzf9@ zM;xeNC~$5u5Rd`lEJ|{kg~h$oQ3 zxk5)Ei3c^oiEx4p+;IcU%4NJCGOyHi85pTEJ<80fItAdM0<>?Fd1$Q?B-+-_stHUb_x#6YjWP%}mQTp_;z)G5igIuaYeP z@TogumWoSG7CBthHk9j!KG)Yq%jFiPQ*TSTKay+5Ku@<}C-IZX^BU2-9bh+8EveM4 zb-5=Z+R^;YdE1>(Z=jPEGRPY%!mG#tWj$}vNI`t7oq>*ZU@3 zebmauyqV>43n=lSr?6%kROnP#3R~kcp4;lfCJHZ$j2oQEyfkyBNHe}CYLMtv5cK}J zGF8w(a=4`zN#MU@3?Rp0u+B{w?*~t3c6^6d)nELX_hB@%QcYra2{5coMRQM|yK)*l zl2~wE&@tZI;fws`;9R5jrI(_sCDl#YurLGLWi6KHa-KkZ*H*niU#6DNik48hcjz51dEg(8W*JPe1 zP7<<``24iM8A z5pOmorumJ>>_GNRPyR-c?VhLRf;ewe-LO?Vb9Wu(L0PVITp}Uu1kbCi`3P72OGXawfWB}{Fp>teM0<`X^C_(rRb-DtqM}j#C%KIkF9(4%CQhEdZ?r6bH`leir>bcZ_a%p!S8);_EtT%1o zt9OFbObOxOO7N#|mCADb>+~?D`_)6Tn`U%V%*=L+&R&q*w2kzze(@hXa`zsMWoY(X zu39GU(8CupmstS*`E-J!M=Zvr-sVm{GfH=P+CW-HJJjtSMUR!lEwvW04x8Xf^(L;S zlKb&@sZFol3&R}7;n0)wjU8%slk9=s#BAxLR!wGSTBT1wM|VWO8e5bq-muOwE5j== z(Jots3z790yPI&=7yJ_VVx1owfQI!fuTb}09XK%IXX#^JQ|qV!sr&Q+h6`%c+xm6@ zoK`eyc9H@PeG4}n-2fkY$5WNG4;xPR6P+X?#^i;1Jy{%5YU^lo)erd#t%YPha{?Yo z#TLOjN<H~oCTnI7(EV6ip4ldQF>6xE7`O&Or9R!$+x6@=A?k2#(U=p8s3606vkJ6D{-Fx(| zjF>o+RUi zQZJlgC}hQS@{$>5yyMa%BTqS*+K8?FFlYe5caQ|YDI4lb!RJ_ncHG#v{ng(c)@v_L zH9lGOiLbvgxZM2UTs%-yn>%$wOQb55eaelup^BA@cao<__5nxkaHlRbVVdVwvw5$U z)TQR6V7f!U`Zxq#nBFp!Sj7jr0+24L5W9G%HP~N)t&gN}n39fT42M)}!}ro*<3+m>ars}Qn9G&;*LM_-u<7}{kmr@}@B8>Y%d zC*#A=3p~wx-EGk5)nK882QJRHc#++eUa+$$sjc08k|(Wti*kp;-S4=ux*JN0zF!b} zwUv9}zu>8)Ee-30Vgva zYpT&`2THOC^rtxn?Kr9VD90vYWHK8H(#5xO_ZW=j0g}ASz@@TKBcsY-*N;uAFvSE1 zaj#RM^Zr9eI;D={+ZKb{a_yy~RyL(ZV7`-SR4imaf))-dOim<+N;oqVC{#?Oy)AH8 zqw=(;gjzjUUOpJM`P7g&=!bDu+vRqhs{Qzbz#Av1RLc&Jn-rVH2&*{_xw<3l8pRA{ zUVOIfEKW>Qn@5rWLc`nUhQ|Y~$6mK_hN?K$;X9ir+ZN4JKM^T2>g*E~ecc?Ju-_u~{xI;(d8PZwV zclCm^;MfI;%1aeRnDF%Y-nf1;xjoQ^zTbIC=cyBbExj<7RB9nKZ4`Yse}-Ca0Clv7 zRkYb##B4Z4os^;Q0x`pAQdgra1|k_w@Me94amO-jPVn+t+98nfO;k>8ksGZbjQ^(w zVhI`wj(0GY+x)N42O0bZdULJ71gdVLLn?HsX&aX~;LNLgV_I)u-?W1dD-~~Jk#0mG z>OKb0CB4R`-57a=!m;=c%Zxs}4W6%5p3am2r-pW2-&&HOr(usOcfsceA0<7_MOt-b z__*ANMo;Nhb2sucExN4Pc$SwG9>8W#j4b_0?MR~mXp05%NT23s4Z?GPLUou?!w+^d zTzU;Fg0m1rIxJwQ^5)$)VjCohOW#H(MU9x)rvMq8tW!d0?GzO3&I2sPB;1CfjEc1&%WP5|9iq1lRn z%)Xt~inuk!ERkpz1m1`W5KB>A2S|o%9IwaNQtl=u4IPsy%lJU%{MLWE9cc^*`~_sP z92OC99csMdkWuc^Hv6c-5Bici9i80O({u7*w;4Ni8#pGB7*Smx;| zJ?ZN(8oB3LF$WKLocRoNNV{;Yj2cL z4$)rz=kqbD!d+nuZyx;I?6_lF_FuOg3|tB0@#~dsKA3ob^`;XZ(G#fvK*vb~Tw9y0 zg`b-0*(Cls-;LBi;JJ@r#)luG&pZu#Aoll)@J7lI#Xw2_bm>^vQH<@QJy4$I_}X+Z z1qi8?eNLoBZpe8{-O(Mi3{wv9kz!8ZA)QgUpoO%WPO!hiNRlTriU6)#K!6)?Y2wuo!I21NSyWA8DI>5vY1-84BA5|A0Fmw{u$EzaLP6d;aW4AdBNJ48 z4GoW9M@JuZVXGGC;SJtQ^R^qgS#C!u*2U;ftQt;Z!+JVhGm-Jc{EX9r#PiXjIIZf{?K@m%t9@Bw0AZYH=Tx@(%f?!#GOUFpV1dn?Bw(Bk}s_ zJRzgb-CHa4_}EH;=^(i^UnM*E=#ZmR2g_P=I^C{JlRMr!aai~|S+OJ&$#^BQ_bQDw zLQn*=imqHl!#*YKQql)Jz=?GVIJ;`VVsECE+u(wN7;)v+bv!+kGqf68TPF&E=T+~Y z{N{KjG;1HnVc*`mTowj@`!zB#!c8reB9}Y{p_ogP?D;G%wGDNeFs}b9O#d)FcGoKIuZUYLrw{ZS+%#G5YJzv4`?C-cTTMcEHK; zTb#U^()jh_PMG6zDd?mTi&$F;4RZiv0dpN|~KJ$0})(wQ$%5L9Rcg8jD z4?khyTGgZ6i^YB>qCxX3eeu%D#5rz9(j|4)AU?}=?Me-hUyEN@0Y||a>Bv_5K^h=@ zhll*;LVQ{x4huep@ieE;ACdKx+K8zTzKE>vS~cjQa4Zt4*eotzRhM|~#j zKH=~Vxgn`2Rm#)RX(Hjy@1} zv{__bYCakHH`%Rw9Mz95$B?zIC+j0&mipEcE2rrg@z|xYO?#ZWUVqR}Z#lo!p}0(XlnBTU75AKb>`L=5VfYxDRV*nOM=T`p3b>RsQ7Ja|t7|b~$m1r)r{=6Pj`4Wd z3~-2jgZ?Kw)n(0|KYxi+nH$MnF-8^C&C;1~O`b0WBF-xLyjb}f6s}&)h5oIz2VmOx z1*nnjE((1!)t-y_;OCrVVJliR6JE@T6Bi+XeAGZry#*#BCisyK26) zdgnOeoDbqqwbr}@J7|<`Y{Ih_x^;nSu7 z$J@&=f6p*qZT;sY(Q#pY@6i@+pyXlnY?p%Uw$UX+VyL<6hcA1})hU(0R6KlB+HcFI zZspe6a)@~`d;qo$P9#MP(RgX~3XS8>ZU=jvb*cyAx1^R&Sq4bS6AF7OdRR6-Bw~s+ zvFckWhn;0}O%FL7rqTy+r9aiP*jus8R(%t8rqcH;L zF@EEFZ*mZwulbT3tl7a-cvlPq>Y9&IPlV7ddf)Y7XcF-;3<1V05uP`^*9d8BG7BVk zNL2SHYFI=hKAIY-dyNUQ1a|1u@_W>-L(^b4+~GB$k4GUEQuT zwacX`LfSx!W(!V;s%)Ct(On(Si!*M?r1`pct-ln`u0b~AZbysi#{gPw`}0>xBw;sa zYzk{(_5o~>W+3Dw8;>e&PzBxtkx3GGKI!1O6hphqV`5I2;ja$T5 z33OzTQ7a#k*^x~Lp_~TPB3VmSBO407~P3N)Va}O`B zM=z?r{nRgF(bnh^BaCEkxU2c5RRZ_}qgdn0hU58%6oaUJ_xT!d6zX`ABRtfs@#2tic#@s9r-c9l2DAJKDHQD(2lIRNJWz!C&Z+r0 z$+}J#Za_6cS=f!=6NZS=ti&Za(MP{= z`9pI%PzoDrkcTd;t1frp`me;=Wc4N|4)QgFfjepf6`^9+IMTCCe7x&{!P~0aY-1XJ z(aYO1e|0BJWb~L-FHP_2nz^$LeyD=KLA-ZO)O0F}0C6m^TpoDvR<2bux=s*q*R!AD1no;FDp7qsLtzOV|2k8;(Ff`F^p`HC4kLZNV|VEUc*n+oMKV?MaLT1Zv8Eya%wQ;1`;VK% zFw&o*P3nA73? zR93D*M|(Bb&h)W$6SB2gn;J$=^dCUk(C_is$!8cn09-EhiwGz0an$4)KxJV@@Fmo= z#P4(HvVjV-9^R4rYtTha%I+kzyFH<>23~U^_&`jWg7J5#RUgNB_8Jjofyl`cL}$PU zlGG`SQMyul0>CLp)sqRAUHT=hJ4uD8qmT1J z(Pe`^22SFm)26>oC7u>IJ+h9D#BD?hZ`qUK9bo!qT-}>NU{IOss^Z?QTerh>$$Q6WN*S@sPtv ztzUZT6U>x5j&>1GnPD1OzdDA`Z3CW zXYZiZ%4vF`43`nPSX|_cSG5`c2od07Hetg$DEwIB1CXe}2^54h&zv7`EfW!L+edQr zDq)OF9eeV8i}zckdHQPQN!}UL1(I3{s*;a9yeK{!;PdjYqMnOUuW$36wmiPxPcraRq61A^Haft`4;V#|s zrbBnHT8fap?Wy+*Vj3nZIrJs|`8Gq*FxjBH7$e~|7#*k^cj+ni@OZr$AH0{BPDbET z-#=@ciMpU!r>q6ZfHp0kU(Km`LOCqlh;LAXbiyqe^-Dr7ly*oDu=#r9<1Ci!vfM^q zWy1{l!XQE@AKPYMym!t9%M?Zf=oog&U`Ed#s2(1L3xw1#2A=vrq>R4a+<7M7Q3!U4K@0y z5Wne#(;jej5YlcGM1z6-czcd4xnzaJm%1%&BEwf7aSk)D&WQPw>gd75%MlDYnux{s zxko*Nb6LpoP@RD(50oQ3KDHSs+2#Z&V$~Yl-3oGeD^01=R?z8q@Ni2@(O4Pr5O9o0 zfluRZJg#HmMq|e^<$h57vku=o2 zl)hCH?t4XVzE@Yi_gL3G6_a!}e%+zPPpGFUxla&-zdzqS$Et6T=F;Zc@4WQYf_%-6 zl`QLpO08PnTwd32!gmBZ9h@OH4pX)Z?3&XteJOCXi0PfYA22hk{%1uY(PgYJmG_-`p?2ZVUC;EHphpW-9de;CD zsL)pagnEQ#%4A>G+>AAr-BW%=)o!p;y~Du2Vfy zG5=k1rg7R#+mM!=-hkqKxk|0o7^)!SR`r8q$w|KD(Go}2cEug&Q#EF|5r~)Ekw~gw zx?dyld18=_uerV>adWx00dIU&6p+4OrY}Y)(o=IW?kmG{0na;+yW}l22QT+!#YqcP z1I$W+v|3&#RYHZ0bywOA4vM?mfK7RL#gDPqdjc&O^!aY5qNAZ+yVEurbe{M5_)6q0 z8g=+6Db>Wcvx+5(kl{Y{0Pm{bypbfWFe?k49v=BVt9k_c&iCXsxCSs^i#Qux|(vlQ)s&+AXE-Du^9tZoN+uKUUY=F3Q2>7C-mbYviGf2?yS3n|Ni{mp5>J z<($W2!jdx!qDrL=p;G6cznoHJ{-AL2fm%o5JJZPl?zu6h`O;Gw2b03r=P5X;{iZ2U z&-4m;ee~mmwVO`jZW6>WP?*o=F3Ey#UOiIcvZc!WK^{Lr*}LoqZ+%QfS? zH*-7`nsxp8`+ExP(EOXAuAXp%GD!L({oI=%J(F8*a7*k^e036czjkamzGzHcsAb=1y0S9x z9Td}U@c$S!Z}GtuzqM*+OU4YmcN#cq2)iE=oY0xpj%h2!Fk;0ds!*ysJz$zYB?kXj zr5j(tUZj{PH>7vx;fNSTyo3oLjAIevEMB8>+2@Q^E*3^5RBlaiJqPL|a+N|j!1R@H zFeKKFCGy6MEVtNtZ#SC(#=%suCHY0oT8ZPkK9C-SarNg^w}R?Rpp`s5`XWz6V$e>? zMW}$;nOA*hmcq+LR|r6Sei5F++-lX_%>ZP_29N~PQ+A&NUx#x2T)&FxN2Ik^n}%7) zLF|ZRwp3{C-S23*77|PXcBP6wkbroVuqi+~jihXOOBCX}4RH9IUIY5x!4HMMhAr`R zH@jYurya;C;7G~!cpJ(=q_&x*=CIbLmnE4|Hm)+eOxDV0NpiCc1R9(%%A1Kp?A5&T zcMST}kl;|EYzTLw^QGU*yy8phBMF{2J=T#}_~Cm1t{>gn*KtHbtDaTEZODW)(;WzS z1)|>R+Ef%1$A3X3Os??MN4KU=&fU-_G!14+t5w=YoSV-0MAu54sil}~!pBgGQ@_vE z9xpu9C*mJ)z{!ifC!k#9x}f~-kk%j;VdPgs9;B!zp)4}qcNtfEcSaMmYQXxivA8bK z|E3u_t3?ax@A{F35MpF&pvT9bBM?)lt3;tBUo0ilw_rg2jH$K=Man_i=LlHGLsdNcwKC3iy3(M;3s#BfhRZLHzMl3*y zCM`SmiSNq%1E&c_C-!8t5USPxg@uG1H{$**i%Wvp;BpN?JfVy5cIYzN!NJ&&CGmt0 zQCDDn>Z^kBZkN?zHs%INyW*|$fFdDs8-8>u<}X(txH1MI+?8~~u4cM_tom1_ne!+S z=y{+y;DzSHw`X4E2`zc!pHeRCAk%W96`BytOYSnAJk$7d0AgGQSOK_tW{#y$SMQw> zgAZCpDy`^O!^bXwJ zSjJjLE+pU_g3kkt=xQmLtD5q`zxih&1ST#3{}LUGt@5$WoWZ^^+Xj=Q{CY!72UHWu z#b`12hL;{_;$t%Q(p4bBe6x!m5rs<-J|6J}P+hVUFx4Z-I$^*egXaADHuGf;`EN<& zCP;M!;tCo7mN8M+P_g5mA%ojAi9aC;jMiaH@P+8(@1VbuyLgjyKs@hDn0C*Ay&bZ> zP2!3a@|n=G5cu(GY_BWjDwv0OtYVX0-|#MkVo~|>^-iV>_Hzw)u~+t!$=?*pDb*UT%_BeD#*p55a+H zOFJQmv|&doZ&qQH|De5hf6dW&BHHV7IHpS&Ayn!5=lyV(yG`G#2Sgpscci~fSj=U4 zMyZa^41f;OQHL-qa4e>&uH_k-r#AU<=yNQBOvtFX8Csq;bJrYyvH>97X0ObGXLU?p zVT}gcks)@SMEJC;n1nJMVxA$kkjbR!OO1K&8iBjQ?War5aVAocrJkL>InYXfcl~x} zAy7EN*eV7I+dTe+QvGaj2ZeaQo};;dNL+sr!Np@G}rN>{1Y zt;f0WlAgyD?zknd9Z9Iv!mk3?ijzJt2Je$=J`^Gwp*0U0+>|GyIk+=y{j@oq^`ntI zL#duWe-Tu;IcPqw+~_%@8w*Zfkn4SB{OpV8dwJ;e%8^7~vz8Eh#ASeXLM!A4dQu9; ze(-BYG02;6o$Y^l;@?#}+EQ z!9?D^&QE{b$BwY-RvR{dfpy;A?eJ88F5P4qmAmI+ng{QGjNR_jJA+LkGa0TZe#lBV zP9!Nq^f7iaL*7oiMAxO74evdFi-N2Dv;a4lrf4Wl)ydE5ZiMmkrkMDO20U-cbEVAj z+Z~d+O90?Bs=kPMN~;18-L_9>u)4mAZQL@hmBq}zhST5LDkL)Q{g$Qd4keb=)wrm6 zmGiz!ev{|PvI7Kpb3w;dg2+u8u1~(9Pm?R{(2YM&g&6=seA(*)Ye9L_6V#5&T1NG}K=41Y1hwicD(|<0sT?q%t?W5FlZ5&zf&nD0Kc(G&A=e zYX#$M7in;lt~6gg^#Mi9hP~HxUlx3ZcR-E)ouyH>84$OyDU)z%;GOSNhEN`!&BA;3Rfp19={S8cDmr6JFv?#%WvHFmzkY3=BtZ7dT~NX zo-kFK^ei26zrXi7!kjx)+0T_V{9=Vl(!{K0I?~UadTO#k57LNfA2HzZQ!!?jv_eLJ zh&r`lb`v6ECMfgef>#$ZIgCXd8;97;bX3)GiUlxmK|5^57~hh|rTTepqse_7H9~lJ zFMcGy@Sx*$S>fj6yR0w0@q)U=d6j!nc;PAD?qN^R zM~H6vUQin0$HJOS)dS%QlXa%a=U<@EFYqE1)*3-L%q%{e~cy`>c1~TO`X3= zd)pw2FBS?3VBcj^HV*irDS1owv`MZZ^3KDB50DAKuIzqi#-fkE#u^qS z8CWVe`yeSBY!H!;g5Po!@Q4@Ijw7f@4CL5+U`&z6>0je8DU1M4d-!2OWkW?qdxTiL z<05{pe6)`zomlMZBI9{m=~5xN>PVB0&393tnku*y3U>YTk64+levCTZn7%ru+`bih z5K_iv;1x74Y4}%+WB-jVN!&%C;;SjTNr06EH&i{?M-F#)j@LV-AJ)ROc*pfR@pbfU zD)o$HV%>&!xb&)wdjbxe>X*0CW8)r=J`30CbA~_mGzU#M_rimvmy*cFH}Y^6 z49=>)ZScOR2`DjB&1Ax1R3ys7F=7X8R6x|NphN-XkBF@MTd$V6@WJkP1_OtZ=%@4Z zw}%oSKhlWLBUmBt7M5JlFCk3hfhxMibYjl@{zCfMDhu3Pq8BoUzNY&976WUtb87bA($M)^?pJqj`dVH{3Q}+V zTx=5x^o;udyQT_odsifrSiSp_Zt?BnUV#gF*%FrlCxL(clV(^Sa| z&GkXWRU(g|^FrlI9zJ31Nwf^AdbI9Ga9$EWcs&Ohp`~P2Tmv&i-Sy(!VYag(VdS}v^Vk{24$Rq+{lri;+&2M;iD%zSJ2fce z>+>u-zFrGgS&jQfcS${r)uu(q#^^;BzNWMfEJ5~-|K-Ka3|@bltdVcV zqHGeQ0%C}6DJ5lXC0uFUNIpQEQNdTSsYB&sq6YH7pgbI^U+Mt{dKPI)6Di4M7_0FF&6=mpb zLosva9i}!5@gY3QQLmC&&KkkY3mc>DYQ?L>p_1Pdi)MU9!s@y;(#nPJbDNl}-%O#CE z8pK@a%C4^EHTBNLv2h0v*kNs6n`6pZ9d@(fRzu%Rg>ejt2NG+eJ0`vKn_ZuuF9b3O zgH zRw4Af=>|`3d~Z1F_eYWV+?O^z$JZy~AZlYZcSZsz*tmo4Otp4cMwf^~gOSG_6 zn3~Z0oILm(Md79R+_HM7xmPn(9}D{ zzJj1tHp&I&xdrv>E4vh@xhgDs2V5;o9VjUA9r0Kip-Rutt@h6+Y6|35=F(i|b`~$6 zlo*gdsXj6zRHc-3Sc{ynFTJzCK{DK%59MUUB7b8@5j9_(!VkE z_C6f`ajx}pY`eVly^Xyj`qD>B#9P4_X?nV*JUs&moerJjOVBaqnP>~seW?fKPb%A{ zk$q~X4GbR|wf*@!?UOdu*CdKV9j_WYw(yW@@P^@z+Rqpf)0^WH%6>0}>H28QQCg5# zoz}1V%~g`hJtg8tr#cX64e3Get zdIRCZ*I|&y_!^>c?ChTFK!HQj3Il$nsSrwEDV-suq( z=NhTPYaiwP-cNN5hgav@=%vAjTKgoB(t_tGo4Q;Zihjn*A+D>4ltHN%nTq?(_U>+_ znTneME{Z!yMn8N57}cRHRRymw9XQ*;;oe+a(`>6=GImbH0PFG`w+Da{!p;JcG(}@~ z7EDU&S9Nb>AYz6>Z9!Lvu{14bQ4#R2i5PVq!0wi`qP-_^YIQUwA z78P=tukOfv?AS;v2N*6FjYwVuoH-t+?(%@fR{OFp_D9iPaD#Zi&$=Dgq{ml)&*5S0 zb4h%$fsweRc?Zv2hV@sEDU|4|cRq%Oms}t=y#?vJRN6tDtM6XL{x5*){tZReSG0^*tE%Pr|~1SVM$;{ zyk-I=Z~&_^MNX)mEI4L~f#tb_ReenQk_h8LRneyMHNgKe{H+A{ojY~^c@W5r7p<`F3r8VIjlsk4@ zU*Y@lqf!YM5j)(I&Bu5yx62_Ch`*``ZCb5qcMd64eNbxD8S1z~OZM3F$zGRRQ?J}Z zE%e}GU7yhEb4g2ngMEh6;*4kf^7Eaxxca+cB9_I=?{@f;JHSr$9V57uB`0M#-WJS- zbS{jYeuH9-UA>AYXU&kqp-+Buv>FVc(=?tGt< zcMVHkb{zX+E%;EDS-E)3w-yr#+y(FG8+m#F|1QhM{&RB*_+PAZrfNVS6na$m9Rt~0 zegcsaQREK1^o(5|qym+4@n}Wi)9W^=!S}LTsY;fRkI_e54QE&%%5Bl&cyjapr|)V| z=kf2KP4N;4I}7lExe_s@lkHfvmToeOpNbucNf1)rE%pu|tJU6#q;rP^IR#@HY?Qnw z3Ci1Mq1s|JITI&*RfV!>b;x$@)Da)skm6>6D{DH8jyOIHvIRECOf9A#~I~pby zQy01etzF@YWanTB7~pJ~w@_uhLODfKgWbu zCEb(HM|gzWUDmRDKZFqa?fuDxDPPu-VX@P67NfQs0?$ox0EgLpK@Ux6w`zqG_erzt zQY4K!WzSRmdA`1 zggV}43okLMnSmkR<|dR9hN;7c6TcpE&lLywI=EfPXxNs}ul_GEtcIIEyfw??u2Pwd z!wHj=!`Np{%B|N9|M_~Qw7NtXswkQ*QFR)eu)kVl6&{K&xcPaZshVvT7ST?2$fYV! z6z?&P?v%#_i@k61a+6i#$q-sp-l9k*)iF-kn#vb(cTI<$a@`e^xao9=j@0UO1>l5! zAdP=hJbOWF_4}EP>0LhzHGss0(+;WDmZX-(pYbMJYe*V^}5Ma!Qq5^%C_6}xxo5KmP=_sW>-pzLF zfM&yniy=tNrBMz{;E_EQfi@H|_p)H+cg8slR&W%cAy>v?9kp_taH!Fgd05BVV?Wey zxk8_0ZyaL{)%w{89}9;3!ME1F=I?;NY4ut}A0yoP=(3f>Rj|?6r%#vO~0gP4-TipjJImw09FrPZV;wg{+Nrv z56ur$$5vv;{OJ%ngj=`A97MTTSg%g?rs?|_D!;@dN~x~U{ZYXSvf}}Y5F|W0|!tO_VL?O=I~^; z)l@9L^gp@G@Lieq~=}wsZeSE;ui!^P%#Z< z_vJ*YS`z9tZeuOHcUVf&PZHo^gSx^X0=2P_z8B_(JYRhjQN)mnTZ*Pb-0-p0yum#oTB zELVU5S6a%CvjdIcKTHS0L#Oc~E_Af(Gw-R1NyW-b|49q&1a3BdOR=#*+#eYE!~R*) z(cDlqJ#_6J)x2*OP^C64oG#5dZPt&{iBQg_k-C~u<~chewAGbpF3q%eqmw}0iJtP> zD|se@_Dt%77FZ2@7E$NLWWfgwv>s zpx(ik>+fx{9ieT{$Od_n_z95@r652#a#854iFG}BXhO!#kTp6P4BY>m;qYm6n!rNu zDCbFZ_8M5M@e7N0f+(<(HZgp57+8-z?g~_-bFRa`6Sj8ZMnBOtvwFeU0dg|qu2Hd= z)aj2u$6X=F=6-qaZNnxV0KOf6leX2)aS;xxAtyp$T>dHmM?kp05sbH5LDP!!LqSG`oA!()Ju}}+Q=!Qou*E5igcNwCzD2Ftp zV{nWcFnX#C5x;cKM02Z^o=1A{-Lfz+N-ph!( z}uBx@@RLBIJ~i?i8(&!AGZp6Q(Rgy8 zv*)MQ4H);$QR?a3G|P|<5T#x_hfMXnXMepm4Aai%Z#sMBlN)jUdP-$#WR+2`Pq_|g zxifyi`zj8}9Mf$OP+#YghZp2m?btyZ#`cx>^_Zu^?z#OJ`4I=#v33Ie-x85w{IO1( z5LitAdpm~s<76=5=%+O+%4hIV@8$@uA@sJPN_!@bcK^EE6f=Hq*C)m8BJO z2E~$cTSf>rmjjR3IF$#qQDPZevKTbHB%*@MEW;(jCuW;Il}XFhZt+daZ&}M0`@F#3 z8=LA}vV~owSZI?9+i?3^eR=dZyb)NUz1ROnNDIXpDqG(*_6=7Ww+5TBCOVJYEH$aB zoM-eRwczCO^Lq72v&GVErN~AR+vIl=R?Amj8t&*hL1!b@sS|O~$fgxGt@W@85^#(T zWxp8Br+y3Yv6aCBO114nhDam3H1|(6ixT;Px?NQn!D}lm9d~&#!I;9m0^)`uoulgM zRy%}RJo-U(WK33w>>w=jrPDiO?-(*KS63oE$Pl`;>S&+5OE<&<#nVOxz+KOqFCt?< zc(Cw)0S@2;CYO@7g$Qo2EXzQi2VMzv8bL|p=kcCWoLm;3S$UF(M3i+a=X@MrvRm9b zoXnOaQ*Nc-r3NOn37_R^8u*?LU?s9`-;C~pahc^nxF>-Ud(@wgUvNPzxYM6sg|hu@ zrVpf>)MWXVOzN!}Hu0KEG1M79UWlHRVT42p##564gf2$cty0!YI!6P!%1vN9%d$8Q?1cF4 z;xM$KZg-aHnm}K?H(mrE2w~@1OwkwI7IXo@x@HSN`e0sUce%tJ8xD-FuSv<6!dR?; zVk*YAiyhtJzpb{>ne~v5IR>n%qAQVBH^CS5&8Cj-cyoO{_p(7%CB(1GNY$8jy@Mb~ z!cT_(P)Dm9+x)qv>vY-ybFF@=$;z_eoU8XtGidKpwxMR*iukbcL%5?@^7cPXxK~)6z)CqE&}#l86w;KjDo=?JLZTY zx6)fMz(^B%Ckjg;q$JhNnB9v?lWfO?P1H1y@VW~Sp2COK67e2zEfDM4kS_e~hX}AA z15VC~HoY5_jTHeg`A&K#*bnh`jpz+%FG$)AB=d>|{^{1assR0FK2UQvg-Qns$MX9O zbNoJ<_Ps8@#%@gB_IlCSq<*XSFtJ#*Q`1rRtiB^ogxy{bes8SNFGsKttNt5Ff;8K! zg;jGqZi_TD)XNuT_TT_Crc7Zx8Y=(_e3;}>PX8$-(4UJW%{!u5_3k!Bc4h99L#l)c zRt_iVT?=v|#w0IlGE}MMZ5ck7B)m0AGQSR3{!NKC^Yj}gr9PDTRWWqLzS9^(E8;nH zxr*vWMCFE;{?oZ5O!7jvkqF-kiI%-gIVt!MOb8H<}D<*px^OJ?gow zOUl`1gH&vqzR!Bvcr>@P8WadfHrAL6#+@bCLO2Dm_3<$u4mJtD0Xv!5c#k}*Q(A`0 zaD3%p1N>S^cXl3WpeSs)_n?HjF@edeMe~G^Q^am?U0yw%(hOyGG>}(j`Z3Vr!S4@9 zq&#;;8etJQ+VvE=T6BQUcic7g&anxL+)vXeAF*)gQuN&Te3xYA1W6luw*7N`6G!%@ zF3Sx&iYP}mcOt8${mB%2S$uY3v*w!L`L>e@Iv}&iv=M3-`#FBay&BjA6O4eG{7Q&S z2nG($MMF0e2h~sd61IesG3=@f)rRW#&O(yAbWH$>d&92nXuoSH-D;;3`b~KPvm_81 zZVQ|>EYMmXo44;y7qo=za1R~Dn#vb(aJ-0Pv*7YBi?mk{m|Ep;pJZO?WaVVH-$Oe5%8p)ATm)_33Zp z1m+yKYkhh-#~TKDg8f~ydti@ZL7KkO@B%}5`*adyj%-eouvOfbdUb*cJNB1yDg?f= za%O63 zTDi%l-D>z?rls1s$Zoajvr2vLROr_E=kIMuEaqdJZR3l(#Jlkcc#MUIkg?45PDAavJ$4tD$lb1g`hqw zv}_nN+bJ22O=t}^n40kdZoYmjIVy)(3f3`NvP!-)1ovBK6Lm>T3-H1MZY<4^mSb_5 zxbXlvns>0V4%vii{ao@22dwsaI$qZ`mlLVKNl8uw^INni2Jq7Bev3phj3FVUuH z_-o_UN`*r4Wr>dho71NfzfYSwM~MhUHihy;6AsOegH@u%aNP;oZ{CK>p`%mLD0ClU z#Q^@GRYgoF*MSKeo8=uUYA)41(2O+Qg#Fd(?>9F;5hV+G=S8UQZ6_Q2pyHPKO#eFc zB$Vs^XSbG0;N&^KRl=@jWrK4(C8$gDn^Bim=B9~pRZ4`tGd->gGu7j`HKEShm9l@g zdL>J`OZYo9_)}lkd;oIFMd+DW#1EW7N0~vlt9}C%T*ksWpqr_<=35K0;Rj`qVs(vT z+(Bk})LsLOJ6g^X!3g^>iSGsXhOH9K$Kb;%Vhz=zqh2;br@HKVV>-gn5Frq$g@Bh& zfDKIy<$83HPt&~X&m(nez{3rtLFV9j2Yn_0po>rtYFH4%aNxF@ZWPAZn9u_&3n8j> zMLKtRUTfjuH`Ge25xTrtl&~x*N<}|7b#5T*I5Twyq}`0z17W?LrI(@gPFV|}XYS9c zvZt_(AXQ`cjI@b=KN>E zezdEtX}TH%$R1WS!^+70ZHRg@h0Aa-z9;TO`tH)%lIzC~E>`KoXld1hzV8NTJ909k zEdR%E1K&zc?&9ZXS5j_hIwaT6u19~>spKi00V_BfkRm}1BIT8}JGvP9{iv0)#rZ7X z-SD5TalgZJjT>phcD#qyQI-%QGp*-{T-dNq-ixZsG2W{ptB{g23eB9!K=bWq3;Z`< zfD(lLA;R6v^`k30yb-~$DVY2gImq z?9coZz%7>^%+qAc-#yg_8z{_S?V-qpb$}_U$1X-p^6*)0&nh{bnY?Q4(fM1CM*Ruj zfi8HY5%>Mo5%0v~il+K;Zr7<}mPDPt<5HLT#K}Z-otk@Azg#~wNcKNguy6zL3pP2M z05M5)u8*Cl$gZf)-!atc7-cIlJ7sL;&aTn{eL6}5g=MYCv&JD~(p;lsD@|2%>WUdq zagD*s;E_-kXdvt#HF!c`*#FVDTl0x8z{G6)H!MZ0uPFhFSCV4g5`LcflUU`n({7qU zJ%ud{tpEjChP3i^UVuKh*?(Pz-h7JsYkCNu>x^bKo;Mj8_DP1RWXYy=tuH>cvHE~Q z!&90>z6i>|#G%%qmQk0GYDzyHRPDv84*Jr_Hu*uap5FOvqEcO7^<5W-pX=5T6_}iT zL>b)ts=sZ3&zt&kdTLTPJO@=P(n1pUHIU(y3fUkKy#qsKF{L%@)Ul+Pm~SmgWqQ-8 z#1EtVLtQ~+xTakk!5h#6<+Z%~@;zFU@^I(2-$H|&=`>-|k?LmFp<7q((uz^VbJ%CX zb&b-M6bdPaHMBRlqzty(ySkZ>w;U)~3UnC{PShHPX2Wr}&)wE&W}XQ+X=8(c`fNPD zEakD+$B0<3RL5ev#1S=hruh~;po7F*5{0c*TPC~F%L5bKW-*UlA^8Lnt`aoDW2~Zo^Q{|R0 z=S3iz@Kxg=Q--Z3Q1f|9A;8eB=g;2*I0L+QPXrd+7BtLsor|HKFlw8lcpr7p!rt}GQLP0^e%eN}OTVm9cEUdJc0rKm z{7cN^(yDNd=Tfy@W+P*<^ajpwG20E5K3F%JzfmYy)`^73CKayc2~ww?e6u%Pe!--V zfrIO}z_u7}@8=aI2~Ky{oT!4@>kYV&76V zeb?x*wud`b=O>{8JlTQL0z!6)Z`8>*SvXm*cu%VFNngNjxmWO($gnZ+5xa!qfGQ%c z&>=WYJQxAOPK!G%PiI;1m=~2mY^d8$Vfw}lVN9xuvnC%Pq-hoTNDi4n%7j{G#)3dC z9i>)Vr#Ao^5{+pqcS42f;Gg@NK9UJ3v!a*TNfL(FO_{>NEW}YM=+>aI5%=8aVGqtY z1Qb(|2$@`F-J4~-<-kW$7jdK!=-uvQvZJsAvC3J!9j4fu^!j4gVO}Phl>42Q@=hd> zv8|XYyrFNk%1tN$bF}}`BsId0O>j0eZTpAO^rniks_m5!nTP`?;lmlz_FvWsfII0I z=_VfURxmQ1$7yo1yM%wsUcBRwLvtYYaWFES;C|pI;7dg8*!W{$KqwgmM?*?W0VJErR*As zOboUcFLUspm>=*^)k>UJ!UMb-5%^Me{VrAUD_f9z0Epr8aNQlyC=hn?>b zdcYZJTq&D+Xeb+tOg)0$-7##RGdbv8sTc8@@SjNvtvW~K=o+P4c}s_#qxjL}5@V&} z_q-uft36;-sNM@(#~1rjX!Q#0O{6>;?gp;eWz3|c4s8hH#%**r|7>rq@0hf4wR8*@ z&{1_T`U)Eg-I3LTfBnX|D#tx3*Y0WY*Mc}18duXzz%Ys*)G3~p9SUiy#P7fP-OPNL zO{>XdEK^7ko~!HSI9&*wiYkED0`EUX=s(^Ke%p!W?{$fb++JE}mh=0eQYWZ+SJ+H0 zYMz`C`PBC6#7*U_yoQBfJY|oGO^!TP5C33@rpwjeI+B}qH~s6V_CMBH$Q+PcigJU@ z(#xIdlLmH@sIJh}S&y*{C-s?t5TFJ&5WByF+LyA676TG`zKd048XP7UZK)l6$lAOo zdL6P0o%$&@4++Zzs~hk*BoJ?+iqlax%t&=By9lLv+YZH|MpMV0Cqg)tnj=s|;P5?Bh#7t}NpM zzzv(3%*XWILyZhbhR%C;<>VsuiK~_S_Vu?yoO;&*ZG%0Ton-Y9nIDz@RE-Pedh+h- z%4B+5pRX2dp1gR?&D_ex#Dv=Qa4f%v0d z^da>Egc!}|A?DdU1Cy4q+QO(^%F<*I!tdF*2#o2)%_*kEfOT_%Lg#gM>)_ZK`>_k? zaO3tq-`8uG8)6sWzV)Bu)vUwb=@_5_n>6b%RZ}@s=lGqYvSw}Thy|V0SsdHUTL7B# z!g~eYcyNrIcg<(0gtAQYCprRKbuk@T`wr+_J*#tWz6521Rj(uWfu&{+q7?j-E8q-C z)@R7QSS(zr6l<;-X1)K!OLC0B;EpeVs4(H#8G5Lkp*UftiJU}%_LO)yXQ-fpr(I~w z{PH@WJk03;EDst(0#$fX5(>}Iua?>C8TBx9o_}O$>chmK=@6tqyz4{^ zvA#d?nP#KogFam;7v?A?t$B?wTH;qRvk@hlp!gi{olu!~X*6oA!JrY2eoUr%5>3fI_(&ux#xvc=}lf`d(HVj`K z<#d`uW;B$ktLkLA9j}*f+Ph5$Qmtj^bK^=g{x}xOT(Y~1wU+Y2n@(JrQ)46Vb=FsN zW&=&RCB0EAC+t_~ObuXIij9YU+2&RMWa*O0>EupBv|^51YWP|1+nEUGas`hjUb7uG zWD0&KKe&{=$+bm-z-Fk19U0GL7rMl%RT@H?sn_yy&;}(FQRMOc!CGzGY@6(l>uWz+ zjk&xq(!NCvzvVjiKGDIg>4eP_iu84nfYfwsgfJSi_p?GFr4@lI+g`}a1>P_|-cWf6 zO+9?c_3d(z%9i9#1t8_erV<0xrr4~aRy zKiItYw1!HXfgfwET8L?oxu(O2W8#aw3H{nfNO)|ejd413f^puYER^qHBs(4!V66he zF8B?xZFCbXo(2bNJ8o);f8H90(Y@Auyo7|%2KdQ+C%J(sTJQXSGC_-sOfA%`dK zIT6`L?ywZFy_i8*ZQ|$#O4v(-ht$KKLezv;ScozjedBGk5Q%E~avNgmi57fSAzuSj z;^y*9Nk%iB3Noz9H6-qfGZMRq&(NzEHKip z9o0T+7Ebn*a!g6W&=w70bSImVrL9f6s#;E}zqHr6>JqVc0A4Jey8fHlVnjZvVe>=N zTGt=v0qTrr;RARX$Zdg(SW^K-pjLtGJM_ya`te>wkZdk|HWxn(`LGbg!!+5CRUc0j z(JC1}dQKVW(5WBJoiOaH0MXE_XliWY0*wHVqA)s%)%LjRbxMOypFN>r7+=w+LxeNwkX z=q`conhppBGO3)^VmYwW`6xZ0w)auq0~I-T1A(4CPSRZ-^+P5DIY}U1Dz&=Ch3M^5 z)|rJ7(ua@o79sVV2pQfd)3X8At5m$^7bS88*r(Vw>=ZaBOl>H&IY-ksTF~p5Z`IVFwi zlQS1~laS9{^Z6#fH>pN0mb{~a?8H>l0qx>yZZ8462BUQ3&>xa$MOb$a-pGm&0`OQS)69J%ok=t z3xwF?A*9o%rC)f1$=Dh>bh@zXfxGyK<-2^-Kas5=LxNOgX21?@^e?dS1-bJQmdl!A zyoRmX*MClsAo?RDW(sY-S;k^kufHzeRx^BnflS|i06pL4B&Ho3-$)!kwvdDh z7|GQ^>lY>We6Ub_T6u92^I`d_dFS4pd&<4UbZV&E{RkZ7vG8No1+MTP zC$W4@ks-ocQlEDHX$9pzq_ITsKZj6l4gEokmpdb?ayCdcu7>~WegxZHI3cM26myy zMKSLVPY?vb|EjT=kkzZCa`~~GWEM@TnewvU;%o7E-ED|VS;qPvAeOYsl&ng^@?7d> zyGr6b`goJF>`-akJux=)lwK`mb0W9{BZA-1Sz9P+j`^su{he9Q;yMuSP1SiHM@nUF7pf_E&1 zZa9`78WD{{m5-NRc$`vHVJ>K+x9g54Tw8tODIYx&d%g{mY-dfB%5kF3d`)^F1PnQS z*GCcp11QX1Pq@d0F~-%>r~at{Oz9`xd9fe=9AgL??Bb0Or3PSpS-PRdOVT1iOaOlb zrN4=veS0q39dRUPSs`0m$qV4Sfr>HpaK=6!UaRx17FhTgaD(@M%2;PnmFQp%qRLhe zT^K37M1s8-FL@Em39a{JOBKBXtI=Hs9(2%(in3OylJ6p>hw|mj02&X z;8v|4M2Qo_Ltq`<$vM?PAO2BYgz<6CRiP|av`VXT=8rCaW2;g3nD0&E#6!IZ*Awgq z<8#)L=dsanxX5TPtOl{a?=a!?VlvgS7)*}mT=>fyu*a6wGFiAjpC9yw#fa?dK3`70$8DHm$yc!v5aCuC#vK1-aFvfi4n#YJrZq~YBIL4%~@aI<^BszB}~9QpB=Lt8++H(^<>C{vr)sFA6ka61}+~OS{zBf^8a{8MmsF(UR+Q*S&ou^t$6$kWk1K((lGlv$FX8w|yg#pSAMq3gPj{dce;j|E> z3Je&B2yttBAkDA*5j$Hao>hVvcsCTwR8){t!B%%Ei5!afI(!N?dF>K`2&jKm5;z+n)A?faMIt6KSqB{y{S+ z(VP>d>+bfS+g+n6LL50eZ+CSahHn4UresV-mgOFw@WQ_GS(dIW#-)JfX{&H4*aY@8 z2#I-YeylHwkfr3Ps-ir+{$;|6KuzO_hae&zkPul52rnFz#$n*6-osHmb8 zNtjLxC5LvFxdT~1%2wavO-(4x;cwrv4Ul*GJ54F1ZTWK})N;BPBQqO#I4QHc(otkavR#c;l)N)dxvU zNIkUvO`G7?yDg3aVDP;fW%F^UQy&FHUOh=+!hDTN`cG+ZR*_hdL>#W{R0=!*>G}47 zFbM7lqrv`?f-FzG(2d?2C*DdD4;$i~p2V?wIGTbgWYg^{aJfl?s)g-pqeGlExTWch zfdJS4{QTjQ(JlRQQo}|0JtF5xHH=mOwU`deKo)3oZ^vyS0R&0Lus+;3-(&bW)z&pt zT@G*?4zPb%P4y|+MrhWFN7F3c5_iOptLD8E-Fas>%YIj@h4o(wp*rqyeK&{mN}yXV zSH)K><;W_QxfMy8@2Pxgt{y)t^GuJODtvcnRZqt?ugJQ}@tEK7A{e0?4%o{_J@iI> zAu3t_(@CA*|7cG6J1CXK#7wVDCgXA1Vw3?(kRgbjG-<;>g?~s&WG)HMEUm0z)*!uhBn!?Oy z0|Y?L`aI_cPg8H}Sqf7bMl$sLrqi{#OFGhqXJdAM)7BA<+46rMScU=F$c}vW&xIcd zSu`4czbKX?26mvJ99dY@liDwM0FQz25YZp_B z(%^k7XS1csUB5$B&3sx*gPq=yuh-ropxIOkCg-{M@ zftV4LtVLaRDHcwg zlCela7RzqZ5m|?^IT_Rngdqpy{U@n9_(j*&jHSRz)9jD*OGdjF?JRZ}nKp(-^VvPE z@6%)Alo;EZ>O3BB82iZh9M?aTMbzfrMXv|}G6uTzSi=wqCHH^b1cYa7g5jaDWTU6ZVl< z;hE@r*T^pbiGY@s9FY0rJ3__DCrryQ^+B9W)IWT#tlvKX= zz%)+*0_1nRe1dYNPrm`$Fyu}%ehM#SE-w7AC@09Dt}l#jJ;ImM1gFY^qjus7q0-tL z%z`V~Rs(PF+{nDXqs9EVdDPqMAz(_ZFhTJjZ90GMbA{I0rg_x2;kJ_NfOh{aIN1zE zx%}%b{|-jW(Z*CvDJmbEIhR?Vz@wRhUcI>oxGf1`K*xs4=yymWdRI*<4IfqwVhR1Z ziRh=VU~=Q#_k?YcO1#&7#j$8^+(Tc{`c~PpnMdZ&oJRcv&+MYspQ4mWNINnWO+&OF zKS)V&pu)z@2(;)ys8kzN!{^Rix#qEe!Z4H8d}|8v;i};rRT&g(d0C-v$q58#$lfnj9Ha{L`m= zO_(Qtf5V6V_Mptq=XNZ*vwJk3>ObzY+xrb`Yz%2HIy5Ntj6?p5*o%qHIet?-AM@yY zJ^yQ%&5rQhPKoS)`7+?Y9yoqKD9ZDEJ@=d7U)w%@@6LbC*a&kKSAA6Incg6!c6uSR z*de!?#cH^Y?i`;4{78Ji&Cp5obX3xo7pE+sRo@OSskezcm^QqJN-yYEXwNpHI<2!n z6z~V;36IjBt`P^87-f3QRaPfocIbOk8HZF*SwTnjP^Kl`f2vD*v6Dp_C1lit=c#wV zO@dqzk`(AB2dZ~@hf8huU=*%P^Io6Mczcn|?U(8?xsMrCU#9v%(~LHzWS0JhL}8!B z$B5C~Elr=6d_tlK%jk|gZj%@sfUgpDHT?r{pFca>m%_CZ!*$3Jdd)-n6LN^w9pmiP z+?8b=)7K;;-`DD@Abhz zjhm)Ax8I-Y1_yRGi98qJD@9Fkaw3oXFgb785CZggYiK=aq{NHb5z(b84z`o?nbg>f zN1B2Nm=xe?<&b2Jb$P*B-x4rZU|H+MWooi(Rmxob6n95xoJ;l~MAVh-rCQwPT@STh zPNnf02`uYa?ox+S8s_D&lpX#K)Fq@+zAbmBD?pOYne`f`iXgTz71bqn3{&buHj~937kGtwO~jn0%2&K- z5=uTF-zF86eey1|9kjioJIw1z@&H<2_MiF-p<+LGvxYwkJ=1J!EyEZgIh){8B?@0h zjMB+=m;$@i8$4PkJmQcN*y*0$9{PSCG(U&VEYK)G$hGCBvX_h@Tu9RP01(Uue*> zPGBzj@)+q(Jda%-AUJgE1DGOMw}+$(J03kLq0Xh&m#9od0tJK2O9 zHzZjI(#riph(@j>k267BOhLz(kx;E$#j_;WUjDe+=~3Qctqp0I!-CwwF9-nEN>_S~ zA+QMTjFv8GL?>}nuGCOJVzFxd`Y!GhaW|qa--e2*tsNcQ8h&@vgz913XQBzZ{HV)x zYUM>n%k8rh!;KbV>~p!pfL(-Ey%2LXNs%l{yyC2%O}2vAC|MS;>C|9IKZd}{yxy^6 zDC4I7rXj6C$N$K9+mL;()N7?K>{0Rc&@i@ff-_ z3e$Af-zG&|%UAM1N{)vXrxK<~t{c8s!+=(O0uXXO)i)Ze6-HtEHJOVksFD9s?dqy- z6pK@z1%V9h(rU>{Ymd< zV}RVHu|MwA+i`*8!4Fk0%N2^yGvAE|(OD01z^to}49t&8Sr|l%NF0CB$UgVA|KFSk)<_-|EtGO-fyy=?|xA~H#-?~oxl-~G}Ok1(V z1SWvVL^{#<6nL=wMs2v&9jK3GgtYS^mkl_nM~HB;uC<8JYE$~Y_5>_Z+Vj8WsNhQ8yuEv@Oy&Co4@d`diIhNiz)f!(;XwBHJNPhvx%*+rAv9`FjRN9g z0Ja(j61})!8s30vpT0Hkrb8M-JOhmbt*|)6hQKJt$phutrmdRbOyi~@NK=6cp8~WY z_zVljDFvWL70xLY$UPTsXz_Z;nlbhR61a+s=o`){T>FfZY+UeZXNK(t7%7awKCqa{FqGTkh7bd1qGd z@-@xPK)n-@vB5K0n`a0HF21j?{(DR~bTp#Pc}3 zsV3!amKr|@cO2r6-;n#5ZWeISTHh9>QViEQ2+^sY*6KklgXxCQFVmK8Eh&q1B+66F`efWzYJQ zxN4%TUR4O(h6;WR;xl>@T6K+6I2saK&>e+EH|lz43B`z`V_h@!4%F)1jj%MPTWX{P z9Iw_tl{*X&A*w!m=LW{55+x988p*`6G);8g6TsS(dEEI{sP|QxyXSXLb+Fvkck%_u z-zBh7g&WI7;F|_v(@?9(9f**cX=)<3(%7-SBvWcyyUq$nRB%yD{H1YURo}n&ZW@w| z|AkWB^NmgME$3zqL^x!6*5=cOJ9IYkLi+#Cj`!K=10AkN~ZxKq)-S1{+XcZ_~?pkNv_;S zU9Cn$tMIabew@DC^~CYcFVVbGFp%U1y8+}3L#5t-{=I~_D+mHAL_z;lJhZY9JV&hWRrHs8PjL{_Wiioz<77 zcol@Rjdxz^;3t#Bnw}10m!Chqde(pb-3l4A{Ls+oAvSg}D1Cpdvpmuh5Mti~c<>x0 zUNiO~oF&wh`ku3vuKH5YCN4`i!;L;3x3=MWYGBwaGMMX@RdBQ;iMv{0ML@0=Zu7E? zL735Esqt-*O&!;Z`vGTW<(X!tNiFJ+jOCo@r-4)78qCnpk^R?qHY?9BUm_&+{FQ^r zO<$M=)_2vX+#zB+b0H{2AdU-Op5h{dDli`;Il&rri8~$Ah&=DoP_%KlC!~+rx4~;K zvPw+AAYj;e6B~{4sW3l1Kf`h%p8%hc zW6$@(SH(YwCP9f|{+*-^WkGG4b845Q*gcawWkz1)$5wWr;Th|^r3Y715}7>&pqNo# zh2!Gv)hw}t%|m<5oG!Kid8IP3>Vxe^f4vFttoNev5?Vb`S(NRS* z-umpSY@6#Ce5gyyrkkmmxh^KYTuC*|-qJ(g{uJJ!dW1*f8&*uUhpn#VKys&`7vz02 zj3qjKB)?m~NwggAG+S4-LOggV)$yOvTFOZ({p1l*UZAy9Wm7IB%9xp4W))zHE(Egc zOR`;|a5yvvy;v~VNyqMJ771FRc@yC2yRvHG*P5ciW*0h_1LuzglyX%AdeLp?G>GDi zRh@6FWKtPPVC3P(1pQ>#<|6Bo)doPRa}h=?R6vo8{zg=0MCgZ^5Y)kG zv7+fxE#}^J>P($VSSq`u$F=77l8;bx%UUaz-g<|!4zgb{O(By?Li&)Vo@vS%NU87I zhzoXLf=X9=3U~LP*DReu5$mI^E`99q(pBpE891!|y287&bgA4W)N?!ruI`=~Fvx{c z5`6O=L?0Zztm9RJe6VZGV~xt*NpBeO(WB-}&|w!{TinNf9k2`E4um#c-R*I=Snamf z<|+TSP7n0SVZ+8e_EoaWXL6R8!f;4unM1vFhw6qGcG7W|WLia6nF)#CtZs6SwN`zj zoG2c#qLXt30G_gkKj)lVGFJZlA;Yi~n_FJ+?#tIWWtQqz*PIWXlaXVy8dY`Iz8^Ht z5)b(=y(u+6=3^lCr`E6{3SfpfFEr`yH^)^yX>bS*ljpV3tInDsi3ew(l`|vVxv(yS zH^k2dkT>z7@GbkiEk)fc+am>3;e)zvE+QJD0Nh28uJIeE4X}KAa$_EV=dF0tn)HEE z-`ttpBnO*{fMZ47eohjU{DR@|poVnaTH4!*Pl$%r@(QQ&;t?bQ-9xsfz% zu<#E6U}U-?6!WrqD&h3k^zh=fQI36WF3am6OpFvO1a-_cr>D7=Qq%1>o-<#x@zHCx zV;0-)j=?C{C4v`QX)V)nDju+XcZE_@&oITk2-V_1C!^L~-%h7fR1xQ->OQNw@5?4z(K}6l7FZ&a z?T2>;j_TuQ3)#WWt!ajA`jY7hNn9d?D=`l%ZyQqT#!l;LsH zAG_Cto_bJ(5IB(uH`;sup0`H4`jx_?8zh&7#9%6`J-#(-4-|BANCa1ckyPvNMMax* zEr~J4>7n5JefZb$0}R(*?b?eb!C7wJQB$&NPaBarETuvYni=r){Jr*gB zBNp3BXw>TSjd0`!3>x0PH2H$J87JV$2~7{~}k8UT&DX7j+@|cMx@^(P)zR4w3Fmuy>%` zxPu*~=x)pQLdehd^RRQhFt4_pc?u5$;qus}xI|72B=w*;Nw|axU3?2dwAPmROC^$k7jjY;WG4zAQ&nw5PZ=!>FcsSghrW9kqDn5W{duIhg-}e9fDbw!z z8uSA;&eENdbs(2$roNJL8?4^}4#`C^!O;KX$|c<% zC@0bTSbK-B=+Q_%MW~PkZ7|Ee+wO$2_Ev?R#0tURsrf2bDQ4{qcml@P@h(Wv_1k3y zYqX3Z2E+RHSMvO3*R?FvJFTF^AAqz|@-%H;<`%7Qng#X?j?^?C`NY0*LT~5q34(1~ zy=nSc9AGqKYAePHn9d>q=Cq7uF$*t(xiso9*h)KjkEru>Gz#c8gP#o@;^f0rauHmiXy)6juva-BGo?oT~HsE57|yy?Z8T`b)@ zlLdyolva(?I=$BiJZ~2rG)-|3=3I8L{+HZNJRio0(AWqj5wB$&_7ygl=LjqhB4{3Nl# z>FoLAZM6dC| zhz8}OCC$oeZC!ExcE#`0+v`AkPWJpCoeAA>{H|cVjuua+eoo!MGrcnK`e59+lg10l z{_2UhrBLiyR%|ct9n8y8avqZCJLi#x&076>g`Yi%*J7@BjemH=18HsfJrGp_(ae3$ z+QJfOtZi2A&5k(Q`g#8lLCWS^JbtR=&NH2>f1mVhH76Y+Ow}eBnx9Fhp2jXj5W@VJ z2|}o>B8u;;KjLpg=fNr^a3UN?^(E{vAjF3Ex@zGhSIyk!jbIp~Wi1CE^OhH&k93#B zmKtuaXe!cJX=)QNeCuwTzJL zfFJpA;iv}VTlRW>3O}#vSjn)=&RAjK+s{3hG3`iS1Y(TB2$pV~mT#7t zoK4nRUw>56-1lhb6{jcTFKvjcdCD~67IbNC8C%m#J`k*%@jx{#0IaJTgx%x05N<1- zBJwL6uMToD(Y(Qz@1X#89PT{9kjn-g;>r{d7pTF-|k2;3?d{3cm+k@m%3CcMW#Vs&bwE9Pp2OG z(K9JKHghmMu^>#N=Tk}T+{=%7irFWt@WHt+l#Tx$A^&Q+9>o;UPoc|#5 zCUfn=l(*!Z{2YAJcOScku=#55U)pv7REQ39+cT?WNDk<$58uVoHrcAyvy0WY;7Zln zgH5V)arUoyl_VLdbWS5RM6Mw5MT`RBNb5An7ZJdYZ2Aqv$kvbIL^}ihyLA1f#!Oy8 zGsNRqOHxk?ob z5wsMRBHlkH12ipVFK<K%Rb2}H;ICQ#i{_RLo*LYnO*>Y^-y_r5c&t-6`zp`$OTnr z*6CFF+96(vHTJ)Zt=Rogsk7JN)@ywG^^WEFY^W<6r4xl;k}heu81}1f_ajjRR@g|B z!FA?7R}lN40B+MT1WKZB6szE4jtJWxSiEWvftA1hQ9u2SrWEjgf=Uyzc z4(p=}9I!B!LDyCnn)VBP1CreG!rxRtg_p zW=D?MDU^e454_UgI(9XgehDt@<6oM@*-d)9t}@U(2n~2cA1NXyPYX#PzeBjj9h9M3 zclU&fyW??(c0%j@=)y9(%q&ZaV+KT$!3`gq;sewG*Vz*9I?QHiSmH6|(FLG@3xyLc zYLqW+^%{;B|D1!$P>Qmb*e7f%ZAeT+wX$06E%kW_ZDC<7R*otd!v<5 zx7;Q_`yjyCjUfh#r-6bVtzXN%MXNEuDmCH|Rm@q;u0lZqWE{*;N5zv0je&YS=12L# zED%YFvw+PovN0P)8OAw;=%_YSUsE?Ptjq&eZhUBqTajfs4}F3X-3~@2U6*5G04tg_ zTm?28XNdTXlMijw{oEg1iJ)_ODVg0NaLw6Sd8!(5+*+W9LmI?1K>6TcbDzY(u;Q;Z z_RU9`>#UrH4-ysD3~u9*Dhmpd{9XF~fKn6kUi;?w8He>v`@804W*{y;-dtN{pSku7 z5H_BAp)b{DObJp3Sqxeg0)y_!NCIM$>On8Ui>AtBrH=PvW8#~vFRbwnv=5&mq77Bi zu%4mU1Ac89g0JQL))3smFKv1?tmp~73M}@jYO@$WFbBQVhtUy&q^ebqxp>V%D{sgw zN3|`0fz$pqlQ;LaraHO0Q}x-dO_H0JX>)YLz!GjV(Wt=R)!fcb2!wE|5BM7D*7hKQ zh*~daPnFAFRDQhz>}rEMsT*%d$5$t3@Q`Nc55-y##v93)tUoMAVHc4m105u9O${}S zH}&+&E_UY#=57VniDd&a)zHesyV#z>sc^hZ5oF^M^@G@Upzqw7K7pZ6wQT!S zDLjD0(pCB*ju2dGc+tFD?JZx)Ba%${>iJt%Z^rXYX?0D>98gFEEBC5*#7T7l>$V=p z|2rshDWtUbj%+Tro_;Ha5N2sG)=&$J$SQ$X2Yu**Yhq&(;p;pz?`IE?-k(mHnH^4w z517aX9OE-jb1~W=zK<%rW2b(RNa;^QGk=+b4xP3(7VJ|8d-+r=>)^vyDNu&4&W1hG z!ITKmvXI2*PUnZ|BlfG#xmw*usx}6->iIf4GJMV14_WXN_p7m(GX_?t)aKP2KE(&N}jKNcP=iX!z%Z{L(+eD=d5p&0qj-FXQayfEnq!X^Xv^aKv>@-`%4{% zOl(tzwKNr4^v9-u?m-_=3(@%S#3pGU`0roJ8Y?q9`U`c*2&Sf{vH5f+ey!zwwqM<; znLKldzdFT>N;cIS4d z*a7isOl#?gccweDKS0N@YGskX{&O@;>TEgM`@$q^GB3bT?;Rj|+?S}4c#zv z!~axXWGuZJW|+GAg4A%w?+?VeGYLunXT*R1QGe_I{Pqc6u-4o#Cw3TkZoIFBYyXC2tp z4jTC0=+cZ;dP1elRnz1TQ>ww0YgXE9o~%HZ-jP}+4k3PBDL&)$6!trge7IcT0p8}a z;;S$}X_@SZKZIb&%RW~h0hw95ox&@ULVy2I=*T%y$3h z4Y8GKV^HKkMuf+TQuWvzOI_;Sg}8rZ9dl0#0A&NLCd9xC1J_Z(6jB)V+3@pnxNp`( zF9=B%My92HtuIt8E2-HNFJ0GV$uNZDxZwtdWwr9sjTHWXwvXunA1c;_z6@Z+R(x)t zVX9-&E{O^tf)+#^;pR^C&u7DBr%p@cfN?2T=c$k6H&CnRpMMYDIml!2$rslfzF2%C zSA@88^sBxkzdd;LTW|Ya4a~I}YF{p?Nxv}S;m=2G@$eSt=hN@3d7HY7F3D{hMhqk3 ziZcz0z_oe*6zKUztXu~m(})Ls~0_mVp!tFrj(<=$Yc0egGuEH>h(?*)L-0o$LM zponF%k6jwKt73KFiBT!teo91M*$#OA7+Dx9Qk8>C(HDEhD?1ZPIWJ6v8G4mMQJ{}3 z>M~gSXfKkpy;29Mp8*`kXI8gTUNlyyzk11&A?kS7&I7~QBw?Fb6S972wH4R}@N(6ec{ALUHkX<2l{VDH6oqIjz%@?T~fN9xp;iJ?; zjB&I3(M0R|XZ8+{9(}W2wN7G2lMK`eXilA#W85|1t zFc8`=LPR+~UNxS@y2!wG&-8ekJr<#SrX@ZYcjc?KPtueJIpy2+ZQ_Xqlr-pYjF{yI z_}%N2-N*@xC1Vql=sR7i)i^ZKE-dZ)QwM0)E1s9{j=M{<%lE920LQl1mxMYUx;t>O zZRSdljr}qw{9crWc)#!ft{a$pbX><)W_BliuR${1F^0bpH6vZtIza6hKYxkTV)jq`1+w^3uT*Lq9A-X*Ox2aWbR_4 zmf$TEz;TPjyYdDZ2p_$c#XkMehcJ5e?w{Hc4dyk5v+vh}eOTHoiFt}+l%$7lyu|E! zQgto6U*uNqp8km?7`#h*$~awrngpoKxMVgehEAa#nfF)5ml>?+{~>|!i`)cL?$W^8 zqDz!HmuVuoc_y9ynU*VXiCcpi=HJa2WhK86{+_0EI17|5J!I`qcSm346}c!4l3 zmj+O7TwrQLM*tHS9MlcfMoLSj5UYLCcrQTzi9BI`atb#;^}Sv_FiH}On?~?qu5uG_ zE*X@CbBvy&BSRhzcti7VaUU+X#_{ zWv{Pqu1LY>tJEeIVdEt{iE(-yG)pXSrg=U}(XXOJzb!eMTixDp`}`wo^ul$YYRh-j zfN-VQypks#CZ>R>uRv$g|YM zoN6t1iAaYJsNaFBd-OU9`?J?7!{?AZ8JFRDb+oVVbMv3Xpo3L#EL#5jWQljE=2)aK zk`)1NrJ~MaKd*(-Pk_DZ$*`RlNo^<*Nthi=eZyQ-zinQ^C+JK7&H?dJzMUnngi-+P zr!)Z$gp>#Uy*&?THKc~`r|^{^Ds=s)R(s!U-Uym}z>0$=n_iS#>c)yngR78Yomj`F zG@wQMO5^wm@)(bz+L~kaY@LijUI56XF z!|lY9qFh&4ISE)?FLEclCCWkOjnFDIZ2J#rEe@qmkiGNw-5cT0-O#RaC);^TdafAM z!H|}sIlMGS6s1<9FUejMRM{jG1gH zvN{e}x^e2|__5|XJS}#4IK>v`?lDSSX>d5+nzBD7%2MxpDMl7J!}nb{UYbp6p}N%o!1iD{##|dvNL?u@44|*68al z8)l0`pi*^3KSuSN?{b@Qm1aHR?MjY;Sa%2{w6vk@K5-@@PfK}M)f{HY@;c^cMreC>8x{(+ z|MTyQG=K6{8w2Y_S%4w+sY{dBNO0Z5*cmRQZBBxdUqD=bpPR)hcA!)Ka#Ez&_WGm? ztR&&q5a6lNN<5Ex(EkW?6v|cS>i|FC>-B=Pbx_d1SpI&G;HDLPNF*EK@m2>m1Mx5t z=KklHT}p_xzXq`m%Ah&eynrQoI>gL81FQy|#>-fGy|bZIN3TVdm+$@xFxCIde&Tnr ztXl%Vn8C{DR9q9iOib~a9AD3U&f>Cb&SIX;auL=hBqw1-q+Y$B;H+XgNjdEk84Y#d z#*N&iOSxMFKf4XkOs-XauBe@BcoUJ}DXqI|j9WpLbvb2&Z~(9+Xr z8TZca0hg9@5Z%z~sB@v`xXUY4=^T$>Il@l^0hHhCYf3^p2|}V8>hFgF;{Q(x;F378 zXWo?!9Wx6+N^v@aKJ1Z|#VZ;1ettZIGf{K#fg;M7rkzJ`NjmQeAv_XXI;svejnvn- zGzEnlJc@VrGW^{8Rl2zX0OmpG9$zwM;17_f?}nEmbyjb%y_o7)JfYD8MO-!LcE^TV zf|cJk6*7bpl@toSy8iQf%UX{7&nYm}Rxx-qo{H>vZW(o$2(<5RdL_Ntl-n_dA|7=5 zT?!nJ)hLsGeb|)CZTR|y%8t{W%uud+XGZLL67aIDE(+FfwUk+dh`DfD5Ua=V#-T%) zWhq792bl&3zq@#i_y($S^kSNlq-AT!x{WKD#anKa%jRE+e5>EggS{5#Cz-0z=LKMu zv+F;hQ+M7-IjoXfQX(h+%*Ii}+RY%}>SDFAf#YvKv`Gq*q3LrnfCHtGIT0vsef6M$ z#RRg^%tnK3%NC}~oVZEyuzEoPdc8qLvhf=09riabUHZV@6)7a!{|P!4`T2Z+jSzKW zc6FNlHDx#HIpl>_^}^*O)tu%c-sTp`2w+0wO49|(lQ3LvgvD0rv4i&s1cg5R-EjJ0 z4g;A*Yw;z}T79Sp&YRi3i7r^+QhRC!mFb~SKbM{Q8t+)nWPgTzu&ZXfWXmdpR2mC` zT;Sg<4O^`MjxkGcprdGjqsJBQr=Lb$x;?$X$W4=4B3%9AW?H)r|EbmSN3qA;2yWKk?AD7zSTy5Gm^qIHMnZ=} zES^i*oqpn#PWQtHaq#`F{MEooaE$;Wm*HuwAD=ARON<^)5=;ZYA)3sK(+obB)%)3e zH)y|Q56GQ0R%a5Z91ARDx8q{Dm=|TJyD+3W$nI4`-eMCXG(+R=~IzF;F!t~{-p+iud4># z36+86XMv=m!wafm+(LZv%NBROXT`j1J~HIR=unQ#2?}%h!*%+;>w&H7Z)?;>{Z{#Fvt)#&o;3TUC>XE_~5c|N6+G9RD*s! zCI*~vc+=3^pw%fDPMyn%mwtwVwXCwB;TmS)t6}w_!A?tnJYfkH;bAVO(mJwqXp~yL z)z&IP@TmZ1YP@cv-pK}X+U3y@XjuDGeXh}3MbAwy$VWkvbh|%$N|GfO#hqC}h|Hlq zm*V6$B5^Yy#2yZ>rjoI;=?*(bE*kyjD?%=_nw0H~*$Udute8aaz+7=2DBGR=|PIj!vQ`)Km4mCRdbAeFO-|MiJuD1=C z_EfuGm#2$6B)p#WSjxUwXLJ#-+qLe;i+t01Jn#~7Uea?Gr<)>E`6Fp_? zW?MuJw|VfzTq#~-;fJm9u7lDkHZ@%^7j+Dc#$%D=hFAULM=+MsT5DhHr|;;&YfDN) zRQcDh54%DxBrhd8|8sMX^oMN_L$VqZ;)|={&vAy{KC)`ipWxw!NcGJGvmA01Qw;;h zN-Vr&5ljPSz&pP!QQd`>l%nm!7ENDMLELM52s+z&g=@%f4&(;kx;X-O6*6O!aI7Ny z1>Nux|EC<(dh5;^6vUvX5n^67>68~QnQ&|R?*%f^IJjA*SDTm@ZMvylueu;oYTT|~ zV($Jr5E}NkfgLqje4s=sWbyXn@qWevt-j_bcl< zpl7|@AJoM*7VC(4I(hDU-xR7MACP3!fH7Bf*%vQl!qm~V1PxtQ+VdgLM&bh#b3&=T zUA^vq{>_+NjM6VJ9CA;ab4pgTt&om(4*Mq=bq~Gz0Ce-MzJG}0EW=BBMs0OqRn0Cd zmhU7gi3qY}*=>I5*Q3U{_|Bao`p=XoJ2V1nTs$TbGekp#!OL1%a>z2D(qSTI==DtP%cppvKSkDqAlvj@~MdVCo;i(nSL42y21h+~tC$fk|5dYm6M;ShL_;cmc zDiwOr@&V6~uGVezyCm^H^k68*t0@N*xEe12;@65hyjFg$-c4iPw%NiCgW8?OOO-m; z=~@SvbSh2EeZp4XaB!CYAX!U=V7Pn(lf%?T?|wpl)8pO}%&&7m?>ONvPLCQ@- zmrH^J)!)voWgMZ=Vg+8N{dK30@+x2#LxqZ;dBISrt(WSkTF6)74K`40mON zzTJ$4=u64+mw8wCtu}nr3x?zzs1bT|%7H6EAlbUo0AcMxhBOqpUrvT!!Ys3Q;l{*0 zV6JLW**WI}3Wk(jDMQP4!K;c%3sk3zySPcRJK+W4V6sI2C)>F*hb5oRjt;Zz=!+Lz z$ZuZ^A+Le7-862ldn@OxVlUT&R5#aoYh>7bXJ6y#t?c$%4AkI@taiz2+?ukBC4kkq z)MReCX}q4Dc@Mwp9XvFgAx!p$z*211KttZ`sB13o;}$*Q>tk8GB|RxP!+d4cg)rIi z8b}?|$0Lr@3(^!Pe zQvUKG7m&O6Mfz;~M>ykLen__Htq-t$M(P|sb&9?CJ*Gl{=er*kt@x&)5CmhPDL2dwQ9Oo{@$Gc^QY zD3sN&%y(R{wGJ^;75~RB)~QvFJg9SlS53QnFcYVyM$qH?t4lQO`-lT zz4`d4;;VNZc&&N;0PFvDx&yuGk+(_aIT8U7v^fkQOZ~yh`%dUUA$T9)NRL(?4QB2< zU8uonGsk!liSL;Hm@mSKjCP!pFBd!?ESzSh*LE%UVuF*tMGGW+$Lm;;9b9v2!g7Ur za|99nFi{6FSc1eFqJd%SNIrG+iBOr3Sb~>npYre}FLIFe8MsT|uZ`KhSZ?;(^k#=X zot@ZUmqNv!>EM@|42Py8tb?G5v|s0la~IuF$0`x!4&VnxIW!-7CqYbQi6m&Iy62*y zU#V8E05Z+{ij(OFQ|4(Uy6})OBf7sZYVEkd7ZIKvj5RWL<=+t zhh=B9+2PJ+pMG8X?xkl*SV^W%k|gPZ@6p8cq`2FpQbjc~8TkYjl1Z3M)t`=Cz1)oR zE*F6>G!>xoVa}l_;CVvrS?`sFG0hh;dDnLC18yi#v{@-R!{c?hFrOLkJm5Bg95 zYqhGZj`XNGU5Dmp*Wj~HFc^n&NAmw&o7t-1$Tq~|xFdO$QxmJMlo;uSRRIf|b2u=` z&FSV5O_zGy8;{6=`0SPUJ6vwtM~=|W8tedmCP`=ifXs9LW( z1F5a)57Y>2&K#{0Z4S*5Q`Wg00P*gJ4~=67m}P-{@o0blKUdg$ZW$DFeeV?PF#8T?OO7&2B_z7mr-_XQCGY_s(=aLwHoxT3#%)Y#$Tb zINnrKZ1(!&J@cibCo{+ssV_T^b&ntFTOTCW7LXiIZ7fCMf`EPp04Q6QB^+bEz;!u< z4`W1UnxFdYGt+x>$7lUiN)3{+b?Jgig{Xnz>F$*0K5<|A@VOfZD)hO=VZS2HA&PNY zyw3m6Yj`1^LeT%q97@kZe-2$?V%Q9qP=>hUSo;ymTfYPy_0voWS2ml6XR!m$sm(mE z7Y!>%J{iQZV7eY3E18vJDCO!Gdz`R0;k+Q)2ArVDAaal2z<>D& z@n$R%PA}vX#;DN^=esfPIss=x3=%vvY^Ozik0iq);wg+6Ao;`- z#SixDbb2jb-88)}Q)0N3>T*exia$f`&i^1-r9^-;?4IZcrIqB@WYmXmS(^h9?UIgu z^c^{-5}hwz$=|)t`3Nt+=*(yHJb_fq>b=;q2pO4^BW}PyCh;Ko5V5#`T5ZOQrGG8_ z_RKrx3V;|pmT%DYTDa9=4sChJrDj-p0GASNhLTlVCK0E~?`V&_H;y!3;o;B+g<#bV z<|BVCh8A5SR`Ifm-G&Yt!R^qtb-0pzSWVUd9f8pI-q_94s1*rAeM7=Rj2$p{sU2!ZVk z{$g$?6pf^ho^aVJFXm&WpzZr|in=8U#d`kvH~ohs@ylko$VH%sm&GsTa8APawmF5X zr!JT=DByUpj~j!{Z6^_2U6Ia9Do0V?or;4W)Jgb!@@1s%@~y)jh-okFi3OUc)hEgZ)A+Em`{sukH2`wU1(}aT z1I?8ts^4p=scZ;o9~eRzf(^4*ZQF@`B~!C;slnhyx&nnhQ=mbwX%PBp!G^St9y0uV z`d9w6>R$V8&XU2axz*xNZ$Sk2Ns|icNPw=~f7ZEyVbgc;D&$jB5a91sTJ^~5!&T?L zC1CVW@tS4i-R-%g;Q2x!OUctz4-w|wiiwaWN zH01tmpDWBzm{}t&)rdKAqtY_!zA5QseWkjq#wsmIZatHC(E+IArQp2YE27>Zol&*3 z=M5WO_KQ<0iYpdpI>lE$1d^Hj)c9;>O|!{lgjV); zl%bVCD5MQ;^zt0L(zB%+YpNiTe0-}$svjLGQ)Jh}j13l&8R?sKLwBL-vHE;Z!!fh~ z)8BLSe7NBQ@4weY*_Es6ve@Z80uyxHk|1(hfZgX%EN>(KhOH$ z?6)ih31a`yG3kJJEb6yxIgY3&&-(dX@5d<53B+*_6zIdQ{j_Wl1@U5|d|8{5T;}Qi zks+!wSU|duzPFXe*(5h?W@F*wYM%N$6RGKOHuk0|;?sGKb1SR9RzH#6KGLLH(I4Hc z9DEOG*}@`e%TGQI>mHD|hUgSOGfMQ6WsgZ2NY|h)b;mj_^hc>q@hfYZ}iH;azlpTmCSwEB?BoUPgJOvY5`mM z3RcNDe#;`#`WcACg`KFIroyF$5iImfZpOO!!lyDkRC)75n@!80Uyq)5fse87>g{%3 zePO`OgkxLT%v9GN23=VaTy<8Nj^19qz51oBpLwZsjjU^CVx)Eot*REC?sip1+0so@ zRTn0N&Ql}O!DBUj@4ywRG}is*MHIu#hGipei+6`9Rd9l98t|jlDb*_vO~_&J@)C|? zj^`h19?Jo7-+aH`j#IuYiIVl^|mb!Vz9 z9}Og_Cg*6Y0cq1{KGhpMlO{@xnaNNC1`o|rEWB3|<5l3dNC^4r0&X2%^~xkfy;;fU z#tbl)uJfr_-B>;A-<|aO+{YSOrlEBrr(W;adzVpy2*{5NgJF>nawqhk&5OV8^1<_a zQW9ln;PZ>*b^f^d`P;+nKXT@2RT2YlRi${}N{+x++SCUwcYW3`R$=co0V^{@k}*hI zPCkg#@B-NY^sk2IKMoC<>GRyKi?1Wv|-)x z%2SPtdmGgMbaT+1pIg6rR2-I@Rj%bQcpnPIhf1l2JA#*U{s`s-a{j#KtN|Argdo*w z0Fe2VY{NhnsA~p3rEu(w4P!;Wex}mQYS2|MPPhHmt!%ryM1EGf4&>Gn^6fQrIakv+ zq+#z0VS8Q=j+*yA?C!udCT#n#qyo!2Zm|2H$H5&X#s15SuA1e36Tv1;;log5hU?QG z88;6oen_DyNAvt$le%f{nX=$1mlEE|O5-x@fYKL>o7IdvL`{be72LqC)qUeQ(sUb& z_E%159r( zWhl-n;e`wd$FJxjnAfU@9 zYKumWt23pJ32J2QwDIAu(3duy(IZNTzK(m(DTfIk3Y?1O4d8NB~#bc(@M+0 zOXQ5c9;@^wp?Ba=hA~Iew`Rnro(AoL(%U6{(ruy}?tlJe%Z0uhz6z%E)kMtWyO^SG zy~#c;1-zr(E)}+UZgXnOgq@m^3y4_`f!7v%>5yvy=5_L?KFCEoxLp(BWEc7qoF3hn zJb+(FRO9cL%3;Xn1r;X6{Azjoz>mJuho}ZCz@J?t7`y=!2a9ivWy!C8*_;e~LodDT z%japsH`<-Ckl2MRQNUc{68bZtSx;_YU^2#=$8z6;*9DWr^ybvWn53W^ih<#=#eaZs zq;6U@isq{aiNr)fbMN?DIfq*v@EMfuVNU)DZy*_@TBl8K<2PpH^J>xt-sE;$>UGJj zrQl=ua8Z(Vi8LN}cAIChx%UT#;o}x|O_@B*jorbJnOZ#uGda90yk?l_KrS%dZMg=~`5GJ4}%cA4If}^|yBvb(*ni=j70XzYZ1OHmGTgF=Rpq)}I z`Maa``BEQ!xNa|rNG&A-O<#?ZCIA}ms4v7X`$Y9(3zBt*Dky-dTl%8ehCSM}v=f%< z7>cZ?Y*A=L-W?G-SXZ~N7Hno97MqBQ^nJYVmiQsusx>^-W|md@*sn#)hum!^AKtBB zN=R4(aEpH+y;2h+`=c14&bWk_2br&>EabuX4My6t*nfNBN;R9XsBA;U*UGJ zzzqN8OPkpu$=o{%%FZoeGRT|Inz|tjw|f}#vI!FBt}gn#7Rw}T_}nw6?kiu4t2mhs zJ7C!}5@tJ@+azr?y;W&Cw#znur5AcKy~yl`({m*Zxr@-N)@u@BqH5?v14#>KXPmm4 zpISgH={iF-=E$HyHt+bujH?Rz>*uQMhge$r+#PaTZ+#17%c@?y*wIpWcKETI4?`Q8 zt6AX73QJ%vZ41lpyWy&JeCEsNITM<0fA4lwC*H%r7OL!)0mE*S4T1xe4#b4k%!7Ip z79e$a)d(Pe7Aa_gyyzrgvU1^4D6IhVzGdqZb3Mufn<<9@-~8yl4f7ybBh7`DfKy98>|&aw+6dtb5;pGRVyqZot>pFHvYAE!6c6V`)x+vxlw5j+W_1Jc~l#mX&_Qcw*=XkDqxALMP8B{ zzTHNoY0%9pQ{%1(_+|F$_V%-UN@~*B^0C`cA8!eNUCMUIEP4^LhlLQFFa^7-b3`t< ziFlKrVpp5wduYISHM!n`ib?Yjeem{$^w2b+ynUR}4?3#FuIX@k4GzP^meAE7=}sJ& zqB@p>k*#NdMsG#OvW6>ytKQMX0{sXKPJ&l9Jfu)jSA5S&R-$Ly1Bb#U02MPU9Lw-x zMrtqx>b;!~!|l%S$Auv?!DL-t=@S6H|0FLWO6za`d$KYZ*N<~gdx6nJ z#=wfcIngSG&CHt?O9G|A)#DJtINI2Ot@Vp-83$m4M}3X~u+vQMmj5Y|ip7~rHF^^o zXWUY`OgSSef=U3Q{87-QtZFHc&&ny3*-#EWIJmvTT^AR$PCsq_l0G2FlgX5)5hfC5 zU5k{aj_Btax;lR<&+wlXJ?r|eZ#+IoG|&kKyUkhPFW= zUVg<@Ys3t`$DV-c;5DnM%*BQhZ(i#cC)PIc(g%qrC>LY8lzKcxUQ4R-3L+5|C1mj$ zFO%dO%No9)G*_CfM$06OwdVui(D!5wR(FvlgQk;WhutCEslW^l&lQfxtih`OJ%g+i z)O+8&@1)SO6fDsPp;}uW&;exQ>^E8RN=IV0Gr6?$-~JpBP5>t_ZX&vq?5Y|~dW;W0 z48ddXAxFgRtCqSFy7PpEHS{9k6cRqLhi8~PCRNRwWv=c##oHIB#l$mjJ~ zH3fZ@4Pa${qH(7#tYZ=n_;MBIAYiBon+Kbp3T^pJH$TSg#=zYBn6h1RkxXO*8(dC$ zL(N3%TGjHx3CyTbYPgJ<@yvs`=`84K&*_YTaOz38KSM zrIm0DrXgP%vM-7Y=>Q6~KCnBsm77oGYJmbj!n%Z6R+t*IH_#=71vQCx`^}wif7U&% zRj#to@n3#3kGq65i?-kZmICc0T*sBJ`NJ2+7zZO+;Q$fUNdPH}C=H2O51~X`&@p-O zPI(uUK(!AL9?dhiOaYhE6nMfJY9u}YNDeq-k-Ny?lc2Evls(S5wHM(PDaBfd(MZ-| zh4CR&4ixgh<8Xp5#O=?QT4m4)L#J^DM!2!Zv23* zB%*NG*6W5=r9ISQti;zLztpPy9cv|=!&w0+ZW{ATW@~d+0P&QVsT5TygYkj#axnX| zxeLGr$8%}=>LYoXhD=zwfQu3$jxY~cp8-j_zhzJBQ`%tV`f|SLKEA^n>4+nSIv=ZK z;S+TH565Pu0kGaOc(u=AEZQXLS$e!De0DF*@T`AVskZ5Tm!z0G)vh0J>-IDtt_1Q{ zye^dMW3`8cgT~(a1Dsp6A{Y23eaiE^d_~p+VkA6lp5-lxK_P5GSkTz*k7JGmS@eZn zGdPrcPZQ=>4@C~*y%_z?waEqz>wY&QcO1c><>Ba2nv7uNuE_98P5^*p6|1#Yrye() zoE-#@x_{H*%_t57NIbMCMmJ!V-ROojwCc*;qLp{T3zzhf#4YN+)R7l>yqTNN`U^b< ziAXFi;Dl}0$E5KUer7RO>{NBYM)gU5Sw=M$8kTauyCG*?l84Z94szo)IOs6P@%nIF z;G0!5(a0x-KoSE~`mnRIEZBM}BnC|h;CiF;sBHP~LJ)`{QGna^E~yYMigel%!`3dkCTj$HayN%MmC zR}jVyEN`XFp1y;@oWoa}Ksa(ag&n7`mM`_2-B&esVk0W<7%n#^mL06{q4{e>G~|@m zKIx%W&p-d31fJDFochXmA}7O*L%+9Jj-j#4SHF5OL>z9oi^CNy$09)C@(z=!;LT8~ z5GGb5CCv4((xV2?6CJX3&(emQBqTHp*xx~h5Af8M2qTeH6bPIUzLz|Y?h$DcKZW?B zS-vT6>kQE5rb@nEc!;psl}?ji11veDYv=*mK2*QKF4i`87(O{sJlKQeLx|C@k3m}; z6NHYvx&y$0h+GhX{;SFAVQ=Ug#F(`_EH|-YPkr6||Iz4Uq8UuTMn}S6A=$h6c!i7$ zX6-3YooCyvnRB99 zn0;38tIvAQu1P;Igc2l3#K%*Ijro|Myr&-Dzf^BxJpg`_dyy1a>ggY(RDYFb@FeiV z@ab}b^6w3ApSH-HhT*i>mdaGS=&q|Y&p|26cd&+}ANt^`L8*k4AIT%UR+#D#G*i15 zz%^KGX^j32Tk7p_HCsfzSH1WtPe6#H;e3{R-#=@29eYj%EgbbOQ_KFvOs*M<9W}t# z&uyD&lkj4Ee!@>M%Cy6u}E(qLmue+G!1mcz948o?~k`V%WEJ|X3l%(h83 z+0z;U_B9%ID1@b1h;_i)^A3T5B^QGoGbSK0=m2kT5YWUu8vIx>bk%=K&FGBzft(K# zi#|UJowO#P-20h}N`W#JJxbj6EZbljWXMWrO1wd|TzL$8Q0F1rwNstfVvH}G)u};! z?u+0GNqunY%|2?rHD_Wj$FWd9<@l4tA4_(JEI8nE^v-lZqdiW5PvG<_V5nI1g7EBx z+dm{%f}2<~8&AyC`RR{{NN0`8embcWbRi2BPo}x!Ko#Cyk zW=LADmf7j|?T>z!(Kz8p(JN1or?1qb)ypM`lWEGcm|DVkf>^TfKC{lT9DVph$U$1h zBHw)Y_yIQ!4uvdTJhSl~ss!MYZx1eXfcRGej5WtvpeTH8uAeW8S*_Vmx%W&QoqDr| znoPe3bdd5E(-(_=*UV%|a0fmi(D)QEH`M1CCeaZ@uA+GLt@)m3B9l4Ut6N|EOjk@2 ze`sIB_P6I9cQY)YCSl3T4@)N+cE06jNs_*5oD$fP%+Prt|)P`nVg6?{~gm+*o z(4^Ym=xW4lAw<*4v-P<((-)K;ojjMKXqeUE=!dcVYK|P3Ge9k@VE{=$w!bN=#Qxd2 zOQm|rP?-(|3d`YlG))WZsQIqyjdffLr>QwIv$ahRLB`Il|=7@3}$6IZa~7*6gq zBboiJ7VYWjjK-V|m8fqsONV|p=(@Vi90oROS@qiM~RzlB9za+Zaj2#^VoGO^lZ%&YHbj7j;zOEBhS`zrJbC>woX*1288K@HpVnOkVsp<|J55afgg^WZQ_uz%9 zp;H@E`*}QNv4!(D}BOA={&I~mf>gMEed>G(jlYX2SXOcB_arRg-G#QH; z8nSBo-bz}1sU6qv?;rOQA^GAti*o84b!4b8+b#hPnG6=^@}U&zfa%MnFyM|4R}vJM z(_OYe_BxdW*%lgd8TI$bpHQy%pMP&$^snf4hx%wE>HS!p&0Zbo9#->o z)9bK=_)?l+Z&m`2K;~7F%Nz)BMO;mCw&AbH<`Hq<2$EcwjNYf1>?!fL(g~j47>-oz6QFsb2mXJCT#wLFDAAS#mcvsFX8Bt35HU5? z&VMMH%W-{F|wQ{^xLNn7(KZy43HvQzqpPbV98?;G%a;ig(hfN*Wz4R zEKQ8=uC-Rpgns_CIuxk&y2$LoC$BGD1hlz`@y2_cG5DpJd- z5$CWDr$F4&Ghr*{(OFqYC(~JZv1@)1%DgXY+5YbGeDPr{+2|w7vyU4PI|GLeSiw#! zJkKT>RCF{NjLkz2n;8GvmtvmqIK681R6FsQO+Ipt56-tW@7=my>kYB zE_dBbYwlga_PlK{EAtQ!%~mbXcZI=N^`6o^j}mZ-XlFeeA&asn{uRsdz_jB@Xxc#Rs`v(EMR z=4Rn|^Z@+E%}a?uQqg41@n`ym?5yx^oEwuf-i=&4fZa58OyEHxt9e0u#BF z(lNW*mX`4D9Rqnu+!>$(7GK2o9?-V# z?+sjd+QXuW74I54?s+PSo0ub3KyTu~ zVurH`TsJJoo9}wl$}Yvhj<3$(=&9UThuw`LEcKJ2X; z3$hVmcriz8vr2;a6-4do`JLgrdt0$I0Ddk2YVQvlm%I9~XZ&iom;S&Dn`U!{iP?iB zt2a<-UU@1O3yFdQy0}hNCq=dFO1FlXKjg{^j!6NMpb{3>q79N&BhaG*bDt*>iR&et z+(uRs0gD24u28vt7DkfQq*RjmAc}b7bHGE5lTVONZug} z9}S&4u|nQ%jLCsU+4T8V4xmpxiUk(0WEN^d4r{+kW|i0cJ*0Y&7GcSMvO2KYRQAny$@1HkCe zvP|N&I&oy-Z;}K_BRY-;mc`ti5+?j)Dd1BbiX8_mtGkDSd*9^##cJj9Yp@+d$3tdevl#ZpxAd6z zDa80156oUL_jblZHX0HZ1m5ZvYEl7xCT;LQ{_S|)HoG?;YVDVj!^cP#un5^Cd_m~y zEeTu@Ty^1fcNrq`yj94h3Ug_(u*?S&Cq;>gCV{6^Cqr?BFF_fwYBXUA=*CSOgBcn^ zzRZFU3u&$StyQ1#5K^zutUa&ll{7Jq33x#ZGeXE4wQ`j@>?jY6WM;46f~tv#65`GS zUqCEME3N8DM(X+s*VbZYOHUx)Qr$?dd6me>^xa?KTX(5Tp75*DptEb0_{fB~+=sLL z`gWd<_u#8R+I%ceQ-#ppz16=zt@{yx}{X5B}s; z$A$`XZtG#C_2k;TGEz%I!JB(Hui;A*%JC_)l(iseoy%~Lv67>SQ!_sxqr+c*6(!?K zEe?)tip1j8u-<${vVPU146N_Lk{djgkgf`2 zRSX*l;!We|>AaadxHT8ZeH`j+wEJW-?5kp>JS}1)OtC`f#weF*T1SmlK@=K5%kN8uL)ID+~F# zLiTWFnNwTwM<}zxGp#D$jHZ)t&^Dm+{_hOJcBzLWW=?|=p5CLnV@G^*&sLhuRbSVf z-H+aro44&9!S>EoQLOdDUZgP7(X)VU3G~u>dBLi|RW;7lT9Tusy9C-{@-vvJlmlq) z&^(7jy%i81W7{8u0$FG`qE|oekuSvd1;>qPi#Xs?i;d+*N<%hG3B&!)%ns|vw+;Ee z#YXGCtGbYCCxbrpL4zVMw#WI`qYa->KHIyB1!nqft?r&fLMV*{FKON!CbsGyTxzH} zp7&;0tr@dMF{V&6_@xW4fK0rn-o(acG#_I-c<`uR^pFG+I+^^z)_LppL3DRij)Htn z%JfnX;HY;*be6B7W8PM(j^TK7H(?D-`I|WAW(90s?~Co3uc=qkXaCyB$k9P!7jP2RB?J>< zh5zs-Cv(HLw2#E`T1LCXDGv!X>Y(zz%J1tB>h$YW{GWOqYi59eFu>(>K{SN1HI{cD zzKpxC0X1LJG`g!lbP)V&@DTR)kzKjAacYxjm6>-S%zD^rg-22*^27|;8qjI+r7wcZ zB4!k)=6g5tW@(}rghE$QFTMb8+uXDMr|i_Qw*A0~CJy_aZ5CGjag}!HR)pN4TRG2| z%%M4nHg~k#dSm^GPgeD%Cgt_hP1mvYJAJqEjNrK|RJ-i042dygK1DZBo=uMj50Mq2 zfm`uZsD{iA9u{Q1+uvML9t|a9ZH#$1j|pRPO>Nm zuwl4we$_AXGSF02w?E#U#IO72K^)sKi!phtCSfS=iq61DTB+w}8nJaQa-h0GHhasE zZD0o0qwGl7&oBhx5dp%-@>{c7Zg6IPgn^FoPVXF3!{?o9!uzaS;^tV~5<;%H~ zkBX7Xcpd%xw2PWbUOU+xtY@xxz>oaYka631rdO(-BZO76c@jGgM}t;gaO0np7XsXP zQ+huaOV&v+jHSqG>*s`l{R5AomA;WnxFEMMLok=ZU7cJ={NGe z`TzXV-E6hfs{=mvSCdrI2i4@{4ur5fF;K19&K+uPho!I)<(=bRn%nxdbo+Y9#t?1i zX{tkShX~5T3J_YP!&>P=Mu;XYW|_E@(Fs*CM~FU{+^VW|R1OkAgFd{A2uP+AUyx@D;1WY=<E!7bNvrWAg( z<@1NV28%!(lNKly6n0oDa@Z`7e2bUT|LT?p^4ZFTk4Wqb0WeRFYXmvdTqC^B#2?S! zmC>YnoE}&xy`A5-(+pzaj9clvHN2!RZW$HKo@+eOlPRq zJKaCWqQA^E2^z*{SUyuCopd|(u^NK)U1Ua~+@CTN%FJluyb>W*Ph?*T(g0LlTR$U~ zcq9>e>OQz{EzNct-}tla zU0~S`EhV=#*q7=P9CCpepi#ch+?y)nlTfuot8?q;#s&Ef_N6a{KJJIMQICz^4a{z=`mnfRd+-HvCJ-p55`BMK ziGBs(01}Xpz9(cj-(4mpoOW))jIY~koN6vrH4IO=0HcMI$yKzgzxa~TtPvmSrn_Xhm$huU^zIl(6{U--oY=>#8-5I%a1{jQVxohH zaG;jd%}Q8(oRK=7%fg0Xw${o`~U#K9G0hYGHU z&ed0>cf_nHAT~eV6>dR5Y*=vsUMI9<0lkm8SA!v1QNL0Ik;EeI%j)jfu~olkgAw%i zWz_cdlZ>WAIEi6=$TB-6?U^FX%^J|hi?+57yJ@t>bDxFMN2~&g$IX#_mz^WJ%Y+uF zkQIedT^x?}S~{U1kGm7v^jCyNnhviOqjnDLlIXVb0D_DKX?^Sl5a>4KrMK#l z)}p>=PVzl@gnRny?n-8{xZ+*PtSSiACb>b))+GR0*W2O`7V0ZK$U(B?1$y?%H} z7R@+VACkoSUONz0l)T8NR>Ud|A(oNb94wy10G)qS1@=v8uBP5O+96#H3FiyRE-2Aq zxk$Bi4Xe$)rdYh?AsLo(QcJO9G%T&&nX3O?J39VPNC@HazcL-elt6!V*7F`zq1+WH z*=nX=777mJE0+u@YczM$R8x>y^AO|{$=RX11-AL0D#IQ* z$9R8^e&nr*v<|pKpOA9_{=BK&_r=Uz{^fym$m52C zMV2r00mGWxbV!xETf@yiNJ;`ZWj-oBghY}ymU{2R5uNpq-tL;S3M(APmJ84gIR__D zS0d!iQYb&)n&VVBxL=K~wDoE@6}O#|j`>5`t6qeLP<@}*irpeGgd5#~7UlO#ZPt?k}*@Qu7Q8s7lXq};XZl5k$my!nNdgwLuH zIQ-09$J#zLRG(|W9d#4`r&ZV5Q_F~EC$2^VH^$qe(hu82Xp%`J_{xu`IrMU3>7gnD zvhil8Qob1gcrM`PfEGEjn4nc(VJ=qn$i-zgZ@od!Hz~+KA|SI;1lKi7E;>2Pa`$CI zJ#+~(mlZ>*D~(^o9E2ZoC)xiyu5facCfL~cR(C9x*EcXLl75j!t zIaGGJ7yE+DnF*_KN$HcF|5UJyuYQ>wMo4&FJO4_~=da{YjO?X9$NV{qvXFCcSE$yj z-MYp`b;g43yQ6doA@>~tAe~=8dqbGPK|^Q7BvZslP=J{Ykr3+JO`g()A-N_m;$siP zUF~Oo`$L53vt70YJ8A169xukiy}p3(=ps~Oyf!!Tvl9Va4S?#XE<`~WG}pDeCyRA3 z-tqnr0a}0HnppCK(YQ4#7NN`9OB4DoW&L+Wv!?I$quM3lePd(4D&{iwu?E=SAJ-<3wGqvK8otTFcg1FHT3KFGhr)| z3M`_z8cbj;+gzWkW`s*+ncWD!GVTadNOtS#L&@#O5JbH|-8!{c3WMIDzEkAL@YF%f zlLzUl*DE-QxlIbwCp(9wU)Y>nQV=-!z7TcT@DVU*4qZt2oC6tLNvwgp4hiIQ801P9 zURiO#2Z%A0fTYyyvPjMJBS5o(tcf)jIv(BEo*q$y@1$ z;~P*5y~dP?1dt8^KtJ)*_!E)FR5JwH5x3JHPXbp+U|6auzk@}oGY0kI-LSqwLZ1Wc zo&$2PzMPC$)Fp6P|4Ir9*dzs}hW8Mx>enWh(LTB+*;#+sd7Oy78c zeJGegzC#d~(U;^b*O%xH!qh_wDY*O&Xmyd<(tn0*QKcww8sO}_&9nN`G|`6|+*yBR zqhrfU5`HiKj0UtC;bYoPdP-qg^07dsd3Hlku^OIKy1>ZqpN z;9m-G>y590xW<9q1{P#DvTOw*<%2(SO?6j&iGKB+Eq>^((AMH|&!5?N7bOfmIo10p|07s)s~2H79u=n$>=@N*8Cj>GzTdvKkA~@P@b_ zAYLQHDtirMZAxn&eVvtZgUjHx-hci*kz~PHG2j_ss@;BB+>g8>?R9(8ql~1^b;rKCK}Y6dBL=x_=PU z4aO~IKb~7P<+sD+Rg(71BuRWAP&tXaKl-O@_xjJjj<|Lsi83+fu96ypQk0FCr_O6^ z4zy~p|MVy)NZ*lX;+SEAWLVKg&{O%*Uh*|y1=QiG1+De5qq7Ie*UdRy081m% z=#=!4LU2cpgfXjzpDsmr*sWvo07gnmgp&PT*NRXbs%y&QZ-9P3dR_jc311xN+BNyi zZhYtwkiR*Z3`r*X-#o=|>2~QPh~V`*>)?MG&Ve^)w z|D%jn9wF=^SlnQ71BjJkY^7F~>(N#N>a=2fbLVkxpdKLosR6pUj8B8O*&WV4ZG@B_ zE^PBIQ<;=ob9gda^8B!EedEZ*99$B!OW2eO3}(UNzfL}2U#Z=XsCNM;vNIQLZsj&~ za2Kv5$CaI7)K(A}&@Rg!fNovU_B@biXXi>gl?^lCVNWdq;|2cQCCeIBo#qn`Om5T9 z;Db#k*LW}kq_E=7b?Y;zjYasiD>mV-WAlo<4hyWG?k_b!gP7>G0W3^$6MQy!pcL z*tknod`^an;keGf2ST?F-w1`*&7F2j;df=MPYKTUYiA}Kv`^72F9=UwjU%1&APA^m zZIF~1Jj%*}x-`U_wVcSz%#$9KTZkVsLe!j&35y)|8IJSy0(EOxBB zI^P+wP_lT57Kmn|9C+r&!UOv{V1STH;olZxG*KJ&OUXE~`P$cg5I`0xjk}LZjeRiB zZW*ar45vcN`>b0gWD#!YNR2u}m$$N{L%d=#MC+H%uhY*_8k%|Qr`pQ!Ea@MkbMgPn z{~rjy#Zjtjz79|9k`S9IpZO7u%2;A!!PM?=uJT*9wao+d&dZH$%!zSHiUS=8fy+o)AxJ@DgUML?Miu6}VK2|%1`*Up>FtMLbAY`7U z*SC0HJT;uXGdk8J%1PHJZs&7OkkV|rcH{9Ra$GTcUd82#`Eu%~J{8g+mjX#9eLv|` z4hauB&C_n-xXAEN-C`3)GLSNmLS#eA&>d&@gWP>?#95UEnTHi)fI}H}1lEbI|JU-~ zmV!sV-IpidiyGa%f_ElEU}viuq5Ns}6H)~iH>Y3{J{QLa)Ir#qiNPoch>hG{CfxU_ zjg3$_jdNPdola@x14$C8#2?x9gHb$-jgnYWN1gF$hy`ogsMN7 z^#(Z8{B{OfBU+tJ9WKYY9E(3Krr>hpM%#vU$fXNf#|`CidP=HphlsoB;wPf~JQ zV2)wVWP%!wZn~Ax2N}_l@)VJTrYY=I2$|5a)M(ZFe0mzxxT=q@l~5~_9LNUYk{Eog z9;RG&0Cu{CJEW{;>KQdOaCNst0A0_4qfa%M5S>oH=Qz6#6@thYD_W70mtKCM$q$Mu@0I0Atq;^Yhpd1srM`M?GnkAuy2a* zP>ZxMCQmk0hx6JEIT<~COMaj?Wu-dy0;RjkRvITNSy_5_)7hR zgQ+;*%&@dT77N1th74iPAXYm|)5b`4O(3Pd&i?m-QStpjQge1a{At@%|k~(dIA=fVyd()3}cl{FiUytpmYQ2zt zJnqw~YWaGYWS-(lU|fEk?L+U>Vrl4qm&Y*7*!0JRpTI|9z%T+mQ7{9%tcs}K49RW1 zFL~6tGh}`a{sjVrOiX?o(pjQ9k#Qttq(loO(~9^PJEgRwV7orinD8~a^s9XhT!D#i+%$P^k?p$(5C`F8wuC= z&B1pRVy1Fe@Pv_d`Hmi*xUHu&BLMvnCL0Mx>w6!6y?hVfa%sHz`W*+PuYW9$t9XMG z<{8R!KJGMuA+%-rY{y>umI33s)T{8b*YXXRY0bx7mvsP9nu#5fl+9b*1i^9uD1d8* zy6wZPwysfovY{d-Q8_N4mvpj#bmcj=VIG_MW)^oCrl#j-!DKWc7jwu81NhWsTX=(q zKTnx{IGftV9@ao^*ZEG0X%&O{zjOUz{tH{rsqbSSU*3v^^i3e!hpu+LdH z>(uiHTC51bxsK-8YPE~hbU8mq4#28MOyf(u%IO<)bw20C?unjIkG=xZydP7O)c4J9 zn)j!=4~;z#wcsgqorbF?Ht%H1tyT)pB$M6zdc5)COY9pHO?G++gMK+GTDx}rQS4|B zneb3t%p+wIt64YI909~-t5EaYnMa7{!-bP=^&M7HHO{PT<*Pd`EcYvt$Q@6#c|S|v zbn)on4%1N_tg_Ug?DRZkfi*pSg*n9}A)L(8Ma2C%3tBeiG#lQpDa-;=CY2rIJC0gu z<>28^Rii%)wbVa_GPqGDF2sP3zwqbSj)Yw-dahQiQGYBiN9q!9(UMTH%ZJDqI82$X ztXh!Trx!XUf|O&dd$}d(Y>hl#i2E!z&s0aD_sfPsxp?244_8TWgbF+OtyAIf!M~{K z{P=<8u-h8gEPXZW;^0Y0Iad;(hs~Fs9B{6?lp!1lyLRfdDI0I&z?NPb9{t%y20>93 z?e3l(*v*>wNWecmg{U?4C*fr&;yvN`P$^Zc8O~}9>#l4ptSQa^%h$PPS&r&TctUr1 z`TeM=)coghdrQO@0=v$S%&yMOwm}Ff6aukIC5-2;uC>IS7Bo2=kn$J~9~u-#9l8yr z(V^4N`DakImERBle5I8#^m3$Ys{kf&nymv!tNPeizF7f8!UNtF$+;@BB zRz#-fQ9eP92~e>B2VxrIN$lrEXDj5-H-R+RUMPH!yM|ZwzPwkxj%;Em)Gg{t4xYs_ zm7NC(6-RcmHtTr-WnzW0L15>?E^fg9g=Qjo)_A0HmTi9)zCb;!~u^e2c(AUae zw5^l4x>unjxLQHwun2jSdX^@v%;18v^R=FNX_>wc<;C(+z0&*1^0#%GiMK7NcHBf5 zuDauLH+fIq<_`2r{cuSP-eE&(FOn=B) z`852Eqw@^_IjPl06HM-yHE+o3)P0js7PJ4omnxZq2d-u_vERmZV`q2daSmO2G<4?& zU;C|mIJj)Ms$3XwtzDi+Je-dADeoj|B?0+Uujj|R-|BzIpgsD+${-J-k=LnRpiR5Z z<5EwmzcYE1oW?7>S07rn!L|NAGR+ zwKpqm#Mr`)Q0;HM;vsh4Dnyl^@y>L6JmL;XMsxEajJnp^-n9@YqVDQ7#A3t;Huv|m zeeQJB6{7}?iHYZ83~?V_G~Vie@uE)Qz%;W|X}7zq?+F7R&+aI=YUkRShC;Huf>@SQ zs9K4tUTL#=G9!|=0*_cNYgL4`3qj)b)vwb&Vx!aLJ(oKwtN}T5Q~<+(3^9@Vwzwz z@qNS$RT`m7iFoK!?ZqOv=i09~6sS+4X3z&3_t^>-OiQu{#kELn#LdXq?wu3J8Sd*q zcbex{vyZZVo>5;7n@1S3N|G%~t~AO(P(6Epoq%-LN6>sUSdY+uA-*zDBf&?^Jc(Dp zr|m-0Yw1d1cEERMc}FI_ZoSR-;@U;Q)wQF<=*kMGEpQ(;aB-`He~uVzmmC(eu7p=k z9Qyi7YVU>OhRrjdb?aqenlJS=wk>Y*YUbno+Rq#N7QGW8ZyhaxkGD}=)F~|~oNFm1 zpQrVz0(ZW{9eQQu+7Lpij!fHNQR1OY8%KhUZp{MKvqVVX3 zo0c`g=3rg?(wnforZ4K{l~`!?4bj?1;T`&9n>3@;%_i1jk!X%L2*e9hQC~+`SjzGY za{bxVP^+^YiSW@`H6=mei_&~&o~CD(baV44t`IXlwWv6Gef-k_{UwJg!72)OYhuEmHlc8PRR4gD}udX4J01pjrJm5eOXXU^?X|_wkTQ~8<5@Deio_(2e0#cU! zUXK7WmS{sdd2MNBGP^hvzmBJXb?q`k7Q{ig^}1=&jeI%}C@8Vbb-YmoB|7*%)%dFe~&--?K*K%zJ$}Kg0z1Ob2Rj zEP>;s)!~p%{NZK>Ue$ zg+qzom%HqWw;srlaxLefUk9lphY>+1Iqr`effum~%YTy<8+U6kf;<=?p%NQ6eI zuiTY|2J**>eunXP!Ube2@kq&T-REH*pq39FLL8^LX@9Pcb080 z`EHJ=iL@cBlf5U1j9%lwb6xA@-lh`B_S-PKfn#wj=jflW@xG8J^O=8gPXearaekcVZ}K zy`+C7e-y8Hq)%Jr3vn113A8+K8O8ySuo%V488(h(;|;4Igq$alw0o>E03dm< zZWlh;hlxlz4Znyfx^iihU~!m9nUO5C$EKeSE_nY@6F+8nfz3#!lEkVE&+ac}Y$YH7 zzv`W^MGf@pkz$c#i>@4c(uKRb#z99fPG0=b=WdTCUxi|XRf{%X5N+0@br)->)}DDm@7(!H1Sd=Psk)kMLHt09W1`5I^UPlv|IH?UL`j& zcwTS4z?9^qR7Z@xX=NzZ(XO%=0XyoIE7f#(qi9CPF9#eq0;xj{JsFY*aQobf8kV&#f_3E zqV4m=sCnBI@ikkWhtF%{KRx53PZo2gV~2 zv>rA~s!VuvV$}lup(&a1?;G)!-Ppg$X9dK`b%{Jof-Cn-T0ahHA4=TsAl9jX; z$l|u=oFoT@2@aW~tPLW0v#4QTp5Sy=um}iOR#`cvf z$XRfiF^$)Yu>&WgqKjc8XdzQQ4vcx?a5o+@5=0AooDG>y>Y|1^Ec%svoT3I1nkxZj zo?B|}J+$q|vY&`{vZ0U%bRB}c*L2gspkb!DTt*u2HP~6DYnlTfM`ou_wUKv#Pw2PL zkPK~GMjXst&Nc1yk7&*IkIpBj1|;&eR;SvQN&!ZHPUV(rx0mJ$eaI5ThQCgfyGY){ zr#l2IgAD}0j?CFwEXqia(k z@;qCrIhC97W?CDCWI*g#yyqg14ha#bmB2AOIHyo zeE!LAS8{cI#QOOTwNs{4G-j?fbK1m)AO_o3K=wui3qqwq%vNkPyhwyPJFt<(No@-c zBSI-l-_Pm__eK;jw#=KbXW=qI?4C*S5AZHIF2Zm6gw1!N@0sa=YLmnn`0ihflC^lGz|oIn5F~Q3D@I47b=! z5>Q2lVJwz%D}zu(+j+BF*sLywoP?nHT^Vu=99xyMdKQ%3RPsU^GOApz;k!U?73qdJ zLKhbaTl%DbJBAi{7b>>=`Rh*@uI$oY9*`S%V;vyPj%_2G6^$-pY&A$7l11w<;s!4m zQ*g2t)d}NasM$Ib3C_@5vUhvuvr5hW21RyhKsQ;YQ%);+ephmKa(l1eHX)G;Qn}3B zu7X!THPaGEDHR^o7?SldI)L;GMaw#(j&iRyQ0xd~A{rjAKJ+!UW4BWRNE5pHO1&&? z1|s;L`pV^#smj4h$yPC`vRF9Z8mYG1Tw|tsvZqErrI8l4usDm2STuv0xx7d(O;2Tp z6mjZZ2k&X6D-`+)JI<25l3dNR&YIk#!WN8TF#CE?-tD51ya~JsU=( zeesYyR$c;fNuvQH4Fu>en$F{5PyiJibyIj-mcCg}f>yk+6eU1%mAimy+(b%;cI|)u z`XY?VeRK;e-bQra)tSLW7|?rb-U@6_H$k9OQq`NLC#TF2L^&H(2E2&=Y}^9`#f8CO z*{K`YtQch;nu&SoEQqPPN9_~vv*Mi2*5cJ-x|@WPq?Nbrn5dmEFYG&(?+kl8Hdu+= zP8MeL%t=1{C2@+z9^Zw9AVweAt<`D#)8eX>s9Vj9t<-@Wo|owLY0C9u>bn54GO{vq zjc`rahAOKI@-1X378mx@9J9_eBOA6#hRpG0*f~wxD2{es%D*Z7(4kSG+0rl*qd2fTy|V2o08m(1QW)1A}Y$YzMue&feT5 zD`8`vH%SsNbr~??3?G)Q2C3;%sMnRrYxB5ZgwA@V_9SXR3%VVEX?a75Vrba(t=G#^ z-&NBy4b+6musk8#kzo3XZqBq>e2GVAl3?HxX1A+mL;Gq%RH&)l4HljbM!Ws&yoQTP zU`w%w%~Co7F9Q@FdQfZ;p+|{$m_7RmNbIQ5SzFKDR) zDXmFb6W6oqUX~lCJfXLth?#vH1dC^baVW$@N8nXsZbtktIKvGQI4rQeOP$bzX_GHq z%$(#AX{`5DsQSF!qzFUuOLjlP+gQB7q;6I5242&OV$IST(+WUwt>VnH&oTj}6x;|X zG~2M;p<7P_TYTlfGU~qw5$17WlZ@6}ZdO2fc4)5(XiNQ`MI%y-$`A5auM&KSkXc}e zTh2PxGNG32NGJ#BFO7WWO~m-spccQKBq8o*sv$A1cxo`{uFktb-~ibeG-!;yJ@Ixt z)4Qoy7`X?YTn1ue9I3_R8`!E<0PrF?&rEeRjerN6is#M9EY(MmLRFadx#f3{C|`=0 zmQCQ`r(5gX4rFxhG&G}+jfSVKW-nb7ii@Lo=f&rFiZ6OMdS-_@xlTfFi7_*ci(0!d zgcdZ8y!e!zWF`LM0Uw*Sz@k7)Q5Tt6cde8(Ml*)e$K1OO4!#-%lvxE;WxT#9T>|CW z6n4zJ(r1=2pbwSSqO7rexocsk>x*7i38-0;-r$TWbl>Tc+-dfwquCnPT7UHX#Y9eC z_P+5Hg&5&Z=nm!JyQ=<(g9{v>ptuJSjBm$H~JrY7%9B!cKtn zRxe7^iBs=bTqq)wx)H%*7$i6fWRUsUWrQ#~3Z;FSwx%TwIEJJZLn|_9I~$0vy&+ia zAK=5+o2D8QC7n2RU(7No^LkF@z=uxop@ugy_J)>@9zry%USHd#c{X2}7FaHFYX>xNbE}@c zGml~aZibcui)=ZHj8?A3$T1MRx>=oby^dJu1guM^um@^o_Bh=(S~y$N;!~jK0db^> zhQV%JIWp@Ds>_nL2$?T{`2`trWAv`4YlwE20Vw<_@25ryJYD>m|EFr zXgP9iQ%)ZMWh8`sZ-hn+woRENsb!QQ)xcD`m{W89%qV7cVtomtmVewIruJl6qLjKtF) zzCacd`-IsEl>z!4o=J7T91=M-RtNr0LHk97mr{K|cZCWIe)7aJRCQ2*lCfTma#wt-G{lMZLI^W3-m) z3)}%X8Cl_LjafUNt{-^Whk%kbDI!$r_H$ce0s2zSP{c1akP6_7*FlP|PDp%q&&(s64GJtg# z01YS-;fH4NgnFVk={glBr*4PY$HxM@bJOIi{$7eD5YEMbE>p3i9eNqeyjVk+9+Z)j z1iYgJAqfzs*^~=U&baf~7lWF~s%|-LqDX0aonzbHtJA=riz7^|ocbY*`u%GZr z5zI>c3AKEPqudPj|mbPbE+TR!8pY@yzTA=ZFUETzf49ajLE?6vBY$|(Wa;I+x4l_V zv#Y#nZGqsnwt}X>+W3Y@K4^wjznu2bqcu#9{73(C79WY!jMH2-&M;L_Emuy3icW>j zo}qx$v4os8zBR#QGFLj99N$6*`n~Ddv4Gp4i-ck*8M3)auT<2TB~fA_l#y#b>|w>W zoX|5Hqi7z$)Xe1Iz#M4VxZRz=xfrk~Op?dKKQeq8wR5xOxuo~eAl!zzyv{6!NgR@N zpQ=&%=+sF4IlF)aO$Ih-o-AtUYe)F-Nq^AMshW!t3_n^BKr<%n@IS% zGbS8XjM|*}B#_{;VM2|${%)y6D=fcvuj?>NMZJ*%dEi~TVpot7i)n)QW}~H4yEd&- zrO?h~!_IccJP9s*Wf95?IM*i?*6L4yg@+!-bUdZm(sbbn?Pw9O2|}9&6G-YRup~tB6iB=i4!mP(g<))-p4&ER!1|hJeJih z_H8&j$UsShecu4*Mq*^ zB>Q4}+c`&6IE(yXWYkfJcId5mkZ>`axa*|k{c^j-R~OphKj+~TdzjKHS9r{SsM$!u z;nJi%k~Wi%_YMWmy-a}2PK}m+vhOhsO`l@$SeCI#%i(Odui^=KH@1z(LsrMj$I&M| z&8uEEJ!4!Wt5I@<)JT4mQ8(h9(P|wSywbza2Gj|y@ONc$YoC^S<>I1ukLD&Zpxi0+ z!lfuU(Hs#KJQ1SA`P{tofb!{-H(r-h-bG|%mooZ6*w}~~i!X2sZL|9!S=OmtEe3b& z^D>kG`0N`v-z`FwepPB_u@s#Yr=pUt!xn8T53yi~C)R5Hez{_lyPhuK^Z2$xjKM)- zgUZU7=29;Ux#oTv#l;oPCRXm8L4;9tv+>?P$9${q$6@B~Z( z1Le!?A z-AvGJOkC!2d+J|v$5VCVTT`j+&);#D!;@m*b4&K9SI*-#i1OMA!Eoy(M@z9EwOv3x z^9mw0D&js(VkI&f6f0C>l|0JLQ?EOve5-pq9vzc7O2M~eCbx5=I#S6tBDo2sygsSy z{&5K%|4sI!9~N=RT?YxA;m20IGQq8q$JmLjJVrBD+qmeRz)CmiA$@wNl|62L3Y7|C zz5G36BKan~RhNLuViH|+l)W0s_pNKPzMeCQ?SZTSQfPv*K9j&pEEZ@FqUv0(^DBS9 zl$-UI`i0gg?YzLy(f->Xvv%aa`LQA7I+RC(vd>z)Wvf%>7SZhd?yiVJ1tPjk{sQh} zc{S>kYA26hm7(D-zm@tJMHgxv#FkWAhhDKF%r)Pl(Mp@ps^dRHwW&uhJ3Unmb@k!V zY`>bn@~W>l}**NosD^3=)EVQ4UTld~~)g`Av`e`dKa7_3Ig0ISbcj zg!Y{2=3L=&v@5(n&%e$8;=)WIkZ2iaNX>E=`26vpwi87LXCC^}DN!QSxt9dlVFr{!W0TTs;2p2p4c*9*DB!el|K->mv z;JZRPrpLwHJ5sM6x{^=ps-P0jKCsqd-ND>t)0q>jY}H#VuuMrB#GlS*5La}Op=qqb zL&!84$9n{9=F-c{7Q!r`_*!)FwE+3?ub9jDpsp^*)tX9qXLEYF>z|zkCt6%Bx9gUK zAG}E^=i1P?l7v$35ziwfTf_~9hTVVu?otQAp$z&X#Qrs~7hsEtA-{;*Ncn($dwf!7U$}zm^`UhGv#HvQ`%X zd1dclMRHprI}W;ysnKO~>P9?15UXkKoHd=_Of=zxe8Z_HqJl+tRv00c6}gvO z0$OU-W1w8s6Xl6;0`)OJisV~0!T8%_g&8`YNm)0|?Fb+gb$nIqw94n~gbi2s7_W+1 zijZvLuE%uy^}Af(Dq#r%vr2EhNTS)i21=fA5?+v5uZc;FU<+tj&@TY#05Jg@oLCLL zYK)b|crc4id_TQ9<}AEjHL7+9vPio5`}adn5eVeI2JEc|ndzFEAvPO$OaprQL@)d? z?Nls9Hae7BTqJt}ne5jk(X8H`bI5WX{HY7Hy_XScsj|p0?VB5)ng$_K4I|c_8-mZZ z+;#C6dBxNH?6;WSnnD>99P!@0J-#mhy+b>bqXsf0FHftEU|%hWBq*|1n*`aZ;x6e( zrUI$m#PnL`e26-=z z7BpGa&SAvT0D(^0+fnD;$0K21_+?@zG|4njyiIF}E+p>SR zI?hs+k9CoO1g_QLVfEB5MIUCuvF0nq!qT`f|N3~ZW>qBp4_i8OSU_-tFJz< z?g>k>$@RMOP@a(plM%~zWO#|>9*4KxxtC6>AKEld;n>NWv1PAzvno|g4=~!G{@1Yw6fxP-`s7d6JIn3CK62$)V>k}^xSd3CM2EKWFt75kzOFT18KF>W*x_EiVjuLdG@8HCmN(Dqs~{-kO7JEB zr*Et%B`KhMNvW(cQktgY!a8_C z?4pLSWzZ}d%RoCm8b|}Cp;_mDMr^LCA}i@-vsqpmuJEQ7`UwtjlFPNlJDBFXj38QT zgj-J~O9O!6Sh&X1?62vb$JZ4+fAGR?y-9{s^KW^q)HXpFcJab1DAq?9F1Pt)YMMue zn|ke5XvLLyn5NN)JEXE&O^|iD=;rnAm`E9wl9^UN@*t09(*dm%q3wN=zLo03I7p^7 z7Kl{q%3a4sZ?$W(CDDTbp<2U`5ndtbl$J>$OeJ%`0*;(CW1Clu_L<}sMl@4Ok6q1! zT=~pdBkE6PPh}Mu`et+22lgScsc>Y`raYasbkjGD$pGe7%cZXrg6JJ&K7>ZBr%eKW zE}GGQ#YU$eK}}P16ywAC_Nwh@8i_rW*Fs4?j+{)jq*TyP{BhqGwJS#^gfAa{a7CVLO1@B;s1A|~HsKoT>Fv(;4RiOHNN z18GQ2tqpu=-akCM{R|;AS$TJ$(P7ESaTt+K{?!y1?<+?KT8xjOX!blTm<@ZR5axBh4 z+*aSG2R+J_C`^;T&2&Isyu!#v`myZnnX!q)J3uhUmQAV7-|lumA&{x=zj9TemNOJI zc`c5Kbj~Ufi~tCj^XS(bBF%MP&d&0fK$?#kjIVZdE==Rk0gFp zoX{acJwB7mcT=O~zi4m;_k7O!rlIQR0A|#HQ~z!I*`b@p=dpU%uc$1)_%+1%Zb+?a zpR+z%DqU>7^2md{MpYiny_vJ83;D+652HN&RKbvVR z_1<7(F*GUuHjwQm3Ed!o=Bbe3r27_c3!n9m6@Q=j!{Os)9?(Uugb-x0 zcR%;`lVW^!#3729Z;3rO?#Fb1Dms-}HA!Wscvl>GMrM-BJiRSFUBm@y~Z zy4+w@x!kaN=z-mKMrJ3AFjNX{VF_4@9M=`U5XCePWxu*W#wA2#`tw-ssdq+9EWfNZmae<(mT#CCNIP22wo%X} zF|79*u*>S_{RFtqfGsh6jmL{I-etBe&l*Uhk<4pf|EDWFOg)jsaH;I6VPaOP@b;Mfx*6f{cUlpN!soIA|ekj0WQ1Z|9ZyPZ#$%Co#vi;{0xfSO8 zQ)8vmp-#V|Fs2-dV1io*xW=~tBa^luIH3mfbb^Nt&0G$WQ5wUt7o)BqTlUH1A4FBY zEiDg3F=%FSi&=6y{53_fg&S_)Jc)>XkH-Om;&?enwGJu5;tTyYC6FPtG8r2o-lOr_ z4VUpa0_*mBK!>tF6gHyqA#ez%F#ax~EbJxh(AA>u*4Y#BV8V)jJ$u)x^M6D#8mljP z;trG0vCDP%gp`-oxdWx?x=HY~+govim}U(&Jc&L^#muqe{wz$Z^-Phv12 z6uohFis9gmge$&ar=(^>r7ktjsAN%hYAC&d@NbRE2~>^OwTnBK-%`W?+fBV+TtGD* z{XThm6OgsGgoxf*46M=rWC#H^)*9_o5k2zzUo#V}6#;T36 zJ{n&2PbyMYZE>)yapTsrjNzhT zVf8hla&t&nf|}2BLCBl@5d5@vnG4771V7}C4yAv>@OrX$Fvi9=*U~GD($St2x+QMi zncNzsy=z7Iv@;r#hRx{c)T8W8LKZ|rJ|b0WqfUl)R3gXCW_d)?2bs6oYb)m>oYb95 z>cKWces1L%p$_Q+$iITptGfC`Q*t1=nfB-ewb^*gyt7o1S?dz=hb1G;3X$&D8Z?{c zpfAD|{l1aG&YNqNDTxbu>gIWd1`)b!qYGv@o5CG4MFvaP5d+{|5Bh!mr*GGfb{D_f zjR5v)2hddf3k}p}l@uWvR@_N$w+hO*T(&Ju3BwVdUPc2Kgfp1+h0Ue}pP}CS<|Xlh zHqSG;uxjbrb#ae+kXv$WjAG0&6vJ;AM$>AL6Pk#F*@hs>N*l9Ui6?JIwPyhc+LPqU zRhs*^W>}`h4h?2>L2hzkiQrgdnv~o{x9H1>jkT=>iXn1#t~#HY6f}b{@Kp}R;m|4` zC=_jJe1rqP2NcV~TGTUkpA_gAy0Pf#yZi;u^Ge6g>SJH>eBoDp<4=t@ZvLvC3nqb*PgH3q`rU=?;P;k&=vEH7CffuyiTh%mQpBuj zUufEzz#n|2e%;avZ$9gSxN<x7I7y|OaqGy;^qk8zoyuUCMDF#rG@O#Viz6W< zbOoa&JYLIB*}{VnzOVutxsEDFpMFoUo;n2;$S&Vl>5qgSSTTBEV@&6lyEm*;HE6p0 z>)P7g_NSSkZVU^Mc*TFK_uVPGurh?uUG^#j$Gk2szt&-Y1#spQM&`J9=Yt1z$bTJr z6)b<2wxui(FBFVl+^eoK35!fVEfFxIZ=d9i09G9fy8U2|5>`X-tE25%Ab|G&;gKJ( zZwI$rCJfL9RfiEJI+=u5v5>M|TA~)G>vBZHI*%cWt^Tz?COhZDLap}Rdd2K>g(mR4 z3m`kWJ$gE&w2Toec!zrA=peJjJi1R^MVQm?0OBo}3tDAY5JnqZ^aMD;gnFCCG(cvIq_5tw zm+vcO4*k{T9ktD@4{wdsyJia#Z?ha~bu{=zTo+w<*}29JgrQ{3Rh3vE?-#;MUnoun z+oAPKzKbS#aS=~c36rdusP}) z;5#3m_juYimT%63$FhwRAk-%>1rI&O9(L~VBtkYCdjxrXbG zY3^(5>3?eG0b1&-e;~&bbM1wKOD8yWX7MpVXH6MSu)gmd`t_Z`~2ip})hSF#?jQp*Aw7YXBb#0%4RI37XD7vks8$gvZ*{+Kk zm}Zlmg2UbYge=}UE?X4uCVs4&gLvxMA#{jHv#3rcU`Rr$n;PU6Bt-YRgSFG~kkq(O zq4O_quLHYHi2nwCv=VOHq$<@Uy#xR3i6zbMFA%wHBK(3$0qRpya|V zOCiCg(gE+?wSXpZl(FOk>w79StVv67#^_{FM@j{z$o{4MwX2Pi7mUgjb7pXxN`kiC z)n((^-ExF`il&R3de?H7>!dBaFI`5&Rgq%tthHNNzb&K(UKaIHnC+DyYqU$H+R&v} zL#Yr4`Q|~NgVkbxJ*^chfbtqGPN~wr-&2p!6oDiej1AX%V@g^M@m~M@%~XGJ z1%Ht-&us>Ju?=EJyVp6)8^4Gdzu>=4gWX$yXMlG(7s~L zQa6f#!`YR1uF6~mSN9Ke5DUi0%d|^To!!?yw>0FAvR&P9*14l=Na}@B17|Mae7Dy9 z+GYkvVC+q5NjF}VoVA5&!=9xw47U?NqDdHkjj+Pzf&dPUbcJLAn1$wsv4@b{@QUy& zDNp(H(Y{Kf_Et}_V?pIWq4t(KFKUs=dlv&|%SwIEcqeIvVH%VlaX8mEGFRnVKNFCn zuWrr)_8{Lo4z2934!@4-B==bJZ^XKK3&B}NuCeU83d|_8?W+;Sbr25*MR&FNVuWk!Lul0T=kNXsiF1kx%ZVYX z6=<8p9;r%Z^g`J|`JF+^Dgk7M3CB8Ti**xv;L{XrxNv4~dkuSbuXY^j@da0A8n(-l z6fIWwm;fWqjW?~XuSXDUyrK^GhiY3nl2@Ke;3Ja*E8jcESI+G@@A@m`BdKoWZRvQR zv<|lh!*?IOmXi_Pg0{FuqoJtmYAV$VzEc)XVlbf>gS*rNIF;x|SW1cNmd&kPcS1vg z&9e$G3o=zn?Xp|lg~M%PXZ1)5L?FauCSl+ka+m#Rg+pA^7+WjlSuvnsG|4T2Ob8z!6e5N@8RLst6VNJShshqZF@!%2 z^r4QgBe2;4TtvB-JO>e4b^Yi1CNtTyW+At+R6FQR*mYgxxwLC3@AVb{Vxo4|Zk_s7 zoV#is{cF|iB5HtTLhM8U{$`yK*O4i^uX1D2X!IbR>QTSPekNvb*Jz2?4;H-i&F49Y z$ojDd?wb83>Gn3fd?U2hbM*Gsxsb{@j#*!-IAX;B0O|E$Fyl$IsW7xmCGc|ONswh~}54<0}k}LkTQ|0wp8W?kSR4!7AxYR@E4&?>( zKpl^l#KDxVBod_gE^FNKrSTpmkmuSR*ZXZ(4@`5Zud<@N4(y5Rb7v7oks6J7>y!p0 z@?q{2^A*zuhFD>%5^2o(ssntMCCV)e28dh9RW0y2zNbE{Z>Smo$YryqvM`;?MQ5^N zyN4JG_T*+5-m-&VD%ABpc}(sjt=f$RXQ$}vOojQ_B+c9_M+#^i5n}cGyPoG`v1`>$ z=##9JVq_>#wImqt4659EMo}}ZHU$+gA`yQVq7MHrH#o97E&mvgSwEiD&Rn_G@k;;a z48X>+DYUNItU&0S$)WuOPKe}^vXAac`|zz(37*q-#S#G`_a$jXzYp~*H?k|b7v-5- zZPHgN>(oQRX|LIC$$qU>`~tjRi2~#G5ZI6Y)Uv6Q9f34oGj&UmGDO-e?74i)uWO6k zj&!SWH~ptmNniVP=z_%&QGIBpYw(ptnwT}tTdw3Qv&_HqS#=MJ09LO>cl7!A; z#dC{2X7^_Biwwjl zgNkKM_QtF(XexSk(-YUKpax~)(Hs?2A)H%o-M^$fr6R^;M$F5T;G{tT426~=D}W`4C0LfQ^LcI1Rv%a@JZJh2OWg&H z>5Dd+tpuI$;ts~mr(th=5?Ibv!H73?93)nq3x_H?81%+3nDN|oJtlKdAx0Ofw*C2A zuGbm^*;weERqNPC>B@$U9l4lL8{5X=Q(&fV{PI40SC`*${j8ae911{6?x7{6qH{0C z1HV~PIy6!5*Al(*%UCZSmSe>MywRv{{~&7Cj7DcH-E#`aQ8 za2#wb6^fyx8Aw3UK|%G>z+_xl@64vE@t!B==Nld%k%Q^ zq;L(hu%q-#s-3oyZ;d#;TxhenUSRF;GBg-&#ZnR^A}Vt@m=^YKFXg}Bub2VSe0cH| zdLl{e=*-zh7{dr{-1JU||EmP7@nhLkQ~5dmvsGSXWvDigfRL?IsgQWC64Don(ey*i zlr&X#T?52YX_oLJD=R?SlBXZ=FniT$^|oC?d-L1>s?B3e>(F#zy9w|c=Gc^eReZcy zsSW26AqdE!!&bxWa;-qcdm=v9eh?bvrq|`3x>&<{>NwT2G{+Y{BnJRztCof~7k0=u zUr#n1TMu@}DSVnromr+^vzpvwU225DY!sWvPjks@jlQ_xsYPNNT8dW!c1Vm}3bpJ$ zSL7n}rT2HIA@jH`3MQ07#^H8?Kj8UCpqMo!#eoa?Y+EpXFM}qCvI!M1b*> zoN)Npv{U$FO(m+F5w_N2;C8l&;5yKUyQfm!xsnuEv2E9hSOG` zAem>EGc8pq41P3BmZqKtG-|uZYq|ophc`DdyO@F-ao=L|aVx~@dTWr1q8D(!R3Udq znM##Fl;3(eJ_53^`dn9-DL1r9(CX-_hRM-I5V!Xer+$ak*oQZBoRbl|ZwISsTyqf z>>{+q&09)FpjsF1L*Ip37pXR=zv!FK{9}#jB{ub_U^}TW+=`&K^=Zq zTq5HNl?k&?DqiN)iNkFw`Ibe0m9ENy<#}3yv_Ypr@&N^9D84j;v0@j?r=d@4Ig!&| zk=ta$GQ{N6brA+~YFyK0k9?PKz!{XBqQH4E4!{~kffSk&$xIF%7QMVxJ~=g*)vmey zw8N-jHo})U5L?XyNCTR%lTXXSvgH51r1+9MsKrM)W6c}mnN{kC3T zh_*hLdJUR8TNB#sAX9`zy28o=qTs&DFJ@RF1f~!r07G_;ZAyC++O)m5&X}Sf^P~E9 zM)6{#U@N5t&SXJgkx3{`HYXZBrVKNDfkeJ$Hu>ufhn@DEYk502eH!iiYC>SoZgVP2 zC=i`JJ^1!68IXw}xx1Ce=bBLjunix$Dxr6~MZ1tE5z5|4sanr8)8r+(69uwvF#*Aq z`1RDEBT2TqYsrexp-$9l4&34*v}VylqxRlDIX8FJZ`7zfd!^uVBNk$HnDStElF5}> zlR@FWujPkejFbP-x@{T2{AJ08=qC``FwY+H@Yi~igJo?0-Cy`BzE7U4&M~I9UTGq= zT=~oHm)|f^GIB|inK3(!@2g-&S*(&4SB=b?nAG&1#}Yb*2p+4Z zu{nuQrz3YXVD_A=FL$d;Dw%7EX8M!w4RPjp1u**XK=eC;j%qtx*Ok3C=^n7N-6Tf7 z$~9N6(ORu&U#o((slQo@y)K+t9crxt)rRM`=Q0YLq^+zTwB(t}nkP_B9X1+okQZg$ z__%}z7a*w3Qau+I_J*|y11i&TkQ?LmmHeM2xedM`hha5S*F^UO#=qQ+RUi5eQdGU# zJR+H&l7y0-8Tyq1LemF`Ks&HIrX954oG!u>8o-+-s!KRe$b$JUbtIO?r7z!;l)8o- zC9&5{NsFk!(JjuY<|U-%Rx?`bWA>ZLGR>mT-t4?7 zGVI5fG}vc zGzTvdg*ejNX1cP28qZKs<|zt`PzwS867wq z=it*g-;zBs0T#3UF~RAj5x1?LLZVebF45ZhaF-9A3S3O#ft}S z#l7lW=f=1v0_CCSEr~`b>ug4y8qQ;cu02mvuOIUcdi@G=iLMi8#a!UM;NNon*eySL zQC)p~xn$q*aaW>YDF~`#mO4#7-6&QY;Z46FF8&4g5hs_S{Xa`-rw95%ifIIT$`4XiVuZDSER z_ssh)y#PnJyf*2@x_!(Iv}O2Hu4VquH^v|F7$d=wgj>AK?3k|}p(kdWAc!8Ia%ZbA z=mNcqX_OSaJ0_<1ecQ!OFA_iPUR!nKQ*m8g)oU%a&Xq3oJQqeRxC)gY?0@cwV3DXn zmh!?4xk~Md<8Mnw-q=jnL+>&`!}E2^>gZb`wX51w!Y`9sL6Fkivxy8ln^Hl4+ZPNeS=Ds~%(yh(?k?rC?DFL@ zj?$zRbb2%ai!agcmXs9op!q_b^$wf_VBYxrWie)nJ+A{&7N|2S{`y7p8ntI`C7R-_ z@aEtqZ}~50BhLCIb$TW9Yz6MzShC9nqJb$M4bGmA~4R(%rtvLXSQ zq`X$rsc@0e>)4eO4$R zMh-kL*|{XWeCim(=I*e?O;jGmNqC~keEk+M}L+q#HO!c zm8vbuhXwYY)w7#ex6bO)c1n>bd|y%P{x8E9x@MZk4Q0t%@|^*Y6g;8XRn)>N#fV?iJuX)0@vHkM`dq$q`9hKs$u~&au=0u9GEXMKjRh>>YDtshC zs;kO#K`(%J!b-XJ$Dp0@)T)Z1`?xUL9NX~P{4=U!UGLW9txR!0b1n`4N{?p%uin5f zdSiyA(Lw&%!(k#rl?)qN&u?-my=@hD+S1O;k8r>A81HhtD4?F09(@3U?Rgr@=|=772$sMeA-x!jf8*6h7nwT^4pUbhB}9MLi$oX= z!c>CcR-b+M+H03`I;XHh@Q&VASTkFInP0uCQ$cMnm1 zy05x)y-Iemk@N5j^GrVVo>n$K9q5hRDSWE`o&tTVB>`8yktW?3CF3NTW`;i-Lh;5t z+d9IcXbh{pk$F_pzVLF)?^cLDNn5mAr9fOqag(1QKJb7a6D==dNYl5%m?ZQsZ8ixY z54Nix=$AXSo3ZSeLR_LIQ5m67vXA;Rn7(xJV^A)U1PS$!&3Ofr=`&Ymb(N4hj5|wt zPIb+fZMtB?DM@9CFdPPt2_WvANruHp1rULDojBO6oDud%OETsTJ7iE?iW528-q}N} z(aaa!DGvNM%p--l)RjX9XjTtPwro~6vZPJ>OP>0YFOYwBZMGONHqpn-789u5?q^pW z*-N&rgTmA7OD#OD%Q$0cqeXg9W%BAhP9oe-SjS#tG;4(fujS?WbfhS zUGjmw5^zz86akfs1YvcH_4cSo{h#p?zNuxgVr=Tb=7{WO$`_M89>-<_wlM~J;N)Z_ zAUV(6oaD;GDG)5Ilof@-7d`srRNSc#7uRl0QO+6?^a*NoIMF=yBnj!m=--W=RRx)v zcQ~M69+X$3ihn#)buPI~%0sqPw6)cG-;rXPoa$s{x7v~QSbeo$`Z@9DZFj)P0yHlC zt}htrw8vWtP`TX(yIVh*jBC?}1FB)F;_sR|^nDW5!WsYgF0f4w43!Uc;G~Jcmcq5o zBRsnJ-vCOwQ>nehUxNxbBn++{v_gxI%U!WCa!h2Ef0mVrW-?73x z!M)*{gI8~SX1uS+^%^-YIiJ|wOwqacww>qT_iI#XEfV7L&u(3&ncvm57pczjGPC+M zI^iMjm^(%xfiEt1`}mp@R|0y)YwahrXw9QvpJEK8GIEGWCc1}D{v2|;j@%rBul#z| zO2YN4GmRXI)$v6U&AestJp}pBm;4?#YdKniw)Z0^rK&$ZZJre?JDOQuc1V{O7o-^{ zJj~fipT@;APnh;GQlHyvyX$*jK^7~Qv~-cwYuuWUe@<7LgR`m7u-U!bk;;sf`1r-h z#o)sAhY1z~#^<3!WNWW6_5&fT1hCx{FiX%9=Txi}G@zUb-DwvrM-uU_kA~$b7pk(e zqik0PE&4(+KppXHmm332$J#9*y+-5n@anV^WylZ^XGw6BFLWuU*DzLOh9b=g6oBl3?kPFl`TAriE@+i~S&qkcY|7B^OSVF6Q z)j+$qf(eJ}NXy03>RZigW-3nlU+o19LpK*_5I)b=ZGiK}aS z1?vk3)eL*%tJb#N-4sM>$jdwA-T+?aDpUXxV7e5A#w%{%hF#^tGhp&mL8HQ#z%-5x z4$I}3N_mBtuAI4@-wwdz|2oop;|q|Q+IRk;PdP@3&?eQZZ6EI->t+L?iR~MenqY+d-H7Ywffn0Ho?(YfEEJBl7Wx(5o|x zePGcvNw8ew>c%aeCR$d>sGE#QKAp`-x0cP=8bP2T% zg8ymu8MZp>c$ULJdjwV`7+Lxxjn+_d3#COy?M^_HPDa6PB^la zWK3pyn3LRjNY723m3vfOoR#O7E$@dpaKR?6Z`Z!^Ms40#YTHe7tvQ&xaHawF+?u;~ z>%vps1^9BG^U{SylBqvXiL2SSN;)rcg}-9%hm^;)H+{v2e`QRC>4%99E7#|wT#>Mx zkIk8yd5?^*^vsN0Qr%brI<%5mDTs@n>Un8*NYuq@Z-;so^+>d#EpfYPC%$`0vDR)8 zmR#i}WdeL1{3!`QG7nx9Nke6gTzo#!WWGDx{e{D*mM~Kep)}#oOz@Y6UZ6a9L%7CY zNXMJBH;}89){`~EiQei?m3`q_rR^OqYg-+*Sz8@;4X7Mps_Kq*m^02L3qj}@o${Vb z>7Hqajqs;JPEdI&35jOWEiF>S^KBZJUO>#IgH!OsSuLVw0?^Zzykn+E5X%%VLn16w zkEw=IF|{9WeAG{9*dtA7 z%?Eqlzr|T22WKBs_JU^y zb{6iZ$C~T{#A5ABgGN*gv^z|p)%?QZiZ(fubuGp8l~#(Rq&ID6R`j=vvNom@pIly4 zt?Et#??VijLc{~n1ML#a2EXk)j#=^%ww?$uFSI-W5R4soh=V|nH=Zb^SesUD|G7cX zj+V6dPf9+iE>6zk?THu+Aud{VOA^;r%ZyECwov|($Re zf475dIs430q~-~uPqne#LaMh$-WBw(24|N@0?uzVsxwut{L%<27T*12G6~&{y=9wA z`@hTq&k|&(f2rG*%@ckDA?2|RH-BlP8xFpv)p)VAJ_& zT-E8UEaTh5-cp)oS3~}IQE1PZms)(&VcjIq{A5+C6}^E zadPu&7y7u~)c4-x7-@JH31%k;&B2spPh(Ob=em8aCo}8O)T*2UTAThStxk?QOdR2$ zI0)aSccC{YVMwQc?OY2fCPJ>C_;lrKDYAO{eGPdr2-hq21(>W@a2TyRMu`snN%YsNM^It zzaHke)G1-gkW!Y!j{#^M)rc_yMQ2Bs>gj4;6MZ`PsBHoIgqh);W1ZP4skb*zC{@yM zK?iBFb!Z4XQ|fq2a99K1twVwEs#lpA^hq>>I9lKfw(|YF^ZM2ce7$2Q8$vCoDXO`3 z+O5w4kvC`_abNyJUnADbgI{MI7-bdeVm}dG+k{!ojFj;JTc+2u7CA3mHO-mx6Tp}4 zXT3;9qa37K^`$(RBGSCrA<>MRhPA5Et4bas?LwDJ|I_v=#>8r~K(|JwMu49-OsNO8 zRTD&cwKhjo-_xoS&Q*!JYP4A4tmVcW*JaKt$>lzPz8bc)vy(v{C{>9kD^t36-Eq<` zn}=Gh-fTq}kM-Spy>{6}lQ!|o=uEGN3;1$q%TPp6|=3qxJ zU5*_&bz4=Jv{!#u_|5C5LQb~axe@&EwhhO6I^#ODDN0~lJUa0fE$&-6Ni!0o0rT`0 z5zV8&XjRJ*^`}okwrpn_o6x_RnZCasb!ZMwa_(JkR`-T+zYL1g!pA4_V(|j;GphR+ z@6#@`_wU!Jk{&FHwpX*3RGTHF*KYoJ7WOb)-Pe5Ja2`z5=lF8VjRT|e>tQP_$iH^R zhZ61mJvZGG%qV<(8a_R1juBmqPii%7!h>!9YJ_l(`5&L=4Gkm=zIOpP*3pc|MvALz z7a{dcxS#tmztlQ6wtaC~*@@(EF%{L}yAi1p_wHqTN#1({z$ZtT!S%m{fR zMpMOJ8(c`&XeyrRi|fQI?QO5YezanOv>x- zsB+R_XKKcY^){+@b7;uj%#>zIT7Ti>j}EW4?WMj>a(2h-oc(@1;O!kRS_K{H8EW3JmBClx&c%-M-cc5r1ryx(s$WJWF= zcM83_T858DY~uzIqV;?iptZh15lTBq!fW&c$}fc|N0Ce0d=-sL<_pQ@BT%ZgQJg(v z^_9CAhPJ;x9xv$M(Sg%k&lq<**}WzpN?!pt-)u*WvB1N-cGlgc`KY(`NjD_cutEf= z<;cAr>#DWy5gFCpG%$2@P%#cZ%glWvRUi%4nwj_`qG(`X)gC3m7^kBBqw6jc)W3z<6e53 z$+WJb4R8SXSb*D0G_KfKH@4_m8Q*1rDJ_}`MB;D8J0}y)=KoQVysrR`+`e=(fPw6* z-*=;jw9Tlkgz0V6YtyF3DH&oGM9OYBN1tn%@v4FTu$}aPARV1;X7H}b6w&9tx5}hL z5A0{(kvs?4IeNi}L{Xb&BKNt)+~Xk3d~8s8nn}#4&6TrdiMhl)I8nV6xGZW4dO#0c zToY?pE@7V+smZGv>mya#9Q$2*e8@7)&sXG?YN#<>B3Yu3F%y+21_tcTZ>-qX*D}xZ zKDT<@n9ZZra&ZYq@1`3$@H`R~i#_LNBoE95=e7$BcJ0hzNhY!(ja9YpeF{4CC}>M) zl-%-4Cdjt}`Sx&NSROhg{oS;`l8GmwM~pK*LY$JvJua156WR`^?EYQ-UA*(w6lP)u z$ENYL{Q#$Q2Ufi=gs~;1L#wG?ouHY^+wrU%)Iqznb-s6puR9(-Q`q5GF5MY6EQW zWA$$>Tqdf$>?#~fK#Y)^)VDXcl3Gjb_K{1*uzUF;ammK&-blJ_Z=~!e_<)wrf>`Qq z!eY(JbBX#vnt0f+4Ii%aaCk^B!fs)Wxx`_bOaT>;777N8S@ZxRpJqcsvDQXyLYj}s z1v`(a*b^y5{=&^%tBw|0sNUK^@V4=Obt%`FISTr$ebEMAHvS7HTGw@HXrGd+(KZS_*Ip6(SRArtR@T90hYI1HRnwZ z<+_%sSFJ+h&3E6&`Y;j>4x1{5S(-M*ZgV~zG0?64??4c#UYe7LahOb)a>2jc)U#{i zP9~ufv@*s5(k+|#pZhGZ2_M*^V)u<a)7CeMTdpShL%|*q)8gHbl|3X4SDfa-O7@buK~~*^sc3 z7kOmCNJe-l3`lxS6)L7oruUGJxb&5waC1j!AaMV9X_mwGwwNDFewZVa3Nb z#i#-xTPU#dmAMm}n5Lb?G{@8?vL%m*;S-O2nJbTs`WFVg2WeAoxqjd6{fb z_5R8WYc2jLs|tLjlXD$JA9F0HI$2tUYF&T+?rOHzCBoEC0s`sV9n=g%^c|pP$Ukp9 zky%YPSMUJSl*I;+`)g?7Smx3fpm7zGY){u~|E_L*)`)f}63!a*z4Df=S7Nump~7(m z3)}l+RHzNXStY;ANM%*GC;~~Q!ysNEoQ4N+{9RUclcXNK+Naxc68(V@F)KZBR5gDs z8+hEQRSPk4jaz%v7rd_eI)-t+GtN{cC>vhT`M8zzg&N@{FNpe8;UIP?UZ2lAhTm$Z z2U94aw7CdOo^JYM)vTHViXOoNIpTZYo1ocjg}ezjI-ScXBK<~PuU()umm%S9r9)EB ztdnqPy1F{kwNIBu{<+hnBrkohhD(&Il{?fIsi{IRFqRX1lD-N9jXVimwraQH$X_!0 zVxo4lfFwwAE>X#tDFdvk*D(a3;tEudT5lRG>FD%znK9Mi^+c9kx8FRzE@N5^YceOZ zAxk?ryh(tm+LbB+Jc>Td^rF4gFmbzHlO2%mls-xddY}vKltTH;q*Tl}{T%;~MLMiia9>D(-t6;H0r8 zG55yf-BmHxn8j20R0oV~7dnE?+p)I_KQ0^{Tf=;%4U%L=y2YdCuxm)#zB*mtIx!a; zHZWZZ=IHjL3Hp5_)M{xL##frLGmlh9fjD?=*~ z<&sEF$OHi;B4S_QG*2a0o41OPDc)s27+f9k;=bguIV?>lk5#YREx&!tTu3~vcJi(s zyrwJ^Yi)M}X1YnAD(|A@5gL}y!~U3Z>~PrZW}iDx!$|Q9&(MW_tJkcaU(MzQcc$7m z2DJ4t-I`AJd$wb$E#v!0z|5!1X83I`T_gRH3qD{uFxxPfTk&iHoZSL$7igFr1q&a- zw*d`374kiK`8T?62Bf;!Q`4%K9{{4<$$%;ACM$t3aSx{gCA}CQHsufn6RI^?{ZC{sAP{!I$$5hhb@?^3`Ry_xI0_zc4z#qtA5;lGvle4 z3s|xAfux~dZ{y>3B+})wyICrN3dvScZ<99|+*7qioMc*AiD9)LJ@U0@M9)h&oThGE zOP;;R2S0kzCYEn(Xd2#yHJfZhjrKf1^C_Pc-4`dYko>I_@u-JcsXC^#v$zDekm%Zn z!>1qbOxUHCBd*$qz7%R*@(aBo9x3%(;{OASu{Bsmb1OfcQJL%#d^y+tH3NlTH$VQe z+g3&seD9(p7?cYbUMpn^2 zu-m2*7B^8GjMb{?7YyEkDY2{Tc~M6Z>XX{gD@j(7EMP;9RX|`EVC9oqc>*J?nHG1c zPpftBin!c@)F2huq-v-yvASU1>I`8c+ay<#W1QqhGB`gzE{V(&AekU{j!`GVvkHvh zT+sn6>aNlr`vJ-_^Kq)ip|vFOf83(yBFIX@Uj0w<5x=2Je95x+k^AQ29p?z>KOsF z<~2z>JD}R1i5)QK?^4oHhK+rgN(jv6oet?;h(+5+=HWFNCAG{^bd9L4;zj#&C$qap z#bSf6ELVusk*~Zfsn2i`l@P{ucvUn!g?D>HfH0T%E_jSddCB-cu;M~un13X%%JrI| z(9!qmKCvd?@5OoK&WSfk$Bf*x7JJaCl-h#%a_9btXIA2^W^;OiWfCr4hQA7z{8rje znXdWIU+)j@cwgoSi`6QEVFgFOYSuS+^{X<68Zc_$dN1UG)HKnHx;jS1t&Tui#WbYk z?z$dzuPhhFtT0_laR{kjp#8L?_$I!4OZ~@HQ=c#1M@z<6;wBMWGZ{&D`pdZiXUy?j z`s9Shfi~#w{Z!*D)CpdrCvBjsqr!7!PY!9rX)pCUSV=dWOk5g+a4r8ue?|wBF&BR< z6;)zTq*h$-sHl!}w0Y)30~z(&o7}qX!KqTj(CgPXAKE;ag}&6DrZHK_`18$|au1AS znP~_+pT&}_p+dW$caSZdwKbB$#U(_$NBvOC*=x$4bYIFru+rjS;#d0hthtqp|U>}sf#s-kCwoGNCAf`m?} zE6u;$EJRhY#!(^R@)HuNC9Lu>hs$Os;gjYw( zOf@D|=JtgtVgbk0p@Y>g?hY)V2yh+~#OJl=6_R{yYF4iGfzZ7|x#EBh|DGlNYGfC6 zrQuW3<>R7xG)H;-QNs?Sz4|4rsG4J9=`OxZC68iV{PA`6cjGCy)QTHth)KaphZIBa zOE1adfLM`-I7_GJy29Mg6JBN?l_d>Yrq#p%zXAv7sA|#R(tM^$c-vWhA!nGy)u=R0 zkEXm%k;`0Gg)A*Xp?*8kH;F~Pdo)O2#sfw608%!PimTb0vU>0WKDXf;cd|SOB(jh5 zuv?J$BZJnBcVX;UNV%zRlgxZsg)H(4vAV%YXXNI42*6V@f#f1`+G5~li6$96V`+s{ zxhDvxkS}2C34zdo(qA6qG?xv?Eq}c55C;pZ#<0T;=Y124KIL!)men?Y=3m;K<6CNC z>@jiBJ5noo>fF9;xx4U>>|@81WRW=qgTH<1@v#^jp*(u9>FK`CYjt?9iONo3ym#Wt zQe>ERfTyxW6?Y004Oe@rU)YWI)fR$>d=CD3SFf@#8NPA2+=Nz&%%btG6u1&vSf1pu zw40mh!|<^dVZ-*`i*H!u%w?e$dglelnOJt^eb(F!hTtZJ=L7t9?uFfk$zmhWDZ}EV zHNjTyoSgYU&&qtts%{<_p#zD!(6V2-v~PvVU4Q<%;Agdh5WFTxtFy_D(k>WO9?Jl1C` zr0*xgB!juQ1UuAPJEvuF80^Igz;CQPAg^+RmlB#gJaq8>PJiE*Y@Jp2lk@{gv%2!e zg`0Q#LP_bqE5W68btTGID09eqH4~#G)8d~{vRmi63SKiQ>qA2rRMgoJ$QSeY?1_sx zp8C*+zuR}TYc@+7-N8F?5#)u_Q9E-bSy3f6wBe+}=xVx0h7c*8vXwdrvr>D$k(|B+Y-q)i%PcH3}c zJ*lTIjO1DcrNnr}sjQ?#4MGV+@DLjID<;#aUnoQfUhK??4Lc=vaAcZrUd0@Sh!FIO zZSoBWooffW#v;q^Kd4N5Ywkie+Xk|zO4x4R3t;s~rmmJC9N~46>oFjUvnES@v<+ew zAn2EErtJwUeePo;erm@=V!37a0Su{l8y%_qpA>~4k>qt>03+l>Kng>@5{1u*fDDu` zUthokvSm9U?gUeD#r2zNaMV|c?`UmWwSivr~FLO`><9=fn{~Xg%naGWG=OF&5461$z9ya*p67qXvh;Iim zSyj(8Lk1Wrwzp#8**oJ@Mxs>pLjxxC%Rqt!a!yvzRqEvJ;5e{dk6u0aOD6j;fu|r4 zhApip6Yhimcp|mFnri*_yCaa-**JJkZ`8aHRBSnXOb9wjOxR0sxC0!L;yhWv6^@}{ zG4Ys3(g|=11*Y2MBLvf^p%F(gqW2(byumKZ*9Uwalb$GD)#%3V#Oig zas`buGl!qL0TAuW@Rz0|cA61_FeZD#vbkmFv3yfH)N&VQIocsBi3O{+;&>{x(%DZ$ z93pr?<(=D?@O&`X*Gkp(o(S-iGfgVIvyYm4mz{cT$=)Q93<@gZQmvU?h<#iF=v*3M& z(NhC|GuDUhWB28*8FSH*lX!L^Lq#lb#jX&SB-VU7C|>2 zG?R>WjV`|TI5{!(`knZOjrxlJ;;W4XjL#gkX!tn3R?=P`M*kfn4m9(^xV48{~&oRl?B6_HYZ@8RCLxYetABSS+G)e(+ zcc^9KOu}7(Br8vp2n&xX542jaYg4!TKXt?5S4RoDx?v5gJxzlE;g!lI1fWLFccr*q zPz?`n5N$1DfHmZdfc3$dZOj~3YAoQi z;m$jBfxz)9`OBxi;D8X9U-v$i&Evu6kv7=POUb4@Wu$AN=k&Z-k|9RP(YI_c8-#<4g6{Bdha(!O*sFv3A+#Bd@%y{& zf#F0~ec2ml^(fPJc?n4TZ^Q}*y_iabD8Cqj2-OiE1khM~KCFe%TDO3+y>DB87a!=f z;7%C3lc+0pc~(^{^NjVnwVb0vt%>xIs{bdA^nQ$onr zC27M#&2&7~-GGr8rh&4R-xr1ssYy4|P5ODe(@iqR`Uz_l<0t%3EP{uPfYD)<`i7af zdEHubUe4+OZ;1X@o+in-?xhzYp|3XGymq|z=z7JE-(RplCf5SoWP(;d&}8%2D&}UhPV)h_`QD9Y z+_k869yW3pG*EogI(e7J;hTkQZ(OIN`?j7=39}`v5VH|juBv;&hDYyY$7oyQSZ%R? zep~GOK&jeEo_>QP%X#y@Wa6cc<*`BN@Jd9n2EBc(viWL$kd;eU0cx#{%KgcQp;KMJ zEAzOQPTOy3I#>hAG2wSO3xY|?avX-umtQ^=sI&NpyrDRZ6mjDYm`)pBI?1eOO~2{| zlkg@t2Dsqj3Ff#D*mEO_7^OOOx$hBjtIme+Txc6th}*iN28E-B*VScU&-UjpM)qYa zPErA;#kyX7sg{U^R)H??5ObFS;mcoO{2>MTvnni z-`x`^$vnnQ^iMEb30xKmJAH1yM#@Bth=&QUZ}^AbGMh2Y2K8DHN9CE0+6(;D)n4b@ zJ>zXC^kpuSE^9DYS;)&A#i(g1RUg4FPN z<(e|$QZ8*~Fp^cwMb5!2jjE!T84D*xSk9shQFp{7OxVWEwY}1;Vl@Mer}}gu#iS(h zMsKBs)%)J=I(NM0L2{rF@mzOzR2rT5bM<%#tEoR`B+)B`d;VI>!1#8o*He2ZLps2aB7Xfed!Bxo5OZZL5Zb8at}b~eLz&~ytD{|uQq3D#bRT|P(d4QI z3;Z;dO{JPHbyn&QL4-1L{K6)*1irU@-H4)A*6izCT}e4+GH7Fcy$X0$B%_fGQ?rNEBW!%H;rBTE!$A3voEfd{932#=uSt*=|#~DGQQgH&M)LP0M>!f zbT!|vbA@d;9ebKJ9*C}~S+tn5)H^)S@~%17&+|zmPBSnOxdKBJbzLX&+5AQ5^r^Ft z`DrXQYRw|}%U>^7x7JyYWd`Yg*wwIdz?{A(M^EvH6v{rDZ}qOa8P>(De>gE(t}m67 zlNYzG>1c_@XFb<{z_0D$C}2%{4X<9>>~%1IwP9!U$*`201o{^W1bp{jy5Ejm4BPO zVu&5;zsxmmx50y>>LP((yh`lrz7zc#9!6ZVdptM~{y8z2gN#w$g(oh|D^@z_Yk)0`}Czxn|gPtK_kedR3Nwi~}InoWD{BNbGGyaL$dI z<1jpBKeZ-8YyO~ti@pri+EANK)1Ak~KV|;X7bD)G>eck>oovgAkfBg9Re4BIv--|1 zR6jV;XMQ4#TS?8GdUBI_wEfND;6r{CzeL&kB>tyW|Am$R{42L9b|6;+-unRZyUKwB zyi0+1>a$@l7m&$ul&$i_7t%NJc6kn^X{-n9b}v8CTGI>-wL0)Zo4Q+W>COb}E0Giy zNrWSK5pdHT!>w<+zSdAdo+*D|9|mAM=wR*f#e|jJg!t$@oTxR!^S5m|)}_ud4D+&< zST02OYJLwmmBp?ukB5|Nr7F~rgFf|3tR&W29M#_lLc3bt6|J=!Gq_9Qjoee3n^k>F zvcqReeI_Rp;s5JnwY~|I?;wj$#jaE>aPd|+e%KlYO|2m&TLc-I`LGY*sdPuj_FN8$TzI|GCP=zv&$qL_R8he-f!-5slxEM$qh1oMqX?tZ0@&4PFseyW!702~hykJ=KoB zygf~;OGS~h?j3(dF|7y zR>pGj(C6wse}9K8{^)19H+^G|K!%h<2n4{*J5yM$bAwJzHy1OnD$xL$N#Nx6!Rq2Q zcJDy(jo`KWXIH7Cmr~lzsxBq6loBwFdmWfBJ@-j|Ur)v=&R_*8UAVj2>39{ZxfHms zg6eE#j9MXx2Cwtd z-mFt?T&CZL8V`jq<&uozY_)_jhRcl_$(ci+OO)@(2w!un(N6Sdo;@1gg}Z`+mz5ff zy5`atvwYg!5@^iSxS}ni#1+BD6ae{ucJAiAE_i~m^ezu?Yv@0h#;hC#`RHe>&mwRi z?~hcH3s*42gIQRF)G!W?mrmsl;1M01@6(^InUg@%0N3XR)qK1=x<}A1IPHB~#J`WU zRj@~@4Xeh!tcO-{(`=f&+`oty)DcOp8k^1LlJ(txLbLu#-Sm!}UC!p6;Ng%9t=wg_Ep z2m??&5(9Sm(Hz6H4!6m08+9{*+hB?0S&yls!=XUzU7!PGn7sn{wVM8~*s~%nIOfBnq@PAU=5E13b^Xew3;fG6*7W>}x_+PBr zh<6EDg^$a13GUEd6WF2GIiIUKdrD=YRN|eX%(6N97}Wx!c#?rzT+^`eKNHhotS?+U z%iQJ4b4!$$rsM(}R%)ZpPVeXn_H+hy>6SWc;I9&|?2$7JasseVJ32$-wV_v|@K!@; zFj~g6ao=0h{GXG?REi91in8^p@Ui-0a^NV&9WQ>VoHm>oei+^@FQZ}mrgquntlbQbS@j7pt{gJZnjBS!?t7tWl8V>ZoG~T zUQL=00LyO5PGbHA=QT?wZ>Xy-pSn@G=4HH;oj;(CtkHmF?%Z@l;CFr41bO2#7Y;v$ z1+iJE394~u!=8d0X|t}UdQ7)ng~u_Jo$ zIR(i>z1n}K>z%)dTlp#spnYBN3%F9P7jg#;YDoxoP}-szSx*lTan)xwKmgmyH^pbI z{-XKJA~&601EPUb0PjK{LB#XF$fw+{+w?Ch_zr`g-oji{wS{h`H%5@)BF=+N zZe%R`T?f!n)w!_NE>Ig}K!yaXy@cimR}${wrB7Q;@AXT4c4nOE6!`L~0~3~*WZS6& zinXMG`2H%D*fECgP_rbYLrqQfd)x_YDCDHY?J9{royDo!{u7$^SDPM<0&eB{Bwq?e zGz3*4Yo>?(XCE;!Su1@A(#oXER)d0dU!0WmnoYwMw;fv}Q>va^T z|Kv@eN#{wPA?@L$BTTX8i+CeVX?P}Zy~I>bh2KiIR>~k+#2%Mj6N+We`bKa2Nc8+j zcv9;}ALTn?ki;}F6;41k9Ei6CURV@r1b8OVJcFp+2xk@Wp;@|g;& zaHfl_T-u>WFWzu!(u0hFK*!#46M)*ea|gokP&F=ww#!&E=tMFK6;~1 zE^*DY?OPhYLCni(yl!Cz>21+uSv|jzLy@0@xgc6GKHU>K$s(BCjMt zS$r&`Z-yur`NR_rf|n6b%L9c<^$qtGYd`Rt-fmsL5ABljefjeOk_@lRI5nocsbkml z(5mq^(x8%G;a(n1rSE6emoKOlutH+k4bP{(3%Eo>(EWZs*~N05c?}H1k$~?L;ON`D z#R#+thz1h*T(r`>Yo@yDF^ulvc36fORG6QWo=AdPb$L%IF?z$or46as=nZZTAXlz@ zuM>PYJ3Q`#9|A$$y1q+kyjGZ&P3@LTOiGt_NeJa%)%;WX<5G5=f&umqW-o0o1|m6( z!8|9wS<`H-JHoAXr1h!SJGg@v3eYN1turPaQ`s-$tO*8pHU=8HHn4#_)KH;cJt{Z4 zT$1Lc*VcJ(xq4Kl+{~hHLQUs>efS7mO4%>aX4~+Kxv!s}(t)XN1Ce;RfcUPT+TeUJ zvdlyf|7rbq{cEh=SXM16M$k_~$Y>Aj_%3;bLfw|h z(4EGIE8)|Py&3vtXDNx*AgI^dZQGeX(TKP?5YanH0=(?gNb6%P!D8xaM+o3!gXVvH z>gX_JmDQ2|g!D|TiWWL?kz3pkI$lrnhj;gP8qM%Xo^7zjQ%bndShPK}EnUU^B_eJkgte^PCk3W*JJWFxOK6(+E> zHAN-^`J=`IxvGMvd+;>FCBdcQY5sYdj;!8p-bsw_&H8a>gI4K*Prj9t94JDrH?jlw zNa*e$CGy?}Od;io`}%O-wd8!6k#`l`q+r>P;2Ic>`0Pv8#4kvxY(u(h$Sv&-a6{_% zsBuF7!?Zo_JVAK>8<*=~r6E1noy!mhFpLOmz5x=LIe^#$n~?KWDmuUbOcFn@hkLaioV-XT=XXabfwK$tRw>AG)?WiOq` z5+o1_8BLC)%;KYg)kFaNZfzI<3cLg;!xu_v&%T3l<<|r2jmIvzM+4Vtjj_s3N=iPD z$>1_~4s3Q}!d`8ZRKw;*v49P)BFP<|<%<9qywM-p>VMdL@$H(^-1n*S;5Tnz`ch&xrV_o zEPapXCF|o21_S@tdlFp>&2#s*@-FamNRP;L=If+hS<%Gghcw*#t60&#(!N|Nd(CFU zHv_d2Kh*(SxSz?f$KnqMMn50KGxne+$W-x9bvpB0MyPwNi)VUMxpz?skipt@dTalq z;^A&w+;e!9$rId=HzW>S$9CuL3Ia1d^pt0A!aqHM)qP1NT@D=T#AKMl=<}Z+h~Z;% zeFA_a)gtjUkL1Dst$NzfzA-K$MWz?JjlCw}hUE?(Fds<73t?WBJ4}D*vx6*&ix8u( z0?5iTb^BW@9twc5tYz=WMdN~BWQ=?kkr;|xf9X*bIq=V)%WyTE z_6s&6(WS-Xn`>Nr2@gQdYAG92ld%Fmz|N>^bgKgK%XFPg$yIuBs|9RmZbVfq(WfsI z>#vv%)})I0p$XfcviD(M3WisQ@n3oThekiQ=^W%hHo8|$Ue?8sjWXFv$4AugL#qyED7H_qJ_gY-8JoIu;9o|DBb-#U9l&?CrJ3t_ z^xele@0bA#&N}8PR)^lk$KJ##Gp2qM1a-||EW32b1*u;8E9VnnCl7QxJud08E2nGa zfb&8&Vp0KpMVLE=s0!|YZOULGbazOyOKy3fGlVA-4(=kQ*2+hrRK1$bLF`k(m<)!~ z$O8&aZE*-wll06F>8O$^F0Yqd#!AY~HCl2k459)n*Uy1FLar8@I*)OWy2G10kUMLsqJbLgQwr8x}Q25-?q-PJq! z2Ah>S**_(C^8!5795QD)7AN<1WQ?t^ljrMMT!YUQ_h`801r8jn)K`<2Yb3rPqcv+v z@6QU*t#1ZBMjpyZ7xi9kQ61Go_*sQLvny`)!v@gR-mMRN$3vvcgOGw<^Hhc={q1Cj zx9iWjnsdB7EcqM*XVFMP0-t0bPKurOL~t7q0T}K)Rsx_FODEg4>rKxHa6a4V`X(oG z4F^`e&RO`+yqaU@`BsX5_UH4mbfER60ho+HSYVG`9RxlGg2>|%FiUQ52cx;FB)cIy zmk?eJ7vmjVihjtz?LZB7P*sEMh@_8LGOi+YMcHs9d1@F2idUsEuQ65nEu#0m>(~3w zzgO)9DEL-m_s0`x03C7xg$A=oAewOf)k8k3r2Z-$kB`iHExw?7%KXy7aLS~W< zw;2a~MrS|u)ix+*Zd9@3^9f&HwWzMbp;$xA(o14_dIN^J7e^!&#hP``ZUV1;HoQTT z5{Krin_h*58;rqP`t^;fNiwHp{n|rnSA$FtB0xCCK5}xNNrc25LtQbanc?g5c^S(;f&Cus&8T~KJ znCFBlryP1}hqNs})IN;PrB8a7LYrD1muP5{)^RKZ!ZMRAZ3yBjD0oq)?I)wn5SEVH zspvNf9XB(z5mvJwta7Ss){f|f*#%f2)^oZ^40He54x8-KUpAn>2ZSQ7Jo8D8N0%Hc z|5US157En?^L|=4A}pRGIi$3#Wsl>xEl;6Bj_=yodB_{$XX}tYVe7gRy7X5op431G zpb9~&CiZML0p(CDkwui;0SoUMwhL(b!r2^>PjWUhL@EVa@}$iylr-3nr@|HKYp>)N zUBohnzqZnu7*uq~>t@rxq|qB7;FF>Rg_R>QuDH_Qkw>FShk;-HfyWX)n8t^642^-0 z%z9Qrp|04x`*eV7X%DN z1YGKbXh*$W)#F`*yLt1)hgB_i;*-wdzS9FF$&>35q6E@5sY58)kz0+S*wZ$RE?dGm zSku0KYsdBEd3q%gG@KY{3OT}^M(=0tbdwGbxmxz9GzVD(N?`%K72%+n=A$0Bf0=e! zdfJF0F7R_3E_Im~XKv|d6`xXugyi^#h=qgGG>;Xc2rZM7PfB*B(Z?Z7|DnQ4ZW*$@ zpwq$+02&ln z^?!hjHKxt+5F1D{8n((8vVFEX)U)uAsXB=0uo1bEMvrJWUU3($9{)a+ z+G*h4hsdwhdD=At{p`Ps1Ra&(7^W>vTjxuUJN@GDRP@ezv6cq$UEyNFkV5eRs1*8^ zJGR0HVX$kU?=m|Lxc9;EQw)WTC(_0#si;P{gq43jix-=VV3zlu+8$yXjIS6}(G@cL zj?I;+ll;;`UTD(k^r%+L?XL2bG-qs$So(Iwo0$NlLM=;b9=<)#CsIP#yQ$#IfYaoIH>AClvFItCqnDHc>J3DT>-%X%V7PN-tzK`yOwBwt_yPi!&6@aZjBu*5 zA+5bM%l>2%Y@l5gO}{QBt1g>UFrh&L{*{;YjnzRI;7aul-!t6HZCx5+9+sU^uj|W| z*LI_|6vu$!aB(1%0rk&nB#3_>eT4@HZYigRi)Q)b7+D|@8PEER>4V6dWYzu3i-Zsl zX_@aAuIjAF@vmyUXd&OnT5jhu`GZN-;2Y#^9&w8{WGW;=UUwS6R!o2~VkJ6ai0`Kc zj~vDWD66QYuea2n5R&Olf%UqS)5|*I_+Il>4%u&dpWUHgN5evO-dz@aCtVcFJ)|&f zq3C%2l9us))W=>;0E5NfYrq1va8HjLs{3d{Oc!6w?HPm;QVtm3&Q(Nnm()T1(%;O5E0RmL^0|EwKx74R{b84lsw3{Sx z(VLljW(xYg=lFl)pL0$&_ohcjFFG%7p=n}$4HP)|_83+TQDs|6!5p-4?g+y{xgo1@w#PA1>1&SNsvM0_7+1Mek+i?h?6)tr~FI zg4I|Z7WyD0(0XykuZE7fQQ^=`o=`4MRn92J`_#)8)}_P{K9HMCL)}=^6IISR*EIx% z{2BrrlcErJSD{m_5QyWXi=>$aCx(Por*YolgLQhcZiE%_5{Z?N*&qhi zeut=<)n_*)yQ)hEkORGVYCv8)LxNP=^Y}9tp&Jx-5w=S)f@#0mq*cn)6t2|IbJv1g zQAp*{{|G(gypzxm^MrvLw_smYm}1~!4!8bnC{-^qQ#+ETIV7a5K?ClHc|k^R0*SQcm7d$pM!E_^Am>9AQHM6NK$ zTV!^U>aepKX^j2lwI|^${&j`u2oT-*`K36Td+a>70h9{3tO@igQ>R|(6;~(1El4za z6=n<8dLtyxf_E{=AJUO2kYbpSI~;onUmg9Jv%YniG`J|fF zZn?LQwO=Aa7#7VY)>>w;>3w!OvBvrORURyCPt-cN$@H=IxMh4%?PP13%0-sgqQuN&m(QucA#V zY{PoI{I?D&EM=**xWSZFUs!8^JY;?5$&hxw$EPV=d1&!~TR&a8c+gjwKp1bD&}Izb zvf(lavfzv%X13F(=U+9Mt31sVkctf!NrK#I?HuAWhgrm*586}xs`)v5TN!RC<7#;f z8!-G-T2V}F@t?F;JYS*oaoPil%*~+WgSLUo#fG|oOR07<1Tmp*?wZL1#24P^QYRcv zZwo$t(JF)=R^;t!%8vO?jItzD3Z?&4tyQDA$9&STr<6Ir^vR9K8D12MYR*ceOz79$ z*#}45gcYJ(Ky~v^9>8Dq#rBD%7)C!z_R+YyZhc9C*5|<_#5A3<{rUz}WqSQr!}P|9 z-Ju6DoF;r@c{dmD8ZbuxmhS-S_jM4c4?8-ghy8k?(|^kKV0#Wey9e54copW9=ucn( zKUeO@l9~<CEDohl&f1+V+jFe0$OooXFWono`mz($@CKQ=<*{5axwRa zH28Ps)p4!_k?I+19Jl)!U93@TGJEWDkGiSCliwlFcwPD`|7nWhki-axS?#cz4Y)L` zd-Oy6g=q-yIrJT47}wp=h0n!hIHSP0+_2V$JJ{5RKqc`(NLjD0HhB|0^x$!4q6*vN z9=#%9=4aAd8#8?3$)&5GFMTFf>Rk)9`r8$+nX2DSHtSMv=H|me7JjrzQ!0-U?=lF? z0=n@_z9aSB`a6Al;<{8y=G5HzR!n^@*N?JY9l2TsVa4b9%CjCD&%hndobd&r)Cp27 zI%}Q$)5Y`kfbF^zlBij18LNgFf}ZKJt4CaiI#Gj-AusC!twYcC`dvalNAfNm0V%k0 zEmA}Q#KjwaD@^Ju8UAuNcUP_Jue8h|(ai>3lYbatnCTD%4|5fBL&s8ys^Rb8rjjx* zzcCLBcz?)c%J9}q*9IBuQ(6fl7z$ab+>JoY<72(pm*(<~%~*(8t6L{>J)>%%W5V0s z*$1y>uEMRX>QU|nC5&!}Sx=q#!V_-v&>GR&3X}pAtFTIQ>f80A#TPe{in4g!^{zHL zJR9(15YS;uI6fD;)l|(vo_3cTh!WgH2fv~F`dw^rpt(x*Y{CAf=mQt)sUrOF)d%`X? zX_e0@%YE#FHP}rdJ?g`S{~HciWv1ACRx9_%l*b6;8i_>1kOI`pS8`e9n_+OX7Q)~@ z+T6C{CUtY;qn)^`nx$18QOlVRsob>sYvHWqqu%mOR2WF=Z5G3cs@K-I{D=-ax>oJ~ z{QH)Vu(V+&k($P$Z*LxOD>s2wxlX7tOm?L{>T_Y50(rz*t8vc;;7gt$L`60RcX_&z zz^CzqyGKS;0|A0Om?IwpccE!Xw~QC!13F0Ey;xAi+Lb;?Pu$l78_CjSQLh?HniGhS z!6h_3SuwIS>6Q2>0p%JAz9tM?9iI0!>+%cUJ4<&iRr5Wkp;X6z=sgUQ0aWSJfTfJA zJ!4IiWBS^KlGX2157}V2u+&EUD5)o!d1}+U{?k0H#Fhh+2=CypC!{_7I!Qs3Mn@kd43J#RqI;S|Qb;^pG2 zFn-YCvMHOPL)ozqIa!imVDYL>V_A~k?|#!aNwb5+vlP-Mt3E2E?^#7fws=8OFAh4*HB(LWlIy3hLdu4I{3e2NnG=0#D@-toy%vfN(cFD=}HV=B$ zU^3-7%cWqZ(4s51IFv{acS0#aDMTLqP7iUax7A8+p0`-+NBOdz2|E^V82pzMkotPzkK_DDS40aC5v_I5K6YX5hxXj6=3GGL!#o*u{0k_y~5fz;m+LaFZm zFcl_yRsi$YzGC%V#@!p?Dc4~l%;4!IJ~Hw5KLQVohtE&-?IsSLest;Ok;ZYP*=qQR zx=+Z#5F3P6gpC!>4V`-xbr-;+?+nz{B1+*iJF8yVcf?cFszLHEU^vdYEVcG&|W3zJH@gB zZM1~vnO|8Bjqfu4GHbE42=3jldAH*c2<7eH6T|^QJcY(K1ZO zBs%wiGGDor*d5q!_GX5?&+aO{Th?)3^MTF(g>dq{=v?g-7BQm$f~ZO}oJ6I)QhNaL zxe-{$)TsM!Z@UDK&P&LZ5s`sX3FJrX%u9%eE9t9&Ew!);A8Y?;ZwuF& z$j09B!~$ptG+7QYliVOGaCQjf5vkUP_OR#Lq9ZI^Li`-hKw+!Fi- z+%m+}NHj4IlrkHK|8H<6g=Rn|8w}8`Ns%_}tkq?$HDk`MVShW`XG`x*Z)LSj&-gMt zZ(?hZ0K5rZ40!{RDt(s zEsv*T`;RxS_w5=uTNyv_9v2$(?1zkQP&|`R}m3p(a59LDY(_u|{Rr)(`GztEPBgp(nG)S zFyf*hIB+HXN_w?jFR4L{X~c~=a~AKRbG6+>%`q*Hzcg6f@(pUU2Ih>el>AP}O)yQ- z&r@C-10cF9fFc$!K}W^N%?XKTmM7s)P5qlBa6#Q2OG{XqWjA0UTo@{zcr@1GQejEL ze*9CBP?%8U=zaMPOXBCHZ}+}_1qC$JE#^}uxjq-GdE=4K7SyJ(0NFpK{W6J`@h(KQ zzRN?8MBi_mU0LrJzNEJe%6+C>G+1OQ`SzStOc^Y5U>ZvoXXWdAOS1U_|4MG&WRbhb zK;4U1$px|GJAa1_U&;K~fJs_7@KEJd50y)TeQyG60f;gDWil=ZvG(8GXxfyW7V(u` zt?qsc?*r-=XaEEe4c)X~;v(oCP(*|m#B+hHI31#i&Z{srQ>S_h+D;k+8`cOu^+fbH z0m{o4UTm*c*eR__63zFKIFQmC(<*wcWF(8Km{4*GCl8@Ivgrdn{n*Zyo52c(;b4Q0 zdIF?9%Qg)CE4mbB{L#oEMS-$;EZDrsGOg2F^T{zq@GS9(k8TdDVE|aA93SD{)L3ZO z^IwoSOmamHk5sC;Fw=#3hjaA2Br=WRBXfcfWCVBr89l83Yh{O4s7AFX&f?c5DoEK# zw}3^*|C+ez8$Sdo9CPAOek`jjKVhxP`Zpgv&--#en^4fWTK*r0^;H6Jm-ltg&daRq zgT?!?M&08G!hF%$Pz<^w=vAG6;bcBD7&_jwJNK*F4K??n2>T!iJmfFHdLd_GzLJYW&2N!bGRNwKd$7T8*PDQirK_Ez$JlJeM<2*@g-f$ zunmrEIMP9oeM%N{(9#?GQ>ka|-q5=?F$XV$#?ke^52D?~L7`(IEwmHKzKf`QiMfFj zz31$I;`vpBaEZEc2df%%anF$1E9o^?e)5nEO>*vf_!w&z)z$AlWvmgXW75}p;qz9}s1Dp$P zP+dFKY$!&|Lpmm(DM9rGmb2G@K`76@6}`$3ZT8_oZwVPRD=eB@J{7}CcAmBewWy9F z{vYcC+jyWpxYkWwLEM>M{FTey`Fd*0uNCa#gFRy_E2Ov%3g_n*_8Nj*VM63gv3E<*zsnx8B6)q*jyy*B(sExiRV!s;qiX=fgqFa zfPVJ>?3YGvoCnb|%n^#?TCM$NqmZO^(wsMlF-?Sv^UZh zXUZJeG#<-8UAaGJ8+k9q8VAPC*Y0}TrExHqiEnUMBn&R;gSS*{80?s&gDY-+}L~aXE3>==feN=|@841MV}4Pcs> zNA_>;vmM&@N6=e0tL2t~YOo+aA@RA*6H}j>{py)thB<3|S2QuWr44UcU#>?w!Xc*0 zikY)-fTc^Xi?%uF##u6S$*z;?HGKA|yNajuioAcWN~8My+a0bwTzhZoMhG7{8*T>Z zx1gI)&{Sx}R4R$g|ZAKNkr712~~rSFd-=hME(gs2_6dxfdfh*NCta z@e)5Vq*tA3pAsUdCp90SJ?o;i=SuIRfO;HCy6jk}@x>2afqmW_|F=&)72n;{=*-I= zf@)KeHX|r=gxEZ>VO{^h?q=@<|GqRyIT>4r$A6z}ZP zC=nk0v8Tn)>{67*n)DTY6466&)f{Hb4yo^^+sCJj9qRMt9wkLV{SOouzmffFyf*Vr zbNZ{7OwH{n<~8T1Hhj7!M~e{4P%1nQYO6k7=u^o5Hbvu$!E`R(nqZiGc@Y2 z-g|w*u@`H!K`_(ZRlk8#+*r+0$s`*pfJ`fzD;4@^UZca*GZYi^>}0|PNINo#uR-K~ z3OeeOu^go_chd{ehAamr76=Rt67DHp9lcRR!zyqKu1$;D5lT1LOgv%62Sk%j2$zcb;-zu&#m)2c%e&-VHnCsQ@RzeTtYxDH`b^!ZP--nH8*BL9#R z(K4`Y<l+>ubox`hKl5MXKd2_*V+qsm%*GqPB$KYJ?G}Z^&V}|qU+SPIs4H37?nz^p9 zsVVIStUf9sd`>v z4OYKj^<}D`&^)@E;53ZFU}}BMrf*@>pwlv-_B%``tNozi%YyrC?LFMTEIV;%XnRHa ze9xz*xZzg#Cfr79QD`w#sgsJt>WLuT#pH>0nO5IlL@yd-;AuoEQaaRZ8~18yQ_{`K zB!JDdzxvEzeGO;751nMuz!Y;b=)q#o7{S;ULuHQCK9vp~ zTY)v;#cg?5Q*rBy^Bz>wUTw;9x`Zy1x@ z_D4EQi*!@7mnNtu6t&6*8-Me8^Dh0_3N+SOdg!4TbpHwU($;v+sJH1&_<#pju}gpI z`qtmA*cT0w$&>U?-1QKgM90Br^SFpg>UnnG{azo{^4^c}LFgu`6Tr8}yxvO*d>me+ zBfO21iU1i#bc7__)R|2k8KT19Mew0=?*GR#4z6xV|0CEuV+TH>@u&nXmNfAC{QO2 zy8rq2f+`+v*_D*N=~(u-=|7pOb*MNXUOjxP+Xw339Go$p3h(-%LDuGe}3Rnp(IVSb!zY<4p{kw??unhmBm zzsT$WrzqMioY+V$dS@E@3~t-}WmNkRrG+#wO{g2pT(|Q(!XD5i_X}bx;L;Rzgo-`= zc9X#Z`h;Jepn&nK3%XQc%@UUa#KO-1g=6n zu%7+rF^iV<7iUm~DeF}+B>VczLr{;d_?9cR$j*twwm^7Rki$FVj*{n?p+PC4Rz`SA zg~)$*$`acGKBe>rfv7ra0}P_=#~N9Z@&?UCq1c}3y*)iNK6&s`tO9r7E?kB&C?|1m@eiesycrOx?nn3i)IMcVj7+5^zn$ z1Dj8(CKEoy_fCf_Bgp-Qi-X3=mBzx--%{6d=Wa6UH6&E8i>Ui)>Co<2JNSZ%Fq`BX z<0Yd{91r`ZNjjaNfhc6Uqeo$1S2{c6n$50%xUYGb8+9+Mp~y|ygq80la>3sg1s2P6 zf!;TBzZICJcp(tKF-QMGs8jpr-&4BCpcf;t9p(&7fE^D&h56-ZC=j~^rtY2;qgYUwaQrggWzZMHC(KJ)iyczQU z)HH_5QgW#DZ>?#d>Ia-p&lSplwJ?5$lMZ|bv~rXe=WcCNhP|83$L#o3{c7ggKASbh zLOD{Z?Vo>-y?oglP386u*_qUgXzk!n_9vLYbH24nx&+l&PB>IwVI_rS38@E~+`P6J zozlF=cfw7Y$=eLVNjc%0T>me|X=aZ){;7g*=@eeT`|z_32y#wFADaJevA`1&qPv*| zcjGfFg@%;t#^fb#e>j&oW_q_ z_fu~{+JBIwUni7|hIBlywm$m%cGWum^Mx^4v!>(T zd`5V<9cyKt8=>xSv>Z+E+v8)na8Jy<0)JTyayp+Sm2E*4{Tf!U%j4oczpioVn+qLd zy*MvClFZL4jhfxJdaz5v0}HwowC_tZes)H`d);3w>Q?>^MLMS*RI8%ZpvhD8_-W84 z;wSTW@yuYf1}L>%U42fckM%b!)ly)?k3r)}GUkq;`d5DzdCt&CP}AJ6Y7(`Chrk)D zJ0OFlZ1Fna$bacpzl@7XZ=^JaK;Nks9>0IeaS>5>%<6+$>E>ho8d-MjC$nk_`2Afc`B6m?Yy z@HZSu^PQpfRi}QLz)AjTXwBdDDXm!(`VKWa?%dilhe6_7H@mLSnH~UNOkBLNl7un< z`R$u1`g1ehLskLPg%3lBHW zNENN$o>aWl!(pVoq0EYh2JT&({tCoMpu;NB+(+kd=804!GRfxBY^1b8r(!0xh(7AF zYgSyChL(T&UcI+h48juBRU~HUB8F!NTAr60Hj)uRtz9~0m(T#0GN(S$wYi z{x^l8P)`R(TlrB;wp$Xg5ed|qgl+~&Vc^019q_Sl>4UTthWa4Zgc!=)1zSs~-m>Y1 zLE7X|^k$q}MvGy)BnKZoJB==dCw*ulFEF`y^WaLG&ucPxB7?_rZ-g5hn~22|vRKuH zY6b0bOZLXc1lR=*=1*!9kC!l3;F{8>BuUKJYO;3*SFfv!&Q-fMEYbjQSvdudHhc85 zYS$}sMHtBOJ$5TRlGSU5i<_>zu^~EnYwimXHr_E3Vj&%M39S(WGU4$Btin>#MOAcrF0-qY5Uz|jBs>AIwhTljWGHYR9RL*kPtL{R!bW!y1IBvsq#n?q#o2YO8&w4wgw^nflxiw*syCTFw!TW$T% za+bsXN1;zoVopzJ z$*;d&y3f4jCSHYsGjfhb!|UH4zF5kS5j?~oC^m5sk)%Z{(h<*>Q$j{04Qxp29VSx$ zi2yLUf{~?jhOYk{^7l9N!ex51$SWj#^2V11;u~}pacX`7v$B)`!uuxm>w(Xtno$7i z(_pAZQY^5G20N6SCmZ7Ng;vcirApwl{3;mF-6F{T=)k>g-~67GHM={6vy~O;W^C1P zSc0GHfckwR(DQu;T#!0B>rLMsU^NM`9cciOG@oGz!fcy=>$g0tQ(wS5jgMXBu93WS zzAs-^*Jfyaw013n`PDzjI23R0!^{T_yFTY|i~6c*?Rmb&J3dT>Y>^E;Hq?eK6mC~5 z-kYv)v=k@b3e56v0)PH__)B|-QRXYQZ9^~eA0f6QBS1bAoKN%P)e zdpr6rVb|cnPS=0$mRf1bm!o$KJ?Gy-*zx+rLdUXx%X96p4eN`D*9t3z)#g2G3;8N`?? zkX*RC2mBmz4bSKmStKZc1J`%5_Dv$lo?Md2up#Hsf9iR9|G$|u*!1y5gqZa(Qkxlq z3mX%SDR{_(+(C?|U=B^7*A%OWupnct+~{;Sq@j^7`*RZb1au%5lVL117_YtgXndreHdKmD20KK5FYz!mPzl)Y4de|&@ND1VE z<-Y0;tnj!ny4KfhOudc=oU=tXO!7XDBllhC`<%f#yz8b(A|Y5Aj{zi53IKJ?_@8yL z7-i-W!*sFu!dG%Gwekrl)nr3!RTT*H=FO*eEX&mKo%;nmQK2y zVTOz9G9JH@+P(%R$%~i-^w3vZ2s3qn8MX%bod(SP)jo#QV`+ze5A3@%iTuoqrpRYW z^Bh!>NH_ICj_f7^#lvFgF2|^(Q?eGzErI9u!%PQ(IAe+(1rT6#zD%-|8FNx3o6=0J zi#ME)AqrXsP$WqrwM1n?Tn*iZPbQBRk>A! z>;+(X1Dunv#$LETSszC8Iy8Fo&{6k8)D98FydL1Jz+hZAI!03H%Hap{Rd;y;yw=}P zr%tvmy-{^zuBHQn0R*INK&qW~D4B3?x>GrGFjZ!U3Zu$_X zo!U;fyJ>bDgs;q8~KY#{5&bzVCWFr9*j6Ns5B~ziZFPY&aHJivRL` zlRbf2qem@(SeR*Hpsfa5+A2AX<2W%}r_;`Nead0aQM#-?YT9nV%dLM%$syOXP;s@| zP^BPPJTn4p)Jmu;fF)S29$T!3xqM+;n*2{SOgr|tgXGYxKT_RzA5^^*V@=vOH7~k6 znAJt5>-40=Dw>^AWx+E4{>yFk+QbBE!t`uI?+_wZ)y+T0`m4+8&9$Df3*$6o}aQVRn1+khPm;iR~`UJv-#md@J!Y^~@PY?^gpzBC_6Oi~_j8b9t}WzOnS)RZQ=ZVvg?!sMUiLdMzOYM_51GNb9Dxs{&o1!kQo%3Tb2vO& z%PPME2TQs2+|TI52=D3{oGmJ>^D(;E8);aW9o>&;%W4F>bHB5C?uwb9jwPhxw}vAL$Z#@Jfruco^1 z5Sn9!+=)y~G@MFBfjy|V=De|+9`B0}cYc!H@ceC(j7=I>&G(dJ8q^AD?!?XN%^R{l z!HaBvE^}7q-|`6kI(r?VQp0AZ0nxGD2KbTUTx}&14|!)-@(#99RHv4BsK{F_c%AYa#U~ zbWkcefH<0u<_M9LJrVh7?z8vEF^s?vyHZ2GAvk)NKM^W$6f)p3z;wT>{<+mvi<&lX zo6IRx{3vaMM~gmhUDvL>TS)q)s zqD*rn4K#ClV7tOk*HYhDg{G@$cV~S42jApN-Y!sRq8{da8FA`bkr4iq9MWxE+kXzt zTPb-VfE}84m*c2fqi6YY4h`FD^0F#M$e(qy;hTocKCx++$xCoovC)(soImbc8=}XD zguYHcdC^&ugcG@#DC<97{=mv||B-rGl7vu*>I`0HWjN(+ZqS~TAV%|;TXVvu_^CRk zTsGx83RjCC^Dqj$*c+^0RLLYsC{vS@^bs-mH+%EUFTw0*MLFfoL!F-g)QKF!JH6R= z9)sP9#?o-h;dZ!ICnv@hpT`SwAw6}#o<_YY&r!bW&tVFC)9Vc_cQxxuk)_abUY)rT zWSyj}H&V11j{`UO5}>@SJpyN!@J=Hb@GKOM|JF4C0zBNU{Idq=J^i#|C5MPRWCieY zt@Q3-m!9qn*r92|Fj56#z=9f9KQmzi*dHdCOE4N5IIuCML2fBkPFLl7HW}qmv%f9z zcz{7Kp(tHW--nkL`(51Xz`GST%+=)N`4y&O5l`XMl`p(=fApPvXG{uUU_215+0{>G zg32*@jMe~E0s=kuRyB}pgsT`=nO z?bvB?cypAmQwddmG7wFsm6S#Wn^jAf8wjzxxbdxyU;~GAW!l$F9|9luI(aVqYmnpp z=`82PM#|> zue|}#Beii%B2tEG=S4VY9nh;;AGNqH{|+dlfB5!Iq3BKo#P@)_*Pzsgrkt0j`>gJP zWLak5LYzdg)lTlX^^LUJXM;1-l3~)?b?T3zuV9CB8faQ}>=)Y}SiPUi0`<-s(n+|> zZ67EMkfNOeQ%IHS;;Nti1lBfvB|+HQ*qV zacmk-h3<6Z=sLCi^Y7=dSU4{-MVTZxrWa*sziK?aSjNXwMK|T&LP+nx)$99aMftjWSu{k;6lz}SUODeIm51#?+)hFdiOrbBXvWTWFX z=3V)6@(VY{TTf}K9#G1lZNS}JFOHc{wKpK-Hnj;kH0$d$v}Xu!>O+MsCHO2O49)r@ z=1)z3s>`K+4U$M`$;!Xa@ntDoEN0%=THOd^+(ey?9bhfLVhK-T+&sMn zMp*TagB7}&xv{asC>D35S5m!eTeP_odna+4PRo4+>6)eQaw$DC01ojz&(dcwaz1sz zFYo5`m}(i%vUf%vfA9p+NpN^SkXfe;TGZU#XJ<+ubap;gY)o&}k$rf4Nsc%)>`(!R z*?>v*8?<8ml$=HL)e=L8R1CF-#bh+c%c3zImh!t8L1TT=}WlJV1Z0*2Rt| zzd1g`=G8$*|A~zr3Hb&ZG6?6asL(RgIGY4}DhQm|pwOzn%TQx&5QKiN*nwZk2&}H3?%EkB&B4OzG~uo%~-if z{e6Iiv)@B&0Ae&h6F6Aonyu;$V3!Bb6VqZk5n}BmsaI+)kB&z{;)Vt_pIWV}2MPvW z2VK|15<{G1C{EbCszN7Vs~@(TZ3hvN5BSSuUH|<1%#YLfu2;fhuxJj5gS4nxkUOe) zlJAnkCd>+zRitCx&}=3MIcvlYeGypm&>zj`ifbleheXY!LnR z!Ls#dH`Ov5k5pircc%vEq-d}%%uuht^6gS?^X@%0L6=9>h6TD--J)fb(Q@_ z_A$_0>J;}U@Eczl=VS}HiqvIwBHs4YhMVtOD#fBVMeW1VorY0L4vvv3YY1@H$3oXJ z&w9Omd$|Y>t7;b;Na6k&*88D6*us`qR3^ zAJaW#x8ap2hu2G#L$y`%1_!Y6O#d@~D^FUb+}nyy#M+rj!oJN>E6qiO<0o``*8}NL z@tSZIZX*pg7|nyZ1?Gpj+VzVIQlTp*2;2ue7TbMjAOW)62!5B>hN4RYIw-};t^=9_ zH)3X-)VJXp0BHDG5fSfyV1Av$gHRt<@F8UUti}+;l7#X~~OI4P;#62Cz z_%USHm*)!BO84)6C>&Q>D)@>E)Wq_nx5|#CJ&xbx^a4n2veo%#>R3RYaHWDQ%qfwt zHa#3`zinclAInaoOzgCf!Hv%Ka#Jyz&!X&6lQM-v$qhZ4r&Q`&{dg8HB#jRI1V9UK z%lpYQK$T$m@>pYdst|y?=S@u9^LH?;q$NC6G-cly^DGo{=*gTR8ETd?V(!}rK$$Yr z^-9?Y+;YKG1~R15G>c8BllbV6_Io>#>&}{IllDR}Jj90t#%gvma9G{HhLMrN5ptBe z#jLy%)`Wt!|LoSVIO=Fz9(t(i)PZqW$;k%L#$bjafkAjN&H&d1sQc%$7a`cTPMp#32=h1_`Bd_Mq z1!Xd%iM3NYAtA=Mnp!c|s=V0BOYicDxfh&U_UpCN{` z#5(#272E&$_jNR`8Sd@IS`9(Q>Ix&V(d3X7BEPFGqeR&^MT&)PzRRyIFmK^+;CCwP`Q$-n^bfUuROHBSBY^1#`9t9H)&Nk9L;Oc! zXsFnccL=Qi<7Y4g^AAyD`%tWe2pY**Np1)!3@b|{B`fXw*`4?aOE!0`Te{Kc%+HX< zFvNUFc8~ke(>)U4V7lmz>9x%*f4X(>+t-g>b2OD24a)L`N~}^=02!TuKGTcR=X$&L zO{iO&d*Rbcug|$t@F`&v_+ub!*RD$EKmX3c#*JsNc}T)@Gg(J61pR7AgKT1{nh_Yw z9AgG{LU~`BtS-@ZvmwMC&a>6;hjNEZehe1^oW{yw0?K1DvRQ@==Eun| z*Ff$PF#!OpWVK*?10`|t z`5_koPQiEOC9gP6-$z+-u@sE`U4sa3jjxo<|6IlEmv?>#o%%c#`VNec##O9VL&Uom zZ4+zgY?Z9*t`V9!fG!#APwChSZ(eZ`=+i942^7EqEW)V@3y2^gC_1pDKP1{U()cO{ z*BAHj&K=)Cgzx_`iLM5XYZ&n=WWx!@ZmxPhPffYC2bV>N?C-wtO)t<3uDu_$Vr68S z;?O6UW|CcLF0f*=t^Zs)R8E5v>tg3h8X-@fc&V-W23>f%ial8pH*4gv6S6`mDQWKp zK?`e9pWAJ>!7S9D9^|O=Qem|j8h~7f{bd&~KK;*33=%{zm!43bdNEojAjUOUPj(5^ zUhHBW9U*U(_>~vi2^RaIoB@UP@m)qxpX(``OIem;`?CePXePQt1bg9EXK^b`v0gO}!x632Gu7KqD4pWdj0*6Gt{*G`l4J~Bbt#D6Ip6Wntz!u>_j@o80819$e&4lwk+)q@-y;zUy6Nlkij~FCL-obP7`3;*v^pq3H91~#oS@} z1T03?a`$X?V-GSmFZbHM5ESQqu!pRVR`lA3;`2>6n9lIunj>?)Pz6cX`e zzn6sBTugJ<^eb>Bl+M$4r@G)ZeHu5bTbsI^lwWk2eATe}U~1WuQ;k(W#uR>Cs(V;( zw?4VWhRd1!4Cro6Jy(f+xFgR|r)?Ia0h!>)WxrUI2XI>L3xz2K-p{?qhl5M@1m@nz zUu2~bjVt_I^VklgQYw%SM^C)3Fsa5{lj@Ux^42-cVm%+pb8ul0v6qdlOGFH&e`7Vv z{(+6v_2vVW>87DQn(`IN*RuTTw@+wXAMZAS(2w?5EW7-U-UFxOoVkEy-aF4?Q;?Yu zU6w)Q(4cIk)vbOV(GX`GU==74&=KoTsuOd^!&0szD+aoNO#}YPqr^KM7P?HprgxxUTBI$)4xYSV-{6kn?7$1V7aT|RYB3@qZscb$nE6al4 zy{Da$b3~ZX!r+UAQ638Q`lI7n&e&MJrT@PiAv3=w=FZ0vUuVdiUzWb-=2~W|&f`T7 z0br|FGo7fzOF@84FUNXyA?9hzFzPQ4v{J^2cM%(gaR2_7hxAX)fRAP46py#`3TkF^ z8zr}^frU;TJRzh2&635AaR!|7WML#b2d#SR#kC)Gu1ke1t;DJ)@%2s334tJqP>2%O zR^e)$U>&%ZBNVGwt0`Nq%ku<%kRm?yioqZ+0+-W^C#eHgGA8C2tdKAsn8-!a_QhcM zM!5OVGyOR`fKn6f<)NECYXt$&!>xzSVMYdJHu7xK&&J3}*A5^o>ei6_sw*KwPFP0l zmJq3RqN%Shb6ah(JkH^KX!|89fSlCn0jAb;-e4w3bOG%d3-qTtT(7FA_eAc$Ox48ja34%s4qsD#&^^o9m*T)ThStt1Byyxabh*5xmsMP9-p^zBei4e(NYX zN~x{pN{hbdu5r8KfM+r3;MLrH6{@fyG}w06#BizVJW&z<3iNUD zHLb9wdGpTv9%Xu1nlUt{T*D3`tf{HK4S@b}3FZK16i2X*w8mU2yW+sxVODJ`E7cIH zo4^D79GYEr%BfXsXb<|Xtuvw66laNr$6R=IDGHt$(>wsz)bSyEQ7-0K3c&DT96Ulb z(x)C70KvxFef*qwVIRBwA6Ay5Mu3JNlL;Gi0+3qM|m`q4#zC zw*n=hRxGUkCxJ0lJRMNK8Ve(c-Belg0qybD=iKl*q?T|o(TgyXr3+YvO?ngRoQJ() ze&TnUW$~4GZ~g5!vM>11u)U|A=`O^2LnmAs%qL#*=I|y7>^8l*nRc*eONoI?AuYE4 z!+3dzjnt;>8`ab#Gq8@PguC%b!=^b{A;j_*{)Lb}N4_b}A)ll)IH*q*W#*i;}(SI~#%Y9IMUc{XcYu5(6?nxjQgEvB!};Ixt7R zMCl~t3`vTMf~8c4AIWa-RMvI=^KZ_*My~XV+4M9?GC9(TjOYs$kMto}3`z1|2hX9= z{fC^(ZUi&#HG;Z1;1y34S~C{*!EnccXKq-ZBiYx@xc4*fV4rakzYm;Gw1h8A`j@&_IUn??7bnZ3kXQHjtULwRW>o(;8GY+~MUK3GMk@IDmF5W15-7X?>DhQQ?j%rQOGH-Pv7-?BLzOb#z-K(|e= zqU(#G7~zYCz%SFb#`28O19YW^VIl(55|iX2;x^N@Jl(oI3^n>I|Ng6AE?<(n8V8@M zUzCf@x>)4AhF59HMeojm*>37N7%6uEg({jUKBPEs2(Hu!KhhkwjU&izvFT8z409G* ztpQ3AE&xbCx4$e?b8ZV%pMw5`AX-wL`ns8|dENCc<;_XtzSSdH0Ut=NyoPU{a{fMd zO9#SH;%FuzvW)Y_QgQTOC(8xmUl9N28AA<$pdy4&tEZPLE&e2$Q)Uap3G`^*Br*S# zqE31Kq%t)^N2x`pW{JA65Ok$1^G4KF4OK(i^Qc^p3JExCB+TxToQu%NUA;Je4IC0Vhn!n2 zMAl8-m#Sk>FI*palKyUXcC$|smevKW*V`}E#Pgd(-Y`^hF@5{srHT2Bgf6?zYQgd*jrlY2eWG9O<6KF*4yh##vZs*iRI3F>d7`O8xEm`($PN zVTGDp^`Tw}fPqiS>KC`V#X*kYT-S80pf3?{mULi@1Iq@S%uEfY%Q2sK$JEss2J7&9 zv{j|90&EQ(-afNkwYT4uG2j4?2kQ|~;HiS%5n?Hc2CN&}lTNifML$kIv(FAbfxhZa zjj^b?3n+LPe0Axgg^8X)&7rtSjD#GrX59_aWg7 zmEC>Spo>)2H)GTBTipc#zbgl|@lk^7*$-?Q-7Ylb1npq7SV8GSL&^k~Qdm4g*~N}? zYmQ1KP2atywMJO=H}24_-MZynMz@4Xu-6R8JwaN@QpHDM+afS=Yn%TmlS@pwfe&9m87-fZKR%vX4at3mlEr`?cTQ0g zaY5fk3+F`Hl5Onb0cS3yXqt;#onJNZ)4simjdZ{ZMGosNwlXt0G1n{ut?XO<$QyjZ zJJ+-tQK}aZB+PsbbZFL*I~%-vLrY-bapJY4`84IeW!h^?oj_f~#*zpfDqT292IQf1 zUY@rl378DE#-tAU!j}uNzc5e=Uyi!8?F;mUzE6P%s%%0e?z0RweXIAB zJb<*o1&4SB`1M^HJV!9T8nqM&P&;*UQ_2=au60@c`sC$)rHy6@)gN{5?}JdNa`EaM zJ<9C#DO|pwd}Ts6R>l0efgS()^@uc~WHDw%kD=QU!Ql+OF%iiok$FrR>NjNctJivO z8WckO&%hRuwT0iDht$e>`|bGo*li&mtk=0;^x(qq{OVJf4yPfOodhkRU3nx=%XfH7Cma9^Lz#)8$E)7AJm$s{nPN#d*h&rqa|s9%pP!a5;PF4l(G8 zahY#gUkm}v2e5HT*<|ggdj6`o8+1Y$INf$@FuwK*iqlnUYfS?tyZ@L+Y%Z3{ObCc) zfz*LfifKF~h+bO+3r6IxwY;mDhso(!Y~`OKaHPIh>HNxU9-30`XN&GX(h4m~-=Uee z8X7tFgdY6U1bFJLZl&z2iu>PnIm+dGOGK&Dk;g)g$aYnMoT=K@A_%Af<#u{ooAq0Eg56 zrT!IAfXr#$ZWkSe|5&=cdC8S(!AKEPKO4dz_tU^+sW?G<*na{8hO0c-*`IM`b~>i4 z=H)gCEpy!1!l@XhHz@8H0rOXd91IoPbR7kcxDEzpD&{z&m5|mgbx@c~e9xHsW+)kd z_?`oPV8?$Agtexwd5d`^opwp7xq+9=D=;6$_R0QL!|F$z;2gQRDUURxJWg6*)nC5; zIgZHy+%GS)MM?}G+*s3!>mlm`Ih?5L4PY`LLtpHkp|gh)cokASHoZ&HyMt&WEb<{$ zXK}CUSVm!?6_u)z|8DBWBm1@g^RFW&`Lzn@;K(o2rZF#KFRczP)_#^RleVD>SRv2) z?Q?qm^lK#Z8gY9^S-*cPgip4GJpf?HQaXauMvumFfV~lP-vcJutJMd z(lAu0;hJ>yUCpJX!MCAp9JU+Q@X1$vu13HDa2e1nhfLprpHH=9X#!sj;T@YG!I4X5 z9Y3guTFWorr zK+JAb+Ig3ECmX&(+u_i@W4Wad&DHjXhJZl1?**|yUq>gdS-_RQ2m|$cn#eSG$x2yH z0tP_rQ`xm1NJWRimbfj&7+D{gwWh9%j7SekCmS0yva8eepU)!~bpX|C?&m^oxKR`#dFu4- zWR*3C-ii9sejc!|=Fk@=hl~j0eKfG7q@38o_=7p)n~yr&n`7xdSX7NIlp)f+5rL}b);NR=u{m|+$`tn%#=3*f=L z_KFQ1Lkf9ASlJK}ec5X-w52r^?D;$L9GWBeP<4jLJ8v=LkBwzmA%aicy2m?eTUZdy zrk1G|2sBUO;6K&mLv9-nZI0leHE~jke;Y(&ziXKg7UX?MvAh{dAPbv&LM^yFqTEZ9 zk~Cu>;-nZP5mOuJN(a&IUq6JnBh(S2NNz4*s+PNj7@g1x=!)kY9iF2+>=Z@R=JT4OndTiNkvr#Bf4Kto?V?L%Or^l*(P zcc$*pWIA7ePEY}Jm+{^%iKWWeL3^7+o!Z?GyikRN6i3yeME$RX;t~!Dk`vb6>Ok(h zwYM>M(8ivXYaS21Pm8eG<-0@`u{e) zbk_r<_hF%~^?!Qy{?(cxQ0*<8h>^exBcy|+Z7J(iI&(N2&OMzg0A(plojanX$HJ^R zenbs>7Se=IfdBILv3JR2lk?==h%zx!7dHNH=N_}vgSvi1vyE=met>`0iwg%ymM>!V>N2?J3~r} zQ&C89UG*HshS_c&v)qwS3FoHc_;8*{>|nG9da+>$+cBce5CNK}iOc9o0o9EKYBj-v z$><2|{o~|6bc75_KaGX|8fLEWCTpQ73>oq3-i_z;;R%F%zpd#}|Eqvl@_k3?#-EkOZ~iP>1Nc{V zA`|kj25%E);)SO+4V;3^wMS4aVIN*;(K`L$^LuTL+LoZ>sqlngPb)5@+X;&Iui#9T z&84R^Aw$44TqJ>q4n5B0?E~V&#Sr6a^qr$x-Ft&L8;o` zEvt%%6pwzEBU_1Qoo~!_S}dSxc?O2Vr!RdgN2MwJ4D8-By=y?Xu06JRq2}p_lL?>4 zgYDihYD&gL{%IsSmhIx9wF;JevRGqwzW&imk|~l>M}`8`4WJ zTD^V{Roxh8*J$VS9zbTf)_!~@wCMa#i$II`hiX8X5FaM+r9H81iG=0xxNicjy}>0u zyz;xtylDPO3Ht`8N;IqAEwfI(dZ;h#NrHK-C-?ju{=%GMz}I|mzcf0`B9la|C%U}! zg8-+*-@M&=Xa!EKCk16(=D8;#nAd9bDE?q2*Te(wDD*20&Aq`9yT`wNgb6~AF7G%^ ziacy6PU|h->D(KHHako;o>(S354n6@H3@kYcQ~q=VXC+f%!SToiX|*&*e^Gt;>NZu zOJSohbPr$fW$?0wjPKI>4}x1C_4)f*$pAF4hbIL`*}RLRmENeW2MnmO0}p)vQRVs+ zR40d5U$u$#E?a4ftWP?lVN^OdmQf6$E}#Q@&GI-)KMGq?Mc1|I{^#FY0sQXIoF@)f zeImTvURG&7ECBJAD{|DZTm2a??D*K99RpE0TjAT>eCx7USmhdHvypzo&7TB413Hi2 z5*s7XSWyTwOXi)Lu1}n~@sJ>foN7-aq#@Gy^^R+Je;Ly+eBGH8U`TFnh*w@e9%u18 z&;2|dK0t*-ufaV{l|8(=3!x0cL10#&bB5jJ><*OXDHz2j>;P9h2>Noyn`>( zgv@43^0^r7fy;9v<1fJI(ABh8T`wspQ1C{gv%bj43F&-F_DIv;X}&7GQ7+`skcQG9 z@r)-twUGdQpIT}}qL;X;H}^NZ2yqyuRvuHB4iVm}Gj@{lfxekihfd0(iy=2HWYGeO zot#ry>XK;|v8x2sv5^VPkOB9dl*^%6YNURo61gL=jU(}ahGBQJ>m5O+Jtih*oDyuR zY1%gYeqk5csrlNf44nTdseIq7=A4I#QMsnF@4QYtR^?FNUwl_JtuaW~jm@Ykq_9dT z1jIwplH96ETK&o(Z(ntHDozmMD~m;8D~%|&#m2g8SxEe59$`FN^--N3#Xcv!#(PhV z$Cni)DKGnyhI1wJwb#yUs7Iz84$a|i^X?P-mCW4XnN>Go2&)dWAvgH>CS9XQzLWSy z9qP%dwHrD>_Qh;_!mJQgjbTvvjL-!!|9-G@9JDw9mJ+ zmn`$9m!{vWaT-Irx}N4M_>;w?%5#!%ZB z?5RGOz`Oz7dGdpFB&0}0P$n54r8+LJfdQ7rXC_;`K(O1VTsr7K-hV?ncfYqv)bR?% zfO{cT{oG(tvq~A}-ATUqejEG7jtx}t&}_1wOm<=;0L)w(z(Zo|mld%DtyD11X_=GR z)?77Ka=FWn&U&S26*YOz{hxn-vS)HvH>(rf*(Kn8RO+ExLN4fVO6p@Qu)ER#YD|-R zn3N}zOBO07K2Wa~6>tN^$UBRYfdlW4=Qk23VIvMBBra}QC1g-y?!zH_Ra4__7=+e* zh7$&plv1H$^6eKnPFswT!a#YZ)k;gWT(qoa;ZDtWR$GTMX&QHZ zrW(|~F-l?5*466x&w9=5HJYRlsp5W&WNOK-`2cZ}_K&sr(&}(1orf;SXez3Z0*$6F z3BcqVa|AaTE9ORF9$eU?2?V4V*L!YaS}&&1w{;lc`3oXM@&vbBP}2xVz30v0*YeSV z@~#Gm9~SOXZCBE|WM#0vi@+hIODuI#2p~$b&@s<$eSfCc9prN}Rb3<0&oAW8ScgX! ze5lo#^l3&etjRA=99>HA5`CRBgttG!X$?mqyBwLVD$6kSVc0`KU+I?j;R&zQa4dJ! zu4$?Wx~uYfCjl;~xzN5*YGunXNjvy=$D_Y;O8hO&CiL!A1L|x@ewp_+eWYhLzSjSg ze5!z*zAq&$OG{NJT~N(|@jCs~n@T_UUK;WL@pZOYmZLhep3u9zjK5t|srk?2c1gq& z0`GHwWOj9KZwx|6p%94d&nYb(NTj8NW-6&0Ds}yj8W7E8Qs>XtKD~+X8gN#5@6B8# z97L!9SSQ_Eji1%#UT2p$qhAC-d@>+Lu&^(!EVn~8LjBpzmn&5ADcDF@Aa&oR3NAhZ zVct`R(rFR>5B6Z?Wl1*yoQIBiuvcl<=}>|S7sKU@vX7ucv+ab|y)c~+D7|LFLc7Dd zzHp6adD6vCWuzRmC@KxLy89KFyjkzeTP+|5FwBr{onk69!7?)ZunW2734t*T@M9zZ zHw#-1jyN;CWYQ$E0mJGFg*Y{v{i>v?OZrYBULs$HTmyVI(Z9~q6VxudTs6)No z?pe)}v7qPKXLND<@dw+IpGmtI7~b#Dg!|HxMQdm2wj>p%p$W4GOjx>F%a+v_h&qNi znb~UEuHJ!AtEX1GmHikAhU$1ABXa5jr3Lti538S*D)-tiN+$7Hl^cvdCa%jLHgf%VqUExY5m;AmOo=|nXM3OGe|px|KYzXD zb-)E-)S>b|CBMu1>-;-habmStG_02do^W(7Z^n9K2SdC0~-CiH1K%;Lq<#?7S^=6B98Y%$~?me zyEqcI&1ZL;X(dU54u{t$-RCDsJD+7HCL%cEbu=m}9g`)l2AkS)W zPy(y9TXQrq@+ak@treg4f`rr+#q2pJ)zS%?2p_wu7)y3p%O2O}E65t5rP;pRC2=uh zp|B-N*-(Y@ULD$sC!Eo!&-?d)ljFpxCN%g0;0C`?eaBnI(U=;@^&v2Gqv%e#YPNv=Y}~x z2yDw)z6;eD<~cVajPBMqPVUk+*Y6@CSi0%3aUCKVrez4q3HK4&*16QS_d0Jg2ybAh zgjBOX?J^EEj;3?ARt;Zx5!&HoR6dh#!#UJ7*z080&TaSzGk&rk2LsH*kj6Q_H^J1X zAQlXHFDL@u24mhx6oM3s zpl#E_$2`nLC_&*+OF91D5MlUUAA{?!LFB4V?*QPT?D8fN zulo3g)L`26`Qx{(Gm)T(F&7=+WM&XLP0`NOEV(_*BcP8k?~qE7GmR-RZ&a>r)oe-% z3A;`SlpE)kLTdam5&=(5fsisJLySQ(MfK+fa%4ys+w8vV49b^={;W5O5Gtf zs-QoNc;lg?es5z$mphjcQhj4+zXvkxI9%)d2<3?MWr{O%j;^-h7djW#06O!;OMMm$ zAj9>*2IYlcd%9X({WSGP_|5dzxpyUwEHBzKW_fBm%?|A z083u|A5n@A5r$AoY}y5bG4;N`R&MAN8v>JJw|w&uQmFdX)Yee7UKmC^k!$mUl^akC>Vap zf`)$GfBwEKcbwf|EW;s#2YPwh*;p6h=|FwO%-&0hdYzAul^FB5`C zec^1`5CHY$V^+JwMCw4?H?eVo_NvM<38@LJ+)qB)Zz;mQ<|l#6Ia7){LbLwy_B2hT z#{XG>ShWyEeCFs6z3bTvSo1*)p;@s|WWvh#s(QsUMWosJ9U;Px_*x6m0m-2e%Jyw< zC`!dBj3^hwtl;K^dwQ3#uwlzAx#eUw?~)QdreG0e&O+!-$nw<7HhI;JRi;qIo9qk< zdyu+nJ~}%(>xXNrTOcJ_^)YD(E1InVIn!1z3f{4pN@s_sv{s9-5MKlIQN%_sr#z3z3`TYWqNol_zk zTFX=A4O+vSum!kt-?!PYKA8lMNOXs*zSOUazBoJ3x%=(kK6~+44T-r7w26D40Gh!FoC=h*{sld6;3744rgQblb(^RoaN4dLDY9J)x*J z42m!E!PPAFFr+W>L&Ka3 zr6^80l9U#Qm#G`C;`ppGY>fv>U5mynawcwEr~wnARRIP87BQ=v_Ssj+E^`yBc9p8d zr*P3XP-^W@Zp5rv$sIz>8!&b?m}Cx#NW#Qrt+9ejMo>?Kf|rLuv8zZOl_s+o!Uz{A zovTSMS-pcVJ>bln%l61C-{PfvL;(6neI1BUxuoxan zN4ZIEp&v6H@<5d>qYv1iXXHMjX?P&-Cxnlr*Wgqi=;)gDkF&?*3u9EQvDsQ4rekHD zwAg(i^0Jm)=eH&V`BtxQgr$C#klnG1S8*9qH}k9Bq@@MnPK;p|(J>L_%s0(-#jOv@ zoW`t#eKNIrU3``|Xo0si*+7-DRzO;M-_2k13>{G+_7%P9UAKR$?BJy#Up%zSz@e7Qs^({_v8x)KI3ycu+Jl>A}Za^^p2NLs5cMc z%vLB|Vm>}(nZAObnv3vIC37WTU#x)XhOp45G@IhtT5;Ynb25(~{>MGGU z8Wo1ZtE=eLzxp-E;~YRq1?R7NT8qUFYO<_8ijmo@;a~(}z2RBw#|EGNrUs!-2e;&}P&<0P!JN zj$g;sY;5hA!&p4~4tyBvZC5YjP3rTfSuipEkE0u62u)uu?3F;mVIJ3H0Y%B6+-~-i z+tmXk-pvsCsO?pnL{YB=aP^k%w)$#YeP5=jT#je~HQVU8ApuTD{&w->`Fl4hPlo?C!56*n*vUQLWJJ=m4{u z)&W1%;8Nj|J?s2s1&qomYg8p`$041S*5b)k@;&98s=Ll~(POcFA?>>V^M_A)=Rh%TET(Vzz<9EiQ0U{%52#9|!g*}) zC?L%`)zys0uoGaMYIh^-Ow%4hu1UK~YSEK{=pXJT)?|sZz^Aoyi*)=&oKj+fBlxH0 zP%1RsDQ=vd%}wc6jmf|-H!IfnCBP!CYA=sR)~LY|_Op~!Zyp^F*9_cm7;a5#ZaEK+ zSz|ho#;ch)s^-+6o?+aco?+DD+8OCijI1m~n6_h>CD&nWYodgH zdYE7iC~L~wi7x2}&c(}X)vv=G>Ve~{L31zh<^0-i#FD1?)-bxcgk>X7+|Rjvpr!3g zawgtLpsB(u40NS{C211kJl_|ViwC|b8H>gTuV%)PSnb-05$dwRdpQJ;A;U0UL{A%D zBA0gbl(gPhElajmhdH+Q&tKPntDyc-2Xc2;v;1)^nAm0x`vk~rxRPLy!|&J?AH=7? zXI}WK@80UIhX|)KSU1VP*s|=c)ANlNYCW&_zsbe3tz)#&E&}(~w&a$zfua(l!ffQtgqXUh-c09O!R4{rX0n z2Qx_^Wc*wGFC`5BsoMVUu2?3y0np)eZm9|iW?Rg1e;^jURqLcx1DP!DN`ez>=XOtC z7Y=)u9P(6H&dj9=^#1vZP&>R0lk@OTQ`MKAV_Gks%HMfpqvBGB6TXadIGr3ufi5S< zey{ayF@AUL0uvq*;6d*x6=?2hd?u{_N#V@LAv8x2BmlKm-WMp)0H1)+z z%{A-+!`Xm>efXhj?a$wrv3PG%g+|_hTyOgN?0*n*42W*_#DpQMrod>0O=3hdWv7EP zxAiHc>P_3_2#>5njUGc>n>)2jau}dTlbt66FzN?{eqZVDFbDWU;f$R~)-h`Dz~gZZ zWskh`y*p7qw=ybu|5>~PYtM=(nV>pKLcqq%M9lGMnyb7V7e!+rvQ%n)C}}&v*ySGT zwdK}Aa9#kgc-uzj#i1ElyZV_g2Ub2ivr*6k`hmlv)4-%2`czKbE!Z*gNGP_nz1uW@8bb zhciD-I}}P!RQ%xbx#1bV>l8 z`~FdJ{k#(8K|GiF|&r=Apn5y_#lwHItw!1fb2 z9Ui$HFbrR6a@a=rOD#}xPKlVx%WlQ>)$)<%?PXuWmbKDe!}X_idiB6nb5iV7_@2Tr z#tFqL+V^7`atHIwwpabjovG)t4w*kB?9lG~|Gp@iV=VJ0uT<$%IjDLpe}C4f0mp2z zPglR$Kt5xBv#X%b8Z0l6(|yA74Dd)Tk8#8fwKKoYAS;2@)LyP9XfXo3{-tu*{;Y6v z?#=~xh6l4l)CLT4+C7N*kU6w!2;_T9=6PwQ20;6H4Nq?8G0A{Ogn7iuuIgUfwIqJ& zlHdEe7aHu5T*0GZ{%pct=IY^I& z<>kDZOMN;asi-S6-k8Ego;-7&TG+Eu&7GWhyJ3kCn`0!B3bPj);i@JQZRjTcH4a_Mx8ipbVm(K)gu8BAr@3JR~@s>9g?`ae^qC8}sHIUIu~M1extq!li+ z{cBZb?S1L>{ORSn&wMFde|<79u`(%`&;NR(=*!TpS9?k0lUUirs43*MRR%>I zDS?6tYZayk1K#*dJjrR-eQo6_0}X&dLbR|1IWdQx(ZWQcfI}`XD%aqhrp8!jL|v@Q zJfIQNC&KCXUaeRposK%%f6frrS9&FVfi_5F2d#0H=WtXw3@$PPXldoG`mR1P$)(Pf zd&Y}i@lvuWC+?KXk#Nsa>AZ~>SCPswtYob+*Th}$;Xp*61*&1h%>uj)uAxW zHmmw`kIqA(wq6UV2C+1>!-wXs6kv;1tL-yxX5-swJ!6Qrqlcwfd1Y||@h)ILrrNAO z@mJrAAMvL1>azDzE*B2(g_bt|-qk4*FgJnL0g4)qVjj%ttDb8q$ag%v;AWZGsa=}& z=4$yM#w^%y^6BM&vJVrXh18lp>WKy>ZLlDR1i_&jjvgS`+k)8$b_YLaald-&r)CLJ z+op_gDA}${5)s4>J2b?A%|&-IPvW>mZ@^e?7`Yp=0g_Q-PI{plg6dpzt4w^F<~vrg zgk(Oplmc4yD#}uX-@Db%>UW2nr%59AG9?hd` zCiUbulh5~)F$N5>Il8)_BwVv3zS##T6}|Fh!pSa=wMtJ7*=0(+9cR$QFaw)Je9cG( z5av8`XRD6m&)?kfKXBY6)5_IT4yNjpJx9)h+A#hm>QWr>{#f5|^@bNdWlYO4;g>`% z^-Dj^0vOy)pN0%2bN{9J*zC&BsG^&WRWEc|H(Z7y%3hQQI|yXqDxIcIV#@Q?NuR-B zE(Kqv$FtBBYL)*zq&!CDk#h)~?E%ET>)fLQ zOC`!NwCw!z_pGrYhD$-6H@xVR1N(3>QDfcov@1txsno<*2pj7`NDc50=#d}c56(b7 zHFpEfxymv`GIsFv67B5Q6NTA?KPf<2{sKhngZVGaoRDaAiI6Ta!b?;51&4qTG0we> z%a^Beff`-6>OByHz4Uks5RDyDi%7plZb`%+8ok4Szqrs#e|PTfB_SlM1HUXd5X$wV z;JhQnO~d|Qd~MQ^kD192WrdU<7Wxp>@Cui|s|hZ&rc_rAm7Cp0d^_|cCTyiggKt^Z za-OA6+DsDnO&dUs9qWpN@$S=sNTql5d?_o%&2Ced3e}!3|41?GWHquwr)Uv$D^#Nz zM=i`6e>Uj>cw`o%!IBa9qo(9By~9+x9;$SYs)Q|yP|Wc}mDs`(4?Sly%pd?fW7#pB zn@lQw3VieChnLMg4A0xp$m-kx44w+V5-t~nT#6|qgkMU+^$~qcEx)BbAWJa%dD*DQehCE@p&(Fe`+Yc<4aR=5UrlTVonyF znsM(_1&7GKfEOSWlAS;eMhx5BoX^;|;c7KGqg;S~G%2f?7MaQm1K~4_J`ap*aJeuS zNp|(kolYOxnSrfX2|}xf@WzjxJ}u*c(D9*HA31~_f<4@4CEO&6P>l%x1PV1R{YdqV zn7vpeyIS>Tu!MTe)yEu4_KwyIMB11jFnoQ+@m@~i&OeK+!o<8-w+FMx@u>;FIznE& z$W4b}kbI1XhYmgI3bij`CmQREs1ay?X^8xyCsx=pKfe7fHK*9) znSaW4u7Cc51%!;-r*rWM#Jp7Y)Bm)mLjX{Iq~*C+&|)nu-Kd^`ff}Rp_1t!2x9_k( z{{4DUmK~C2=x_P&U0a+Rqs<1BheMSVB}AU{TyP3H`W3^1A{p0IUJR z4GxYjOZ&8reG1F>L@tHS(*(Eg^(<6EroHY1&wu6P@6yVpiM3}u)v!0BfE$wjJ0#4o zKrYF3U{GXunuztrH=G`bV|BSUg*8Yrz+q@ zwu1`z28NiC*GLL`*lT6QSfL9Z$#B<*6zR!i*TuF&&1|4?tzT){r4@9R)<{DvqlWE{ zac?im85Q?Cv+T;D_)ut!ooTo6(xt9ny>xtCuq+YB_L8^kQ;5&r!`lGr5@ztX-6#mA zRXH=~*w%w69?g829oQEES?fu0E%Bul7x9@j53%1;-PEjaI+d-wF`7uz%uh%-Pf;Hl zS%#otRaOaThcN2-J9KgL7Bzyy{hKPj;mdSEWFn<9El{yg~D~2H@l+)fZQF(SL zL<`dJ#b=u(r(kdhwt5#rzy57$Cmds*hEm1I)%BBolrm3%qjzcX!~eNsuf8FR1^vrJ zUCb-%NbDqYRv4N~(tpi-Kdgqkyyiw_o3kXoF}?J1Q^U!A1w$3F7Esa%R=z=^CHy2p zeP*c(AC?}w0RDk3$*siDgn4yu{BOL^Y~Cx488XUxi8|@({J#57&ToLrtK|r^tkA!a z)acXOB)w{qDE=Y$c=)=g0e8d~RwO<>Vp!t+>f6*ruaE-g+p3V2@So0PmrGNKGf(Nm zhPy1cZSLJS=uf76(uiETHjibiIJ7NPJ zQaZBU2-ny!|ETXbLoZ>DZ_o@4%Pfh|jmyXmao;V$?GA@ zyTWx!PvLZ^+4-NE*)wl&`g>iZo22;yc1}YKN>t=YEcQQWZUACGr=$F#0r5(4^u3F# zn#gk3CUPte*el~T^0lQTg`7&b-=YTkEM$j)oDIYfmi2p!^jw9*ho&K{Y0SBK2s#cy z<+4jVL}d*XuP+ZlL7UDD54<+WBlkmv0XR?}Vfti#5!9vGJQVQYu!o@9$Dnhwa^RDj zX`<%V#pDlbsh0=FpXMI-rZ-5zvSOZ`SifBs9K}@jQzwGaP9v3z?`;nblgT*CF}c*r zZyl2AE<5b{gD7hRWKr)L%uqC36DJytHLy6ME0ue9aE%Yz`zV%?UZ%2FCT(yZzx!y>6Hm8m2Z4Cn2>S@sX)jCVMh9=^u(6acNfv$Q;0y=X1s4mFVq6;J6bnM zmmqXthFqrlb#5)yRWcH5qnYn1$c=wWVa-qWr#X26C9yIEzNBU12m94P?tM9}e(~l9 zYcL$Nvgg6P`s{@eHbU_2fq8r%UQLD!@6@B_jZW#MD1C@*D^KBog!rOcMAaq%E90X( zqRz(`t`MJn@{wanZ;k&1^o5IxepIVWdLw;Z{44ZUDrX1)*5&*W+W-kbE-h1{sNPH> z%ma}aKl)T7Ax4;~u!Cv!fHgyPms7JeYzTX5zaa1rz{x(?@!eDTG9nOhw}z-#S9T3} zS!-ROyh;!dRZ6;HUH1WtZQy8*V)R=*@GG&(hmu}lEW+BcJo3^cEwcf0I~`!du}B!Hit1X9;T(B5Ls7Jt$_XX;j#Z3od8AmJR)rFmg*B+BYAtT~ZXQ_tHq zJz*x%nX0r*cH@f|DgiOx{&L7d5~8}*WLnO#OU-_!PB7#4ec}*2k`kGW)&bbHx}*ay zEj(NK^G88^l)r0Sm@kC26ka!0aEKGeWn@KQ?Md&Tg07l-l7yT-!@<2s6O-&>OLNQG{yLgld zcO*Y6P{n5%BopRNQ<@*3F|tBxY@pg2TqZuUGpkqYr!ss#i=w<~M@h238qm(VNSP%1 z#c3uyV9DTv`%&Iq!tvGA1MWpeS_hidQ7-lHhSfO zi@*>tQ@$}46W;Xx4at1h!Jy(OsRz)8Ta#LOu<-nn&u3*APO9xU4ID%m~ zfd1LOteSI9i~KS%|JGV))Yi$aG|%MWSt#t^YnsbPGAOuJfRc!DxX9_@nM*#(cU>;U zh&=$@!9+XqOucPC#Y=Xg`!_?%PiYb<>+9y&AQz)!3S60aIFY@Pbz+8^@r z7ME{x;Qku?%;{chxuiXSwW=td*;!U&VDBy!B-qACUf(i^^wp?!^6>TdR$rdEzQJWk zrS?v2vH5oBVAa<;f^0A}+7ND@XeZl%PuJ%SMTy$82UdIS*FDpfj)E+6H~B;H59XVU-RWar7ku zBA@Mm%amdiVZ6gb@G-eu0-I@783tmvU)}>itFxgZf7j77KB*sCYAjHQ&t}?*z+eEe z)E^q^S1mC%^II`v(rTlka&slNJ>-~vhR zp+jlhV~J^fI3`XvimyHe)36pi`VzMaQT?kJzkdeG)B;9*D@(ar>8#F?yM*(wGK&mr zE1MGkhP|A9cky7-@fpF!dWiwrqOJqvaWu26!``)qfvt%GZ26^EU7Be&sr9Rm283V! zyEiM3T8pe^ZDfjqf^TE25#z*v40xoY2*?HSG0AiBpD}lou>u ziNC z9diP$30I+JN}pERI)^zk2eC_R$;2NT;&|qfwd}IZFWR97nSr6^cMSPazYedxrR?l5 z{nU3{45$c~mmji5xH$>&`5|wAuclO;N;S~DUUI{@FYhD1Elu`VH{$K2YcUk7eyI4ER7 z9~6}>pTnAN28hx+LkZurwZr2BMl};)><8>$Q#hBV3^r-73*B7Z>z}_h87yFnbYEmv zp>bZDY7Bym-;cU zYS;dK*7W&n4gTv4pY@I+v#o_pY z2pC0{O(iU9sUiV=ni)_|L?1U9@$wz|%-#pV1#z@NnvV5$umP&K> zh!%(rW%f|b+zrHHkpvUHxaHib%2*j$rb$3rugE*Sr)QU1eK(mr;>7 zzxA3$i~-mfQ{U@WZBLUPVMre2jL+UX?{IIO(ULm+rtD<9Yma#%-g62HgR9D;4}mH1 zNm611!qa>^AM}e~zu>ffUV4^^fOHZHF6XszIiqi+>$tH_2`p7M`MF37SLN4!YR;d0 zl-rVt>nfjOhn2og-pqmhs=j$UF-U9Hlv21no$S0~L)GjT-0^vKU6jbj<|=%Wf%;dO z24mXh*RiU-$CN^CD^qSLqrhjV%buY_EI@Z^j$hno%S$#A`%a8WqGi&g*0%*ghPUta zQZe<7&-#%uqU+C;V1nlErY``_Bc?XBko%?OciUj32cLoyZ2Qk8qTWzxeSV@DKxj5* zOzkYOUo_9Ulz%tL^^0XBNfU~6{P}y6Cd$m>KD}S2p;pu$EFjd=MoS49>coTuVu>iG z{b zM`>Y_^*lT}S-a>?biujre0Nm?R$<11melG7E7luK2K@+fXz7`a{6!ZBFRZ~Fa4gLi zy;O=!=IK>C|D0&()%h(7l3A5hPQctxW77KdaF*E|B!URjKQ$z#S*i`I6Z%{zQ=U-5Df{${w+TY7VZfKD22xWpjzyrX&eEuK*}j$ttW%brMu2F3Y)w@UH|r?SoDHz z%VG)Ty87-tI8ODDpcm9)(j7A1*_}eVsY60d(aEBV&U*e-;Fo-n{g|ZfYZo; zGh$8Rv;jpxpj?oZ36-ln2!Bn_kSHIgG^Xy+fIru0A0_5E{JY{~Ey;KsJ|>z=TUbHE zg$?7uDcV(F{>;tT!909*ihA3J}cOJ@e7%PutQ`44QZlB3Wd)R$&230jTtRDVvG z4HvKFBw;eQfP)kIemE8pCcq{3psaF_?Oi&RC4NW-wjuEbePVK6I75Nar-hE zu$ia281IF2gdE6iEapoAZ>AoGO9gS18(EysnH{2h9h$h`KY#O;p;Jl%G&RGdJEoV@ zEKbg6@=mQ~^@^OV!Ruyi8cCw|XoDZp6~B+Rwqy6tmVhBD1_F+&5aygX-Iu4x;tpS)} zusp-fMV$+g=A|5cmy&h=6y9f!X(h&5%_wsuw?wTm9@q4UFger?`kT1~**7vcF$-8J z3u=b88%WmVMH@9!;K_U~XQ2kgM}aq@pP6oydbNJ+3wqAfngASu*b5|)Isi5f5?mY- zI`moCln3N2s|tR|WEXn@G_g+?baK6$dc{UW?h;_l9$2A%Ddo#QXH3>NImJh>+IOBK zmbOea(A?Lwx>&NWN}wAtK*KzD;$-z4{H>o3uGEru#Fg7FKg=46^av&7rf)1!S>{Vw zyobJ$H^;=kGPm3t4SW*fz?26DF|(--vjjAJm%G0^0(-VUf1j!`xt9X)7ypNE#d__~ z3%T{#J1uPbHLYqZb6*$&2CPmVnyowtHsFRs!puF0_LZ~5KgPn_hz1G>G&IyJJ4?UF z{CJ1q0Y3Cq<%ctE#4J+gux%SElGL%$j$a(+DMoBK>pc{qKM+rd!l%cXDJ8jl)?Oc}gDR(O*vo?w8>_n_c<9)D~vhUkK{X0}6Gv7!POZxZp~idOm-79}jx%tKU# zOfwm635-a?hw@?15Q@e~Qa<90I}11GPeO{hGveX-`x9-j{w43d>=%RgWZmg6S)!(n zsRQd>eTfNrBovmQpW2kn_|#iIu$dgtZyp1LwlT^jDei4r==9qPMWzw!3-?5LPmS~oM7W=tdqqSqS1@eP~LxAG1tZ&k5?TqDcug8sYw zhS^QW&EU}kE{<8ykYEQZt|t2~<&|zdrLi4|sjw+@>iYAS zf}*qDh46FHV2eK~v`fZT9%84P+pEa@oyb#yyX4NBuh@JHg z{M%vuh7>&UPH!6<<@d2ubna8B7x7K&JBiXbM-3gTL2dpmy{+JL!=ygacUM0?!2oq} zyEcgtkX&*v+IdS5r)FaCYcVYkU5r0H5^Q~ymVT(zzdKmtgF~I1Q{x$}g3EC8mbz>Vdv3_tjj_*z zWlQ(C|E~_ka{xpgPko-AGZg#aiBFI-E*SE%e{1vW=gTDMupFJJ5ld-(t1C_IAC+(0-fN2gLB99h|uDt&Nq4U*}n zT1nRB;?@24Iz%3in(W)Ve0f}%v2_fnL_j397<9p=u9obKGA9eD6Q ztgOS`yT&M7KE;V+UqP=0C|ni__jc$~w2vnHW59+4Vodhzh8hG*f7ZW0h$6HO{Jzb7>x@!xT*M|H3$v9GgtFm8>bpvf zxbaK)Gb1dS|6D7g4o6Vuobyi$BR!g>qlq2vb&GEpPKB_WI--XTHQDeQ+C%?Oq27NL z;I;5-G@Rxqw8gxDuthA~Po@(N1jqPs z+2zKn)Lmc_+-GPEk@t)2@JmEBvi^0^-4(7vVK0IJJ zn@~k&zpmzF3&WFyZWj8iu4e<~vhS}yCp>CXT0U*Q+k5r}FC=S;jZtG+5tEcB(jJc$ zBGG2e%3Jj+c59Gz7layhnK5)=mtC+n=cRJPXV~!7fX_LWacja$ckyX4yp7Oo1ePaih7{^W##0 zd0eb9UJlaD=%aZR?8tC}KJ8=!1RQ!VQAG{Kg;G@f;g-5oOyCVEyXMme*%}RzP+aRn zr&Uenj?bG$?R(FRzI{}z7W6G&&nc533-$U}gN7Vg|9N>zLr>v_dP2$<_JA;IC+t57 z&9i>5Q9q=B_e?6|;L{G7(+DF6yf@S3gM^zok^^z?xMFy*5|g~@QxXSBjkKl2vpiP9 z_^|LG-@t;Hh2a7bAGpdbbLMZ9*v@jfiS`>k6$f?#1af(}5ofAwNxcbow?m=V6pX>l zoSKGGbdsqdxCs*ZHdlB_AQXslqVU0vbz%?%z1Y0Iea=JW4%hk{7|$l@p^$t8b(BO% z$iO4-Px;iZrl>&=3>d%KVlT#|L(sA6u_0r#j{$Lzz7nY}q>+^a(EZVBhj`FZU!QQI zT+$U=pPdNJ5wzs+qF-4{wrn-k((n7%LTN93?K)`qnRm-svt=cwr8J>@kX% zOvkrbh7u-Z(+64TEk=nsP^|0&?%v^>RjZo@H_W7Oj7V7E#4)lelj|*2{jYf2oxfR| z3$H*0h~4^fkTl#dMnF8mm&0s9{9Q(qzm&qr*xMYZ1dRQ2k@H73T2UHq*(cgur0ggU zIg^X;H9xfSwMtZzB$l8K(ko(T^agwB`pW)~P_kY%J|DsYRn!BjlqK;&6k_jwbX?2| zcE=fCNoxNPzz2&0jD=T>k)>)@dxrj6f@wV}=kH`-DO2oNb}8#A)3yl_ktO9HQC}_( z>4#;Bk<_nKQLwh$J{fiQeHMyb03#$SS3m z-rOX5#x8Skq@MRR7@m5Jw0v;|#i{#U6E=d@YY6_bF~Fn5-TLG*$4@Mpmk=n2ziZr* z>xIKito1PEk|0Yi`b|1unB5Svqo=SP3gdam2KU4<4yRUEjlp|m3^E2QqwV$YzwPw~ z*wM?%#(}FJkXd-}rv?CePnH0|3B|+=j6gyVvP}fuwJk63!~GH|Epa9@Ob{8{!ul@e z#TI)*YNwr2(w~ZHdF6%d8r~!aF2=c-0cc@xReG{TCV`%d?z>2Q?ZtM1L+Rczc?Bv) zwWVw{?>iDjGRkj&=R> z7Xd{t?rQeO8-a4d6V=ug@?vKWDDKyAw-5XRl4rT-Y8<6ymlWa!vyOFokz5S*mVz~( z#~PkO6n;oog=kZSCTS`hq*2zBMqnQs%EV#Rr_9R=kgCejflOy zyvPz_9GYG9HHrBFs(LG}|8#41h*_%reN0L90feEs;n#XSpQHSi~i|CYxyd9tzRhJgu*)?)4XF5x2&wjR z9ond$dhTjQfXh0@k4t4OZJvgP8e|q;_w(2+zoHSuvmXQ5OT(1GwBKL9U?PUvb-6H+ zRGzH3`Io{v7d>9O!Ma$3$L~JPf9B)jUP=U}`O;Til*{ARPq` z`FjFh1w6h$<-%@VxTy_V5er5=Rj1-Mu$fUYcfuN;V89^qo5@;8JWZg4(6=W%Jbo*7 z!7?6O`EosT1Es(u3drq*k|*l~+%+8A(b$nKyu?A?LDORrKEM1RY5KYYpR?AlAKv)b z(N1RP*MWM^5_)QBC3K!k)bx5jr8vU!7pg2vpAEqoigcKrEE ziT`SiU?j3jW(|6CsRIT@t9nU-3xIzXA$#DO<*+g!d_@T-X}}ChtbwcKx7&d#HV7T@ z{s`Y-*N?Hwn3LQ}qQpMdm%m}}!+K;jNu6 zL?6#SFnlG(*6L#b$6%DxhN9hUykuecg&B3>jfNb_CIv{SW_^U^6pv+^M&>$?4)>RZ znw|eSN@4?gv1vG2UEhOUijzn|o|^2$VuTZVGEHhscsvSuD%pWag`ajTp|1x+klt@j zw7y{_Gbuu>XI3I!ePV)L>te@qTp({O*rr!)FekptC?YqTJiawf#X;DuJ%@lSyBWyi zUKSgRV6^%Sy(rbCD8vN#znOY$CQc*IHG{1i%lq+w(VmzXLdu9$vP7+P?3Ugb*8^?X zmnlac+IIclV_XcECUhlSH? z&#PI$SQtBR@WU|f8r?&3@+#euf!I6-d?(8m)Y!kAkR3$$2_H=~u2}L)l(2jb^7X?W zuWn63x&Cd)FJIlDrgyr1AVR4`-W{mvT z9D*pbFCc|fLTUA}lvQ_nkuxOA%%`wC7e%5c%E6eWV`1Z*p_T_4gkU8AsxxDif)G z?u$b2K#Bba2BCJ&Wf>qVG9b~?+RW-I3kJ|o`^VKZ)#%$#+Zh)sOxU0Egy5i$UgPN(JAkwfx z>Mr~9@d!p4(x=YTO0UE0K}hppsJdp-NrG}yuq;;<(+ytCurP*J9iKToIqPmfh%OkQ zDf5>nE>_z%JeH}w4ULf+G6jBWCp>hmv`Wu7e9R*hRmJMhZh83J&Jg@>bU3$#)DFqU z9IQkpWw>cdI@S6Sp`+SNMF)VzonH(*?Gf>j%MVG3^ll&KXgjLJ-gl9ejug!Vlp*;( zrJOFJp30o48WNpNbEjOy-~cz+@8<2Jb$~K|nQmocB5OOG0H?I*JBwBy>4_C4WA@}rq1oRKl%Ht$Z9Y)fhIO4|9|y6-bxPlmlVTi^pl|KFP4o&CHaQUV%NO&_R!!vS5T`Ev8^ zYQe4wLAV_Z=5FcwnlaB>xW``(FZ?!bL^nlV`NU`nm>G=#GP5%v@>P?uoBS;IY_G~I zA^p;?pNhV$zRK_iOGJPcn$c+NBx=Im`Zh>!1xb>f#2JTI9P=)Ap4E|FJr&)~ybX%r zkk{>d`O3wd*4V=JKzs78TJrj~R(9ads?_iXdx_5$ZKlvqz(ZJ1z+x4($)Fow)ZE^8 zRg`bE&&?44&$8jYzd19gH=nKOi<-Xt?ot{IyFJrZM@1Y6&GGWo``p^ukd`Qo+hR~p z`+xJYCeu>QbWDHxWj0N)pIw$b{nMW)-U_Z8qT`n#H}7F zMyccF6kL^#GSV1K%jM+4u;Jl0^@5oa$_1&OhY&igIn48x%HNrFm2trr`A!rb4en*yYs zd<@M&avG@b(_vw>a>z%d%U*57Jb%Wm7`2Z*_a>QMa4PfL#Ml zsi)IYq!RS%S5viBi-UzMUFid%L#lSzIs`Qsq@0b=t$!D| zGVp2wa_a?A9qUNXqfSq z^(a^PFxTjC-&9Yu#{MZ6u*34-GQcuzCycW=Q3y6`XulA(PQ*y{G4(v?g^ZVWjr`-u1a*KC+oZn#bZYxoKOW=8_cd@$#!Q9e z0oHH|ZeFp026Cw-kHlB~K=@T6W<$X0xI=c?P<4y%SgjM(!~p!qN}TRk=DZXyyebrk z;xG*ubMM2Fnb$>~c6JgF-K6;pOz1x7v8||=9h7%|4{j>2Y1}2S*)Wi=$l%^;s^wgx zi&}bfEWx6u-PuxF6hrcqHhmLW@S_aY!L$vl3P9J9gi6aqEl}axsyG4m%WDJH$&%UyC5YlPpy$KbT=VZJ89{+$AaW zvT2n$=Ce}Qu-5NJi)wt$y&Z?AErDH_OQA=RTGefw=8T*|i5ZgV$9v^Ay+>baoZ7(h zsg>8CSH{P@Q>~GtB~jsK*1v(-BA#f~G@dBtB~g3Bp3EBLa?o-QF~)F>L9~__#V{R$ z0;0j1*sVjT)!t80c$3uZTjeDRL+h)%2bCz)QrLGU6q~KleIeu;fmmGZxd!+#Ebn~@UGgr~=3bW;QZ}Zy2 z@r(pK*6CHPu%cNx`s-W&kjNd^S_fmIC|f<j072VZwUhhSoJD8S};{J?4do;6c^M(um-CXsMJXM(IZ$x z_F0TT^HOhyP<_$1OwdzhMNA+1MfIym)gPMCB%7nZHPf5i35a{?Mn_?Eb)wOzz3@_4 zy&c*%JOD1QZhyh5b%J;;zpE-RM_NpWl>2P=TYCw%KSl$w%54qNc z4jc0UIrVR)Eeq_v^57x#1R$yt-s{+9R3-!c>ANHoQ})7RRPuHlhb?+&4iRm+6_`xT z5PUWs8jh!#DHz-=p*$e7`Tp+h)9x|8;g;%OmB^`!_mcchnf(elWAz+N&5uEc+<>AV*OCf_ zO_m|cioC=^S&=k&`zH8h&No6ieWm{`8-!xnmzG(MLBrZAkl zgUf2#>bkg#ov7AzAEVAeU6F7pQZf7D%-DN1716eNC^c zmN`SmWR!nBCuQkZ6r=8KdPWvDmll@3Hsw;-^9ahF_1lp3_&mHx#@-_fWODdD^$mUV zZAPKZ@wr#Cv^LgCEa{gXXQQ8biORGNk=Vh3p;|*#svqecN)SD>mX$g?axrqCc8i7Wku{D}KzN0HSfWD)Gft zFUT9U7^ttSYlVaU&@Z>pcZkNjACT{2s-$*?aayW65-hAY38q#+n8w{X_XNK8t zjh0slxY9m(1H50g!dwresKnEEC~R-iQ($tlSvB*M_AMtdx~`bpw^TTQyy))xi&!@| z`P)=Azs#jAUN9Pf)lw<9_HyEh_>=6w{QOaMzA=X(*Mp}hmqyo4=4;22otnpjdhC3J zDVXeK9j^k9oZSGX?c6RP|ITRjB&)%nq}(lDt@ z%=8U=)8q5AJh9=)`iI$3K7rdoiJ&9x*1*XX;Sn1VjGPvo{BMZSGG02=S~dL|zTjf0)<0r>NPy1R z_JUPr^Uq?R3FQi{4el!YGI~?rtz!1bQWB%yfS zvLAk@9H|51aeNh&yJ;x%(pz_)<&b_K>Ccs*6DJ!}mjM)ynSO z{Ky5@HV-e&tmW`bE%NehXv4cIeZ|xPsvbOSY23uxId;pNsrT82=k~H4v3{!S70!eI zrS@+$IUCuCL zWXQ#29Eo=Uqg0#J7uv1i!Lrr`1z5g_sNrV!#K4;dHrzmy@3&nd-UB{EkTf(y6SsM|KW~^z6CA!pj8QI z6h-E7x4PKuG|6j1PY$Z!YHz=sjquf-iY79V@WoMCz-Accu8FOrqtK(&7x}LovKssJCZ{8 zLzpa`;k**Q-&C#!vje*}D1cIvR0JZ9u17oBvA|R_{kLkQ(}piSSFFiDBZGS4z#ht2{l6wBG=>qzSXE1Ch{X{-|6VMWnqEKl$EO zPOuOgJ!A!9wipBnIV7vrNb>aCB?Y-yT=L+lrBIjOi;-iNtZ>AeMTnterF6S@liqIzg$L^D`V`Mr&iFV%AnWB|Hx zls8!4JZzcB3Ww5O7{m7;;}l>c8V++jlaf-aO&60d4tH*~m+<1!EaZGZz5?(icVgC3 zxn}XY@cCkWTTq2KzN5^T79(z%s4%exBjxJfQ~lJcX_}l>>TwasIqWAgR1)&B>i36@>ym!4lPkc7;%G{${&4YPcxoLdhorxCVrZ0?fxk+p^f6TX9 zNy>;x{7kJ$B7|+2oxvccY$qEP8WjDuWpQ}hudWz`Kw#4U>st|rYds#)_a_ix>mQLKwdoBG{$0d!bT8qBrH2bL10p%4FqUo zP(fx)@Ws64&KHb7ZYNVZMZWsJ{Ivd?#M3JM%794zL#v25Kg>@2j~2t`_wckjjsjmr z#VRC>DUHWN&uR)sw!d#GfEUD~_n+v;%M?qOxSEc(=uqM=NX_{tOSrNpWGK6fKV1P{ z4Zkll*YKDE7jM_9Gf`Fr?*~?ksD_s~4h(aB@?w_*9PbRz16Ma6nq!Y;fovqcMjwQs==K6B5P8(hLF%h zyo=5>VkMVcQW%a!$1&!0$T`;<5Kb#>A>2Fsu9Fgk1U?~8@dF-TjCAwL;0i&pf&Cj; zSsa}FWoTC4@GhAjj_R(`z$N!;t}*i+Hd)|0SF3Q`9sh!la5>YuX6rH;I`2>`7>hg} zi?Jir$b-iY5KoNsxb2rfB4X_3nU86yw1$IJ6vr8qwDJUmyTdxBH+0=SI0&RA@fgor zVp_0se`v?pxcqs{#mJ0oMxX4-YUD}qzoG&IEoOugzvf)XW`gFeykM2fqwW^uGCmUO z)yv5!a-`518c!5J&D>H))j?Zy2&b*MIKJm}?B{}0dSjy|J1GWU7%?k+$u?*)*(|QS z;08)h#iymv=>$(6@HVtrko|13-eiwYsi~6k(%>6GK=b}>-?~{!X7}rHPl z(#9(jp6)bzZp*kx2HK~mENjd6x0I{k|A9fZ}sKH{+ zMy)iIJ1YbjwSo^m&)=K>Ip?BFk^jE;keGf}T&%VPD^9|@#}B#JjR25zi}S0-BG{H+ zODVnihMDKp1PU>+KvOy{7d-bhOAh_7ReQ7TY}S3C!7)#}NiIR{f0}fz|G_HoZiVg* z2;6_buiq_Tx;g*fNnk$q4H>6X5WKlVV}K0#3*%-*Y$n+Y7qde~G}OPdLHQ#1 zs_u&vh+$?Ao3iwC1gFF}vEpDU^DMwi7Y=eyg9Ri4O{%20!x}Gf&KW5i(MpU1q-y%R=Mwd)q^Y~xl^TDa-%Ow6dI zz9(0ssqrI(X%C_8fPWbU&Hysl!SqH8u~Y*C)VPQIPopb+L;k@(>+||feKfg&VHH1` zR4Zq-v9aR7)d_HK1QI$@3B=TXSjYzc_`eELsw?Tw40F-HCOf{hJ#UGkY4mc;lH* z5*!V9^-EMn%xK;^r70pCaHbEmjTX~wVVipbk}I{ z3Ojzp0m#~wYVY(yNRAxxaB*y?Z{pby!Hg>9u1;{u&jPgL@&9xsgdmy}DT$y1)+Z0j z-0tARZ$d_M9pEx&j5SMO9P09G@u@RJJHEyGRr6?1FwwaG+kKjmU|xNB@cBm%m#%U8}1`?8RklXEG{ zsLkslL^|+7o0)4;rW>sID=4*^YI{`s55`KwYp zPQ8#gK^&Cf&Kx{?z%>9y9F`MF-q0t91{VPpQ+G_&6njPm;TSIc@+n6+$jz_IEYi;Z z`?Q(N`^B==7A^WR_|svoyak4$5hf?hlF`ybELE;}Havi7$(vPKSCC}8pBqjAjJ9)! zse6e!)~+2x3eU*2p}iFF!ORf3g$iXFPl$jBO2E*U82L~K$Mr+g{_T1fLaQd$bqc*x6VUKJf2r zER>*$k4$JSCdNXrxy>C1u!+FU>u{}g#J{;Y_mvEu%KvZWy+*q+nRV^I67j(dz?X0O zWp>^-1$0KV%lMXzUqZ9ff~YX?};=3So2P zRpWdkag*IX=0t0`xZMjG&Ul$Ns*`ec5nvmxYtUns7+ewFt=#d_r*96RFZUJQ8!pY* z$LTuVYJ9q@i|NNWBP!dL(Pd0lxPhIgKp&U?j@^LYHG7Y^pabK$JUyx z&X^ODlIGRH2J2e<-ZL`1Y9~kGtRxwWtDvq>1H7MF?l3FYFA;W|Zsv&BhO!+9GdC40 zL=hU99B);2A{{yKzy@GH%GWOj!KOHo~htCeXt>`k9&(`7l8 zMw)p7mSQq^1KiZGZ-d1!c@Sj)1Ai!@>|p+TbD?MNf8k_CO{;o76Z(iPPb5C-8qc!( zVby3)r%0UT(sx2XiM(Fdfk%;Bw&*I<+E3m+eX^9pyikhQKr~@Jh%d6dXW}y zSkW4`gO?K+k4bb2eh2zWeOZf$ND}Rs>{@$qQt3)OjY*RS$s)UWG#`l8ngpTk*zA5P z8Rsqpa?6t+>N2%p(quoH=+_Rmj@lb63UhIb+z>9UnBg+;@789OGE{Vrp~wqqV6RC_ zrn7>?sITdhjtHP*hv-1B7ao=7-BZ_2$6q7%%Yb&(9JJaFOyqF;0MH+f*VkeA1XZ5D zcpRTtP5#e!kVU`Fw6JOMv!sptwrK*dff(X}K7!p0pu?Q)3n6F$pouESR^`2d6yV8~!M=Ya7k zovJwFv2Q!EY>Pwr9)fTD{^XU@3P)R))F4L8t9MAYO@ow34(WxI@$mb0Cfii_kVwkI zsh&G&jlYZ=*F1!V_2M<4JvN*)QdpSEOAQjy#WVvY^`KPskRVT74wtxt4wkY+p&#@K zP`{J{*=fh+PNLPEm)*Y)|8velY}kyvKkBoIvz7nf%Ojy%jt(kWWJlC@i@7Ul5`mXX z-&6crmF5^LeFUhv2I>k|dff|VO?{~v37hxooj(sg*iB!{v@m#NG>fz9_t5b={hl$ehXKMY(~JG8Dq!dTZbnmN-hy;Vmg?Hbtwu#=q5N7K(Xbu^XVum)bH{ zzUy&zyN!==n>a%Pe-J|1m>a(OJ*MUe`8t%ZMk$SUSU)qRI{ulVY{@@9DbaHNGw1kJoGF&MWDJVQk~VR?3kZ_ua<#hxTJDeHr5In7m6us@E58XpdHb9Fs}d)SpTs1DMKgC0~&h=2H z`DOV90WcQc228w|>E;bg(?MR;J5MLrk%uG=0!;SHwM!q;55SM?{D7Y>Y2=4UyILAtG-V>@)wC^%DM97&cHm|ErnuG#)m8`pc z_oB7o$5ttZvv|@25n|2`4gpJlcTa_y;$IxQ(xt;g|5^JcWdLtQJBvh`Lm1-t za#91rE#64}>~>xN57IZXEM19j+bzM4a#l8^=p7mqeD%1UJjgx&CIe$cUJEQnzR-)XS^UP=JZ}t~@zd|6o?iO#>|C=|B50tLEs0@eX@nLBSsuIkQK&7BxJ@pilmZh7kyZq(n; zH!DRw7&ufDo=Iv}DA@Ru^;FzM^zg-xmkr4c>Y%D1UN6MO!aop6pm0pwF7X@qz7fGhKPxD=BKV_#Cs)P4|W=b?oA!w`nzS zgFqTWrYDPNqmI%00W3RCE*GcA6Ivmx;u9oS3hVm*7lfL{*AGp9`byy}P);9{4=Y9+ ztERcS)jU5Hosz~51j?F?c?^(WYQoDhW%DpzUr1^beq&CQY{sa&0}qj zvasR@&t2wCPp#?Nr%dnv22zg9d;9d6PA?$A32nd<)| zwS+oijxj4o&13e^mbFxN^k{rL>5k#n0aj{W{{mL6T}r7-rMCY}7E>$bphrSga~odt zHvIRj3pmhRy*Io$B1j2;K%Xuw*f0eL?=81K z&2XC~ReJaf#2=2Ui1X_f?@+2eQ;PCN-mqQ?%@b&P82L!aiOjM~0Xi_xGf7!TW^O#pk%%Pjz;Q zHQmQ+4B>$1(#C%_H#F=RPnccmc20XXIERdIw7TLK+G4n|ca_vr{_($${xvYy)%(<# z+P7}X1nl^sO@8}8Xbv(;$J>W#v_JIcw|tpYO>i1uZV<3(KD0-UeuL|Ccj3;QKo>XO zXw>eqgV>N1F8qwOu)GlH4xn_7VES?K_X~_T%=$yOD12AZKxi1by*Ap<5+{X5^)m9| z*=EC6Uz`<5EArDQLnQ)30pDh~)6e}8cGS;#0g_tQanmBpPC`F4K)K6}C7zH0pE3X! z&08kWhudeRnR=ERrTd+kzg!1WI%#gW5}NMc>TW*tIUQKKvuc{^`1__5^))fj%pKL9 zb#FW;r3U@*jC_vrOT;0?koy27#EXaeT;nYSydq_SJNPBz+{{cBi|;}A%HMjISkhWU zj}RU9btXLEgd(H$Kd#@Sw+$DW@BK(9>>@F2KJ>W&N$uvz*6Jtf%E1SZ6&>;KmDgzA zjJq!1x$T=7E7qL*lEuO5r}L~3mQ)|Zwf7S8c%5}MVocogOFQ-RZy=#R_n*IW{E!?O z7JHwutlqX6SY}CzN|s|tb{^_i;VJpUJjP#{%(A^rer?mA%K_lMKES9Tf0F7j_8c;& znLW2lstMpKga>NP8<3z8;1v%XtyByO%-eQ%ka;QSTa(h_lH9CjqT!)6`H#tgMF479 z%dtK{=&YfaTP)|cssvB9aVV@W1+DtS+s7-q5{USaP_8GH3xC{5paIb(;R;U@S?&@b zBN|4s$TU4>v<1$E;(bO;JdSrY!k9Ma(IopO-&Qg!MUNqhd9zRHyqZiOdAjJzm`>?` z$l)W95VF;S&=}b26hKv=8gk^J-e?HpQ7uYLZ$P2&#`dAI1hUu>!s4Jo0uQUqf+u#8bvp;GYauDwIHWGTsUl8Fc) z6*Xo~@Z9jjTzS#3f134_E$_tC55W)p$mw&!!IhWwm@}=9AKQmUq!If(OlMD&Wq{Q% z`xB~ca&ez~6f&)}MsiZTb;CmDs2l`R-xQ6HT@t%xq|L>-zMsKF#bon%dZmp|>F&q^I;> z0(F_6_%~nlq=fHE$EV|gfvNtC5!|5)w*-Pxz(68e^)K+_=u>Z+AggVUrY(i8)hWtxB`?|{VbHy zn^2|Bk;~tPISqBeK51g|f*hjB4Mz1KT8g)7`WS8?#BKOoNrjdo{%xtYE+gBF55?Ij?F`&6FJ7+4mbeS63}l zZhwVE=!c6)6KfS9wq8Ic;t}LK2Du#W?NURGt2w!Llo!O?Up_w>Om!Qt8~Dk8=j=BgI#|^< zb&CQwCYo^O)+|+>*f2Iou#}jOr(p6pa1Z=g)^d3YH@k*nU4Q;=Ksq?6!L$PXV#JSL zSPr|uTfZdso6nh{ArfG}>Q@3km$KU686U?9b6gb5GvyfT$NUwJPhaVKkQX56K!aMR z7{2IA@t7;E7E+KGun+6o$Jw&dlgIkmav)|_@OaIEFeFo4-TqalK7G5A$c}$6wMt= z0Q7l@>1)lPXwdkR&u+ovQT-kUpL@k-IwtiYR(;q5Z0tTM57uF0wtlZw-j&?l|6VmF z-hXJZ1B}Hm>lrhD+*}B@9wOw%JBXhSOy;*tINrAJvi-!qfU|ULL~k<_lIJm24fAt0 z@+!^4H17OwMV%LHb)U$9kP3pLQ~n}!PdH-saT3;_D50-t0WCF}$zriJA>99t29{zZ zdc>n)(h`l#X+7UlutDq%X%)tLOrx8mm=`35lp~D!<(!i$Bdp(~CgmseN@d>%$VTRF z)jwwPp`Ty^sb*o7dAbP^%dHw86md!*E~wTi*1v&x+P=g4= z0l+~UnxoUyT0?^Zd7nU&o}m=}80~;Vxzeq=^h(verv@)odcJl$VZ@G(=v|U779mgd zeY_;YiGgJbcQypMcVg3|eh$#GX&bS85VbDXdDqMaZbOfEHL`i(uNvH-pF7=+1!Xk$ zOMQ}#`h+)wPAlRFt9vT^7omZeHtCIT*CrG*FX%eUg1Uq545!&kClq;Z8V&F0&(6#_ zywKrR+hVH0QqM+KKQ@h@1fLHUX({jrwrqyYt4ylV2yb+#%9L3&WUL4PP_c2a`20@= zP^x!^HvNxU@7X@djQSGxPnfmy*>(*bawbbSf_jFlkg(sjGs`!f@bH?zHK&rwZE==* zCK?YD?z0U}(`76BG4c`ron!P?7vnCW`l9a4TiFXqr=tN`r>!Ib$fM75W5dZznAjdc zWL^5cmJmo3wsin_H3W?@x9XR38I$uznw}cZ$xFCdnLO2&MZ00xG&w4ZEQmp`cubdpQ z$EhxFBdt16mfl*QF#rxpI<^4;573!kJ#4qHfG@24qlY!M?CdD@=<2{&q=PGEC&ML? z>~)b_T%QYsrJQDYs?~Zl*6w&it^SpXsR$MV!}U-%at^ic#?`qN;l`_28X;S5D$Xi{ zFk6i-nMUw=PZ!JddEkcCR9?z=9E&*)RP|s?`|fzYI2Pv5nK>E41`gYYNHO&0q$Mu& zbRFw*;TXYugCosdRwU(4Exx`*Eo^qO8-Z~IWHh58xX|go7dF0dmnY(D(W_nWEX6D8 z^hPTY+{E`F9X^yFhA)I^dK63-gAmRd4xg7gqHEW*JBvK3zca9onbWMyOKfG5b_?yt zGkGo!JO7KdQV$(A{(70uz8x}i!^k)KG6(d$Cw=s$r++eNvO2fhyM8_B@V^{dpB+j4 ztdRA?W2roFE^{bc-*=Mv`87O9N?$!aKN9+o-iqMhBY{|7vgJRz5~}l~1dRINOPYW6 zGB+9E?0-FyqYOhPwfH5G#8R^!SgvWfMP2{uZNI0Ib& ztWcl#&)?HQDV)jhg>bV_M6c9gyr{3=x*MMZ>5>bb9N1#8Tz zxsz;3$@iRK?SD+7Gup%N*+!gjPno3{Qu)4vtlZ6U&n--?`zjpRi<|l3l#KJmui15= z%~=_X1}C0{8Gxc_(XXZ4@74)$vj0RkKZNeif-%XmB{g-fYaVF# zq3Ged49%;z9;`AH^Exx=c!8@!FW``2n$X0m4`G$PV~d?RK&qWwLcRX_!+S%Rb{^Z0 z?&OmD&(0RW!@0zzIQ-q;HE^3(Z@H&+D4wdfbt9xGTrZDM<5e`{azaDaG0f$qmTwS~ zOGni1O&xQ|pp27HRRxaT!D()eNfM{>De3qW`kz4`U9H-GkSX-4W{9;AUD9wj&AAk; z;L0{WFqEZsol@#40a6bE^I0N1|DA0HIi0lAf%d{@+*Ag3|e3HWnkD?}eu$GLpF) z5=}G`?XxZ9Aw2rbm18pz3`D%I1~C7lhB9jlkYgDhP^Haz@koy>!es z;eW$1Y)e&J{Ya9bSpV4c>;Vh43PBT=yW-~U3C~E}I3>l{7u*KK)8=4Xl8QG7C=eff zFyG;h?lQ0+Z7D#!|oz7j;(($^D(Y%^^sW6dPx%NaK+xORg-z>XC&o?iokdze}r}jdNp`X%= z&ys5%(dWSM<5cCUvGh%c-*5LFXLzNmV&2`ID4k$tK&oA_&Od*-Th6Gdu8wVB?lNwiF;;+ox%j(u0B<|a*K$_{!PAD62T z4CYI;>-No(*Vs}D{G5;2n-dSo)+&H|Ap@Y*M_lB`qneAulRumDv))`5Oav2h=cKXX^ctm zEJ`(2bv!>5(8riK+bivek=ADpG?;fs93wjqU&sZ4F#{*f_vf-+%nF5WeX3Yzy2FJ8 z+A~Br(MfA%qh*&lZimAbzaXh@w@mcqZmndTZ?HQ!lE@)OzOgetf5u}&e=T@ARB zdmT%^(j7MvDk=@ykd{kYUiFuIosH$Vu_^1hE)qFB%DqgrD4hVjvGZ_ zAc~5ILOq#|DfeiWm#y{d!>**H)OK~TuS;UPLHk3qof`9@nMuK&CuMlM!6*Hw7S5%8 zAmiSeJSvBuhI(nB)<%y$)rsOAE1!!~$)hJelTLaLc*iF zv*>k=AsWu@&=pNtATp^^AiGu5>>VFIpy#YzNPG;!O~q!lLc+aCP5wO+O7(i@3;GtF ziZ{nHRSZ<00qe9h=V^j9fcjL@G9@t~ z8p5o?8!#y=-VDfB-8r#`hX%K4Mu+`MB#U?OY)`z@VP2EOOtDlG4?oGKhH_OgC=Rmb zkV4FE!W^!X&v2W9(M?ilzL^&C5yd49ye!X6 z((0aLuzG+%ukuij2EIt9O1s}`F*MHvt zcx+-;mod}8*ut8d176(`_?TF=raKP&4w>kfPy#ndBzqmNn^Q_fUgp#Q#G@Cm8t;Rt zYjuX1_M85>O2jg{Y8N%8KGUpcdlI76L6h*ja5^lq{*v5Q7@uGyfc7yS_`MC7le~$b zE~44cwRi)xR$7f%v7}3Ze)cr|zqtu+o~_NZI^gC<^6OC-!vSC5c7*bG@NdIO^;@#T za>yX#BXh~$?m>fO(fG4udE>(idX6|S@f=XvHyLuXmTwsDTVBgNZ4e?3#M1&nM!KfL ztvCRLSFWpJ`N+yk<1Y#7KuS%kN2u%g^Ve4=?c_3HsK!(s_UIsDY=GF5^NL1P8~}FC z9gZuaT8zbHPQi%uHP$iPaa^&dk>{e9zEpd+rZyr4O)<09NmHiM5fg^>AV#}LIi-@H zgMhWnVK#aOAncAe3rH-Rd)BW({C|YKYnJpV&$K(CcX=7(V^5{$Kabrd5myL1pKt%D z`%vjLAcPbOfd~OinT>@t2xpxa?{p1S{>N9kc_#=-MOImZN7|7o2jP;8*z~KwhzU7w zO`Ok6rH>|MCFL-Eky;tX{usLUS35>whxht=ZwAIRF9X9<(Mk#`8Jx5Z7af%iDn&2I zbC-LEq})5-+|eXrWVAnNW?$+^FCEG{nAr&X1`#4S4yZgOQ3Vw^dCPy7zz@4HSb$}i zKwM-RdO=|Xn?;;~`>shDOArXw6>4Fu($5IQ}S~_zeO_}VNrfHmN zHn~}UNPz9$(qPkp9y(ktoo+~o&AhC7i@z}_8(HQYlN2G%Xee>WfCiII!Y`AM#Req!IjM=G07X>m=1L( zsbmd!^sP#@bq0Kaybg`iMAPX`c@L6z8W10is16ckKpB70S^6C(#3jU8)kJY9Yk!xs zhj!TM6G}zW3GWJ5w%ags_Ny!xqP| z-$8^K7N*RJKyykMIl2}-Cz&@Yd6?&rU=cYHn-6l=BKq>X;G?iAjDL5pb{YRX1qzfc zca5<+^DK}*7?(uJh3?V{d|vwQDUl>wMg$ZH#2bdfB7IyyD{Y1ki$Te?5&UJ>Rvya) z_XIbQI4esk_Wbj2k{*Ik6o)ffG3wp z9_rdrd)2UUrXw(U(y(r*R_o9>exMUOSiq;;O|+$XY?5%f4OlZ)1O3O=SdVDN!rMJS zn_EwJ!lT?~v|?7}?92TMD`Es|czL2}6qhACo>b5XeNendax)nV`FJwV1WvA8Ar;c+Q)o1{-U3imaLo_{IJYOjtj@6dhh+3Xf zOQbvw@np=7nzj14eAL}*hkTd8R{K}AAmd=1Mst^C76DHmmWC4!41=|ef-}CIt>n;N zFK7iWa{+su<9b55!3j5bXhH##Ktl-Z8cEJ))kBwqTEZ&pL$OxbreTz3SnWrj^HC3? zYbq5*fg;oD#+Dd+7$7|4_L^>EYV9 zrtjBj@xSRKI)U}?O7C7mTij`X3)b7l)@d}T_Od@ATnJ1mp5AGy$ zdAnZqmih=F-12AA_IKA71!pp%MkwBmahj=Lig`s8heS*IiAL?m2^ui&V6}`KV~`X0 zh^Of0Xzh}CLa+LN03KXPAXN3k#aVI#$_nH(c`4X4EN^zK0)CCVGwyg{<;o|+8p|{^ zZhd`x)B5Jw`phO?HcN#i+d$-@pGR^>lDWT$5Ukww{hq;MD3-O?G=vOFuiwuY zO()!V2URTHa&54)ta>ulN9zOK%y*V5^bAO|aoDSzlH553zz6Y}3A6T|8|bo7tvzGI zYRoe#il7IbpG<5s8%%Enak&9zk+01Aj{qv01(e?s21wVf~|5 zl}(Cf=bcM*B{ayqBxJVM3JOmpjt z`|CwSe(dkzO!xGa?=J6Z5(nS#{-)HY6a@oa;H}>8tKlmI^D}*=Tvs71K?rTzdt!1L zyGB6PW=Ue)v;TN^X_cHSv*FqWdS@-ywVJ`KVR3hCU#`2JD(K1>`IY-Gn5Uo9Z~WY- zjHV2dxuN2p(S<%iOw_P3Y`y|;tqZ;>%e>D{UGtZccgBXfdZBGS;hr7t>k3{K&i?CI{T3~H^zz% zOrtP?{Twd;f8xT(bnu2-YD;fJOCh(%A-^|>z;Ff-_`uYYF9mAM@_WBxc^j(Ak_&IC zwdo?fOxX2ho-G9G3wA!5nv0h8_{&)36+-cHIfziIzkTzUCbxw8T33Wk>dUacWOjT| zIR98RU!a-Hpf1DeB%MnXh7p2w9gUV_3glLDdr4>|9-cLgE|kNCqo&!#KV81CK@05s zH}J^?1wX9?4b_+UW$Gj*I@kq3AGwuq3!%=d8hadvf#>7XQ8$wiiKG0NTDe$r&J94O zAAFk;?jAejsHPL1KJTnS$@V#(z}g>3e#5+!tBD--016y+D!};Dw?0a|6Pg*I%ZK`{ zS{RzB*b=4r~XE{nV0}CyAbT;Syr?vw{cG_W97;B!ISp(pCJR$-_!H>nfMQsNHwJ+ z?U=Ls_u{t<10aiALkQI?$Z5a#xLajStB>NsGx4Z~tcr(-cHREvCrnh}kQedM8 zmbVm5ud1*?1SUTiMz97Hji&Mp{EFIqV}vlb@tHd~Wx{Ooy_X`aX;B7LkVn&U3k1i}Qv;bPwb&bF6VWA-Q8vlP-o|9B%Z)297BrF&^{AEZ_9^C4gxfHT+!Wes>5sS^WnvH#xU>j>x_S#yqw-!XloiZC#iNVUWq(IQnx{{tE!;=_1*e z&@9AQO;gnr2fM$kRSOm7GoMPOr<kR|X|hUWe6 z@(ud;Zaravj6#A-@EArQ!t$wrF#a&Dvy+>C#SfpBTUO46+i%ZRz3iV&KobS3B4%L7=uaqc}A zZ&zFL&wyOW`IQG7E?29rV=rRa#UX~Xs`19x44*Zt8D{MIic_=tJ9J@1F7H%D2UrZi zi0P5>NJ@Uy#F)sDHLX^LrQMui`6R~7<;G&8+;^q>9zR2jSTz~BEHa#Of#cHDLE*zm zzrk6?4ke1JE|qLsL-l%P!>!Y(kK!|j@|xpSGkajqs<<{3WK^JWOgC*47eHP$Cy#@! zgSfwHEB-f@PN*H>fd>v#P`$}HcV{Okn!Q{`6CZjs7UeE&y47=i{~fyes83(kve&wf z_)t%C9~r_^)4&S7xW@H}EHx!e(5>!Q17SMSmoKkFukQciJnYL3Z;c^b^@Tttxt&b- zF&q>5vfXQFvA+3&%(QYVAB^FrQzp<-+*|x-IeTC!^*>v=+P)B02VFO$*S@AUccN%h@Qz>Lub{pjckBM1uB*ts6TDn*Z;IFeu3pX zDxwua+`ItRDXCY@M4qw4KT#E*4mOla%eT_C2z2QVv{n>2V8q6s2SjiMsWABF z?DOgE^-!&F0bXiwAnJ9xv}It2hhz^xW9Zd3eOsb8SKZ_-b6aj0dx6=KWbbgh8(~#4 zwFL87Vup?Yvw%?{u}2zkdKGDvl359VrRi`9%?k>1}e` zK3&k1Fvw%fQ`i=}jbcyUIZL8Yp@h2pnLM0l;GEm7yCBv zr(yPEs_0^U#C9?zg&li`F4)rM@{Yos&5P zhD-=)Xn8cg^I{Md275!En_A9;#?0a(kF#pNw)fy`e@}PUSEwH-i3VTB9^cZGR{?2d zdAGw<5*Hn!6~`Egzlr626L2@Bx0NT#B^4kH2X{E90n7HDm#GjdYSDLKy?!*RVlNZE zFkjv~LP!c!Pm@jFp0reXsjpS9fouFfH1&}5yl=LOa4hzi1uSLzNIEw{vSuf4+Nc>a zF{wC06hL~t19quKPaZF3^6~29JWuzp4Cvz<3OzQ>ZmCoN+?mSPG=h{3%=F!8z7Bzp zC1yQ(i?Bl#kEhnRDu)5Hm{y*jp9$64|M~ZPr=IGpCaH(X7%dW1Oz=xiX&gHU%utgm zVN6g&^mdW};c|Zel0mC|%1CDCA>Tm+F9c2poYy*iMmMAw4@oNbR}(NzobcwX^h__& zD_>L5Yxcp|$NMs?OY}u47c2qj75Xdmk06P)y_t-Kv6UM)I}m9HzXChcgU9uG47c z_d|ihGwsM{G4WWTZz)xU4a!YK?pGZ%p{%oj+;nR0V>eK4^Bq8oPVZpG(qPqxSWLc5 zkqeByPa9zd-l|F~9Aj;+?Ey<-dR1h4$z|x zEo=juYV0BZj_t!Our5-@=LnBQQ|E!@x z#=u>ZlsgWO`qo1aWSj+TS?nIh4BS#Kms8ewPWOjE%eDIQIL;%zy7-z?xLJ-Z{B_sA zU;yiSEgLye?*sRRvV*o!CKZQv}XM4 zt`^0}H7`@a!j!{TFq1KR*W$Gf81p#uY({7}EQ$-vPj)p)_`q7>&a_Uj3;2>OAT(h8 zrrsS4Knp6oHH5-$8c^8UXDOUJkeE8k&`NS;0O>qK!A0!(57+ zDdin1ca#O*C&EKAE{eFgXBsH{4m9qZCa%Z@`B6aE8T@M!Wr(3PytlgI z{|T*X;~FS21@&8p#^M^6`?OSfSYe9s=jR3=NJ1Q)R`Xu|-JFd5dHgSrn1uX0kIy${ z*?uoV(di7Plxt<9hM2sx&A zjPih|CM5nrz{%nW)mqE9Pe7d>iI%N-t-cZX1l8{1#bi_ByQ{vt6O3;|tNu#S$Vk%P znb%fRo*S!eC1RonsT!C6)Ldv?Iiv}LR$aUnNbXn=0;_$Ap5MIOw|SdntP82bg+#x` zl?pfpX_vIhC-!%;h2Gn~VE5V-q;BPB# z8qN=-Kc-_@NJ(8f8My1Qa=2=-BJX&N{OoZ{mt^20TozcpQpkX>2m_nT$w=J5OH#6wLI;(69<#OGL|K z>w?xx+4j65V3}xCB2W|~DYa$^G5{GnNvuT1AtFf0Qo$Jrkm5yRBTPL0E_Ma~$kI$K z#-qVyhcGo$1?@{ucH*|%qN&z;IEl(U)D;v{Pln1#jtP6&Ht-pqRDDR5)RU)cTFf79rKV2Qg06GyW7iTAZ(lmx3vdcMp_bUdiHS4iM`c_uYFvj@E^^$6h+0ALS0 zi_UiJDBlGIrRO-8!qyJWy8ii>j5 z{t8$2AH8dah>Mqb3e2nNQ5Prbt-knVnkK6(XnT1;8|k@S!?T$xcfOU&63HUS+4(nJ zvErSs5H#x3{?);=)^uX_T<>m^4<69$|=uk`Ss-wj+ieT7@ccfO&KmU3I5xg3S z3w9!)O{Hpqpi5m@<(d8MQ0scy!S>S?g#PwHB;B3O8eblG-Z_T`TAtbgd+t2+5Iueb zo#s7PM2P4ext9$zUWPb@=#4uDHlG;#m}|5>pNVCDErrWk)yGii_(v?v%06NyZ$t#d z>grvP3C%KPoNMWm8PN>ONmSK`yt(12a8Vv8@q~d2*a)n~F zE6b$dZ=RRF; zs<>IJDRBBxwyQKk0&3?SiuF(F+XMpRDF>bf&nY?yfjaF`7TlI8?8s@ z<2l%{0ax&vwd18mOj^t1{nW*-BvYK_KBHyWlaPAGjn!8k5NE!;(Y2G@Y`7xF0>HVh zFP)P?x8d?_Lk}u+=sg=W5Sto9Uf%Rkjxj5=gV8Bjq{i0-!B`T$*ldTh?D&YGZJ}P< zf3YDjt{dPiUYH5&u*mhCvK9gSV{_f{{*y5FmVk;U;VFr-Mk^~p-P?ybMjaNvOE2nE zkZb)eFC{8!>HtnoGlGTobxSGA&~$QHwLRg6olvXq<&|*rzESy5$C8qW$$m5s@X0b; zhoyf(C_}d?yEMti+0IQKWU}td@DDebqcQq}D0(+1^ptOAaiA5ZtHyqzTYYRU9rBGe z_yB08j!LOQnGm)f^JkAA?(fkw&|aNM;sz5ifcJR!DuL%g0GpDbEZ_sm95XxTOI1QQ z%oq!XP8Sv-=_J13oLBwt?Wf0#!%P3ZJHlx$^}9-Dku}H{M8~T5VhBVK-Ztk-mv}~j z@!a^hXv>8rxvuwg)1mT)3a@_eUYB_uq~?A!S+_perCNW5Y$gybf#!Cru#7B^x2(pc z>t4?9J}q$Du{br#_cP^66$DtRhFs8xCMFLoO+@-Bg}HE7C39B?*OqdWWb|DCQf+Ood>~MRF~7!zOiVv2 zKfE-8OkYhIk41RAlDD-(=TIkYgOB-ssu}H=LWrA8cnC~oDAM>7wAV5CwrY>mO!|cPBs7H6XkWiAouI4y~dCA#bwDT)S#^>FFSpP$Q=T-pl20~cRXfZ2y-!o~qQBW0LNA>V-Asg6A_l_cG#4lXI9QR| zBIP+dPyejc#%P*%TYlsn{n&WubLCfaml{|vH`p0>Wr#XC5Jvv9SJ(W~x1NNb3ru(} z>x@n+FBL|MxCDs^ri3E>-NPCY&NOF^?j>p>wn@QA_ciYleJ`RBipKDrI{m1Bc$~0F zO>$0be@LLYBe(`KHg6jvORp2H<+hU){@aJ7;&u;hlT1H7BdlpAvP(@ttC4>RJdh)~ zG_Vqf4(NC5b+u6?kzKg?gR+2gTU}8QX34fF4c;V~4dg>WLRrX!fGoeaAUy836V;cg zfDx*7XE{>$6DLC9Kz3M^;t9#%T(2hXl1Fn{yZS_kjJNN4$-Fu)rrlTfyf;)7RnDEK zvTwDe+{{Ow=A-_B_>Z%>$DsaQfvnv;2@T%>4;Yupz`lrWBe6#aW8+-q5RO?Crx~W8tS| z;X>(4GBU>Nst^I=VE zc09^73fgq044d?x(pKzY+KI^@%zeUP)7(Bi1if-pZl|**Fg);1AN5(}y<=6so$f8y zv})kczKkgu3RnIM#9k~(G`3Bwih{#CyjeGO%5|NMKiNO40r z6%(eR!3Xhtxgn7*<>a6~a+luL848#cb8F8CnJJ37^S!weby(hv{OF=DNnmkD#~=TB z^Ut}q@FGnd#VFz6rw?{a0Ysjeg#Zssmy3@il^lbZ2&*H7L z^#1A6jT3SM13WGApo3g8nez#-0m!~iHpz?=en*$lI)6~R4**U6d1W51r9>GK*=_oD z+0P1a%8j&rFS6^ZAbZ0}0LutEUr6Nt;8p9m_cx0W(8LLO zM+k}%rao;Xe`0b;8@>4!vT{)E;E&6EBoP{hmV`*I@>7Bti2dqwy`n6hc zA5Y$vxJx|ybYho{_F+_^f?e*@-V)G_;-puapdKz=1GwlGNU;fE3hQjV=Z5?seB)cr zeT<3-@v*#`Rzg0O=ZBjbI~+D*sqo<5(vb5V|GJqZMJ*8hc#RwTxr;$;?kH4W$04v< zowPZj1wMH zXSRAjH??>d^#jDMKdH={8gx-!1`h?577oZIdy(k)mT>iba#YN@>zy8MHBW|yOjzC$ zd1~iIP&v+4KpX3al>~b6=85aQBE2o9%}sEb9|urRxTy=ej%ILb&6`W=1ZZ{k_b);1 zWQ^aAJR=F(CBpC>(%y;ZYnMAKVzz;xrQl zi|u#L>k5BRF8q^L+ssLO1U+3hZO8jd975$IeSso5fEl`Ddu|1w_k)s!+)Ni$>6Nr_ z7*BL{w>nNo+3FQcVY~ppjp_D+$`C1a2=TaJPS`MZt@y)+m2*WZC%O-SIy*1q9OC1$ z{+1d=FW!eZ4pY-@-<3l7QGJhCXlJ6v9EG0!@$Atvd^mqs3EGJG>gBExdx>IlAMdX-O=*1T(r^vd-CiI=2%5 zPxlLO5;>O~yizi&G{6{!(+KaU0@Dr?T^0*+S_nNPwR!UzLMz zIJm2%OEnZ0_+z!Xr^meaxg6H&T7;AL@Xf?20|ihuD-L;!k0bz0Kr`h|9;wI}yW<3>2hTIJ#MVRVdG}|j#IJtiS@h&?Cd(Su_%<=rEiLdq z#4a7i=Mo)di4C$t71t)oG76$PR$E>XUP%1%C~T$hs3Xp8kOl%_p*xtb;jguwNDP*Hu}S{#7WJHi6o%$g$E~* zMe+Gd&G0xC;f)|5lZU5_KE2pIC$1eYQ|wT>LBJDq!E9BZFwrs+*z2KfDAy?Yu17Ki zul^oyr2mvcRe0wP?g!*-uXn(>HM{9wac(6a#)eM<8Ld0+rFZO{rlW$C@+%?nYA7FM z8KNSFd#k#vR5$wA^aV<4h8mwVda&-N%?8c4TjzD??*vCF6PlY1tsM0=_!JnK&o(cf ztF=TAcu8qUm=O$Lxm=+6`XR7Uo756BH6A&oQT;!21t59%2?e-6dNnEAZkGJ5B%76j zoeqW^<0mN{4zT;MdR2jqcwErpBkIkva1buH$a}1TzP@29;tC~Ah>peW@LjH#<6=Ep zo2NAct~{C|FO!oK4zky$r0bW5l2M!dBl0WivJ5SM>P~~nKS-U%Dx0`VDHeYF^opsm z;w3#`vqGI6<)=cab|3X>y!ywng_MvWiE}VEH`?M$K%2bS?j7QU z&y0_Of>XuZ*Q)G*%nS72-!|$fHX)u0#fLg`Ft-d?`*V9O8FiBnb$sp<*R#3Vqe`C5 z?F22wUJ>Hfo>A%OV+Zizy4uoSJ20f)0{t`)(lutn6}Ne9KJ^C0Le2XSdZ^SNJ#P<8 zNH+N)`Ck{u-f?$&AuA9x5FY8k^_wS%zJy-apqGz^`A;~C=;}g-&&VRWC!;+CHmZPA z$PX{gE$Z%xe!N(NqEGJytq9H-2TWtkUEhH1UCYf|S$(79Me?oJ^-E(fSgn~WconYqt# zMa5J`8m@|fE^Dub_+e!nL$QW&B3Z;3+9rtv_ZG412MA+&Gb?D|;E4Ey)(R#_qejSs zyS2^qew#4sXF(E9zdltfHuu|(l0{xBIw|rYmZs&f3CAblr}sX*oZK+6c%BdiL~aCp znXrNG+p$TI0nDTvnK#lmlfI=xAz4GjJfw_ySnOXO%QJKakO>p?foU>ne>LE1P$rac z8FEX12qTohNUGf7*5Z71L;aF@uS0A2S?Pl#-S|Pv)v>PM<|bNjrZ_fd0=(sEY()<} z?rIR4xRk7M`MliEXN^=B;j_CYwwbs=FQsZ3PhK=~k*=aj%Sk&sz^h|YK_=J5-0l~0-sf0l7>2nVgHroemD zt6@k3gEOyrZ7|R-tugTy6XD#tjgr7)j-zS5(c!c9C>spr`l~(jCJZX(?zqJl3<|X}vX+$A-K{}ZaplJE-7T3?n$8wN;C3F$xs}48Lawx# zs09IIxrw|GlW8a@i_v^#95;SF4oVU>Or#HnH}FYHO zu_Bu^VgHE281~fkA2?Sn=gfr|DdO@=$8Y!Ofm>IRfY1D$>iAHz8ciHD2E_OVGtE~C z*Tu6*_@(T?C?8fkTPtFmunbd51zaKTGN)@kb9bsc3UR8GK|5_OrM8yFTZcbeA09#MX8x1F&B3wRbC?$6?QEDh&x=IUN1Er+r&={!aY7>16%GBXUqJ%0> z3L>6%)~vX+>-|#S8sc3NvJQEPHCE|Om|-Z(Oh@zkf5_9|IreG}2Vb0>MWR zJ#=du$ED#Orf?&{Nhnt=S_}?*w500gY~o`XlX?esU(%4B$BxoqlSoHSBs`$zu|mB| zeHy2ST=aFaOkEwygq~k|ejrP8)s>80LP09%8sCJp;5cQS`?2Spx%&krHj<)f#pAEJ zP=b{=@IeR>4_T$L6LXKh_wr$L8fE*@86PcmNv#+;iaM8im6k{F%K zx~8ka)EQZAph;D92Ld%5!>raYR)iffLeA(WNl&E-B4NboeE86Fcs z={*-6JLH=hB$!WVKeE&iRTnSyEazjGxYdjod;2uhO0gwokMF%MnSq{13lAj2Rs?T@@#wg1Sk(r;e zgdNmxPVbb4-Gkh^fgoOCk}eT;td_iQs!ME&m2f8)!@1y*HI2{H<^;O0th9+| znU?jRg$V_Fl(=Rw(Ft|rP{%K+&&ah4wS@Rr{gFtL32$e49mQtKZEZX`@n5i6>J7-@ zATl2}#;2#$OcAiMK=ku=^nxpXqUS;9)GL8jj@hnn5*8?3R=XkRKII*z<{1gO1_1j(_n(3PuM#I!7R$dA&DwVf8@OsK< zZsHC?QynI{HgMKrMGJ*eOAK(o{=~3Wqn^7lu!QDb8(dv0$6XaR=ElcEzt5O$G7`Ns zzhc>BJY}L!CwwQk?h9@5xc7vH{%?+}N0+*Eq*N_@vkcC|>=N9jELc_6iZ8P)nIrh2 zTHEj15gVqsU9S$He-CtyZ<(xlDaW~^q~QMQ7U1|~W(Ymh2l$Yjhfqyrz967_CQBFuu;hdo%rMz$r}eNN9(wU{-Ak|H?#%d5gt=E(K_$!0_i* z`2+t-@O2X6LyB>z(Lh+pivg8t;E$P@GXIGcZ*?T=je(v`D>8Cflf2Bh`Jqs=zuQ|` zd@>$p)x)F^D^@*BYWb9kU4FcDxD%n)LmZ1Co}nAP-T?K-wED_zp8BTuW|uRx*@m1; zlH#xiISf3uuZVT=37_ms=Zp}2U2JX-+SDmu9_whH&K>}#aUTi75}khzsjsQ)_hy!1A|8+Q_OAmQ{8!ZQ!nFCKo%=a63Lo63*3uRay*>z}`anXCBGM zI&Fwyv6Y=(H3hwgCjHS&e1Khy0GG-RW(`-Ze>j#rnbv{7dQfWxJM>^sc6>+kl`J3| z%~uTZ;UV_PptdJ-(goeHZG+#Mu%rBAo{b#QW6Z;`ywv&h%w*$lpzDNyYwLKYa914Q zYKfdB#+ZQT!j^|A$Vft1q0T0o0tR2RN|vS-H3&2zxAtPPi{lEFy8ijMrt3jzGl=7C zxLjL7*m$u^A|Vc~0PpC>EQN zyrg{P;hV%ML+MbmWm}!(II{C@jdSa$Z5kdzfsPs$4nMs#F`7cXgFfWMMGpa0q<5tf zo1zP?RWowQEV0z^we}?t{8ehLx;HEDYWSs2m9lZcjBOa_kOX>KOP(B9WG7pR00gW%YI7tTNQ8g z#1zM`b~fvg^S>beI#0LWQ+i~gY3lc;@#RTQv8EL+n4YSuELN{`ztiU15=<=uQRT+_ zb2PFOZ-8xFD^Ka*4RCgG6e$s7_kfMUBwpVz|H zG(*~m5K7hm^M0(hXt26yie1Q}sv@xJ=bZOR&ZOSs|b z8X@5huyBQ8pi39_+#qQ?HX*4b8L-b3-B{aLK^qUl8WX<~=#RRWrp|@gu|e!5iC1M~ zE8_FUW`*<}pPz;}$=w?f=@F5y!f1&VniQsa6Jec^9edU0v#QweqXdZFgk_jQvCNe#m(AM$KzdP~Fbg7iwO2fh& zxQnTN>n{EAS#uwK$pzyqFMdC*4LPCxt9NF*%eA$KI~Qei+(+#P8%<0MoPSK!(M!*N#sK)+W8->XXTetF3(c9j*vb=JZ5I@0ukBd z7llY8eW*(%3O3tFZU)|G1)=1LpZ(e`TrR5c>ZZ2$i8aO=o(dt2MmI4t6{w zghn3yoIJEQ^5qG;YpI$H8gwR$Fo6m$7&%;W=-M@kh)WTfnNn{SwUVZK<>v;v5KuUI zO}OD4j9@O8DTquIZ=4`Gg$&Ju?1NQgpif&!*#(@j$=}^Q zgrvYV=VXRR3|=vrYP1hcdj`KM2FVBP>a_3nS(?J>yu8H@+{l1NnUIa%;hS?O4%NH(E^dpJ4(;M*O5$9* zD&(rYtAwpygApcd@fX1%tnOlp8oCh4#|_q_w8)#hJ9A>j^7K+XRXH`**2a)7`RsSp z>D`EZL>+&swXOeQGK}myPVoLc-^s9p4yWj;BBI>y)R9wFpE~mfv?xV6)=kwC{Y{#0 zT*Z25?m}}TFoBkMD|I@!3G(P;Fik7AX#WJ-i;Uks&s?uF zYTgEmd6|kjrCMr!%E03#ALKDEj`_uQhyHAQT=h@VuA2Wb9!rhbFDS%Icn{;mgu`dH zvMHshuVO7W)|P88_yQM2peIHpp^lvFgid56Lb1006w84fP>;bfTS2mo;Gdi&(^ zT#TXl3N(od%gkOxV3-~m1&l;c*4a$U8%pUQJzNQl8;_lU$>{S#e;Ov2h$1_*^4$Gu zmj!$|cd6II7UwxI;HG!v#M?GW?^3Id?Fcw;hnb}!J2=kPC_RZ8j3Pb;cSt0i#aL%z zY}bO{G>0k1FKt&0JD?EL^2QvGMv^6(#?HWP+!=dl(3e!Hes`3bff6mH%$MS{0;YkV z6J9fQbw0~2z|zdg;;@`{$LoZN-JxhK*_e}<9T6)qlLzi$r|%D$Oy(VC9J0{-fv+i2 zR=f%}-fH2D+QS=KQO4Ym{kXRsTiMk2@lANi=@#wpyBo3E<`Tq+J?r z+6jyjqhlbx8Y^{eGCl#pgu`XWL%IG4eJ9S~?R*Z1%32LrdP3&<4YTnbA+oP5id;g>fNfm0mQ0^4v1* z1_Y0$Ezh9AZ?00J)O!M@%xbY~s%T-b^!`C zw{<(#{cMtICRx2o$@>^Km_OOU15M~538E4>Xs*2bxSAzJl4ZYhLNX~?S4Vus{jNAs zAy2LWJPVoE5GdG3hV1+vW%O}|$<$ANtVwz&D`;1ap+;+2fQ*D+o9v^2u@=YMTcXJ2 zQo9}fRNrDsnjbK2_&Le|r87#tuKKE4#^?|dhKM%}qU62ITcD#GY}3ecn_M8VQjYce z4$MzEu5qxC*)o``a%v_c9$f49w#!w6swZTB9+5rq5am|A`q0Jz#Y`R=r{p|H)$Ok) z&bt>T*DihSd*NQxa9^QacWx|XQSZ_Qib>dh z0UkpTCOmL8u8VHeAQ~}e8wr^*7d1y0K;&8tdGL}nvXu}Hpj7i*_|Eb!n}@62cf8ynoXc?F21?&--NK!c7Z!j^3899 zAXEF@8smI~mhe#|R-ek$)y{|a#Nz1ZQ5W*UA-qNHw@9z&pMPBk&phs&lk%PPXb($f ziuP~1C$rK}+q^0#{DtC9y=*ts!_6{}WHRztbNmr;;%M9q%ihz-${it0=d4JVbtKI zExY~@BToQDuuA75d&&AaxD&n?Seh*9(1q(!D z>`YB?AprKwtkh`-3c0}NMJHKQ zFHV6lDm+@!4C=S!VcS04GsBG5W2_mCIw_K&Z2RN@M^-7?Y|9UQlr0|FYcyyIUW~9RDdc?zo3+Sw z%<3$7dKEl_9}hT=ZmR<;EWX!!6kZ%pU%tmtnRqMX^3vDP09;7@@v*l&t?~Z4jRY8A zlg;WgI}u9i1Qwp;o!HxegYZx-Hyq0j5V!$JeKeTU`cwG5NtO;9!isnO-uEVW)5Wqn z!fF6^YPn~poFH86Fj5t|RLCn?6G*=>m1SSEx4x2jm0s?CpxLTT*^Vswar4jqmhS-m zw6_Co-)xpE5H+VQDqWCn)cY$~wFGjQ-?WM0#X$|#kU4iYp|&YIE7Z0B^Y0}lKmo`O zUAC;HplFRAQewUZB&_67-XG3{@Pw|j!U;i6p<2L*UgLv!8*w$jX-8q~OLBLo)^j;U zT#|UF{;TF>+fT=E8z$sC*SmV?V;Z*xXX+qt%-t*~Kq;tk=fe}H_OS*j1^~@l{Z`)b zEzkle$_>|9!NT~ru}4{2?`tyihS2a(m9S~$;SRX$@BR$MI)3n}%P=gPJW8LxI6z^S zP^jLozu`|i3ODZ{xYg;A$H%iA8w&E)b;yP7=KU8y&P`4O(o>;>U=6)?8lb*UZg#!^N~ zOsdOGHQW`<_2l`CWikj=hsIAR);Vr5Hcj$tZgKm~7i;}`CS4o;w0^`2+VO~QV%`np za#_BR!LwBP=JWNkIpGrTIW-Yg{ElU_E@Uj+LjyG3hrK7~w?o!M+kVX3$IA}bA%d&6 z9j_{^eRaNdiJKU^2z2-^R@@|;KtN^?g*min9l_U%o^O$iV%e6k(MBClo_jaBIaKQU zPo*kvg$vpBYHQr))ZOG%)o+H>yg$4$3`hC*D5wdf5uKU?y_WCNlhTd0W70#mZ~L)I z1~KAToi0F1ocR`G$=NpFs0=h;73BTu(%1o}bx=DLfXF>|y#TzPz2RtAvn(Nm0lxVB z!nz5oyt{;<{fXgI=Wl64!H$}nu(zH^EK}}CTlFs!#sVavQTOcqOuqTTYp(Og)`a?O z^z266$Q&?g@)=`CLnvikgx(&$n?_l+6!oNoc{0%F+oI-RR~4^0czdd3Y1AN|T5ZJUPu^|0#QMO-!| z+|>+1^Y&mOE?Jty8@^uo7qaR;iOF4-WTP@XI-^ zhdQGJQiTGn>S2{#hX57+b7rA0(4zY~>g{S-zUAv;^qD;i{e1f=@l%7`)9O{iDJD2Sax-=5i}?p#`Ov@wWP{zc>>D!4*@{iNYvKPvu-V(WV#p;Oq1Wu3tpRM5p1g{7^o9keM!iWL4bZt zfVl=K(Aa*F_z5(4OEV_x9jl`8{GsJmAM!0E%?H$6X(^O97RIyK3$O`3i9UCU@O� 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 Ucz#w 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 z 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 z͖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%0D|1Htb{%8aCE`Pq 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

-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 z

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 Date: Thu, 5 Jun 2025 12:46:40 +0100 Subject: [PATCH 084/223] fix bvt test on multi-cn env --- pkg/vectorindex/types.go | 2 +- .../cases/vector/vector_hnsw_sync.result | 25 ++++++------------- .../cases/vector/vector_hnsw_sync.sql | 24 ++++++++---------- 3 files changed, 18 insertions(+), 33 deletions(-) diff --git a/pkg/vectorindex/types.go b/pkg/vectorindex/types.go index f50e246c3cd3d..8607a8bbdbf04 100644 --- a/pkg/vectorindex/types.go +++ b/pkg/vectorindex/types.go @@ -107,7 +107,7 @@ type VectorIndexCdc[T types.RealNumbers] struct { func NewVectorIndexCdc[T types.RealNumbers]() *VectorIndexCdc[T] { return &VectorIndexCdc[T]{ - Data: make([]VectorIndexCdcEntry[T], 0, 100), + Data: make([]VectorIndexCdcEntry[T], 0, 8192), } } diff --git a/test/distributed/cases/vector/vector_hnsw_sync.result b/test/distributed/cases/vector/vector_hnsw_sync.result index 9a31d6ce6c57a..53d0c02eaab71 100644 --- a/test/distributed/cases/vector/vector_hnsw_sync.result +++ b/test/distributed/cases/vector/vector_hnsw_sync.result @@ -11,32 +11,21 @@ select sleep(30); sleep(30) 0 insert into vector_index_01 values (0, "[1,2,3]", 1); -select sleep(4); -sleep(4) +UPDATE vector_index_01 set b = '[4,5,6]' where a = 0; +insert into vector_index_01 values (1, "[2,3,4]", 1); +DELETE FROM vector_index_01 WHERE a=1; +select sleep(10); +sleep(10) 0 select * from vector_index_01 order by L2_DISTANCE(b,"[1,2,3]") ASC LIMIT 10; a b c -0 [1, 2, 3] 1 -UPDATE vector_index_01 set b = '[4,5,6]' where a = 0; -select sleep(4); -sleep(4) -0 +0 [4, 5, 6] 1 select * from vector_index_01 order by L2_DISTANCE(b,"[4,5,6]") ASC LIMIT 10; a b c 0 [4, 5, 6] 1 -DELETE FROM vector_index_01 WHERE a=0; -select sleep(4); -sleep(4) -0 -select * from vector_index_01 order by L2_DISTANCE(b,"[1,2,3]") ASC LIMIT 10; -a b c -insert into vector_index_01 values (1, "[2,3,4]", 1); -select sleep(4); -sleep(4) -0 select * from vector_index_01 order by L2_DISTANCE(b,"[2,3,4]") ASC LIMIT 10; a b c -1 [2, 3, 4] 1 +0 [4, 5, 6] 1 drop cdc task `__mo_cdc_hnsw_idx01`; drop pitr if exists `__mo_table_pitr_hnsw`; drop table vector_index_01; diff --git a/test/distributed/cases/vector/vector_hnsw_sync.sql b/test/distributed/cases/vector/vector_hnsw_sync.sql index 98eede02432ec..cc59797c9f234 100644 --- a/test/distributed/cases/vector/vector_hnsw_sync.sql +++ b/test/distributed/cases/vector/vector_hnsw_sync.sql @@ -19,29 +19,25 @@ select sleep(30); insert into vector_index_01 values (0, "[1,2,3]", 1); -- select hnsw_cdc_update('hnsw_cdc', 'vector_index_01', 3, '{"start":"", "end":"", "cdc":[{"t":"U", "pk":0, "v":[1,2,3]}]}'); -select sleep(4); - -select * from vector_index_01 order by L2_DISTANCE(b,"[1,2,3]") ASC LIMIT 10; - UPDATE vector_index_01 set b = '[4,5,6]' where a = 0; -- select hnsw_cdc_update('hnsw_cdc', 'vector_index_01', 3, '{"start":"", "end":"", "cdc":[{"t":"U", "pk":0, "v":[4,5,6]}]}'); -select sleep(4); - -select * from vector_index_01 order by L2_DISTANCE(b,"[4,5,6]") ASC LIMIT 10; - +insert into vector_index_01 values (1, "[2,3,4]", 1); +-- select hnsw_cdc_update('hnsw_cdc', 'vector_index_01', 3, '{"start":"", "end":"", "cdc":[{"t":"I", "pk":1, "v":[2,3,4]}]}'); -DELETE FROM vector_index_01 WHERE a=0; +DELETE FROM vector_index_01 WHERE a=1; -- select hnsw_cdc_update('hnsw_cdc', 'vector_index_01', 3, '{"start":"", "end":"", "cdc":[{"t":"D", "pk":0}]}'); -select sleep(4); -select * from vector_index_01 order by L2_DISTANCE(b,"[1,2,3]") ASC LIMIT 10; +select sleep(10); -insert into vector_index_01 values (1, "[2,3,4]", 1); --- select hnsw_cdc_update('hnsw_cdc', 'vector_index_01', 3, '{"start":"", "end":"", "cdc":[{"t":"I", "pk":1, "v":[2,3,4]}]}'); +-- test with multi-cn is tricky. since model is cached in memory, model may not be updated after CDC sync'd. The only way to test is to all INSERT/DELETE/UPDATE before SELECT. +-- already update to [4,5,6], result is [4,5,6] +select * from vector_index_01 order by L2_DISTANCE(b,"[1,2,3]") ASC LIMIT 10; -select sleep(4); +-- should return a=0 +select * from vector_index_01 order by L2_DISTANCE(b,"[4,5,6]") ASC LIMIT 10; +-- a=1 deleted. result is [4,5,6] select * from vector_index_01 order by L2_DISTANCE(b,"[2,3,4]") ASC LIMIT 10; drop cdc task `__mo_cdc_hnsw_idx01`; From 8f5f9762aeed426503ad2291a3f4fb09c14e4b0b Mon Sep 17 00:00:00 2001 From: cpegeric Date: Thu, 5 Jun 2025 14:40:37 +0100 Subject: [PATCH 085/223] add more tests --- .../cases/vector/vector_hnsw_sync.result | 34 +++++++++++++++ .../cases/vector/vector_hnsw_sync.sql | 39 ++++++++++++++++++ .../vector/sift128_base_10k_2.csv.gz | Bin 0 -> 1438433 bytes 3 files changed, 73 insertions(+) create mode 100644 test/distributed/resources/vector/sift128_base_10k_2.csv.gz diff --git a/test/distributed/cases/vector/vector_hnsw_sync.result b/test/distributed/cases/vector/vector_hnsw_sync.result index 53d0c02eaab71..b4239c8f1fdc8 100644 --- a/test/distributed/cases/vector/vector_hnsw_sync.result +++ b/test/distributed/cases/vector/vector_hnsw_sync.result @@ -53,4 +53,38 @@ a b drop cdc task `__mo_cdc_hnsw_cdc_t2_idx2`; drop pitr if exists `__mo_table_pitr_hnsw_cdc_t2`; drop table t2; +create table t3(a bigint primary key, b vecf32(128)); +load data infile {'filepath'='$resources/vector/sift128_base_10k.csv.gz', 'compression'='gzip'} into table t3 fields terminated by ':' parallel 'true'; +select count(*) from t3; +count(*) +10000 +create index idx3 using hnsw on t3(b) op_type "vector_l2_ops" M 48 EF_CONSTRUCTION 64 EF_SEARCH 64; +drop pitr if exists `__mo_table_pitr_hnsw_cdc_t3`; +create pitr `__mo_table_pitr_hnsw_cdc_t3` for table hnsw_cdc t3 range 2 'h'; +create cdc `__mo_cdc_hnsw_cdc_t3_idx3` 'mysql://root:111@127.0.0.1:6001' 'hnswsync' 'mysql://root:111@127.0.0.1:6001' 'hnsw_cdc.t3' {'Level'='table'}; +select sleep(30); +sleep(30) +0 +load data infile {'filepath'='$resources/vector/sift128_base_10k_2.csv.gz', 'compression'='gzip'} into table t3 fields terminated by ':' parallel 'true'; +select count(*) from t3; +count(*) +20000 +select sleep(15); +sleep(15) +0 +select * from t3 order by L2_DISTANCE(b, "[14, 2, 0, 0, 0, 2, 42, 55, 9, 1, 0, 0, 18, 100, 77, 32, 89, 1, 0, 0, 19, 85, 15, 68, 52, 4, 0, 0, 0, 0, 2, 28, 34, 13, 5, 12, 49, 40, 39, 37, 24, 2, 0, 0, 34, 83, 88, 28, 119, 20, 0, 0, 41, 39, 13, 62, 119, 16, 2, 0, 0, 0, 10, 42, 9, 46, 82, 79, 64, 19, 2, 5, 10, 35, 26, 53, 84, 32, 34, 9, 119, 119, 21, 3, 3, 11, 17, 14, 119, 25, 8, 5, 0, 0, 11, 22, 23, 17, 42, 49, 17, 12, 5, 5, 12, 78, 119, 90, 27, 0, 4, 2, 48, 92, 112, 85, 15, 0, 2, 7, 50, 36, 15, 11, 1, 0, 0, 7]") ASC LIMIT 1; +a b +9999 [14, 2, 0, 0, 0, 2, 42, 55, 9, 1, 0, 0, 18, 100, 77, 32, 89, 1, 0, 0, 19, 85, 15, 68, 52, 4, 0, 0, 0, 0, 2, 28, 34, 13, 5, 12, 49, 40, 39, 37, 24, 2, 0, 0, 34, 83, 88, 28, 119, 20, 0, 0, 41, 39, 13, 62, 119, 16, 2, 0, 0, 0, 10, 42, 9, 46, 82, 79, 64, 19, 2, 5, 10, 35, 26, 53, 84, 32, 34, 9, 119, 119, 21, 3, 3, 11, 17, 14, 119, 25, 8, 5, 0, 0, 11, 22, 23, 17, 42, 49, 17, 12, 5, 5, 12, 78, 119, 90, 27, 0, 4, 2, 48, 92, 112, 85, 15, 0, 2, 7, 50, 36, 15, 11, 1, 0, 0, 7] +select * from t3 order by L2_DISTANCE(b, "[0, 16, 35, 5, 32, 31, 14, 10, 11, 78, 55, 10, 45, 83, 11, 6, 14, 57, 102, 75, 20, 8, 3, 5, 67, 17, 19, 26, 5, 0, 1, 22, 60, 26, 7, 1, 18, 22, 84, 53, 85, 119, 119, 4, 24, 18, 7, 7, 1, 81, 106, 102, 72, 30, 6, 0, 9, 1, 9, 119, 72, 1, 4, 33, 119, 29, 6, 1, 0, 1, 14, 52, 119, 30, 3, 0, 0, 55, 92, 111, 2, 5, 4, 9, 22, 89, 96, 14, 1, 0, 1, 82, 59, 16, 20, 5, 25, 14, 11, 4, 0, 0, 1, 26, 47, 23, 4, 0, 0, 4, 38, 83, 30, 14, 9, 4, 9, 17, 23, 41, 0, 0, 2, 8, 19, 25, 23, 1]") ASC LIMIT 1; +a b +0 [0, 16, 35, 5, 32, 31, 14, 10, 11, 78, 55, 10, 45, 83, 11, 6, 14, 57, 102, 75, 20, 8, 3, 5, 67, 17, 19, 26, 5, 0, 1, 22, 60, 26, 7, 1, 18, 22, 84, 53, 85, 119, 119, 4, 24, 18, 7, 7, 1, 81, 106, 102, 72, 30, 6, 0, 9, 1, 9, 119, 72, 1, 4, 33, 119, 29, 6, 1, 0, 1, 14, 52, 119, 30, 3, 0, 0, 55, 92, 111, 2, 5, 4, 9, 22, 89, 96, 14, 1, 0, 1, 82, 59, 16, 20, 5, 25, 14, 11, 4, 0, 0, 1, 26, 47, 23, 4, 0, 0, 4, 38, 83, 30, 14, 9, 4, 9, 17, 23, 41, 0, 0, 2, 8, 19, 25, 23, 1] +select * from t3 order by L2_DISTANCE(b, "[59, 0, 0, 1, 1, 1, 5, 100, 41, 0, 0, 4, 57, 34, 31, 115, 4, 0, 0, 12, 30, 33, 43, 85, 21, 0, 0, 14, 25, 9, 10, 60, 99, 11, 0, 0, 0, 0, 10, 55, 68, 1, 0, 3, 115, 65, 42, 115, 32, 3, 0, 4, 13, 21, 104, 115, 81, 15, 15, 23, 9, 2, 21, 75, 43, 20, 1, 0, 10, 2, 2, 20, 52, 35, 32, 61, 79, 8, 7, 41, 50, 106, 96, 20, 8, 2, 11, 39, 115, 48, 53, 11, 3, 0, 2, 43, 35, 11, 0, 1, 13, 7, 0, 1, 115, 58, 54, 29, 1, 2, 0, 3, 32, 115, 99, 34, 1, 0, 0, 0, 35, 15, 52, 44, 9, 0, 0, 18]") ASC LIMIT 1; +a b +10000 [59, 0, 0, 1, 1, 1, 5, 100, 41, 0, 0, 4, 57, 34, 31, 115, 4, 0, 0, 12, 30, 33, 43, 85, 21, 0, 0, 14, 25, 9, 10, 60, 99, 11, 0, 0, 0, 0, 10, 55, 68, 1, 0, 3, 115, 65, 42, 115, 32, 3, 0, 4, 13, 21, 104, 115, 81, 15, 15, 23, 9, 2, 21, 75, 43, 20, 1, 0, 10, 2, 2, 20, 52, 35, 32, 61, 79, 8, 7, 41, 50, 106, 96, 20, 8, 2, 11, 39, 115, 48, 53, 11, 3, 0, 2, 43, 35, 11, 0, 1, 13, 7, 0, 1, 115, 58, 54, 29, 1, 2, 0, 3, 32, 115, 99, 34, 1, 0, 0, 0, 35, 15, 52, 44, 9, 0, 0, 18] +select * from t3 order by L2_DISTANCE(b, "[0, 0, 0, 0, 0, 101, 82, 4, 2, 0, 0, 0, 3, 133, 133, 8, 46, 1, 2, 13, 15, 29, 87, 50, 22, 1, 0, 16, 25, 6, 18, 49, 5, 2, 0, 2, 3, 59, 70, 19, 18, 2, 0, 11, 42, 37, 30, 13, 133, 13, 4, 53, 28, 3, 8, 42, 77, 6, 11, 103, 36, 0, 0, 32, 7, 15, 59, 27, 2, 0, 2, 5, 14, 5, 55, 52, 51, 3, 2, 5, 133, 21, 10, 38, 26, 1, 0, 64, 71, 3, 10, 118, 53, 5, 6, 28, 33, 26, 73, 15, 0, 0, 0, 22, 13, 15, 133, 133, 4, 0, 0, 15, 107, 62, 46, 91, 9, 1, 7, 16, 28, 4, 0, 27, 33, 4, 15, 25]") ASC LIMIT 1; +a b +19999 [0, 0, 0, 0, 0, 101, 82, 4, 2, 0, 0, 0, 3, 133, 133, 8, 46, 1, 2, 13, 15, 29, 87, 50, 22, 1, 0, 16, 25, 6, 18, 49, 5, 2, 0, 2, 3, 59, 70, 19, 18, 2, 0, 11, 42, 37, 30, 13, 133, 13, 4, 53, 28, 3, 8, 42, 77, 6, 11, 103, 36, 0, 0, 32, 7, 15, 59, 27, 2, 0, 2, 5, 14, 5, 55, 52, 51, 3, 2, 5, 133, 21, 10, 38, 26, 1, 0, 64, 71, 3, 10, 118, 53, 5, 6, 28, 33, 26, 73, 15, 0, 0, 0, 22, 13, 15, 133, 133, 4, 0, 0, 15, 107, 62, 46, 91, 9, 1, 7, 16, 28, 4, 0, 27, 33, 4, 15, 25] +drop cdc task `__mo_cdc_hnsw_cdc_t3_idx3`; +drop pitr if exists `__mo_table_pitr_hnsw_cdc_t3`; +drop table t3; drop database hnsw_cdc; diff --git a/test/distributed/cases/vector/vector_hnsw_sync.sql b/test/distributed/cases/vector/vector_hnsw_sync.sql index cc59797c9f234..04efebe72d1e9 100644 --- a/test/distributed/cases/vector/vector_hnsw_sync.sql +++ b/test/distributed/cases/vector/vector_hnsw_sync.sql @@ -44,6 +44,7 @@ drop cdc task `__mo_cdc_hnsw_idx01`; drop pitr if exists `__mo_table_pitr_hnsw`; drop table vector_index_01; +-- t2 create table t2(a bigint primary key, b vecf32(128)); create index idx2 using hnsw on t2(b) op_type "vector_l2_ops" M 48 EF_CONSTRUCTION 64 EF_SEARCH 64; drop pitr if exists `__mo_table_pitr_hnsw_cdc_t2`; @@ -71,4 +72,42 @@ drop cdc task `__mo_cdc_hnsw_cdc_t2_idx2`; drop pitr if exists `__mo_table_pitr_hnsw_cdc_t2`; drop table t2; +-- end t2 + +-- t3 +create table t3(a bigint primary key, b vecf32(128)); + +load data infile {'filepath'='$resources/vector/sift128_base_10k.csv.gz', 'compression'='gzip'} into table t3 fields terminated by ':' parallel 'true'; + +select count(*) from t3; + +create index idx3 using hnsw on t3(b) op_type "vector_l2_ops" M 48 EF_CONSTRUCTION 64 EF_SEARCH 64; + +drop pitr if exists `__mo_table_pitr_hnsw_cdc_t3`; +create pitr `__mo_table_pitr_hnsw_cdc_t3` for table hnsw_cdc t3 range 2 'h'; +create cdc `__mo_cdc_hnsw_cdc_t3_idx3` 'mysql://root:111@127.0.0.1:6001' 'hnswsync' 'mysql://root:111@127.0.0.1:6001' 'hnsw_cdc.t3' {'Level'='table'}; + +select sleep(30); + +load data infile {'filepath'='$resources/vector/sift128_base_10k_2.csv.gz', 'compression'='gzip'} into table t3 fields terminated by ':' parallel 'true'; + +select count(*) from t3; + +select sleep(15); + +select * from t3 order by L2_DISTANCE(b, "[14, 2, 0, 0, 0, 2, 42, 55, 9, 1, 0, 0, 18, 100, 77, 32, 89, 1, 0, 0, 19, 85, 15, 68, 52, 4, 0, 0, 0, 0, 2, 28, 34, 13, 5, 12, 49, 40, 39, 37, 24, 2, 0, 0, 34, 83, 88, 28, 119, 20, 0, 0, 41, 39, 13, 62, 119, 16, 2, 0, 0, 0, 10, 42, 9, 46, 82, 79, 64, 19, 2, 5, 10, 35, 26, 53, 84, 32, 34, 9, 119, 119, 21, 3, 3, 11, 17, 14, 119, 25, 8, 5, 0, 0, 11, 22, 23, 17, 42, 49, 17, 12, 5, 5, 12, 78, 119, 90, 27, 0, 4, 2, 48, 92, 112, 85, 15, 0, 2, 7, 50, 36, 15, 11, 1, 0, 0, 7]") ASC LIMIT 1; + +select * from t3 order by L2_DISTANCE(b, "[0, 16, 35, 5, 32, 31, 14, 10, 11, 78, 55, 10, 45, 83, 11, 6, 14, 57, 102, 75, 20, 8, 3, 5, 67, 17, 19, 26, 5, 0, 1, 22, 60, 26, 7, 1, 18, 22, 84, 53, 85, 119, 119, 4, 24, 18, 7, 7, 1, 81, 106, 102, 72, 30, 6, 0, 9, 1, 9, 119, 72, 1, 4, 33, 119, 29, 6, 1, 0, 1, 14, 52, 119, 30, 3, 0, 0, 55, 92, 111, 2, 5, 4, 9, 22, 89, 96, 14, 1, 0, 1, 82, 59, 16, 20, 5, 25, 14, 11, 4, 0, 0, 1, 26, 47, 23, 4, 0, 0, 4, 38, 83, 30, 14, 9, 4, 9, 17, 23, 41, 0, 0, 2, 8, 19, 25, 23, 1]") ASC LIMIT 1; + + +select * from t3 order by L2_DISTANCE(b, "[59, 0, 0, 1, 1, 1, 5, 100, 41, 0, 0, 4, 57, 34, 31, 115, 4, 0, 0, 12, 30, 33, 43, 85, 21, 0, 0, 14, 25, 9, 10, 60, 99, 11, 0, 0, 0, 0, 10, 55, 68, 1, 0, 3, 115, 65, 42, 115, 32, 3, 0, 4, 13, 21, 104, 115, 81, 15, 15, 23, 9, 2, 21, 75, 43, 20, 1, 0, 10, 2, 2, 20, 52, 35, 32, 61, 79, 8, 7, 41, 50, 106, 96, 20, 8, 2, 11, 39, 115, 48, 53, 11, 3, 0, 2, 43, 35, 11, 0, 1, 13, 7, 0, 1, 115, 58, 54, 29, 1, 2, 0, 3, 32, 115, 99, 34, 1, 0, 0, 0, 35, 15, 52, 44, 9, 0, 0, 18]") ASC LIMIT 1; + +select * from t3 order by L2_DISTANCE(b, "[0, 0, 0, 0, 0, 101, 82, 4, 2, 0, 0, 0, 3, 133, 133, 8, 46, 1, 2, 13, 15, 29, 87, 50, 22, 1, 0, 16, 25, 6, 18, 49, 5, 2, 0, 2, 3, 59, 70, 19, 18, 2, 0, 11, 42, 37, 30, 13, 133, 13, 4, 53, 28, 3, 8, 42, 77, 6, 11, 103, 36, 0, 0, 32, 7, 15, 59, 27, 2, 0, 2, 5, 14, 5, 55, 52, 51, 3, 2, 5, 133, 21, 10, 38, 26, 1, 0, 64, 71, 3, 10, 118, 53, 5, 6, 28, 33, 26, 73, 15, 0, 0, 0, 22, 13, 15, 133, 133, 4, 0, 0, 15, 107, 62, 46, 91, 9, 1, 7, 16, 28, 4, 0, 27, 33, 4, 15, 25]") ASC LIMIT 1; + +drop cdc task `__mo_cdc_hnsw_cdc_t3_idx3`; +drop pitr if exists `__mo_table_pitr_hnsw_cdc_t3`; +drop table t3; + +-- end t3 + drop database hnsw_cdc; diff --git a/test/distributed/resources/vector/sift128_base_10k_2.csv.gz b/test/distributed/resources/vector/sift128_base_10k_2.csv.gz new file mode 100644 index 0000000000000000000000000000000000000000..095a5965daae450423c2c42088c79c594d2058a3 GIT binary patch literal 1438433 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 z a%X}i*0mNsiGyWx&dhod%^IZWvWDz57~yO1?YFKPy5;k~aVR1&l*r%n4_PWyGi z1Pg6S{p_h4TpGrydLzDUozOh^COBx=iqva5(|$PN_+cGnX}Zhi0iX? z9F9or%p&4;2VJY15ro?PO#=_FqEl>d_Pme&KUI!6vi}cA_&!4}^7xE|tllh{V z07n*944x&<>F&XBf8Pd&jY4p;S+O-W`vOZIBIQ!;54u#Nk#sl?-mYxkMx3 zQF-JTY~OE^8RS@CwJ=Z3_g0ZD3w{LHcF&;f%Dw_L^Xf)2z#11;;5g-JM(NP7(xceJ z;M%g!q8{}Hj+Km21>Owp5I+pTG*hArOk3<$L(u$IW9ep`YWwmjE%8 zuafhb`B^jEJj$tXSnL!$8mtqO?Q-PS!KJ_&LAj=aJsC3yzp?XVcV0EkrOVQaq8i0@ z=M@Q<)MuDm%`5$iy2nm!jflx->p!0hiYX>=U(Gy96TEPVjcx)30JR`id=}#nmDHu! z_s0?NE=l*;_ek&d5i8I)3OqPlQux`{D+3!DGk^FXMW5)r9NgLTzg^3A?EjA6cY{j1 zDzRO#hU3HSW@%gH>^o2fS}BJN0h|VCENtxVwM~N{mUSC7shJ4)Fa-^Fl{d&dxNBwU za5WXnKNTh32>JyUmxGonqewp6{_zbvs znwwTy%BA$m?75>g$xXn4Z=E}m-4?yf`6d9dxjdJFQrM(TJAUiIO}rICe=!Hn)?K{g zKwVdFEEE_%aTWujJ@xqz69_5vQ!n95cC3<(xWV5BQj~#MT#|X9u!BDanHr6=l5NujakbbM` zTuhW_`n=esOI)YxHh%hoyjJ~+Vv0vH*Hx$FjAE;0My;A5fi^!Q+V}{syE_ipG^;07 zb7_@{vnmbmz_l&S%}S0soM+y&-3NBti8`?=GcQ-E#@56yOrb{gJ449QA;&kMS)JZY zm|m%T>c`%uYp_HazJ2o0?td;XR=2l(+4Ju;jD8Z1VkNG|5uc*4X>8j{;A3bxqRe|S zhH`rvH9*1neHd`J0n+}S%qv*s8ev=ggjQU&uZM(Lo>r_P{t-KIh-+$qmV}b4<&4W# z8E+L>lblsr!65R-I5$mV)2P(TB83?S)`e9eZBEdoE%?&f9Rd?FWcjEB?fA){<9jyR z(iez(mhUdZpo-OKUM!8|02KkNpC13`bbP8jI~-R5YQ@kaVrYw`jjfs#;F*VaiBJW$TNF_$m-1)p-0qL+wIsg{y+?tezj zYaR1OaH)g3%xd71jf3ZTG+!k+iXm~~O^oxJ;QH%FB_IeTK=}W1F3CjaJ(j2k1K8E+ z%es_RpRZNQLI->m4*`m_D^R{*ofQn@V(u7$sUYqO67T}o%0Fo@LVRy6jLMgecBeQf zt&>m|5!19g&O-3~FvE?xzpmJnT4~WT@r2zqne}+O6Xp1BsE}D?9#ti|Gb56|vh0&j7^W2kk-?Mp zz&F~!69BLe*UWthTYBuPxMZY$-o>6mE1#+s-;^ai1XzGdm8_-Z zX2S~B`KR_ALZmRu2|1<`W}mERap%%cwddld=QBybU?DtTY}sl^nAToMY;#_2&qzOK zu8(N__`KOWY-K@5eNx{%Ji4roC&fg|5<*6EMvdYN)B4ZO1t}D;jNiB*NokNv)n8p|gu$*3kdDJ`7fGx7habc( z{_`mhezbVYIlREVb?)+(Of$hfD>+qH|CaV%9Z-`;(a1)7kWx>H`mgMA8U>Ie0&Eac zSO5)x->GtAK`7R}f7tBeMhW()%)5yuz9LoMJru@e(W<5T{oRew$IT1$^h!i{n0PYK zk_=%)$znfPdE*`4sc4u`ZWk32zhh5)Uz#|nJz1I#V>hc!kKXdG{8AX%-29$p&t zBiI8YbL9yZu}R61LOpE%hz;LGEOy)H6@QC$^7hMl8v5k; zTkiVqQj_PN2C>ep26inm!o6-mOeW+M7rZ2=qyyZQbahB~i*A<1HV>FOs1OqPOwJuA zpM~B>cA-k=Z;;2_$Udb!l?3WkvJ!2NSJGoyG4rw}UP&+co!`DscIU942RXb=+;#l< z%VDajD)5BXg^}8yZ9M?SPOJ>+Lif@*$tqLnLek(u96QX1@LlF|Lpq%?E9D1=2$eZh zekFjNn%x?a8AwQ5lzEGi?EoEt1Z;_6$YaX!?4@)w4whlEb(^PYm@p@N`w}@u1Lh2PBJO8<3p!d*{ zjf2ZkejJ(JQNO!9p@U>;7tG!w--SHKkeZoGCw&-xv4^5rWd#zkkR(ZL@4RV#_eN;R z?o195liElBbXAA3ieN&UnVgf?q@CYz9Jqv_8O&Mq+p%_Hvak;2wNjdL8{&0g*r=UA z)d&-K`1)qWRX36slkkl-`$9Q#iHOQZnCQZDZP}_Qr`*k5cQQEy=DPkVFoP6m)oLOR zjhH4s6#;)F403|Z=ZP*GmiEFHJd(dgJ(AERqkdu*yI!E3Mu``lviR-)sZ_vJOWw0bOz?tMi3%H`8%YGrNt!0F83MaCq}O zo>t1!EIY)MvkAUOB;I!@?c6ZBdsKB&mCK3NDwXyTLcF+w4PR3}dpRX+W_BWzcCPxgT(D>u)q zwOS!iJn=XeWku13HuDd&U~fl7rHzsWT=81MLrv$qi@K@)NWRNL&6J!Sei#?J@cE56 z(%e&WfvPWUT6ak*Yb1OumsFHn<2adXaK@g{Md;q?!_?L!oIewvO7Z5gJWTXU=_@PK zN?$&E@-2u^P~#fe2%_6r8mH7!(ChMZhbd)*sE#)4%^9#7iH7n)Te>c0ugR#~;-sCN z=?j0oPMM%3OE}|2->`36bkl2XtJFL8Z%7cO;E5&H=`<>WB0rgW&utU&SdrZGHaPl@3(wBTu2` z0cmz?K1J^cf4wQ7Bm%HJm(a-}B>Z)_# zBAVo_q1Ac`0c4s`+U`~dqQGK&M?=O?0AtiK!97T_e%v|(2ct41Y;#LRrTbd5=eUU* z)+Jj>RtLJ_$p^o^XIW1v8w+Ju0)!QH(8Xq{UUAi1qjv$+-D4ZkV>=J>lFp{JFmA1( zE)Io8CNfEQV;Lsp_f3t(FPy%&Ho)^sNBR(}NvN_|XfXnvE2!3v7h=8Dqi&Je` zm}EvLTr$J(}GR?qm^etF}p{cbNDmv-ZSqxI@yZhupL zCNPphzZ)loZxGc1HC0YbO?=h&AQv#Cgs{T#=X)I$E6+E+<3t%rO}Hz|0B#z5@noOl zpS2@&{EfjASFnru_2W_)!JwmZ!QbvIL7h}$F<+`XzVBzw(Gw%SK)*SoCr`#jJ=K#h zr^QRkDYrZOgQlcc_N#o?G zD^J!0p}4FAXGWALh>T`ngGt8#ys`ms%6iwBz%Fhv>Wxl^So z4x~>qYhhxz)ou+jJuNB3S`u5dKlTpS1sm$x2tvZh)E`oDa~T~slq|v6G%|VWr-=-B zso@b=M|%L+w|8vOA_0sW;BF@cX=4tNnnPN%=7y5TdoV`=9+cKX+5(uEUkMMaPn}i! zPPJ)hxbpl1zz-8FRp>LrBWGmC>E6+bC~x5Ha>~XXh$Rp8)AJQoqU3QOfUC3;a%SY{ zx@tekLw7AkO!=x&lDm-y(sQt_Ta_}L{Z0GN=mLh9%2+?wl|CX&buhca^J*Gow(^b% z{pBg2!cbxNf@1T)3Fsg>^JE2JrV?%tvB7BNRkeJ}$u7>Mb=rD&bweJ4K&#>d)TpUD zm=e#&+yQaS&(fcD9y^XZVwf4yFardQ8iOd=_lZ=rDQ!`ZE2KhsEtHm2ywf+EJ+_n= zk%Pw(;X=gHZ%gt4(@n)q2fb=f1wXCxKjXJ)exI?QB*Xo24uk`Pt^X$WgJUe~i$x`E z^67jfM1V{8l{9FloWlJ0@mDFf%Xwx$|K$q=c@LiX%v1Q9iNv;-f~95IRYwv zHJ+shG*Mf(Dk=A+JGTAuwQf&XQZY`(bwbi){gqDoZr$9wJRq%@47B|DdyTWuyA$;< zKIGSf!6$&_UA1>gXd%EnOvM7>%|aP=^lbls`k7bnfbN+MxUGJ?lgl8;eL3s48fhd* zE_DD55^*r07e{QyGVx`{O}{L0sGyO$&(1T>^bXG^#SZ=Y+^NIw*+zgBF7|pxubyRv z0&40bndk=s555cs4v|Bx>QRjPyFviG^JJH(#_9vlu8n$-#=1P!6Zoj2 z1s8rV_}_&>Qh%OUUK}4QlZ_C0v+yzIuxdkBG#q?YAqag{D9`Hg3B*@w&RjN@o^&X8 z)U@jc>QBHDyCzW`mnuHVSw}YQSH$jcFczlZiTZ+5f6+DphU&{RJX051S(8ps70^rG zB0{c?U?I}P5xSe-qkFy7Md}$z=$GW?Bed&ZULUsO3OHU(3KDoSUj+qtDy~^QfQg%%yk7&p&@3 ze9P%WpC>h07lyYy10b{F?rs2Xo!in0eo&~JpMz9=OP{Ro>1=XZUamy&-OM9+6|GFY zunR#F@)obA3U}9bO9O+!X>P0MGwxe#?Z)Se92=4P^ha(8|56G5{MNu=i5X*}jqB$f z7sZE<=8&aMM}-Hq^D#w__}!5MxAAB@keqb2X2nUtm>G$V>W`#bnN&CM_G%!s)hD3m z811EJ37}7?g35xU$g2gn)*MYjxIyfVG4qg0AW z_LIP6zhDU!4y^Z|zc(6s$5eN`m`suy5SU^FU$?<1%ctNi4zix9sdsy|HXqTydoQvxfe80-1xIzfAM z$BSz;sqFQ{gh#&5D-=V_1nzgRFP0URDB45Xdc=2R;1CJ2J54VH73E4;(1;B-KSh!% z4;m;4J}@Mko?6`2R~*vnrao3}y-aW94&e0*7jmw(il*`E;@3>gbZ~P3SU9(BL$EJP zi7iaaF*;f+JBffCoiC*=M*_SvHB>3@3~t)yyzMCM3l1sn4oC5Wr(kjy^N^$+bGU9j zZrF+ZVi0{5*L>P(^f6z`$SCwV`mCIjZ;vIskxD$bnOsTL4!0I}J8sWwdcJlCm}&PU zDmlq(L6fE2v|e4t@_mqrEFrGm{^kN1%1-BDya&I4LwQ~BHep=cc$z6}Dj*}PYJ$w?*P$`8PMFntav5Eei%*r!!qj;#04Hv=} zmq_#^+^_~-Qs(yzIs3{UzQ1_RqGHP7Rkkj%HJPH76iF~}j7E4j&86ujv4km8E)zQV zW4YR4vIatIk=ot9faa>_!AP97!zPO%PVfV*sfi?-X!8z@n}hD^?s%yjYom>ZYFCby zrrntBj(g<%G*>$9b=9L6e<6Uv_yD%H;_AsPdDsw5_QA<0@dxamOYE!itTUp!$mTzh zr=3}YUgM@HsB_2kz1ErPsq6MhrYEY73|igFfo94DNuPPyyfVE_>(`_%%>oakT;O49 ziWDW2I@xXO)MshV`J0-_lCARKXWM1+TQfHvmq!Px7^V}7wv{XTfuYgb}P_{$%O`(&a0 zeWy0Bz&y$LzL*L)2V^vbe^atbR%21h%h^%P9wg|QeutXHwUIAfaoUKfp^Us@wn^6~q-Vsp#q z^Vi;natn0{v^f%J!Cm@k*D~s`%pX9KPl;a49sriFjvl|~ z7|U;@wO(w0{Ys(CRL;Eg`HhiI5Byq}Ka#Bj^TT>lc_PMl>!h)sC+ySWcYYa`TRXdH zTRP03tDmq${TA_MiWF1%^+>x3^|v>mi_U*ecUB^Z@FOdvKZc89sp~+znk+AHx(__@>}EA$6f@IxUyjx|pt1~JTI3LF>ohI^ny2cpZd%<5d@F5N?)r^a zV>4e}V%q_O7?%y|kOjgvUssfwoM4`rua{1AZ48;-EHDdN3+`HRnL22(b0>HFEwBg; zbA#f%v_*BWNG-h-*QN!iLMplI%3NKOaIMrwLDu^HrA5C8(U*;sQd8O7cj;Rm=w?iklX!D9!d>39iXU)jb2Hv07&AYu61kN^Vc~4R<-P+ zsk=S%h8$vbOjI5%7tH6V$&(M=7+7KhjMbZJRubn!qNs1gT1 zI2?}j5S?Lw9j<*70h*2H||UmW#V*egy=pC$x51l+MKnItLP-It{e9 zwA!zjTP|tUH}m~h^|84wSpuuwVYLhO;T4Yv3uZ4E;jdb+y5yg(_U1*?9{hckb{W+w zQW^^Qe}By>FsaW_H0XMH>`MHpWjN#Wbdz6!xW+Ht zxWz}yPs1Lv>zd0;DP>;8E5#`kvT=MoyY(INg1$e+v9 zNZ5D_$_lcz5k6a9^)a$k_zX$t7@9neuS(ZDD?FWer6w!@IXkEY2{vBQZF*Rio6i!5 zeHE{fi>?w7%FWTj7y#)y_RyW>!;tVPB7v3$HdGjDXDV4Yo;kT3ZX@sv~7x zGGnJ0ZtngXj0woWD`1Lj#z8V`Tx>81smC5$uUX;xQ@XyJDuT**AMWSh@nmVQZwRq62_eWfK3_!+mDntaxk_UpIBzr=DT~p5fLF5;Rbd&dn5tmm9h#PywgCjBq zD=dIjC-n(mChSnmkzBR6V+qxf%PwSQ(B8R9e4}D^z&F9ev*@-XEiY}q;Wf}VxIW_= zWfq@T^x$sWTBOdJwNEdQXeTjo7N}w5ofFF$TO8A`rY^R+W&joj%vJ>vnUv^D=9-WK zLt4T!1?xGzWGvK?&s0PCLD9k7zshI7RK|+i!(Pu@KxwOZ( z1uS@sKB?kz|Ax~oBJ;>o3ugDcyYWg_LT!isC*c8KuD!O!QZ``V)Q1K~WOpgor7qvM z!UY$x_Nz>VA2Q&;;nkll zR?fSo(VYN;U9``}WU`8-dKh`e3dOSX>}q(=gZqY-x--H1UWj3~kxzEfQZA+o0ypVN zBcd@2$2S0X^sy*itBl3ekUg#LtVxg4k%3RPy7Go>ZEx42f3ZAu4sP9|(#vT4G4Ro< zgF>ry5-U3Rn8Vt65=0nu5{$o8jU9g^n2AkE`-G_yf>gC=D^2o0-7U51WM>QdUhj+k ztZ5xDSS&0CH^nZX@{5l{Qn1~juAWmVszUrULXC+bZU=^(`U91uZjIlTw_vG`hlCi*3SNo<;2fjowbkh8O^Z0X-Wa%-W zshNgFW@9ssH|(#TPl^3QlVct)=*G)&F#d0n>|+d6pjNg8Te* zDIbllK%cq{CH~qP^doxeBrvUX%Hb}AXax0I3NP6F3uTS>RN&_ETR#hs+AT(o%*XI@ zKg$cSS>vlht*s>FhEKc0lg%qrj`d{}p4)W5PU%T0mV~i`nZkI5{8gzTM3-|SJt)j4 znP~mOAB&n9`^0?CaXxT^Z<_1cg)M;DXPv7y0s}-m zXPf##&Rn85YveNedDVhq3N2o}cCGzk!}1TwL0fuCgfm(BVuBj;Z9kE#YX_>u zHjD3`b6wiOyu2AX49?)^>55D>;1SBR>8cV9PVdAm?d|X5HgbBpTWs}eQ3+l@>`Le} zQPB|oXJ&gI#(3m3kFvRIpGuPtcx(hH>*lXuqF_-gq1M-Q(m6Ub=CA7Z90$U^&|h9( z8!L>Gomw?{PPFISY3>V_Vph0 zmQSDjF5Plvpg|quRnIkigPoTF5Gl@%VGe(-zr{z~XT7-~e+ftp6Fo^CNegn?e!PjM z(uA_L&Rtvxn!gV;jN}=!E$vdMP`06YYFYp$LO&9ZGh)*>$yPt*I{ZOYwpnwj?MFJn*d!iVfDHf+d7bA+^|7zP zzQIvq7GP-KN!7Go%)YbsTH#3`RWXuIQ=R>}7py*r!k0G{ODgFpGEAd(O+%Y?AeR`b z1K`>S!8qseL6%_8rY{M$9>c&2XC3FMuXdMLRN4eTg!2#>cg)GwM zm19O;qA7&bKbE4SEGVY^CdguQA>G zLzU#PpIY;Cc*Sre#wlQCa*Q(pMygYKw3NK{73W0WvGp(tVv-DXU@GqBg%#xhFUU8S&ZOY(aB4dAw0{)mg=--SdJ@(H67s z!73;={2M)EAvk6Mo=DGq(UhdtNgp{@ zQS|`fE~eEv)P>>fsH5{0EGAp$8MB&Fy!l$pfPIz-#`lBaFApOx0l^6w+4U9+>S0Ad z@MEvpe#8rY2<&@f#B+4hQ6_$7`!!kh_!+tH=lsuo*OxAabQOfWj$**(&SW`ICIxxh zPoIjH0B)3d=zS`RS0W{~(Jr|n5m)V`x)q zc)0NGFK0SLpwvPT@A08Xd%^gpScF-}8vNu`q?8x>kiz0Ay^a7&=bd&}Ww!Y^hK{)r z?@xu7;R-;2PBF9vWO7$ZH+kx(LCd1;i}l0+J z%oIBJ3s5;wt%)g0_(lASd4#a$EhLzT>JHxEhYj3DcH|M2(pDEv;X0=?w~P9%@ayHB zvI#%0$gVECw(Xr&aWS*&6Bl1%?z=B`%}V^A=MnJ-wh}Ls53JD&BO2{MTTovEo<{;f}UF9Ye51=?7q=0CLsinTNTCw{6;@I$yV$nd}y2Ktf6y zX=3xkwCbI!xa+6OxxnG&Guf8olD|F($Lc(R$tI?JpKd--NvxIgMzlJHQA@Tg5sRC`+eNA+eb~>)ucP zDGAWnE5gx^XvPEDJ;X8o0o7=d_KSF^TdO<~ z?FvfpAZo||oeHykoJM6?Kfm(AIU}Z1ub9!>da>QS$&uiB{L@imT1jk?`Mocl6)#WM zJ;pW!^}$i)km7<0dFg=I&DeYZnRp?&71|Bc?T@qvaEd#Pw&uKKRiq6S8Vwc6eGsPQQHR6Y&cDa1=g*Wx8VwP zmpREW24j4l`NKRkY>BXIRPakV3q}&SK6Icl5}X6wtZxJTi?_Xc@6`d@L7hX>uOUyc z#i7k<-6D2{PjxUOVxI|XoTQ(A=2C7|JK%}AvLRl%qc)s#piVC@j|mNhm$(8`=^?3b z;5r^L`1?y&Ggf!<%+-PI+WZw=xsgoHm=s7oQQ|P5&T`E>ml6x&RpZ2$u7IIp{iJ`^ zx~=i~>hC*n5b4RMEG14vd$?(wU?DdEJ;AR=ch={>4@czHAVa5i0fRR+UG~bUH!(t@ z6gUMPh5}N#0#5zh_xWoL=&TJ{IB(MFU@2|Fg>HQZU(9pngeI8J5S$UCvSrYwzB3I)#`KMxPG_lLD;db0h+XNwt5l!+W+hFh zD{5(-5@RpE0=1csfA3TqFMULsPwg$AL%A*Oeezuv=jJ4EQ;4>wxwN`VpelZK?nOLs zYQ1hC{A!}G5E^6$dkxxxmfXcGu=&Wwfy;;{h-9PT((p7Qfp1|XsR#Y zA@stk&Dn$~bx6Rf7yag29T!8kEj68d45?V(Kl_W@<7Q}KMl`6od!1KU98J;cP7SRRec_lbP?17keEpc zdll2{aKmbMq0UG4H3K-U|CCO+HP$NLXAuC@$wle7(Mm%O$(Sq1_L+E( z8!jj?+r=2|VztBuL@;tw)6h0kC7=fKOImc)AC8(dP*Wz zbk_do?*)ia0aA1_B<5yd>w!OK8WhKEll+nEB#u)t}%B| zr6_JdFXZ7Ivr_mgrtYC`6~6fpS>Qk9T8E^(p67(0|wuf zX}_dlMju@J$4fk;n{66b6@nZ>6LHKb#`t8WP%n!1Kh2a9LO6?~sGK~xR@L$vO7Uy* z(fQAvT155FtCr)9z~!yh^S8Hej?+F*xnqtp1pN#kS4vl!1^?Q;d@4&_uCG@e#8#W1 z@5@*#ugwUKmjbu->aGZkKk5;co5gC&OG_iNL2c9379o zsW>BlQi9!X*3?NX>1D3PN7tXfoC_kD+`+WlPo6zFMTRUjTr>qemDe1{n^J%B!bB+2iT>F4^pII?sE?~l>crG$>~U6khfAbZ zw=Y=+=Lz&^aSEkH_e&@ai74JV0yWNB>ArApS2tJ z6ol3wT`6m74}fKyPR;YUJL>0Za2v91q~kd8#w7l_wSZ4IE(2WG{Cq?A^_FP|bZ;EZ zkFDh!;|@=a@jk5%T6V88FxZ1u7>q*SzLqBEG9#01%w%^{`pWYC=GoPGRF=EGc&nG_ zPkJ!lxv|ha|BK}!FqpM1Zx8^Gt|20)i2iyq!l;FZK5sU~Oudfq0PN=oKqaq~_wJ_x zOLQ`}4(3)$A#l&Zmyl?Z)2C*?VH@b*ayiG~HzuVJ9L98-(mjH@(+Q7ffvH$QU=A>? zOqlZZJpL1pfY&Y*+_>#u9-4r&JJq6*ta-8!PKE4@aCl>If1MVla65#B>dhK1B zP;%K%9r_5bKlK}7+A#ojl+#q(e=&T_oK{qmZ|h7rw2mm$%3U&cr){gOc42gO%XjqU zTO;IOdJ66hlBxH=n_?4pHXAg-vvdipj|tW*yuR#u8mibpc%$QdGug?u>EaBCUyr7@ z%n?{f2Pg!|REsH0T4M#{*l+ijH0Tw2lQ-aNZ$nc(3oa zQ($4#47|!doR2NHY#4g{RN;U$BjFW!P?s&Rg9rAhsGrNO@e8{TesPV|OPX=U@r6^-jm!_3Z zy+Wp$uL_pwqVwyJ2Nwivqx-W;Rk5O_2)x^0 zbb)s9X1?M#JhPk&amXhp=aI6o&o7Nu^+xvC55xRrzTIkGOYO{o;LZD#KmIk&0;a@G zPEazKis;~g$LgYqRBk8V#;F9?8mr8$o40XFtLO|4!-Yw`3dvFU{yP9ZK*7K81Uqbb zv)S=%^*!S)Ntp-@!!qo3M>fp__jXjc;RK$Zns}i)jD%ZVLb0UuR_s`{pukf4fVAVw zP-|9T?o}7<21fMV7yD*zQucoIzYnp})oZ5>S*fcVEwQ}Lwh20xaSs2mx=4Lz zc$Af*&r~<_m*3p!$y$;(Gn1oEqw44kl4C=07F;@~FG-;p>MvK30|TH(v6XJ#(#?4- zddRxxWvc3B%pmq%beLDxf=2-D`2zF!%SW`&vq|fyB(bZaSxX$Wj}PNGlNDB_SvVI@t304;$pAwPctSZFoKj994o(LWTg|-rOuC*ZVQU(8Qi8&A7;Vop6G3;{LGp9 zNaCv9m!@t$NZC5bt&7@pc^Xm6&qds054R>3JCG z;$v{#EVdUv;`=erjS14#Gc9h+iBK@uK)Dx*1U=55`CoJw@18Z}F@p4q*0}gc(F-@z z$~K6BcCIpL7`DroR^iCwZlo$t@q+~Y^i&?;Zf%I<@Wl66wRY#8s4c-+rJ)a*U~1$j zUg_?w(ZpTRGq3d-tg>Cl=Gu)mVH-WBu-Ff(7K1kV*y;xAiZ!2lfqC5`<>J-!eeM1o z!)tcYX(rsbc}JG3a#fCTkQaO`YGr%dc%w2EQCQ)#)FN4_u&WZ(?9 zwwad&(+HSfM+>q5HXS%2Bcn>gOH~2+ET6?x*+Ga@$NQmnf|*217oT4Y7H=4xaLpT7 zq-#q5G1gR->qCy}4bCie}t^jacqL>b|(o7x{e_`88fnMk+|S6l$nTaE5rgmZ_}zWK;CHdv|{m zh$TCeqkaZdzU7OT;ailXcDEJv-7NKpQ`;>(g1<&lTI>MkQ%#9Uow9WIdF>Qr?h+$G zKG|Zv5UeGZGZkLPfVI@z)u=xi_sv16FWTu$2#4PhITpz|rPrk%d5U2NBaD&aZ*rzs zbhpwNJ%mMkkj%8VzKO3O5o5z;Lv%=PD zM#9BcjBEPVCttbI=Iv~D74WcWGH^|&8RM7FUe(VAWOM@RcYMC`l51qn2%9{!g+jum zI$~rWeOKi5rR^4Q-{Yl6i;0rAduYR6YH=dKj%V-zYd8;$#OBFWKX-!?QB{bTxTpDL z@h;iwx(bO$DS7LZ9+1K3ojg(*z6U7NPOk&~sR`ooiwPZ4t30)82g7CQukb~+KzDlL zjcl98la0cSxG;-1MwK(-UfQ~WYx!KDkK)<|W9aZ4(WJ4K14;emQ=5~TFR7pL8APm1 zc%;xJ5-jb|?PNKED?v;a{HW{C-)sU`AtzkUU@?1(p?BPR#jOF;Z`_$2^2BZ8S*#hd z21GroyNEuh>C5WBZIXv`z!*3?p{TLZVvNNb>=QwUzb<>1V8zaJ*(#!xJ&Aq-6|>J} z=rA*_=#W%A>z@+dk^#z+^H|v;wrQEh_i-a9gAXVWj7XigWqu?5_ zGrsQ*!k+d*7m@6gqIZiRP`c1f0-j#XN?iMcuO*+||FqUVm0V%hxF9$rc9W#1t$sBe zix1DI`C(D^O)}@oK=cX2S5s85^FkA89|mj$O}}K}3w<{%O*d;HFVC}6(eVo_}Fub(uK!{Nmek?UH4JfrxFH zKlY9NAq$-*I-MxX%rqDT5w2~`D`nGuvcN!wA-U}N^VcV*@h_yHU1#Ag*b9D;yRF9R zB!@%3;UH};~>!^%KxR&$*p5!=VR zfyq*Gv%M`WpyBf(TdW_aL)dYRtB~u5$+mgU4ra*H=3tfh0N=cUS244*TNxT2$nz%V zqXtg`@n}DCdx_9rpxDV$-O48U2PQm)haf?oMDOS!1&H}`If(rCh$?X{(Q~m#reXJVFurp2w zUMqZ?&^cO%(=!CGC3Av}RdM<@|8#a?8RULDT`7~AxR+a(jCfWky~WRri zff)JGjgcRQfs4y+=32BU=j(9XT<$QgDXwvv`Ouqu*^M25%t2yhMqj>FOL^)XtmunO zR$~_{b|3<1gf7kTqi^guO8_b>RwcD6Y?}24SX5CXW<8r)nm^P%v<(*$CHAo+Tq4}5 zrY)tdPmMzDS#sA86rWTULR^^zljB}=rp^j1vtey^5yq{?4#L7+@zYYrD90ye5vX-F zp=d!&)4p=^ZfwUXPj|r|^?{At?idhMe8(HlcFB{Cc{t3m?RLjt{neny^k(~ZQKMX; z8knd2&b))k+Jq$ayms6Sa^i$e?NVKN^ll8-@%8Xex?#eR3$J8G+=IJL{c=0P zE-8+za*bpU>Y75N`!ZUfc5sueauR3ZxY!wiq;1WVL~{9QyVH0Hj&jxA#3wgf`>?Ydiu}j>sK0jErAx$V8Z&w7_l8oUiK>(cHZ^-+!s1Y_)4@C2 zv5CW=2N8d*ka*LL>6b}{M&BwvV?)P?b}gOHWEZTvNgZqigbKUt^g_%9NKRCAnNA0_ zw^ZgnjN~K!g6Mo?a={@YD4UwNJc{aYKrYn1jV5`@BtwmzQL>`kUexE?NmNGLrxH3# z5EH<(Ca{Q}uTl?cc8R;%Wu++g3(^7?Ce4fnAyaNNPlm|1t7n&f?J#2m8BwPj{%zHS zN6|QKA{iUo^PR-i<=>m_X@`QVhw|nQ^YH~rE{*n8h+>e*nUeITF3qyS8d*7l zb9teSO=@PeR9n-jokuS*tTg&8YyA?2qpzRS3$$o&i~g!sRoi^G8y`CAiLO>YC#H>2 zaP9#D?Euch+sIC%PFb`5D#_&{giabBh@30)xxOlZp3Y)vulx!KY+tq-;#rGq=Wg1A z_n3lgRi{!d?c6rDeJYMt7~YM~yUH+8r(G0iq<7$pb`J_m2HWh&d{l}!NB5HX9LzE3 zmtshjyP;r5_dA{m)@*W-%=El_34znyTrduu1L z*y|l-wR;7-R_NB0dU@+Gaq(|mLq##Gpg4bJ+MCNX&6PZlh+LNc0LiRC&OJvj4r9tn zk2W2Z)@;k%?qCC8UF%fAc6=?h?=02&Hb*h*WDURIx}(4BB?~Dtb~`!yU>blKW<&&N zB6ZMPfGm7Y{Sj0JO|O~(f-MCyZ2zvqbKrKbGcNJRSnlrePOYZu=lm@6kX_Q&d2f_x zyw2_J-#QLIk0VL)d@ZH#p4rQ6yn1Kix-^|0tV-tb8pkp9bIIy0OM?|&FqvnTzNi8f z0^v!XnZd>sE!7YB>gBvrG-eOTN>q;1)UD(Bm=n2_l9wD6WKuL!uM5AvGYC-x5!&X| zyV7?m4BA#H)w+Vc`o;pyYASU|C&6~b|7Akk>3bAmXSt@Pq;5pHbFK5d1Z;Wpy6rEn z%hi+zzdldU=`&*!NakV8qlsyJt{)B3i1VSZTD2nC|+Qljx)t}l1qw@BY;n9)&( zBV7EUeZ)Lu1WQ^)_7fFH8Nx-DW})6m>qgPG2=HXzL@!xAO56a641=uTTq7f_9`-`m zG=YWB7N3(^6%V2q?U zLo!k+bO$hV{`UrN_WkB7{|AtEQ{&+aUZz?xjwjak5GI=^3$@4rN~RwGyj%joVRe0J ze%cI4sKbNjU(Rc)mr(CJU*JMb@d?SJb`8}exvayB_tCj+|AM9!N|u9I&TTEeOu6IB z%Wq)0QV5LIz8q3?iw{PDNBUN>r!*EO*owKNw%`2Xs_ZB#Dfb~P+Vu)6F3Qm?d#lO% za`$HuHkIaStvez~B>q+=`Y2+r>r8MGlocGXs*-!e?(}7&uI|VdMAF`}F_3dNGu|k) zLWffn+>xR1PrDWu$Ec>OTiP-Xl3{tOaQop2w-BqYI~ecciKBaSo8Rd-oZ>Lq!A_%# ze$yXJ)*9D^U;h;X#`bzLpUvH75$93fGTG=58?B<~Mle-9(^O6={SOa}C~~TVm8bF= zw{c0t$hWod!+s=!VANnZNx{~|3MT#sigl!HICKF%Bec9|y>MoE`2o}f0vQQiXSW1*3PH0F=a|CHB|2L7@EctBZu;m{6Zqh00Er* z#hqvo0Lovx7%!FG)0VtxX1DWG(D3S1^r(tb`7zEh6@v*@H9ByuR@1o=aZiWAm!mll z{t#>Zc255+ufMffZ5uuzvf5N2$o=WRN4JHGw8TEz%BtkD+HsuF%3cL`I599h_mtG? z;$J&`J_!Xej`q3(3bL(!;ma^grBVtb|2jmB7wW|Jd6!{abSqQU=-ENL@R|kXW1Nnd zp>6(`Ba;z^6VC2bTUADgqO*=&=-Vl&`{&;YKAF5P*H5xRo~*U0&tM!V;l((cAK)sN z@uAEhK)^rVA&TK{lMc@zX01OWr9-v?#7?iyun&)gz3I+Pk*3p}6CNdWk^+nkmOK?O}%Uwt~%k;&R&222*P%2{)*p$Oug^4{!+S4YEYp8{iS z9A`idW|D==VX~p4UbSm;Hc#AlTMgA+qIRP6mfB=(5hUF`vEM%RQnxe0fhUJMOTw>% z{~bCfLTzWgYD&y^BmjInSo(*tt6yR*RUZ!X+D(ZfI%k7$s#fhlE7f<5FGGi?nS~x$ ziN=A!TkG6Hi?rG- zGIPMbk^CSw?yk)_geyL!szYwW1{$C}KIIJj9|aXzAaDLeVTf5AQinEj-5(uw#8P>C z$K*j%mah1=Z#BVq9jAn&1E--RFx1uCm%b0z#e=Qv+;Z)0= zN&Iy>#1>~a*X&j$92y648 zOsuE6u8L<);?_(7U)A%%&pDjWDg&3Tb@%;LPx#iIK^1hc{-Wfg{m&dJsROp-7@w&r zun;z>o6c#%sms$os8Jvxv~d@XzeB058|+;dGhyR0WAEhCHogm(sV!kfIo07eJm^De zX(YFAH^FzKxIxcz;=vQ@AS=9;AoS%~S8O`8B+H_nrwi>#+(8mNuj>Da*`4rwbyn5L zshkPQmhuP^p~HXMy8Zk+w3iv75JpV4HZI0|NJ(^N-riIi!So$gjaNxm`rZ(I`HE%9 zek-X8Z;E}GEbZwgh3>t0{8gyo`>kU056|j#d1@%Zux>ezU0=`xx4#@#^wgeqlH(ze zL)u6!2-8z18V-Sz9|^p{J5G%f=k$HZNPL$Q-=g_ees+Zzv9d?+_m!-#3jp1~CTw@u z*@V-@P*^d)?r3jH_S*C2+L~Bc+mf@lrvR@5e@P;k6>MnHRbRPKro zYILQm;eLm=OzkhCyh8W1DI|==>bPXKeUWg<$L-{(Pz6Ro9c2M^T}7l4O0ms+ojO>qn&t~ z#zCD8jBd<>lskkJ2Cj$0KpamzUfJ~^N>p^5RLS79N|`tzm>nG!EgcLMVxYxH>vSCt zoJ?X@@F-|In!ZccCe2!Q^?G-JSC>quy>q6Ea96Bgle}qI*GfGiU6*vpzMz0pi_eaB z#-)fuwWTxs67KKG1NZ0$w0jJ}`P?wZE;s;bd;yX`g`z!$)@ll%%wJ3{&lft}O38^Oz)hhl24qwB3a zpx}iga5sz3^2}9PKz$0VJNYSCox+kg2~ZVTCsvJiE7^rar5EO09-{}eK{Us+Wr3?x zPauZ4C8zl4BwMqfc)PlSt!y77BK~;MV}#&Kd=$k?bhVZq?QN2ujP=_+=B}UO14^93 zegu7F5b@D~?icosCa%(gOL=dnxMof4GLSK~fUD}}O`CT*jO#m^qHr$#b+eUuZ99E( z+{&Rp8`iRBFU4J1v0PW3InLYDDv#liXL7PLUaW5!1}(uwefBI*0Kstxl@S48jDwA? z6fu8$+x#LFZ}YOUNVI0epan1h#~D_&T9<#-_fd&Ko$d+e`q9>4+_6ijx(7W$=mQSk zdG!6Rx|pEL`i=_dPQNv*mi?!3wQ2N7%BYXyD3p5{q?HSv`i`|l*n3!44p!ZT#otBk zjJp&O@{5$fsrSGazwuiLi|PlU}b_+ z`7Oy$zeVW2YHqY>XoC}2b$s!HA=+^kU$2;qQ@kRwS(}z5n7;;!m4`p?^0HSLh=R>_ zb-3@{j2Aqw(KdS*C<|*zV#UhuCnp*CKdOI&vm)HQ*1v`;eTmoUtps9=Bbp5E=bx{i z^vlpsDln?RS4Tq7u=(pntJrAqaZvO{yqlcK z@5cg7<(aipCBzU1zO^C>{M5ZT)A5?Cyo-VzgS3?fQIj;K_KUAb|AEpCy#0>?6H z1|o#~;JoPxNAOL|o=zxEp5`)Z)ABTW{O`rwsh4$XY&DITQr)V>_f{kncTGlf@aMC; zA8+k$VF%Ypr;=E7^vi%AL$+L7@d7g4uk1D{>EYuHerjNG#U_&r2gxVjK5iRzYb5um z9G_`OEc^qHbv6F(xkC-(!|sZ!of(}RrJ_%LD@HbQF`6#3z8W|Pzs;t~DY#qF3eb?9 zmzX-?Uibu?2Hx)pg&zl~kkMt89}$M?jBarn@w zd>r7Rolr=3_P*=9+_ZpTmjYQu8=0>33oW>CLwY(~{JHsN5}MkIxej_FK0E9rzI}T!o7gD(KAe1ogn~P)#qRG?aaM_Wskj(fa8kLaHWN$I zv?(bsMfcJl4ZVsJ97Od%InO<41ejsSA$;Ra!4zQWJex0>YD{jq&c zwjEl&!+O^nVvz)gqYJYKy>k{PV{TGF5{=R&CQpYU9PgNMt0UJ!^)Z5!Hh*1IXZy`s z>!&UVSjyXQ9yaN)k-0!SeJ+2*kU7`vKE7R~ut2-1VTG5z`V#c1uQ}G&+waLr=g+@! zYg5~haxy{2=qR&8!CGHZJ;OTyCnLjF#_jr!iSNrbwns!JTyfVkx8QJ=EduI!-x#t4lhqBzo)u&x9nC)8;?2$~k)5a98pMQ2qo%OEKd=M{V01N1d^z}L76$>ve zS~Vxk*=i4`k|sDMSe(3)bE7rNsS@r+r`@}zrpQ)2)1`Df)>8-sj$5i)Q4cn`ag-&d z`fn(=gZJZhF69+@%72X2@)!_$(ZNjJyG%#VcsY6P=nD)hRSRr3@byd5lX@n~mpVGU zrq_j803I2$%7II^y0aFB!M1)wMeG^ZnYdzd$kr?#O4B<(NtuZR&3%vz#(rSc#c`Ea zQw>Vmw>lz0jmxvN-A2s1`yHUq;m?WD`Frdi4FkHf85_jd6m{b}uli>(ye$rr?rXQ+ zkm;=N%{VEoJ5HV(vKnPSMS!Zs+?ifPAbF6(kw5BWQ!7<1sdl_F5X;FnGmZ4jyvOtsJ1xNMR6mFh9nh;b{w zr_;wQ=Bdho1$M)OUqLk-&!CyHh>9yllbxY*y9)j+AH4Q$_LB`o52C$tp82YkhciRm zV+>;H1=B8J00CH9ZREl`CzVHZ4l{xnD{1Em77g-R#VzWlPY6;a)#zHBu3y6?hS=bl zj_Vz?j>+P68Z1mlEKL9LC7kg==q{LQ`Ol}4EGsy4m4G+kGq=`ipo64Ou$N_-Bn8C5&@4oqsh{beh7YyF;YRI#>EaIXDj4# z$QpaU>*KjTi-q63&u#w6Rcq_9sQ2J0Y?`^~0glbHC#m|EcOb!voetHzme=55b!a6~ zoOmUfBgyRKPW7_!fS=0c3@&leS9VdOK6#Ux$oC6Z(nM)d0DKqNiV(vD{`c~wmgwH} zRQ+zNEHrQJbNRFv*Mk`3m9zw<_P&*m!6g(b`DV4cNm$tCP2sokH+{p`NK%;zV`Xs@ z{Ivc2OOW?d2aCRW4~aMo9}P>&Ee)<^*@3mXGW3vOE3L8(8uVtJ<8)#xc6KFA*NCBn zt_X%bHPl@#P=fpDf{YATtpSAHH-Kdtu_COUyO?hRs2bDI9ly9EKK5%*(mM`?BU;K|XRWY%$HHS>?Rvy-2WOvGp$R#c&_W%@An?&Y-r0(AX$gZ1LQX_g&w z)Wy_!_fn!+JEx`jbQ86#u0)B=6Fa9~fdxxB)UR!rneagC6AoLn5_hcWG74)y?&7=u zkm_X|)k$JpENxvgdM|+Zw>S*>g(s=eaX5ns{s74_^{UKKDY=RL)JY)i1%A~K1PwVxd8gTyuNBC znFA;D=xwl-2|53Qt9~fr4y}LbFN;fvVg;cjMWk+X+kY=qbhrHxx33J|r2%7IWkE^m z(cQnavFW6eBz#@-G>iP}K8#dF#0Y2g4LiX+M1-#q<~lreD|>5oz7pJ!h3s-k7U$}` z!4SDuuY5Y{0>%7l6}<3HY~}*fW~E|GhGEdUmmW0=oS7xy!ggAn2lrvz(*FKAhR-!j zlak;iY8JAMF&SPIwVc`3yEs%RaITmzz01^Ak0)4n6yGIVw_n^dsTfaifbOff%V~;#D&vo-*AE3AI5^H1H?B`q6KVUVp;Bjqi%`= zWHrS@ZXy)a3cirM2Q}@%x8N|*Lv#uu55S+3@~KEM3$=OkT4(!U( zzql$-_M+6QMU>HOAyX*}|7?cRaCQe-_lTdzs={>Kyl}K0H(%c|?1soh|A%dol{|-a^g6PJUX4 z#z4Tugt4)&6}LzW9^Y`pp4$XQ@MV5iFisj9V?-grIptV3E~{)R9kk$80v1atPqcOHh%oD~F~PG= zNfLCjWM8QbbmRS3idl05P1FP|mTya!3XR`p>-1ghTgZCI z1nJzpd-n!i5AD)LjDs8*Sl3!s@R5}dgN$I?P94pnpXym|dn6B7P6v}QJ!=J*V!T*+ z(*PM%#8#4!;=7z2Aw4A}wb`?5y+Eh8A7?V+>J_gK_1Ae%w+F9r_AEk4RjtT_al zWesxJ#B!%_{j>I-w@k%Ak=7|oONQE8!1t9&4uYm8Ryt_@nAKMEWCm``LIVwE5vIWn zHFeTz>gV!Cg-BS-X0U_`R1`Ag9wXR3h|SCK2+!G^jwlt3Y(Lph1yQ*~d$(%YUGMZd zM|9feJWK3xV#93%@yNtS_H=`9>*7JB`c#LtYu@Pz;M7s+xsxX$5|)X@^!tLxS`K zw5Xx|0=#|Ts<}m~n_toa8=l~!*WEfNNbvDe)$I-0=q9)0<(Y`|CvE`OvLENqzr=t7 zFpQZUdP;LhZ};Kfb#x2}Ki(c}up!g>a-0tB`0f~Ov7!x+?e+|$^IA(X{GiGk*q^g{ zf*2jbcpArdb}8it1(M(lp|3AM&knjI*MPP-U-0rETl)BOgW^kGe0PWi*Q%EL^|ggq zc({_uj(*dvIUdAuUkLgzq0i>xx#&=c65M2~>*t^E#k^~j)~#t}BWLFQ(jq5&_A)7x zG{(us1rt>#9q_R^o$1bK+g>Ctc`RQc(ye(a0$Z*a-^Xn~HH&m`c5Qv>5!?!*PYsy? zxqP3_j-_uy@@3pHeTR6dwb+1ygeFK)eC=crROGrnaB0`~2|R_Ip}W6!rvfOO-So3l zu5w~D6 zau4imqWjD-w8K+TCwuj4{obXm>hJ`yz(uIVzQwc(N{q(svgDxviG%LK@xCZ`*Sj|x zXe`pBnJ(H5S~mw<;Qq~gw_J zf{eA&FR|}3@UVFV{iA_u16T}9*E}-~rsDqC?g(uaFiS~xU8@p9s1~4|JT+1}$$@?$ zJgGLwF&?jwf7Ol_1td7UD5+$x_2*xITV?$LG)Ns;0S&gs{miz`?Q6ehSnH?^+8a0} zdkqJC9!t*G@1n^UimWT$f&w$Yj`FwIQ+!<*@?|&BoIXs2NrB0<;hSH(v7p3wG3xOt z^~59W*pd`~`f_k1IV7riIK769eaWIkJ0#eTq2TRUxh zRy0wnS?W0tD1rgPf*URs&}ax&%=Fd-x(=OPy9Bow#=2>CEqU1?@W7Jh%Tgnv$>OTO zBF`~AY9x<$Q-D{_r>|8jZvL}4`bE{ynE?W!d8?yQu4|H=ci)iEkbZz#A2Hrd=JUkj zI~4troSj_|c~qW2A|U2URtwl&YCF@En%z>yShf2nfbc4o+SA3l*jADUWpd7BIg8oJ zmFQZ}l!G4Nv4NyzTmcNZiF6_#SR?7s?mCur91BNUnOBFK@yhsfFwe<%_9{d2=3+J^ z8_B3<@%yUxDX=$t9N zK*|@q2H`U+cuY=fNb(8Dbyy-f>K9c}U2R4y<+g*)!8fL;nH}1SO)?GK>3+{O_zHqpZ|YNt zqG!9jGVJ(n_25GWZdqh6kdW|Y=}NC=;%{eBVJ9naL0YOaqoC`n47PA|k3sZ4r?-LK4Tu=Ek{ zbhjT85ww9$t@qxCArEcMA79GZQX#J!<6?;sZUw1A9!4li2&POfCS8~#wwJmiqreuxPuHlKWB0h_I55vnyU1Whe z24hTiR~GFOG2$mQ5r_}TAX4yvJPQpXTiyMaI{-)L(--k4BlsG*cu8kw!=_PEr= zS>zc3>Tu2cq6@|rM0{(rZGGtg6Gc)~%QU;Z3TM<6LL=+i_i2Xol|%|LJ3MMdICv-& z;G*G14KC39Ecb|_p%<5c>pMr;hfu))7G10k1LRZRt*3*tW98DS>+l|~Kh??_hFLxT zR!QkJ*Db0ZZF3*|_%tnRopR~sAdbl~Fsi^O~E!^Fw`~w z{M#i!u2!!?calkUWcX^)huRCq`~AyPmqv<2?Bk$M&Q|F?vyxdJnX#pQovZXsp!i+R zEL7c+)u^#axdMH$bMQ3H#IgyNXGZ;Kc{0uAsE-_O}^VGS4exbvLQWdv25iQnY^(5pKh*`9R4&*Aqee%^WX1;2Xv`&yg z!KIoCr{B1FHE?{&;~V0L)0z-&Ejy?LuoM8VcWofdwz$X%3>Qdp*lRlJl^a>$v`uu$ z@8Tv(sxcagQsG-y6;L(o3gk&sqZlUkT*{8{^I<~G#|t^c1m6`-iW#I|Uou1lSM&nH zG=edc#IGCUp`X#pz#e6K9Chu&wN;DQ;L1~I!L|Mu+ksW~##et`L38R`PxfTa0LEbE z3-WcZ?0kxtsk)m;EHS&D*tA=l)jlS_f^4OIPB`Ej6Qd^yoEdBI%rEpj1i+IF`ds20 z3x3Eqx@anu8;H0sqbBKlds3sq6A4-?8hL`Sa1azaf!(^rd}x%)W2mc-3F$906Z%T$ z1&fo_(Nw?$6$a2i|Jr{3U0-25PSh&0H3;$RAvpV#I9B;Z_O59VYA(H4jG%2*50B)| zG~H%Lvm$IvS%a4BcZzo`--$Uz-_`Pkm%qXCty>Er>=^!7A@?^t*Gb1~*?vArnu1Mc z-xD5_gS)~3q>xgDfIsPl72a$0aCl3dst^=#DCVn%BBA3=gN`mboOId~5i9++GGF*B z;P4Af%Y`G+qhpE6@^gP*kAulfz4ks=6#@f%S(&z0QOUi?azbe+0!9+VIkpuX^5{L|q0P3w`4g#G$(ED`1rsc>e2C zRh7M^nA*W{)baW8?P()tnB4#FGU)4NW zPNV#J9roywdo>wEgpwY01IjQP)GA$>9P|r+8_4=%xGbcjq(N_%dA;?>;@EK9-`F|+ zdFi9Ad$-$veFJxqKhfH;TPU#1*8zHh=GHpbbC%(#S^J4dM_%PblwZdD7jSXIkXJR4J1&3yk zr5_P^nM3QP31i@f^kFD$ebL>agyVBvvXEP;<@)^QSWHDDwVwuR}J zI7D1qEzkj)k+3us42yQvec;h&+awKi>fM}j%OE9jXEy$=cSF-YY?#KEcQIzp7C3?& z-KX}+!)3duD64nRIz(mdq0tm(rW#*?dwqXV7w+!RBrphK&+aIZrXEV>f@Gtj+i;{c zqnLiY39Fb>>Ou?DT^b33pje8sxT{B?C`+7M$RHO-`B%F?Y?Gl?kwG^_2Y1bNQlhXg3-i6;?hr46m3y-e=YxWw`fbinOBsv- zjA|D{USm(Cz3yLVyz>ect*&&*Ks#ZZLJeNxsTe-5II7m`gmE0ny2A@NwCmK|2tmJS z1uFt{P;Qnos=+WmWdl|si&8IAHR{9Xkz=@B1_#uj2|(Ii-^sIeKCrAu(Ma_QGZL*> znSK1Qq%C@lv$*xQTNHP$f;HYOI;}FQf;3RrGecgY1u(J8^AbYje{maDJw-*Vban?} zDdM}=pMP{c!%3(@0|MTumvC(1om7CYJT>Ma*5$bMub6C zUQ_m@Wo&li(jHg?Yr|hNnws=DQ4(SmF4i;JA40yTpaQSPO9_6Eu5-)lO5j%S4O@>s zP8N5E&rbGj?G%)PKpeF78YWet@1SqEEnz<4qK?_|6~mh$0p>Z2skUYl`D7D+;4H-S zzVPepM2^LEa;!7j4ocEl=~CgEylX?p#vjTKu37_yKbj;D2NQ=7ct<{uDID0Tr5xtz zyc<3X*6G@&#!S4RJ|7K~s_pVU%AM>SB)w8Yqm43KSzfQnqv;o7Dr(Sr*OA)TPL5n4 zM$+KLG6!gQiZL94zS%1?Fu#KMBwOw8+lE$cOa?t)I2UL`$vun_3Z^g%CtsXDN$a2x zUQ3+#~JNYnTP^hVmfb;X!shC0ct{EB;yQA=eL7=M`=!abxpLh-^VWeMfT%&PbAxPU7d zPAkO!0xBs%DVLMJ=B=fnm{-2=Dx6M^KY8GOW#4D5zdOz`*#{EqmR_@!AW)%#%bA)J zRY$4KgT)+H#5vI9?MQY2N4r}R*Z2Fp9dY8Ss)PG{tEW-N`~`aQ#?~kJk4Lhm5#ROe zF=;n&i18tNP?JkoyFt852PW|~liLpwAG{nuT+qFL`X$tDI!h@#dg)*H=saJz0W#D0 z%CU3JJ%%X6Ker~8x5SK!M85c5<}^MN3W^Ztucz`f9GMEjLVQZO>d8V^-XuHHCyyH3 z`f_U{St&g=WauIK+`Ce|O=QU0N2lU8yk`hK)i~p`Z+oz7sy&;X&pbynBC!>-$9p{% zb3ZiR_k}C+G(Ov$plZ9@6Gp~&(Vr(XJ||tiH)sCfv!e?7Yk>c{H_zSh5HiCY@%A7eYJ@;1(PlJd>oGX8MBcyG z<2^K5(8|co+)wL4wvSNb&X;k)W!IfX3AKgKvTMy6CW(v5Dcz2%Oodt|dh>nol6VO7 zKmbkxF$%#*PU=zYvam4~C^~_{vvQ+9orz9&kMuN9#MeCE>JM?UUkv)oEvMT>QYD3}O3Lb`$N>7|Kk*Lk86uY@cuyg0-Gm z^}k=+AgBKV7w3g!b+89buyt)%c1Vdpr7}VEav?6Ak_H`xo$$qdYo~ zs@`bz!Bh9>MdY$%6N8Z?4}AQTK|a17W96szbcq$}Q`!3B68Rp0f%?!f4GL=kqwEN< zye2D;5)Up36D`XDXKgub%|f-T7Ddtx{mUPu5?cvZV8kI=0CGbS|`MUpWWe19FR?zw>tdj>@v(Gm*jP+Jtk){?W)z%=Z4GU84(B4!U0V= zCIht#Jv;oQUI8{4?5e&ax#fo(&eGRa>u1y07sYj78pz3n@{>0;;+k_h!Q~1L0dQg# zE0+}*(-{tJpl95tK(P$sh(vCX%%CaE873ge9U>&>v|9bnwz9nq=thQ~ak##lNlcZ?X|GS1J#fJhip!&BnpXO@nLE z%wL*owfrE|-RE7pf5fnP0>`B($=8ek1k>for(S7x`OX)WD^-p+zPaHaou5)1Uk4Oe zTx3+YOssPHy`AD7CVIX+{bGwSB^#N=k<#VD$UIQ+X^W@1wB78KrDcYY_S`?GG&NJ3 zbNK{WwBKqnk^Ho`ir)=EA2rCy7gP9RtQR^X!cKF!yQY#JsARV;|5`>euJ1^GY4wF! zWKmI&=CxWkM?83bdGYA2MF&r126X-el|nJcZhvjGv%|TGUz#}Pc%$Gi&AsDdOk8Z& zsX<@M%dvy+^z*qcem76CZcBY%bBK^vmHBh!7;6+uF&5X5%YY@ ztbe!&a-mj>1M2J>&}wO>v)QWAls^^j3;_08&C$w|HvM7{L_5_-;+tMXNPFvBhEFbLMETNE zzMnoZ{KtjwDCi9bWOtlbqgX2qZPd$~z^__}OwO<5A5czC_!XZ4T_s9<;aFB_Q}jaD z-Q=XJU7V+NrClH(B_GpHLJ)mvw|xia>Dsex7@HWRJKHCo^4Me^!kG=<=*BL(I1Cs( zn`)*y3ff0%>?YiHa>Y6W4rwoH>9$$pYjH6H;*AAm(%Ld-Fs&3rxmb?(7^`vg-M+Th zuWk46F`gbVK|;kKxo5vyC;<73l$+LIOdDyeC%y|G5_f3Yd2UffPgN-ieDVQb*+x7I z0=-|Pyo^4J6UwpiPI>I&sY`o98L|6g+N+MwLPf7y&F&ogWJZ(9kyz9Tg(|aMJZc4q z+?94@6OXFeQN2ToG9@8)G4T9n>RTtV{Y-oV7a;HCHRi#F&`KABR{M*7$il3c_BK3; z|C-tZo#p%HI_0I;`jkMn#YqWJshi{}RI4)qL2rnb4440gz$vBB<0ip_j#B|azjVni z?t16uJlOSkKpogRX7RWJRrF2%{bEg6xiU0`Fco2waHV<&%bnAj>$&40iYXEo7NT z)~KA{dX*h0Yq4}^z{19$n|=}WV`PBJ=Bt(KIJXu?T-vrS$)2a^R<<-Yw-O*Uc$n=S zdbb@q5cC{S|qLjv{;RZ`A=Q3p+oi<8sr03zx zmSs+}$9gGhffw)+1p6}kh%yV2|`tri*_CkolGH71MaTl91C)^Edd zIV=^cbVY{y;T+eU7zajkOrAxnG&7SkgktsAxb!W7u>iJ%u85FDx~**Xm?(v6ymSnCM}3u{kb(r z=2sw&m-s+~g0HW$j62 zn2U|Ru$o=R#+m`m6$gQDO{8<3(6>HRK`y(?v|yv;jMpnGldaC5f7R$#{75e5>oU^L zoLL{s_M{T6+wKI{)MWEP_l&+BzY`bL;b=DcHJ^j2P)FjDvG!9g={sSCjSWQ;^wu%> zhZwS(@}pTTKL7M0)JEW%%Mwoz9fyX&m;;9bXQYj`lR-59M+MgHWt9d*ucsjC?MFwL zo?y!f`BhQl*+`YVbTt(vCIZWU-%$f}mTltEh| zXVuQ1Auf~$HvMi6kI!(tcqzTodFofpH>U<&cXfRC@YLwDXKmbHaVMIoH8LN^#9Ulb zY@-Ir7NjXs7_9C!;3rvB@@_;N(@doe!)_#KSHoR6%vd%GR^k^bMS_uh5?~{^Kv=?f zgrYXz&e-*895#&aMr5KmTLYZ9bXw1;{TDOW#TPazZwk>m#XQv$2o^-gXRsm|L_4+1 zumz=qtt*?_zq<6UcH*%z5Te4Rwyi<1?4mbVzF9aMx>;5oMZhM8VW^KYH z2Ot#SRYR4a9>K7C1$Xsfj?UQ-lpiYmbzti*wh|HMbQ%#+-k7<%^aGE+n4acjQWrBL6 zs#u9#^YQN10xjV%N<|;eWtavpJ4eS(+G?58kHXRETtxH%s5+0xQCZ0>x#aEODLexi z-IL{ynt#z&j%u-;DF$YEhA*!gs2xxUH;t#^DG+aFv5**arfDs+!AjKG+!(SvcnTbh ztF@p`-C$*RTD$l`9Kg`XMZ3*ntJggU1V#|x-hHNVKF2RD|uxWps zD^5z|WSGH=4#B$V32SHEjg)b0WogSmx3INQCB}tdAqn;nf;ATeVc&2`)CJv!sA2b-M?GW`W|SCbTm1aao=36SBJjw-vLmBrY- z9K~BSO|+k!ZPn^4syUf0W>8E?A5K%$~$$h=!QlmN!RqX^?a)cndTwxn3^)*ZT$`b zhsRVi3&DVFK((MYHB0BM!H75!C+MrtWqTs^4e*?k8XJ&S>u)TRkK40x$LKy=T_>r0ta9>_BUNF}T$8gpVL=y6|hWGA`r2pnJ*x?yWijbwTll?Lb&lvKxv(Wep!;8Kx{*- zr3(qE%cwMH*+n)y<=dn~w|J3t2NnRRWU-^2wHev#gw)7q;So0O!Of7TTs3Edqg)!Z z=(jr5tyw4Qd`zb0CBpmq`g|5kw6pL2^@WCHY+v#_t*A(RQ_X_=7N=d0*o)>N*mj5Gd( zEF}}2c?eJrUG*q@117hKce&YhDq3OjMPpwoFU17y^E%Za9>>2MAqy9GA01?_i9DKX z%O7LxzSf@?2~$|0J*wp5@K4*=Q9hVgaP7e}uYN8j&gPlD3ZC+|IiCvK%APwje!ZVy{EJwLV-tC7g^{aCIy4rr#MqIl@~PZ41SUTtB-!7CxpNj-t)LeT_etfbUa8k^dM&^}*30GzI8)nJ!OJSzy z#m6z?7d_hnGjNw|fH6+!6mkNBaE*p+fymp)0-fY#ZwQc`*E3-_y;ol>=>sA-5bu2h zO!x)WM?L79T^~IC+?dd?TeClbb`0LeV8gtv@_IE9WLH-!uq<}aMV3Wv_0nz z@JOP>3yH`_Qaf%A{s&&z?N&_1#|S@j^UTM$ZEX8mp#c`Q_#@*39}JZDKLm#auY9b0 zhf7uF!@Lja)B;b;(c9ceg1-^VBAONw%A9FQ@(TuaI;TY*CJ_ zzoa3L<$kH|P8S|Rl>Xfd_f}q+MDzQtZ9RSiq0VWJbf6Xj!|%sw@RT(sgvQ_ zF@ulSH2+*~4n(Ll+$h=kGmMWhx{Sh$0X&)guV+9e|GcwW=53vS{*9~_WOoWe8sarb zfqyj27?`N!s~*#;6;WQE4XtT2ldX7NoEJ>D%MosVHo{vu z5jF^6U4gD$GlDG#(94`trHY+(5daAabY^30S4f2WfEv+Uh{0yfWO0?XLEOno@&atk zS{Ngg@MVEowIC;L3jn;LB50exo|FrZ@6T;Rj1($Y>k>CP`w`{Z`+AoQ5-7bUwVD(K;SQBGlFqW z-K?|c2Sn!(z3*>OpdB3kkcn|9f0j|TrM^UyhTc|7GinN1@{@Wn0d&T%5PQ9a?N z5O~kzP{)wnZK_i6YYv8G#B`puj@KE7+*3GD?*{93*AFv$p1%I_*ATtL9Oo~OBhy=c zYTO#9MSNff*FhxTwF%_s-d();cxwJ^-+_u1#+pL_$9fjbXABJyN6RIjY2C7AFcKrG zgu$2Z%(UWtDAVlv4SE82P-GU!-cwseMjrYAXF*8D*L`S^+lx<wohI%qJBmc|4;!0V0%vP7c~jb9{hOf)U>xwp6{7CDOsX;gvJ(Ppy{{bNSz|r!H1L z6Asq3`xT;QO9ko;_3XjZ+vtSj90y(m{v znxRw(x2n#NWdv;=XN;EyyAmVXtD5F=4PiOVyR*DTj67A?;Ylfd+1WDKb=D(dFAz6h zAs-TO30>2yoZgYrNtOjTY7ibbXqR)%xNy! zwXFizD1*!2pQkr@oBNpC1>2ke+9K>tu7-Hv)hM{#rc+{vQ91KuGxf2!4rhFAdBUH+ z<}z97Y@J_U>DgUwgbACvq&}1uUdY}j!{t|fU*I>qH#KRx{FN7ELVK68)m;Y1e&jm~NYPn{#Fq@W< zsTcKv%TQ8}qHVqB){GWcon^J7a)WF|eD2p#f-nr0Yl!t7T8K74-m-guJR^*2!KWR5 ztL%U2r-gso@{_IZ_tgufco2~o6KLT;Bs&5*d}5HTon~tGv4jD>at8b}7h#;w3xWigvT-XrZs*IiosU;f4b;Cw!rUzn59j!;TU0XXB&GafbM% z{eBx^uh4C$lw1ZA(|I%}SfG`sF5(N9zzBhFXy`pvN!pqJITbwMq{hqjYCc5a>&nL1 zZ|BPfd(i8hRc7OE?|fHQ)qWyo@kYEfHfoI!A-HRszpso5c@JTJ37-C&8X_L<&_k%t zyCOmodj4wso6jEVl4mYhkKcXmIB{I z#4mqTQuKO3{+`^lwEQr1nP%6c+gp0IjKyU!j`8VQhP{YaeUYPkQwmLaQH;5XC45zc zw40pv-P*mGgCHEGES-$z$-naOHP+e?VK30QZf8r0JYt=?mR*y*3?-b*!&We4hR*6B zAu~?t1mm|`UpY+LgoH=Ar8)^)nJK7>rR?!BETD^Ah_X2imx^%Lmk&*@mLz7t zHd({vY%YOH+NN;xH*M1c#Pjl#f%6w_ykq)>)LNCzNAFraJ{Q}d8B$=wBzG_Q*p*lhyU%TYAx%49M0E;oPZx4B+@)Oa;+Dj8G1-c2P7`}YHL@1l=f;d zQP`*2s8;r5w9DQ_SxIx77EDk*FaLjt)PpNJhKmkj^ywyQW)w-JdwL{yBc*y3?j&W^ zjOWa^I!uDHCbz1gHyaY?QtM7+i2`dUzA8+Pd}9hAcF$A{eR`xKC}He|ix$6xLNT=` zsgXaCu+0nRd$VXrnJ%ZtI)k!kVF>n!zxZMUVMfVX`+uzEqDUW7993wzbO*VwzCT*T zUO`JZ->BJI#!Q*izN}&)_Q4J-_R0NYEBtZt&{2Nv+#L7{$RT3$2RB%t& z+}d(ydT;BiHnFTx*5gY3ff~(TS@i@CgW-JMUlub-M5Qzhopjqk(i3SMcM?}En-}6bWbpvSM56 zOKdk{r>K*XdEj&AyErqy7#`^`83*gf*?(j7hmBm0DmAoqQO|{ST*U}S##Q5ct zCt01ZpVy7%uMOJv@rkNX;|Wjw0)!PE3E@udiMu$xOz|cfmfg8Wd3UYvQm6K@xOmX^ zghW=^?_{XoJ41t3EclC++eO{svLKS95^-aQhGxC+si}!@7VihgyhoZE64%byg}3}Q zTsf(CbRaexylKwv`thCfDJ~9UzAWHQ8agKZItiLE6NqThKOhbvPZBB(Vz4p9%G+Bv zVyLBp;VM>c@CqpB8l|yi8Emm)??(lf-Z3z;QiS7UnltF?12py9Abrywup!tAcDn;q zGm))iAK!`@N$u3agpMQd3Sy9W-OJ~jmCNTZPxo#n*|n!TfcU!C@3K*?1vI{ul1!Pi zKKb)3hNyY$_e$`lv*v|pv;G)U2>dRuy&MC?&GXuU%`Z7tQYG%I0BU-U!(pi04EiN( zj1|W2W=7+C8Wa+a<}R{~5A8ttWNEhFuIK^;7t31xnloPQUelF--^$i}v^dc-P6h_N zA=CKrg%WN6Au+jjv*F%hf0MgVO7%tDYM-V3sUNG5k5p=E_A9*UyG`_H&;sPt#-PGQ zF{9oRP9wJ3T>qJ256&SF9lff@DE??f7x6>6c5}?NF>jgxf)RFG)xp2w%YjdWo%Z=Z z!$+9;^+TNXx33kSenkq5_T?K^PrjJ(uU&41i;D=jf6;{ms1Me6?*N(TI^tEqE!QbC z-s_Bo;f0pTTt4QKIb-JQT7hoE=Q0dd=9Lm#`nlwx*0J)AX%l z+oU37o))xku9-M{F~+)S;}x_A$8UVT)Mq~#SfeImkTag%VzC;jZ2#6R@Hh?44^snX z-kxgVDY(|>*->g06Lw$9_eU|!u88qP4Wk^Fq_|9*hF_U>)Ofxky}QV8gRaVXGVj!$aZJgy+EW4da6MCd$;jf+~p%i^sgwC}V2r$)8C zTvl{JGI8By2BW^uL+F~sr`f{7ZLML(O6KbZcN90@Vv3FALs#S!RJ%mAom7BZ+4T%a zS~j4O*Y%fx@Xn9VG%klM{jSaD_@d8UWLdngz(fq+QSlaWv54c zjG4)RNQ`jAp-npHAl=4K^AWP!X z>Z3QUbIb+gg5-liGxjaEVH-%CaI3gQ!rT&qvARIABi#qPYokM69DrQf>~28-~|E~3+++QiN(HYCu@2t99 zKTsCoTk+tp;WZSZ@5j%-$2bHu?G#VVc4gyHph<9)67fws#{<#PW2e5npzF0lWiN7L z5?TT&ez`KiJ!qtSoX%`$m!k~Z+V=;S(OZz2&WaTxsix-17CBf&FKClki5wq2$8KWFE8i`=H^>n|hnpD5_i8~c!KY6*f zB^Qouvw?%T&Q|dvh`nKUF!G|XBIA?%4ZF5MA<-g+zj$f~^|9bNuMlr@!X0OaM-wEF zq~UuJVILkT5nSAvV=_zbn%si3+uppAmDUvVAok$32 zj8Ezs(tZDJ*i(M z)sa}WsB~LB&a11=z4o82R$Mp@d3oBUM+h;%jJ3=}vVxH5TpGK2x-U%@zdjrVH6TzR zjG_m}e*ec{m>KvNJ?pY7+~G~^lO6jU1cogRWrE|Wy<^5ZJJI3#yFSv+Sj(ZZ+GQS) zB{$F6l0`3VDYcmJ0{wC`#@w+>#e8$&F-$CMed%j0<(Lc=Y7OY-@K`nlZ7$&WfK}nZ z8%yo)dX#rhIZ|F;AUlUYA_uwEK?!|&6;>Ujpi&pC%n4QLrvG^rU;HCq5Ie^kVRVkf z8x@+0m3(|nNbHZMcd)t9bHcc>#=k0ntHD$ziV$L)PjUT-pG~vtui|J;%Rr=6AG8 z^YMtgq;jyXJJNhO0*$>z({D&~XZidLdIikG1J{EpIpo~xU)#V;`+)l(R z%yTE+rG}$z*7-vBMIwX$&uik-T<*P$vELmF0HZblo{P<^4;6Kv%(VRc!+>q*)jEN2 z2120(8>Xor^;oe6y9n{xgLJ?Z9%|HAk~?vqV298o&(~_(H9tO{^6oBY`02Ev{OFzs z+0&mAuZ=Y5wleF-p5c)PXMHqG#q7njY(hJq*z+_-`07Tvfl1@nYW?I8@L}s83RtH1 zzOU(-3W{-l60Bp4*zHH$wD#qD7pk@+_!uZvCJmE@(?y=QVNKypG{^Wb6>P@@VX5+h_M#Wc2C`guVd0Xkp z44U_2<5fA&S(lIn85z)us>4f@llIo8<4c*HEb5-#v&|%GppA!C_#$-@FBDJ3raO&< zL)YBP7^LoP>J~$P@waifb~bnB-v+siM0Wr^K06vWA4uGZ-16=ced8c_5NEiD`plfm zJ;Cj#Szp#?$<_b)Fj>`$5-?nk4o1jRBjZN)spdw)=miDBT|p)|B)get&~_Vj z!pc+*G~ixgKv+ievMb;Hc@nr2j?|{Ng4DN3l^ZS==YuNSY3g}K8w}k^r}l92)%l-G zE^uSys}=Cs%^NyJv`$sGa6sVcm6TO&XbPNfT&Pg`&jQ&U(Ei|qmbG9`FuRG`s1Z5o$MY8L{^A+a?$f27ikMu zkW_@!Nh^H7+Yn8epYO@poJ}L0Ru%Q)pfmmyO9F(&)GS2t8^}OmnM^xmNZ{vRpc%Q0 z)sbcMzFuMT&CAk)5nWaN@Q}Yxr)H#a9fB-5DeIN3>dT_M0@ExLWFZijsDOfZ~3&z1;_p+yOQaWoH8;N{vI`AlK#0Nn|hjKu_R<3n_y2421MFbCebs9@iD zX=G-#;&bm@${YE0sg06$`u*RVt$SaOyJ|f&mrveWe*UExF4{=Fn6^N~xvi^->tKY$ zkrtTsrV#Ru8D}ju<%MKOgJ!3>_d(MfcLCU0M+3xI+*Z9S7u=w4sKI5zM|iZjYR-dy ztbUNs&ehHDb~iWU(0kU`H4V$wo*Hv<7q>;T0iMWQeD&bqneqaeN{pjM?5Y8i#D76W ziG6(b&McwKpRaI^d~4$+PyKd)@ez;CdzfY&3ofB|dEoawmxtw?M#13zjLdqai{{Y=xSQwZ9T!qHXq~f|;2&0Sjr4uEKH! zB_5eeZ-3-yo!ftA@XwG8Q=esVL{+Z@N5DbkO)@X{iUM<^l`dTnaCj@!sV&9deYGE+ zX?El5Dc8-~taPoe;`7cNA8ZG~eF5XcRYMuS^H$*xVv^SSvoxAF%Ew-DRmJnRzYFnYPNyAaKf~OeAyo=FAM%s`H36`b=B;i0fiI0dpf|NV2 zwMgj8i$BbqN!R{dj>dtCPc%UCE@)&&>4TvFhHp~2w|Htr&mU-LDX;~oJzI^fMDEhJ z9q%|{c8e3rypyfYzAzz`6{`IE9!LDdta@}yAn^T~yC@wFm$ecA_e6WKAxAH%T-=U} zWnjs~HJuh99(NOP&B!_>m?J`i2ms@e%ywgG}YfEcC*)H`CvWU@z~U04l32M%}K+BYJ|Jah^X@w_()PiM#^gMvJgt*&36 zz0wADeaiPXwr?tyAjm;LM;|i@dhAaala-y(WJE=TMY2eEqosFe)FksAgCJX1N#goT zb;C^T+3((n0lEIl@3i&R*9p}Y-v{<#Vg0X94g%(tPj8X4dj~+vPAH3y-2qg%b*1;u zr-3S`3lF`nQz-di*PCy4^6QZVSvPBd;hDWnD^IC><(shZ39fuaNSTDo zsxCyoJ{TKM;8R+%EH4!cLhOl$LAcsv^NfoF3h#AUkx!xc1elv1t;8mI$PE<1H48cL z1^O_$7pEr=k6n1XJc-tzisHnSO;)ZUH5WeBt9^J#*J677g<$!DH@vwKj|_gg=FBLg z-Vpr_v5BaX<>`~cF*(TjU7R|cO=seFo@&`c!U+f1!G^3W9jx@C@+(0oTfIW5-L8f2 z;1jdoI4>1x!24L84(+bU4Bg|;ZjxH0fDA*Fg>@kC-j;uP`M&nDCh4S_apLfG?a@uL zpKuc;r$pq39!iCQZwXJh{dSu3%|#s ze*aDY;FGf}=BUj?JPVKAenGp0M5INGiGU6u`{m`MYCi?LIh$P7ACzo&QOm2pt+eaBWh-ttN4XL0!k6=R37RL;KK!M%%V#PQ5+?R&zD23= z!DaBQ@3Ir(SMWM;v_&R!&>IeVQBB18lYOmrDWPB96{Qv{?knQmT8I5UU|JY< zB}h97`r?Z)K1CUXOjFSlnVb*Q^TO8X0V308Z4njyR~CTKh@7rt0-95Sr;yH^ci52s4mxgUU=|)BL;_X5wrJhDmRGJG$qE18{sQmkgYQ zWqV5K`jrhuG?(_$rrea1*apK!Yr490~|Gmip zE%n6*-1h)_M~I^}jtmmdC*ME3v7*D8<5G^U#w-}qI+-+3wZpkj0U)7n;Hk@okOg@$ z^7lFnPCu6x8SH(1*}>Spjq!JO?sYz~KeG|ToqUgM3|_YMov-<+il!w)SN-~hzMUou z=Ve|~uUX7Xi%iJYqBD!=YZ(@=$Vrsg{l$-fId*hNzI5%t{>i3JZy|;EpGc_Hgq$ zPvgi_F&Uvplh{k$bTJe$ClMBK=EmkUpdy*-&Ju?3>}UPsv-o19Y#i>9-xslz+#qo} zNizWnnIr+B=-TI^^Uyxj(EzH^!1G`x5k&=CJ(xtznj5WGPuwTa*KP-}DK}=os0|_e z4bE13lF-{*RT)kX1taCrN&Kviz_Z5Bjy&=AgXw$;PAB^00iBeQ#@m^n zovd_Gtc8KVR?RwA9$SRkZ#nK{t>0EKcs(^=M;J-6=^~rc-!qRw4YPi0v4*2)pL&S9 z4lFF4E2J9i?+94o74~r2jgp&4d=PA+SrNUUt!*m{-Jmd53l>Ak+(hIyqKp7*CS-cD zNvZ4sB--2`zYLEEHWY5h?_aB5<>T`t=mORyrHtzcAj}7B+$cl8>UuB zeu2FgT4*OLMu$xdPc@tUgMr`|i?DW|egAY*0W%CRietHS^C92`rWQ?C`KPxyrFDyu zsdbsE_#`c)Yr&*BLeJo1buy(THzn#5Bx~o#R3S zkcZ|A#iqnMw5;)!Edcz=No3`wiepufc11P~rwjHTH(uq2euPS-8+5zuhZDeg^amGdYQovoC|u|H6PXlq%;=ZUauOkNA^$$T3SSpYgC#!be*e1k1*pQXzw;kRXZNvtV z+)8@XE(5iUQd2@&+FePb z^c`l#a_F!NTRf?g0OMs^b`sHLhU zVJ(@E(aa&sEt7{~mI}xBnC8+cv^|*2r>Lq@AVa16H!wUG{7fBUr=jY?68GA?^l{ZY zAnHbFRV_ffu`ASh#a^rJ?+zvdtSZV!!qe-CC1A(U!;^#_oJb5TNT=`hKfw`3jv9WH zpUVvEzi8Ll;Fhm&T}N$0Al~V$OH8%FKiVV$?s9hpNQDzi4}srCO$jQ+OK~@u7wxnu ztDd-D0gpc3fm3%OmYs#R`frMA955CQ@UjixUm7)%t6HUcW(H$mp^J4|?Rdc>MtVj| zGV}RDC0_`pJl->oa6jG}z6` z*^Bn$Hf4AdalHFtdE&6OexqHhfl@J9r2MFR+0cpAerS8Ub}g$m5DU!aU)7zh`L&DL zJU~hmV`^tpCMkd`y=@16!rVRoDJeHW{PIlpVj(_0p0!6`!CD>i|L?OljW3@e+?>nL zjN6SzhOhd119s}KsU$RU^|SeURY=O_$&8<;C!a>_FQTi*ng?N0E{Gq*e67Z6XHAl7eYOr3BPFxuA;?W#K9y02$K z+IP)obh5(j*)Vrq%Z`~p?AZ6#pI~HNUtO?zO3Nq05s&Yl_jgbLp8mxQhbP4)8{;z@ z5U3aTWs0P3h*V!Y{g)Wdn*BmK@wb?SYW<%A{lA8oD+4WknL#;QIvIcL+`&tP#HsB( z#!5c0rX<_wb{+kft^R@REfc}w*LB^%!ipLhCj$%jpE$$_08u5KzmJSDUUfdKB{rwYv2>e8uiv* z;V<_6a@diLF%E+4Q+v;Z!cK%gnBc|Ax3+QT@?JI)sxaGBvXn=c8QQf#VE7q&^7Vc# zq8zwESw?kkDcgsLY&cl>G`nLQ%8k^_27~B-+IR8-UWIKIMmRTg+^j#3(GzWlAKg{D zcPYs>S|$}{4VC(UIZ5V`TBQ~8zJ}Pad3uXZkIr-R4stWbP>+b;Zi`6LGNDi3xV5s3 z|3^KxLsm5-T5~U97kn{M^~oQ?M<@vF9gKf5=I15BF;p;NhrRe)sD&&|5rqsq&m`{j z{?K6^8d~kz;#YqOdB%FdtP)xUZ3jrwM!NTagzbM`>AK{m{XcJ83RNiTC|}wL&FtyiKmrsE{--=v&~BTZ^S#a++!!?_h$H485W1 zVhSd~3Bf^LQs2T13OI7IQ~}8zf>g-lxiBm_J1ox$lLI8Dn>cITC#VR?f>Lk?3pulP zG6G1F>lZn?(&=ZbRZ%#}wbYpivvSPUO=F;VMC>Vgq~#=e0;o5R5dlw*%@_K6j6bJx;R zBtj1(zEcT=ZUUeh)wG-IV_#QZ{UreCpmMFmiL-eXosxV&vfj~8A>>^i?JrxJR8cB> zx{9G%v3bySVXnh>^d+!->;`+dI*zO(qIwYp_bwH4avy(FME1=yqFsg!zM_b`hN zt9(GVT5K7!2|=92CLCz2|IKRz5Q`JjTF0}CF++*ELsPPKa?<^AelLTyR6PVOU!-m) z@AJv^ueG<@u#|m-a2=<#Xy?zRPzAo3c?m7$d+%8+;s;x*;uGx_dGac$_|q3e>N}4=dCfjGG{2!swB{Md!-$_m!?&_0WhckIkh#vy!y*j z$NbwST^lR#zwg&>$CelSxVAh=qB+aM;w}Kv5pd9K7)rY36$WSoJR_eIo#BVAJa^i=Z$Ps9FMtFy>5B zz-ZIb!R4`sp_k&eywWGLHpWebsce@*(tP(iDo#+Wcjkc&@RBoqu_P3qeFH{xZ{^O* z0ar-h4=_YrnsP&p+%wJn@x|b8se{KZ*JO1}R49g8TYsRn;u*LLQ*{z%07zz?4CK#gyf^1a`GAGs7Zc6v_&j<<&RJerFd@MRjG+4e%jMPC`c zvQ`g7HX~>`!oo#FPqEeZ^H1**tCoZR(qQ8n2i|NSR0)Mz-pQAqFHSo!;%xAVQY04OI+}I>M z%XWhomep{{j*Cy|fqxrczr<<#&%X=hL##t#7|`u*A4H$EC=gU3<;{3^67ALsb{6c~ zpdIVIVM!B6*K|6cG7HUbEqVpoxG*i`pG!qf?bTosOinYFXBSSr@7nGd<>9l3-LrFv zoE-?6Xt_{SQ{v$)vXLhXDCi@FxzkAViRQ3U3o<1sCNo8R(tS<563Cl?RbL^n6c{n%Au=flohybYv)~8O@EQa{;n|=2Ov9L zYkG}JI$j#Ldq=SV?Em=F@B!O_eXM(9I>ci6_;Y={E_V9jWsexGn|SN6H?^4Jsai9L z{q(c>D!BopKHxkii(5;mm!U+#&f=f2!-NS?n_y?f%kgz13x(L#A;mi*L~I4uYds}#-3q-j;xK1wI zG$;z%WA_AxxxUH$KI^QoW5wM~-1qo;y!1URx(eMTev}}E(?odY>u0xqQeP~y_H+7D zx$QjVRbPSU7R;JtjO`n zr3qp-oW60!sh}5T^eGkon5y;l?`M8lDp~2b=6nX7egRyQ;`kHo^D=ZXJ=}9liTFuE z0U)Ji!*G*D^s0#fm=xXF$|G1!6~ja1FHTE$zS(6V4zCChHMtW)Y0hW$QyIiI?qEts zr92+@)J$knu);hG$ZbYEo|c{>y6xP{S6#l8p_@c6?|U5JB$E*CD%*`+%V$Q0b5gy7 z5|;Vr-zi^U5mEI&VP7r#+U%8(XC?NFp|{xbQ_Nf0XsFyG&PD%;D3Z}M$>mG=BGpI^EpXDz;MO)A8CnY_3) ztyv>n7J}o_GUpNjSCAhO*Qf^`*!v{Q=?$0W(ex0H#_F-g!m~2aXfJ)aT@3?%m=zSA z4xhE`tW|M3iDHtr#szk2l#w#pSWbV3Qip9lUfx#TarWPBSya8{E>Gn}VW_QiNrCCL zB#lXAn`!5BvQ@xR1e4VTkwsp>6K)iG$K$v>rJtD+HOp^}I!yC!z_V)NnZeG*lZ=q6 zSl}75i7}s51V}PJnk_;Er~2w4$udYS!jJH z4!-d1a>sZ5zR_b#Of=O8_yXrD<(f4Czx}MfD%u=+)MfXFr&iez?n{2fE_bt%$IcQK z!=H2iH$14=s_J*-=SSu0b9v7R<#a;vl*AYOR@r~YA0Fm}lm}%IPsC=0%9_BbXOcUE zkAok{rQ27QeQP|P%=KHoo|1uYG4etv-;nmyT(}w|Lu}yxCsNm~68Pn7n0Z3A%-UG{ zS6#;U;HmYSQej5wdT)P)U6=|$Mtbpea^JmRii^ip6Zr6_cH2i*l!dD5GR#=50L7vvTuTOE0q z!;6sg)jHuP8>UN(MNtvBi`H9VLHwkccBSIR+uCR=h(vV`Ny@Ewrwip^a?m!VmGPJk zVx)NHczta*v-Cc=LO^`1t`-+>2DiV|GTGv}OrG=vPC{6m3#0*mJoie0&@MNA`$Z7W ze8EhsM>I-Z!##(tRj(~6Pqmt6Y3S~So3^IHsmqI!HiuiMF3R%KGHEVE9=)d?`eYT+ zxYTT9IfCiMw*}Q_vZ5r2yq2%&_mreE_@<5STlC0qo2+iqSbjvf^n9gJ2qS8ZZ!*%I zH88Fr+KGRbPP-M4)K{5MGQih2Cr>kzT%!|0)D{=+gN!gQ9&w9`#vLUXT zmoSwcE$opX1U-TH`xeZ**6q$>+&!LKc*0v3JEkd>x>k8oot1)U8wT%}e}c`{xd2%} zroS~Fu3inuQ8rwFJSnuoL|p8Ya&MH+mXCkz3K8Koy7*e`6jmVG1>1d*YcLhDo@Em1(k0ny&2iVSP8(Dglj?yAgkF)Iis4B2JOl+G&&0D}kD= z!yhr!ew7D&HZ)}f6z5pWE09aJys5KIe>;E_vE>H{^FwmKl=ZnbG-kEQRIo(`QCIf0 zsljBp-xlg!#V}?bG{>h~yJwtf-Rzl^2W;tsygM23uDQ~pEyXF!uh{WonV||V5!e;@ zC~>rFJK+@y{MKgFc`ZnBMoTr-gfQ=#tJT~_jF@<$k`HnxEmE<03*T|=Hb%B4+}w|5 z6X{>&Ku8qR`TzJj(`?CAo>@=mE-&LgYbs~{^SEzG#1jI$z8|}qoumyyZAgd?>W592 zz4*S^*UI4Vl)n7l5@;O)Dwm$lYRT`9pd6=?KvI^rejFGQnkhV`mqB4*j(iP$`lYbO!r zz@eWeM#DaMVjA%ji00IWxetyxwR%eSE%Q5w@2UxA05#Ky)!d#|d>3mp$Qa(utPb8fL6wN?7V7Bf=pw8;3Rzxk7isGUR{j+(TZ}3`tLzagg!?rBqK2=1vvI1I znHM^K7fZ!yy=H(7)KES^o92T&5{2H=bav*D@S6tL$z)~eN)Q32Rma?7sNOo=fk!%| zGtzSnWiF4lQR=I=ufq7uVt;E34v4CUVgAK&7@8a!!t;vSD_#4IPg2TuVVmK}N<_?A zxoN&`)2?S?XhgnX_w+no(3PIP`NiCk1ab3MBJ3?P>h)Pn?8vi^%?p?Gt(sONo)`@K zss|8B^^@N(J--WnkJ;nT4U2LoE>!Ap9_SP+ojnyjwrh@|a{XKnqD@Ic864=+xz9jVry?D3QYVSZ?S!3KqfeY0owU-J56Weoz8V(tft!XrBfWPe#0O@B z?5Z=vbuvyMUgDz;v=_rgKs!j>qU1sYft&5358(9+kE(y`An4X8cg~tqdKqZN5@W+1 z>A*FM@P*L5KXlO?P@KG^*MsxVVV45mvNE`d-v^UH=oM@af?M>d{fBgv%B+5vPplEGyShwc}Owr+KuPC8Tobxb>i zSJI?Lm;+pgnIbLcW)-$|u*rd=U7Yp-`1WomIe{EeYMypK-@EiIuU1s2b}vPwGDvPB z8?ggjj4UjgE4e=NnKUpPAw_j~5}+znZ=v?8rLwCz_}QD->-k@_hZ7V6h-#?#Wiue8 zIg9j|oK(i=MY{E!5-m0x*ZZ*$QC(lK!`r1eu(zshYki|JZs)lw_&5%eFe}# z0HOa3x2c>8hzF||e}pVNJoi-}lpt!j2P7M+TJLA@!g1O)AhS0TVxW{0kJpE_X5kD! zeAm-nt#E?#E?#*9%)fkK;O=6Oj)9z-p77das=o#9M;U^@wxA4W;{mPw@vnMaJZj_f ziJr-BNzseL!!GGA zeRXiKoV&2hKX$1bE39DmFqUY|*=cw1fE`L@kZ7*WyZO9*oSI@s7r9dpBaI5qjz<%@ z>w{kaR*xn;;sqOokq=$Q;_!7hTPx7*6R+WY@YHFZ!z*}&PV8qRc|YriK>==1=OzZ| zKgm-2-?M`AH;HcY)QYf|Qr~f~bx6%p^mhntIJCGUGn0{+eqCJ9Xw6VfyR_?V?>m72Q8&W26gXiXlm|Um=XSrA-h(KTTpKa4f?{+hXV(W$r;oZvGhXcte#~l* zyc0;Y8D^A(n#!`sAo{vklnkWDHzHcZ)M%Rn%LbH7Q)8Ue^TTf+`=2eV+KQk-cM)vh zU2%ED1h@&Gd--=(;i6XM3j0!}_YE_YXlf40AgEBz{puG(%w{+A5|HhX1zAPXAleDh z#_P--U!m1~=35X}@CBiYRKO?a##44uNDm2cio%3S{E;G;-ooX(dVqOzv+fRKaz z?f}3qr~a@D;1jT~K*=rFd&270x9Y6IfUcr_WuH9paxcY^2=a%s{Q4Ne^X%j zdzE!+-zE5`R*>BEw_<&^-&^63MW*WWtlvL9|~Qn*d#^j|xe$&N1vA&c7M4M1Si1|>WFM(4?88|e5~WVs9~fmkJ@ znn7p9ZUl#iNRz31-PWwPUV(Vg`j)(ZVP1D%}svSso@`H81xg zFt)mMbi&|nwh$gNilRAz)o=!_1~b80$NCZCX=11B``3sLC^6adE6seds0}uR@qlkp zqOYI{H@x=+9AOJQR~p#0&42bb?=cYa=-tbz?!OGhP13`5c!r#IX9ZvsuR$B%z%OdU zC7ctvk#(Z3+{U0E}2ewxb*QGz9SyZIJVfa*4wU{#79h_DhNbH=;`9pIzk*8xtY) z+fnMS&QO-H6hUG>4r#s0E`tHU59Ewhov#!{hIT%EGTOt_HbVX#1Hy>0TVF`mU#3XD z+Wwwo5JX)q(@#&zDnzRg#Av60$5%iP8I`QtSjDY!41WV8Q<`|`H)P`}q`Au@4k|Bl z;#4)^520|zi+h55j3aC^UOtxuoo!^PNK42D^Rgow&P>Lys7S!z5=iy7wLvEd>fj5N zMWH!noTeOTbsn=;h0=)0;YE zHisB^L9yjOsy6!c#2>@dn?~ zbB%WF&?4q421_Gd^IqUd^M3w#oLc42IC^Z9b$Idy;k|Y+uamS2c{F_p%{sDUvmL8d zOCIdosy*wD>dcJ3iaN`2zMSRFaYSTh8sYygs=ExMQAA@ev1?bk zJC4wj)xyGr8{b5nQlX4n<+InfWhUG7RTLR4V?c_NwTVWEDTiA+r9m&f?c(Y4u7;3r zqQMZsz!!SQPr&GLXLE%w#k67ji$SP*Ly9`6kQ;-;EL&3TWUp%qdd*5(KG*ey-syp* z^M44^1^%>^$0YZMz6%zLC*tiGl))DPXyC`Ddv(?Zc9>Ob(iMJ$AE)Z7QEpYfvf~Rf)bY=Pt4aV z(3Z9GCep;$GjL2lF+VpLf@jV?TdCd4szV(JS0{~DvES1s3i z=*h=4DKwS^epyr8gHvoL4PB{jU^`9CR~!p9Hu2Q&e{rCaRr6kE#bI#skUk#9gkM5Z z_oYOuPbEz;e7i6-f+rYBzVwyPg>%z$aL~D?u}f*Y z|MBqMOjI@4%$p&=Kdj?C1igN+s5iZ^gkL83VaTAl=RgG)YS!^zGqR`r>R0L+abMNz z6%vh0R~s+B zm9KQRULFiS_$~IOqw9ciktRB%pn(ek!ISR@nDi1t``Z`;NE;`y2NfMoS?hp67VJI*C*G=-Jx)j%)+n@iQ&nTEBx*_6t z^^X|p2aHIr318PoDSJB&ayRY1adj1R2)y{3BT!7`i)Mhwd zVV_?yprzIO_i0p8ZwLWSzWQ5#9_#orcd_bV#V`qN`bb`Dy?xVR*!&>;-aJ#$G;o+< zAD0LEDvDo6CDLe^^gkYXaWwu)H*VJpB)Hm%#SUCi?<^C1`altiuX zeG?aws53=thFL4rQ>h~8kyYKDO-s=e>Qjf7Q>P;|Zs$}SW~;Hm#|Jpj4h<0uau(&) zyr1mn(#zC_iqC4Zn-}$^+O+uIgm-45rNF~4Z%QDk3|n&3ncVc+*kjoH=1xp+I+wLt zUCIn@3CTDW2h4AU;;EbHw+A^zN zlSPswCnYV2tvbq+Wkvp(J4u5awg@X;IsZZfq(+I2s@uJJQU^=C^$(v<<(8oa9qByHS8FGgarZDMx$5tw zq%m_~+99XNWKv-Txpw|PaFggTCs1D{?r62_zqx8B$Irh)TO_qK0z2Se={4<2x&|S% zfxU#A7ONu0G^*J*B&%j{3G?KN3&eKTUR4du>{$)1O$dH>Fx581bht##5Wcf%TSX;; z`A7%cF8Z-+Up2lru%`ayPx{8JOG>3qsUQ5^M1xou>40jk;!`1j$ym>y|MVP|gY6>B zc%6O(BEFEdO%UnJ5H(=r3vX_nrnX`DDpTtx6jCZ=CH?9HGVDA2=k9;LSh~%FUk5LI zTKBXDtz1$PD+I{M$3eso4f%4g28nf#Bmv97iH5;@0W53!-b}`uld@e z^1Db2gdLVs#R9d24%F}3oaV^V*^XWLg;@b702vmICV;a0${M)?eR=@9Hd^LUd!&kv zR{~{NX89~3>zPo&ifMAfguOtJPXFC8ul&{FF(f(m;(^TuV>byMz`VMuNQJvz*ma(( z-yQ69t$+S|UQ#RvjBMoY-~`FMKu45&$jtAdq2?}!vI(Wu6rWrs-v`o95r=Gli3{wU zV*(sIUM_0mNpODF(;a-%1e$7C<7*GJT}AbJIQBCQ%!d)HsMc^BPXIwFjpQ;?3^J1{z&2<#u=nV{Qc`tOf(YuohY!Ny7@hs6>R?F}rz6 z6;+Gn2(GD74G>=Qz0)1j+{=`hR&VseYWz0r4LSptB5O=E;DSQL$1^*y+sz5PHuy%B z1&=Z_cc#?ChlD4nFYOCs=%`)gWL>>8I)DPh>I||N3rYJdOo-QJvHl^-y?AC7C*@&r z;EO>{h#l}2ouQVk&TE4x`cbmvso#3Q*x~OD&&I)+T&9Nevh(sz(&5Itp6en1Tr&N$*7W6W*EYsU^5d|a`dpBL+^pL#g4pDqC8Sgyx!2EURa9D~GM}R= zpOK<7H=2V!Z4qF1B@hdsHGeHtR2rj6@X9b9%+9iR~HyA2sqaslpr z7K7j>qu1Y84C-ei_cJfwa`%PyJv~m>&2N58gUqfV1 z(L^s=W3O!6<`L;GZU6eb@LF2LTZ?-c4(#ZU;nx=dcDA%@C;+m`BK^aV%J^ee-kTo* zsx-ffHc;VLT+%u5TfEPK6yd9%4*z$&8SKER5Ay^BQE`!;T})m{iZR^9N5ay-n5bT3 z`7z{l-Pk1+IxD4DahX^zNV7<6h}6M5URxWURNxB#Qn($4&q_7^MPWLkwu;7SZAFi| z+@ameYfXKgr>4)9P_Id2TzBR(q*BEjVXBO%`Tm+tx$2$2&VKKr?N*-r#g3Y0IxC&n7yM(ucf-mM zSV9YnjV z`jr=LfIFAwl}z^h`S04kUJZ)AL&rJ{W$e;j`F3`TJyEuf}^Zmo$tqBeDgo?5VFXXYIJ$F+lUg(>Va!Vsv^ZAXegv z=JU}g{iW!TEEt?qAXF*+KSV9%NjQ-ax53{Z;=%-qD(yU>`m&0&=OLv!on6y$^RQJ6 z^|$1lOa_xsrn$$1&ZtzEeP5)iR_&#gT#c{Yh=W4cnOcn^n*zDgHp`tdDJ?7dLcp}1*Z0Ly(DrpY+r2h6d&Pr6uE*GpbPk8`KVIq18 z5>k-%f}#l>5IQ8M6TnsuP1S=&a1FwcV%m9OI!d1Z&{F*#hb4-luzD5k#^Wx(&SCfZ zzhF=5I0mlh$v(d{F)zyc>lqt6=U-H^vQ-7Ez9KnoniMAJZX@soWfl7rav4ofNg0BpPBD&tT6}jL<}w zmcfz#ByN&tojw{|m-$?Y`0J=_9K|AGzGtCK1sdXw6zA%k-!bF)vyROy0(7qE2ms4}+K7M6RvV~l* zy|H!@R(WxcR*CKM8-S%8&6wO=gm) zMw$uLxGDu#wzw(s`F6R4y_dqtF3rAyF9mn@CT}IuY9Tuf z7nJ(wl?~`NJkJdfsFi-qNZhLTMj9;(r4d58SiNe9s9?jXmRdFg?np1}PG^8Y-Ng`- zWVlU0k{3Msm~2{Y^=yJ+W4~voxYH+DYwtJBY*1#5^%j>?bWA5maL(a>tOFCAgNE3F zi4s2cmQLC-+)MS1K{>T<2TrijQb#ZNf#RobhpuvGP*48Rku+>@D_6pD91)~8kIY40eS+s^F!jaR28DYwyE60?XI=UG*}jT6KyU!GU+ zifggf1~iIw-R3|>9M= z9&+$H_r3ueH8{`8dECBE~^@*8OWrJiYrIu{1q*_`coQ10c(J#D0j( z&~-3m{O(zbJvatWtntpz?#u<#8=^q{5aG0`nns)FVmaT@bdXCxLxD@&_U5-b&rg%w z`$Lpphj$;s3XVBL>=DTCUiQD-kly;c#|z0SBI#g@2~iV$lUd|J58rnww^!#xsVVm2`~7bHgdiFL_4ry><*d%e4wG~ymo|@m1ADF zrB>GZJyg3?d+%d+{!Ko z4u6~0g~OtL40y*aPetctYb}nOTj6D-v>jtbVpKpWKd>*Srp!8#(r&co8Sv)Stin6M?cjSq+rJ z?fxlL!<(LW8_nW=E1xPhuM|<#H+VTFuFpW8re?(8hw=Fw#o~qci>AV;)wkM8U;J5Rbzr`oA@>(^_Gc)*ktqS= zC}S$NrO+6irX9-k{Yp3`Old3c4#LLfp)H>B?nV=iVIlpCy((x1ARD9%t|9dx*vhUG z;la3Q@Z7;###`$I5keU2U_Rm#Sj(Y4J|&=*VkwO|wFvFx3s9E5d;V6XgUo+zdQE$L z`Q5Q97?r)!l8gusI-}YfpF=3PjAd$mVMb7mLBq{G;IF>)HY^K%;7`Om7zO^uXF=iE zx`$nM`lZ?zT)GVY3Gp_Ck-%9!MH9ShI0FaMZeil#6+|;2>RgY?fb_ySQ;ODU&a40d zQC997L&qC;oQyH`+{JImO=*t7gFSi;coXhFl6tPk4y zkoygUslQ={a;Jl0TR6@)#|#0J6;y1jaaV1ZeHUB6FaZ<=pS;uwjRv$NUp{NT^_zfoHU-0XSZ4!^;?ksV2$*cHBhg zr8?Sa6}B>&(D9qtDHHzq;iQ2KHU$mAw0%&^MFUNX-e!@^r=x|behU}7>7}wWr=5L; zUybSe;;pHU1MVGq-;)}E=LZ*k!#>qtT&HBiH zUq+o3s%2SA6B*xH4j1}vRX*4EP#|2A!)&O;utd_qF(v#JW!JDO3r)z_;Z2FN?tYG$ zo76T%$(mQFK87z)%2XzmCrd?zCZjD;a`CvlR)hF*;i>>h63Kmn6&XWf+j% zK?TA#Z@fe)q~<}V%s+=`dtd*2PIzC$IuCAV{lQDH%k{XIN3BE1)6)8lX!PjqsY7G% zp^bcGg=>)8*reDW(ipOY@=7X4*_Ar96-i$hAIa%x*a;S}wc& zBI{B9PIb8>0o75A?)EAu_M)~t1AREgtemg#dJjp8O zR2qoE4!t1!)Q~vgDfLB^f|V0v!BUDSE7?+o)U#z9-utY0!c~_XZGagG1qZ!wa0f~C zWKM(t-tVEk4|MK?|HN?}d5T5I)vS=#CNhp)VeGmLfDXIpi$(|S8J>|RbyeA}>)P-g z3Dv8Gx;iuc*1u)Pg^a`l4k=UO$eQkAdOXvq-3+!JIx+qCGDCR2@XKid~sDacn6bUp4^g!@0b_SqXY*?Mr?w!EIJu& z#s?4mcwx$5n-t@4wt^?{(Qkp4Ft72C1T#v_n|o(eNIrNRK}8Oo6_yX^`{o#M1RdmN6OU212>(Q1^_xfe4W>cO;|&u;~?= z?`ozXYR$Tnq5Q6&fZF);uzTmavZ}n(O?mueZ5RnYNE{z=%uZI#{W59zh5OynG|$`I zhH<|=H(UslUsR#Iq_~N!chwT)IY`;z5~qrg%}=$5|BrHtK{8eD_<0h}HITBK@%G&X z0!w||VzT|ue+d>+yFe3Bslw8-tEY5dNgQ_V;qwG0SHg5fUuDnmJ6#qG1j};{+vVwH zJBq8HMqR<@i<4Q@;0{<8`t32dqF-wBfS55EjUm$TtwQD0Q5lf8>f%08y&~o;#rM`6 zm$ukg*iB+Sb6bE7?kM8>ZH?=1ke5!inpyRle6rc?VDn^$tz-ES=k^Aagc}WR9K6|N zQo&olqhCHLBfmj&;xsBIM9K^2zCp)Qt~UHi$}RIV;x=$X7omxIzT<8w5r;52*%-MQ zV$98~nluYy7-Pd5q^oso{sNQz{R$izu3Bl?((5naYVnynn|5_;EE(%-<_$>ThDH8zOa=DZc&=eHdBEB z)7`P0=b!(6IG$Mfm3_d0C!g*XR{cbBFc5b2hjJZKNe{x3@FFD1fB_#8d~8|A?yhd0 zlg>!+CI4dk&?Y&r3!kC+tV-2S8(~#Ca!3lynynPA(`hK@){eV&)7y>xcb%HCld)x= z)uK%ZT=dvhVe4TEd_rHp=_~6L6tEg#wwtF#1mGNyBt>s}M8O~ObCpSCK|io6uBzi4 zaaq6kbcZDetFzck+NBuSpH*)LEIp^!#BvVSzO23!oSAr=mQjq0}{f)ZOFT7Yn;TXn%M{q3?Cq6Gi}W?KZen zuNYQ{{mmXV#jxnV26mh!H~=0Wdkf_U_c;J-S=GdeUOVGjID&UgH zfpl&6IH?n?d+CC}p`b>%+|L$Z4#j8>c-wk312ao3#qmJM~D}ChqZ$y@KEkc1p)j>&XOmoEn=a7e$?waw53o`UJ1!c7* ztT!Moj_D76n~g@pT~?4S(e5lx?&H9Fd1+gB5+3iV(6@eq6VpA2`Dr)$WuKT0TRDU` zBlNI?KTkwlU4xZXn-$SqvefT?VWaaCclibyV00Z$3u@o1ERH~Yd=2l0I5$GstU7o6 zEdj0ZNk0V_iXNDJChhJmyuFXFyC;1Dskfgl;DusQyo)?Ng7b1g-OvxR=DwlhfM~-j zJ+ouLJM{oUX#_E+63noAmUv8+WkOY7egmP{&8zj)m$dmF7JW?Qd_wq{*!5=YL+_Y( z<1j|tck?fMUF$k(EWDi#Zx1SBcwQ-XApRU{p@WgIY2}W|bAXj?9i>u_d4&#z%7GZ^ za#2aH<>40{rI4l0-THkm4>g|D$35VCga2v=4sV}aLc9v6#vDIf{Ot)|(gKf0Q~1`; z^h@ta_w8g3Le}Fevll$LMnqPJgP*E*20vp*ci0?ILXQU{E{Cf(fM@us{ZDPpMJ|pF z4ZTI)VXc%;U;uZ$8C-V!xzrq-(7{Hsj@k_4Y5nJsw>+~~PyasipBQIt-XmJ&#K5n1 z{GF?ErF&5EwqR0da`CRuUe~K%XM{?$7jr~#4BothsCylk$kJe&yRNDf0ZR&>Irjyr z775NOJf(gdkM)cV?%?a8*fr-(YWCvC z6!oq8?|pm&G0?jN4Knl%;{UHRLwT|bsg_U#g*NT|>`o4Ls5|3YModzspMi=l(}50! z4K(p0r8G-2RBzScV5F^N5c_!jNpzi8GVVAQ5O?%WjOeSkm?Loy|3g_pCgm$=pe=5u#NS zUV4x*>$=lnPl=DRcknaM$WzLrn@toQI1rooh@AZn-ZJPED;@u1rOPyuRr*)yMEumM1r2+Qi>jSV`*%j<88Rl zP8a!IUyy=flQ-zn=U~Sh(~0qtnC}>j;gHSdlxG!y>NEW%da_n;Peb(PexMZ9plkqb z9k&35l&h0x%f4zoB~`M`9-J2EI;S!AY?L%Wiw9y7H|K#otN4pa4KGv@ARd)m>#O6x z)bR}rS}uhZ-G9{$>^Mk;R(kIV8G)7mJwx=nLVYULIz4B#2muU94f`Ld+6qMOgqLGB z$kBgrA?k}fT(CdEL%%T>@pzeUlt}W{)eE_B1AWO~-NQp_u<4b%9B;egjrg^y2yCIp zj0YpN4=XF}iZve}lMjp{;r#j0LbiHNBJ_o3BPGF>_MjXLmVwAKe(Jyi{kV)w zs8O~)$k}^$l5gV&KF3D*1VL){U)vmW7P(JAZAt@0}g2giO!Q zMPS+nkYBhfZu*^Gm9*{4S%tzfPBTOUOIw^@E^q9t=262wG!=_J%Ba~fdC-&B$B2%A z7`(jr|KQ$-1L3ls18R<(?s6rJ-2BE<+ZJ4#SJKT3V-7z6nqKTz=agrxaOV1*=4c{@ z@$Kz5Kcc=dQ~iGTKeWqZg0X=w{gc(&1f@eAe`lxUq^FM z5QA`*H0*{)lMPP|{;_+#F$ty&X=+faPjY9fL(}yigR{--Of2JM2F1$P4FzOI5{Es* z1ZKgU%DXN!Ue-|w{NHh;^Vk~y8myVN1V;O1p{aH}4+??)AO}0|cXN1DbTuB1MKm7%$4DB*VeXSRD?YKGe5GY_KF5}Mt#@72t>m1{%g+_OG4q6-sa@&^rw zW;wr%7SSRn`GU3D-z!w-&DDmZC*PM)InU%OlUWfVL?y6(JxJ^Rk^gN&>j_6v`UO(O zGdz!-D8!l$G#EviFj@EuBxp$FO{JSzLL2I2K#Q2bL zNe(AxlAivjy*g$ySGUp~t;!X~v1&OKuxm$4R}uqmScaTN(`vk&Jq_=6P^ZHlinLb(C`Zn_MNElnCeXCk=_;VSxPZj1$7Hv%;DzWLo z4q-cIdIkkhgK10&1Vz`ps#E{fPWo_Pv(c^FEpEgBKjN*wt!bWRv`_h3C)vV!e(AJi zj-6Ql3zDzbHSXA%Vb_S-4};pQSdWRg0vUH9>!A2=-s02LdUqLjXlpNjp_k9sr(q95 z+N;CJ;ua}Hqnt0!><$yN*gVNfFr2BN$qhGDN*ON1dEDyWGKeUL1n3YLx>Es&eY#Qq zN~-wcxhj(zdQ)>sraIDXPaiU@VBfBLp;>UqxK!4tKDT@utWF zN=|Lxt7!?}@n;LX&xs0xTVH+rs$oO;`lVF3XkWNPPUB*rE9&)Vqgnu1U2KuYJ*=`O5oy#ua1U;ps6v zcd9;QSxfR`egz=Q>D(1j#VP%dyd<{}xW5XXvy*xo`dn2Lak8N2D?*OPJ&f7ps@7N7 zRMmWE5>Ov&*$r(y2%4B=^=|$P>@R)m$T7F8-}AMVhq_^3h$ICi8CV_Knda^+qS4B) zn-QMzyp{GQYy} z9Uo(ph50Z>$xU}Tct40{(CgEID#tx~22kv9kOwxSZJ=l&1Vn)D_h9pj z^R`_;;wIvd5T2TmDQ62RO`4T3gxqC;_oc+Ud4rt+phJ>ud0JK<(lZ8jmY)L`{rMkn zfzH+B)__p7QXELAQ}?Mi>2@(h=!2PO9H7+njGSN}Y09|oo_CbJ3Czy(dbzTz2AxDS z!2`qP#=AJF+^J=_9?}u1bUOf0He8j2Huqht6&@}|BEk&UGK<`Vl<7nHxb0zK1X=fe z369bYE5gT-1o(*`*;LKf+P*=d-(5ymavokmXwFUb2J`0ZN(r{VP2SfpHG0Sl=P9?K zd^N!#?m>Xn>v;)ac6%1*+uIoI0;*OZLi6+OiTdM`vHsqtItN4&#h~VwA;RjNupjqs0<<(y&Drm)zPrbH{6Ba89@;Tr zG!L|vySNT>M(>nc8na3BBM!h(+C;hpD$s=UJ z)5@fLAlY!^4+h=Jdv|20-yAkOIc%)a6N++Aa>pW}_T)B!N)zlsH!U2g+4b~8SrRr3 zSY+?7Op+3C+~Tb5&wr0*df?t{C{l6SIrC`ddmkq1Gw_3Vya;7XNN)%yM5cmf4xxfE zp~rNt^$QY(JWT!Yng_V9@w*#$@z6xwT(jo_z+bFV>s-hrl@bBe`&DIHCHGH5<>dYqA%tAxqie+;nYC{~-Swa+FoO7Y@zYJh%&Q)7F8!S!!5FG~NDA#J+ z$1_|%jn2A=c@yzKGnQxS4v@4B4?F9a;3v+i1r7DhuKwQiqRzBZ?Vvr(D6D4ev(Tu` z!G>=+3>o~1Y^8Rz@!o!1z_z^3g{VdI&+BBIzd?b^JI*zSMkMRM$-eird=r&6{A~h< za!FH03CeG-WnTG&VD5tzUW>D>kQOtk`*54yNG+7nqz(6FY>3nO$z|e0>Ys`2;;ti) z+>pDwz8HBk41LbDm*xoFbWtP$83*!@$^1&o8?9QZNZmo$qr-$jWIYJ zR{)2$Vee$6(yJfbpEk_3X3II*s_aj6)OB-(c6X4$R6dcl@eMZS*XTMkn6da@8 zzlc>$Bm>iuzN%$j20U#Haoxe}PW`IXOyN198JWT%!cpr?e#@g6D*UR5>Vo9xTD-50a_m3O!Dl@-cJ=vFb*-tom5BT>fLt@u;#OZEJZ-!k$$w zaQ37(HcG`%3HCMh4Q_+#74QF;%|1?8YEl*-^)h2Vz5sPYT&i-aK#&fsCJ+6^*gfC6 z2k!h8zZoDOpc)ZDFQkwlEwaLr$M3`L0~Joj z9QFCFJZeLl;%#CiT-hd*D&wo=Ntvg zdl}?n{m=ZnfV}iLGxv|jAX@QTnzJrjfUh)B_nSAjkYQsWvkkbw+njcXOIhvWDf82)bOS+ zAZHo(%i6)fbR~OueLqbItY8RBm`SWVoh-}}SNTaB^e*>=4?o-(aRGsg5@N|vYQo-> zZc5ZAHuNlCjfWV2E;8h>);%r%|-ci@@BNo$K zh;1?3xp9ofkhD&gdfe#6Nlgq=C4@@UI+JJqs^smbugErapB5BUvFlGv;=%)DO-w6a zV_9E@qKR0piyLJcFQ9sLgMqsQ$|BXXo^u1@CWhMoGSmv8&-vXVNH&d62OLz3$r}_3 zX^;2e9aqA;alQ2J5Fp0ubNy)EJd)Q<;j7$aJ~>I7Uqxp_9% zzr51YT==gMrT|3U3 z*}qo;*lRe&6m?#gHZV8%=g}hkVgTUhC;H;}A>Ru&nJHHiias}R;`ycYvIvEYT6j4_ zg4)-ZaIYR2-c6iv@mcnlCI|S_6kHNfYT$RQk|?r+Cr}tLtN*ga?slU&-2;B6R|wO5W7CgLe#bp;>3&qzk>{$zR@7uIhc9igbN_eU64m# zCTEIbm*kskGY4MfVVa_^qdEx7ciep6MX*RJz^5dUxp&gcn|7I#Z+dY6Qb4W0_oNV` zp}`0onie8+5M+IX`d5v&%V|kYyZTj?8zjWA0MtO0JX|kOT9V;Tjk|552(U8aU;&$( zG9?sYVXSo5H$5H_Zet29?|?k{1~=Ah`aK!EbST$FE*o6IHt%I#5zZv9IM22yBZC7! zUO$;!u-0dyPT>6J3Ye$7w7Bj&qi*?SI7%0v9ph@1Yq=vcl zd$)<=LNko`Q0E&D0q|gR{&G?>*!}K>4HF!)Cxf>jDrbkY!x7j_i)Gb0?@%NW)$94Q z=b6AZ@TsPs4FZXbcAySz%c1Qqiph5e<$p;N=;^*_sdQob^g)m@@|J9Sxlawh09bpt z4h-v$&M&pneU36|pbQBxU#zTV;Rf%B6M87x;6B655!9ilQyo@F?59D8COcgr*7P4R zM)$rGYbzE%#8-du^Vm~-tVOz8jIxQi!zEb#180xOf1MsR98514Rf9sh_p9(4H=r$^ z-BL81gs<~#KJ*s5yaFDPuotEPFS}nrWuk2N32f?o9)2Co@HA62A2N$Ulu z_51VR!DoXoBmv;wdx+e8SVRow6bRncf#TDmUVW}N2t|6`j=)_R#f^UP40?$*Nhc8# z4{nUEb{3R1LPL$q*hY#eq_DF?4R42{0qtl?Ndzw7Z*`@`+1qfCmtt8`rP`a^2_34r zC|4>v7QtG_`sY71$1XXUUqDoq zN09&{+fqCsx6tlq^ydX_gZP(3et(kt(&uZ^j61j~k87aVs@TNwtBQiZPsZe*!`TMt0C3Iho+Gut^fy;c=J9pPgDuu@K%Q`Nf2F z*6A@l-(v%m%dhc}sl@h$op?TG6zdD^G$?~%LbBE9uOTIa9nz2!9rm>;uA2YKR>d=# z*oY1=MAf3alzkp$j6Dv|rfIQ5?-tp)xO!C36)VEQ;DZ#^rJ1Ik}y<*GDG=g zbww=Kx%~dDd(cL^7|X&0MAirdQx(W|*6DA!e}{piX% z7bY{X3_?1W~}n~s(0ZlBxtyY2+^!Ifn;?aMs@n($HOXNs9X@g z)92#!it2R9OapT@SDC^JyeH-;=GPo|k;(We_Tz;x+~SVVgw+*_$C!hH)8BrC3=-_K z3hHxfNvkN09As6VB-VUiiYs;YRCL$k`~jklb&iMTs9-b)NOyh124F#(QaKN4VsTf8 z7#wT~oazTAS!48c3uB>|-jSszgzP)hcmP0X8zc^mC!|(68Q)%)1 zYFhFkeiPb${4GeI-XAYC(=20wo8H&E8SQWz_Ywkh*_h^8bQv=F6`%x~nZww!sMv>x zcU{QORlaq4G7p^CN;6QnmMA#YJ)W1lR#1%OmWWpPLC71{s7p;;n&gp>vh711&oM3q z6isNv#pk|O_SAgSJBP;)(L8-s6gJwGOxd9c?oL2nT8qQk-g?l`IbK+wp)Z6wfPd-3 zr8VB-uD>l|Dtgjb_JK@-{p7!c~~E3kpBS1rNajW%}7cdJv= z(8xcS{Ao$V#6KKzB5yzwM`!&{sr)L>7*HVketTWH7Q1{U^^Ake3kG7t?Y!GWgqMSEg(5LTIYV&ZL&)4;F1>43=7jJ&P#^+i?Y{osP_fEHi)ia)m1aczeU~) zG+IgR9PVtr_2jXBpYTpEzv^T06fRZCWblyh4&}Xzaa#FKgvwyT9UvXsqlDnO{x9~M$+(ImvJJnj&@?8?6;fd$+pk!#7sl{~U;B8J9oHbV zLXrWtSR@b?)X<1uc~z*ABKeg84SZ+U#fM?9gDMgQXET6iUT%lJy8&JTJ8y$-)=dO> zcWs$+gFQzQ3gks`uZjj-SV7T9GQ$p#;UV%0yMXqV>K#%cAtv~UUjcmYVLm`rXM10X z8h(|A>dEh7EzlC zN#`E^{2C0J57qS@NLPY5LgWQ`I;;>IsMtp3UeEav^_8mr{t@s-H9J{=j{d1?OtR#5 z`Hw`ZS{P6JC*C+6*)t!os!~aMioWvFpa~p?IFb2k-K9vz+OlPp@6~?TxH`!Us+`*6 zNcuqHTSmc#pp|hwAuvNP149#lv4Ye~y9hsJMmO&#pm@0fEx}{_fr%k=;>71gNv9T3bM2Vuxh%tkC zZv|-t0iu@=mHx1tn#EG8=?@SC+{4ndUt)p2V|Llzc*quh8GoB2ce9wO(|t?7b(=}h z)tEfocrbN{`#Pf|cT^&v!wD@fqPpf@ zwnJI&#s+4m@%X-yg}b)@ATT=zPFP6n#nUwvgM2L8$7yUQd@EDlYm*NFA`08P>C*$V zl_pRAS5FEZTC(_l*W3<3AXh)QXYB#DW55XF8>&7GXH~Dua5MHLy@^3^PI21#=Re;S z>hMiFzOk@s#kx$9Npjb}t=a{n1fiG+&30lZa&n|sG_Yakvj4qOO$BLrm0w6HMSGxDnh9*IC%&O^}u%=XoJ*;xdu+M2kvBH&%jWd7ql#8kQ zE}<#O0{wraGiop$G|SAsWVGD;L{>8hcS{3rB74q6uH5)#HzPU`p9&+u6v=JZpZ_jg zN`(?t83r}Ne1v6U`>F;eg%PvZ@k$5CV-YmOn8xY!I_QTNKZ9I))qrZwbFmNC#1g4i zP{C`T$p)D-CXTIik_ZX+&D)#34A7$Cou$2wY%uHg%+tfJ8@gjjPSS<9jDG1;jsi$F zu=i!S|JFl9ln6ygANV}9Ojc$ma9thV^k*F8zvA=oBF1|nfDC{Aqhzf+vpeZ+g^sx3 zASvHe=@)-K{)X1OK4 zAvNqAP8oY+W||=_PE3^!*b0%Yut_j;x3!yA9g+-qp#jk4Qf4O(2*ever-b3?{m(0? z!G~TZ{X?X=*tp)BEGL&X`3!@j%nF(F?6_fng z?Slz(=OBs(#Itcp60bn%Ns%69HkT&j_P223QD5I#z_YZAj298>0glSF^6IZ8Vh6|L zIONGQqWL+Biw6?y49#%i&)yXl8#M&!hN)1uz4x8=#|fEHq`$AsUF1sayp(Qz!^LDh z7>S5*#JpV>02$x6LqFO=ayuto*}r0=AefUJ?eHu+ z6`uyrXy+y7t_T`BZgYqp^9k8S(N!TZbmKHeHP=}m;JMYdo8qs{s3wS50}AObU2d5I z<;qb`l6PcO5s+978Q;h3gMM&Ut^yj18_Ey(lfgs$7rm36aFP^n0yU#CA#+{uf~Bst zA7Op5`L3Bi(yQzI)N=2+Pf-m{QLHg6@U1sLl6wjG?h>f@RS;3OhA?u|Chpjp0d2&8 zX$~d3l9~l(!>8E2$J0gkj=hjvCve>uVZ)N;*NHpjCR!-dktII#?<&!hhKRo(hJc() z*J4v~oe=k6*kC|%#GC$yUhIv?V@hmiAw$&!6%{wVs794_g>hD~R?ExYT%_IhFTIsa zdGPtGwH}Lp81uSaSKsM*c(nJ7sBVrJt?)5db{GSN%ME7>hls`BaS}F4%j`S!BM}Y4uipxK>~QcpIUKn2|i?esLtBLQQ2s6hr-}$<10>%a$!dK$_=7 zfX(W)LkHij9NOGC&_T#D3c`+CooI?uK3DXf!GZJ6m1i8R=5UN}*B3(T?~oeY5??6u zV${&syA|%Bf>S|#p@h3QBe*+k)TRBGocf$VGF~cld`#32m+;se!d^rK`!uO@nvi$9 z-_b&P9A8e$>$hFt3QB27m-U*5n)BF(RLLgdX4%Qky4q)xEOzK1f)SYGK_SBmH+ z#vv2YkKB?}O}T(I;zR7SRMZ#xj$&>c>Z%`KEUh;3sU9EtH8j@4pgCWX4#7|VYVg$G zOHaQdn`RR1#YMQwb7LNkfK2)t#0AGZ76EYIr=qcPE5tF|FcoO}_dobYcimlR@p76P z7*rjXm!-7w&lpw}W(^te4ajHa$(FW^o7Rs~hDMNMEpoZ>O}SI!S}GJ79tNcHy%u#! ziFySGV>iSR4Wl%8Ko1T>sVBhE<2$>xIpA?XJMbAGyW2q{e)!EV(>Wbg>_k-d(rvGLv-);;%BJevoHYS}dq~r44y|}%?CL=HCoBL+b$#E-zI`&p3ozt=M0_g{#2HtYifhA%`!JtDa{z z_6WK)eWwALi<@Gl?k<}q;?S2wK?QYP7av|zAAAQuU3{$QR|D%5T zWJGw$Y{=597mLKx#UQWd(*yJ-6_9N8`}3cBKg(#;1?Tj_NuJ&Qf$g$#auYRP4NN2a z)x*h8-I^}nX|}V~=+%|>d>m2w3wssueR`;g(a7<*yvMTS_}!BO6XT+_d1d9&d!Jz; zsgZ7X$x!l`rWd75)%;~pL^@b3VRcr9Itgy~yyjEnfr`fAdXkmOKg@qRS(m*1nLN^(>CpNFnh z4@DB&U`ZOG|E={9l3v({lPZOuHdQo9MnYLLO?e0as`;^lTX9l20{D`(Er#pp=dgzx zZMv->Tr+G}DN|0GjK)zO?oV5-Z-P!+*-Y(A7fV~u%L(--6CV!@W#|}|>o~@?=}n_j zMf0kAv2Gfuwk}l%RMKQT5`H4|y=0cq_hm*h=&x&>gKgrCaMhMv<;0eZtqcX)Dk%sm zsfmM2I(th-&qAn8(&9$=9=_fjtOSRqexBjDEM&SF+T$@fZW>AgZkwUzMwlKsw_gg)0I_x9FJP{(4R~hI_JkC@ect`28Z%4hWhcV_6P-!>o#zQ>5^bhR z(_&wD<3`*Vj_^t1`Bl%tFZ${}uTJ8%KZZQoiosZw9Ia5ajpLLs4Ctcl*L8H1+1psPV@F3sYTq1#efK9k0?qz3C1Rt(Ae+Okzs{+EpZUpio2ES%3jSG07` zrTy~)Er^xObN04q;h0`zF3av5TG<8YA(a>&$Vu!4Mky9)nrnwpsknIEl~Xi2K_{&< z{th7VeqwR-7T76GO1hOGTmwL??dplxP&*M;e8Tt}#_nf!` zCj=QdNNJ}YojuD3tF2HmDN<$iQcxO8Ft|6kZ4Cu~k1MGGmbT659~t2ju2Nope;N3GQqTXU zMQ!!Ycl%l8tRZUoCisY*5_Qk?X^HRZtamN1bpSG+UGY=-+a1nN-a7TzVS9pTxBivD z*?>Qm;;lz~^m%tp2xL&})aJd~H^j1eV4hl?$2?k%{Hv6EiG*DEWU9Z#=(GLOuIA|% z-9or7^~_au_ob2sS(7)Jr*C3Eej-hcnfBt8M~Hmz&sO&p zb<%^Z2o2DduBxHt<7WR>MGzqIWqt`x`)P)UD847os-4DN5mara;nW**p_e4k5K0ofbD(NB$- zo7ltEZ}GlIYauEh3=z%==mF#)rJL?D>l@X|kBRjX-HJ`8pQ@pyT}xK$Z7+pGYlj2K zz&CW3Iu<0i(zo;rIXoYvK?bo=4^TR}z#m;OllgwU`W822OPQr>rDup4|7n&sJQaYt zne%!uTHcFnNxx=FB9|N^N_uOl6@4T(`jV5!bgyYGQ@}}pyzv_Zz=`-wNJzD%S_*xI zETB6M8GDf`8MQG#6hN?Qgr&PETDem*%liIu4ES}c`bk`Sdz69WbSkSaCkE<`PO-l< z*=c~L!?C+O1r}e*7gdSE2s`X*B;)H_d+kEPz8Az}}*?FH^qQ8uwru-ncR92Oka+ zwRF}$TlreGf)5r}xJSBXdQGo{Sj7aHK#n0=VR|JpVLr!D6QeePBQ$1X(faEJFkFB} zF2mU6HyrkV@)2k`&7eE+O{Bqe>0NpCNY)4d1+xjN!gAH@gGu{mON)eU3;4BIK*<=C zd(@@i*vdTL?om}B1T0PN4SGnD zfOp`fbI8vR1WRRi^XKt3YC`~eXV4tKiq2wsg&f+uQlaNMxsc{2622z1$lYslbnC}R zQYjDA7$V2tyeOw>q>B2r%quyza?I-sJoHnr;sC5ytbM2ta<0`OcdCihpF@TRcwWw}^{&Xj+cPA{|Mnx&Q?Lr+ zelDgTGuG6yV#F%N?M!xX73wa-*YKm$aKh$AC%vYI*Y-jZ#YA<^v-I|wJ`aeej9^#O zZ%X$g{xQoudX#oguh)hwhv-yC8k5z;Tc=s;R|bNkNcxnedG`N#T8CKZeaQuyvw624 zZR|W~!z5q+PJNnn_`x>4h!NbFnSs?$SwG2AQuV%4{Pjc}kE?uX#<<)(pto%o1f)UN zIPVah&n!c4w-oBd81Sc^lAZm5ewhr5yjK0M-&tKp?U0bfQ_YS^n_75=>wv0e8zR3f z75`07IR;Dk${-xVv!1`VqdH;4H$n!6_gz#BXkhRacXNaWy7k@abK>&}_}I$;yN2*T zNo;oW5I=0>GMf9QR$XwCoZCno40+?wzVQ?!shUKzW>_k`o2yM@E`sT-&vEqhaw$_4 zkhp!7$TxpA*f4t)&#@dd%y0}{JABT3H&1V#j)`|0FqyrGi$RGtV@T#HS&n|vcG?1C{FT*gR3PZ;E1<^@-W=7W=TW&OCMw$gm{8llX54VxsZ)k^>5d-em zY}edG)lRo3^EsD;U48z=MQQFfanY5v!>?^m=*&Rw7v|B!^x(d2S>L{WTZnf;X-F~D zF%%vYCa9l-tEEoL2@?FE%)+-`{VKe*#{CUU8?a&{W3|nSC%c0YwHcMDOorom^09;Y z!*BnAq(D#K|LR_OsZUwbE>cvjaSuthgGbd(tQ?a`ji5%5*3i_n2RPChNMi~Ht`mB*n44m12~TQS1m5wxNG{PY*Wz4X zMDuNoZntXc01a` z(Dke&%WJypzs;|dsla1#=d}&qe%H9{0mJ?ldC+L=Rn zbVOIl8)F}-m0>8`=D2Dni#(`0>`ISxs)6*;{|2%x{Q_GqQb`@enrCiuny5bMCz?Lx z5n_Ve)gdX9x*Tsv>`fRWr3JKj5>M4MMi>z)jxOjpg#Y*$8!Q&V{;PpRx7W#5Ee|^2 z6Tk(-^(&dx40e;NGjDg8o@dBHhwhVd!40Ual}DLGSnzr%s)g*VJMTOl0VJH){@b@G-|?{(F#MVy_V?Eo5Knl-p*$jCT2enR<8z`@od^@X zuFJ)*7 zh4)L|VCdN@5+~4Hb5XEi=8L|NUp~ktok<7mfkrfKvvfs05|I_&;wk+c`s6WOT&+XD zPqh4Ia90k7%)Z-+OHHS3A0)ZNBF(XcXze4DKCW<9aQ-GtdijgSTF3~@j!#dUI%T%< ziB@_58WJo}RT3XzxBG*WpY}ih9Zr*fY+yoAWM>cXSeR5Sf+5@o7*ZU64;h-xiR-%7 zv`9f|g)GCZHJ+7S>x;ZX<&k)j+{s=bK=iJdYLg*D!#|?ZrH^}Y)h?!(rF|DwN>@&_ zfYubWyQ=ac=dxFa=PRF+9r!_?Pp0^S%uvTB(JYe(w91b^HG+vn3gnf(UA57VD4h&- zac{?Oo)AzUx1UvD?Ui8W?&I0#Z&Gj`C&XY&R-OR>w8>*(h*;8Oqc^cAFmLikoyXW`E5s zb9JLrJR`(maHlI&;rJ!%ra};JzC8$t4PeZ7(}LxKA|M+@V96xakhYvBikdyq@`nK>~tt@@Rei9N+_P~pj?!EuT!*zftmJ(vS<#8% zjOc-f7gOcd$r|_X+7YO=lf$jFRc>>^W({}Or+MXAYa=w}6n^;Y`t#o|iYp6U@e}HI zdTWDQbItCEz^q1BtV)EjoWNkXB@cr{F3Iw$ecY^ER*{TK4id2movx4&Cv>sAb(KbR zw2GYgJ^Jk_5-4Wo@A_Q!Ml~6+ZAC9tblKtj$=IINA6pl38c*bJdS}V|m6bhTPVQ|7 z%_Nq@ZsmEg-#qgupQ5D}$L|%GcP(hAM>5ji8g{oRfolg$Z^F*%e9-Ko0)~o)*i3}j zT)Z(H8Ru!9jSmnEMF4%v5J+Nak>l^@H+CC^x=EpnTvdCBd?4al(2ZPYqZgKP4bOcn z{samA@xKhFukyCiiZSNFpgL^gjtCLsVA4d)an3Oq(vt~)CL|C73`E_H`6xOP^Fc_x1xWIG)llm+T0ht zj6#xL4y@{|S|4@&>VxA=W;yM=mxihWbLc~Ehmx7yvjbW^_)x*mRex>1*N<;^lcwqq zt~%g05j6em22ml2@Tx9e=c=BU!%tg^F!^$Y^|Hi$2B6PgMgKXG8jZ`IffdSs#8to2 zo&%`&z;YZkjW z!;Ws-((4BOtpR&(8oL=tBFrH0NN5zGhq^;;S>FXatA;o0^w)H^LA2Rj8zPVLZ9Sw@ZODXz{4^7n zEIkAvC0;_7d|5>~wGr&Rd49_jt=Yx=OpO~)?zi)bDMq0Q>4wZd1f>!v5Bh-ofc{95 zL*+6rIoJG$f{fexGQ>WJhGX7;5<&vX54yc_H~>e7SgU1SOyBGE>szrS{=Cr=r49;N z4Al{TV1ebcR}Qh4Acu!!9@xcqgXtc|Y)s=OYSK_K(`o!G7V&7{j>Y!t`_GQ*KhWGv z*nKExK}e-zeTQ)c;at=TgW-$g?+voGayEXk`#NXpaF%U^=Bb6m^%(3c=HH%iE_QatHE;x+|NsBQToIO7eZ|xk{vkHKH^V%m*<0-0%%ko2flgv1`xTF zm_8)0fNz?0$rdEXbpU==q#?CQ(dlc&Z!n^FSX9fX-aRjQA37f5FvQ@}vXbB6SvmzG z3YR{*2ApKjM}0=|9kbow-{TqVbs?Mfr}gbQ3DOZ6FvcDIc;VeDB;2YMEms3@8oky` zR6Y>927jh{!I#2`tPhv3p*_O6ES*5vdnwV>6nI$WFt$0i@&VdBrY|t0nkW#`CblY| zdnz6x_qt!FWfq5SD3W)JY}<&P*a${NE{2EeVdcKx#ayQrY}H$K$j3$n;VS!grpB@N zWoN|A%o+ai#WB9@!j`WBGdBpgwrmI53^n&Kt>NUNXZs^T@@fc=-`i35O*}9g_Mx%I zHeiS$4pxf6;+CHQWY~$*%FJF}zzry`>9Tpfdz8vvzsdZ>@)*0O`bAsg?TzaA{JdpeKaK1@1vC+8dV7=3Tt?3e9;?&J)DVsk}u(_bAds! z(qFiJY_B^T!QFsjxwUMusg0kUnQ}t!hiFGWyP>+2_Te$Fa1DJ7F5@a*IP3_A(_vdB0XSXI_+I42m?3{Xm}T{^ndgl4r3vA$gDrde~8 zWLRg_ZlFjHnrkx(*au~<#%ir%nwg~A7;sm~43Ww&M>HG;4+g!<9A3XTDzK1kN$f<& zfFNs4ix7c52Gg3szgfDnMA5FthXf`o{d(`cy0NkC#UzNXZ8l@4-GS_(Odh{J$~PXB zOTAzE3m5FEn0&P+5mBDnoA!ED({4WGNz%!G!Q=+!LT%(>i!V+((Qo=LIX#Dfg&+?h z8v)~Rk5#>M{HPKk+aE03>gGd1?y8Y29)Jn3_uxbHY-4CDiFl>0ge`|S$NWynWNL9= ztX8u-R!JfSH?=htQ_K!{XtzhCY501Sey&^iaYjFz=%3}ka)A_|bVu;v8B#t3+|6pV z5!z_B2(ON|boA4mxwN-(kShO8CI80T? z`u8cYsC#Xj-(94WpDUA zwEAsL3iv$e`Cft?OIA!@g)AuBc<3R__+Yx8XgTZ&8XBBCreu9N7B-?+rwRj0=2GSQ zrhS_YWzxK=z5#k#x|J=L$xRPHp*gYk<#;FNWF5XCj>D)BoF;~Gd*;EEI*7Td=QY^V z+!9d3uPn#LV=@yPG@l2C*(llRa?Wp{z=EppE$%SHBgc!Wo;inD88DASOUz#Lj#a@5 zL4((&4W*4-6Z^axYFp_FGMgWR<=g+Z=a?zY`878Z%cOYf;$;wzON8#31`=iLYdjHE zk_ji)Qr~-!?b``n24T~q^SV|gVrNyIFH1lD(#E{&yI19@bl)a;&oHN@J2iPSb`}-% zk(;{FA@Dt?^iEIy|7ub!zRz0>pxHe49iyC4rEwS;Rx}#e?1{KK)h3TGS^FoBnHPvY z%TpM$kT@7V#a2gm&ozU+?h^(y{Rln}xBOS$EB;8Mlg#(Im#b*`zU-WJK!|2LzLSLWb{^RS_!E2X?Du#iIxUorG&RfL-p9XlA<`PwF6(q4Gmq2pw$^Ur^;dkF`v z9&gpUT%}gOvun>o&Qi6t)oLjhx8?T)&=iL2(4kkyJWKjB~M*lRh3JZXM5=7X2l*b@^JJqbwQxq z!6tR@wOIZAp!o#X*C#1hzi*lT1@VHFKH!+TFEHF#T zYJ^4>(%GU|ef9yQJwxCh@yU2sZ9ED!?lk>C*@UCS(F2{eb+ZHAI7KCmO-HI9ANN5o zUwI)432l69qQiW4?GLgi>?5TWo@7d`t{{O*MZTSR%cN!%YX>5`4bMP#6Z@ofM7Jm$ ziiw3l?0vq@*H`tF^&n{9H!Weg*kTah;Z{rpJCw#HYQ6g%io804pWO6t^kEwB-3|5= z^%SI%OwZ=uRaj)iHgM_R^!x!%sa|2Px&I7d7Q`+^(`5vycEnBLeyoe#DIft?4#=`p z;-LS|^);i<&R@ZU`EamUTr4L#0QT$4nm&H!NMpbq!k38u84^3Sk@a~eV_?2lbh9&G z8nKPVbq_m9lov0nb(J9y;99HL=$CCdfPruuhiWg>T%IkQiOOmX;3&IqEFj4|7m-2p zlcdB(e8xH9;mCY^)ukQmA`}E9_?gG4@O2?e8_DrB&84W*8ERr&eRwIj5+Mwawf6)4DTJE;nUXo@}`LBO5VEGy`W9 zn3aqcS&V+`$;zL*gBQ7DlI{mS=-}7E1WTU58f;ERIU&7)v<~rs=W<~vl{t`06%R6Q zTa{xuYH*TCpSM7h0#Cf9^6D@QtuHv2eP@Zeh81$P*;ek_$)T5jRf4B9*7mpKi<_-} zww+3A%0gpiCn}C<#e2x=a658U&3Coft^81ccUZX}pxbqA@tDS-j*GsGLGdI+?;Q23 z8z*8Z*^*@@WPr-#T6xizr<)2YHFL~cx>f^%s61_1OSQdE5U!eoeo~hctLlL^{Qm?- zVimX3nW^C?Vh&Zj^uv>a!(7yFJp7?Nh7hT3%bRKr1T&F_SnSN6^}=x+{CN$%eLLFn zGxh;xW4d*R^Jc(RV>Yys=ypw$Nt4XCU{)>Q(2~@AKo)48SF;--hY?-u>U7JO#TNuQLrfJs5h@zuGv~op(v_xu^TPg&H!(MW<>zIXz|wo_ z;jUlQW-uB1cw(%-Md=E8SaPLj|J}p1z6w%6BW;OaQe5fT>O=TsBdUC*DB|tG@+%`7 z9kK@D)X08liqtC`Y|ha7l0`SsPb}mIa5#QmQSZi$R`x}JmPXIjx7hpEpETPp{wgVZ zBrYqyLnqzZZ^CN#>Krd#Sk}@_IdQ}nLX9DG&O~S#I;=FUyopEZo6vy*I=8=F(+P05 zG9l?hyzGovX{J-yvxI+GzqE1I(t7bT&qh-$9WsZFnHi?soPM|#U~veUp02%BV7h*T z8%}fSWl*`ZN0pG;=UT?%!D|`)h#Hrk5tMlDLHn?@u{$`Xi&n%`KK~T&A!FbI+ z1@+|5S>SiR9;WUEB#EB6&)M`CIlreFHD7bxO(c%lpfY1|aNn!>XL`ms4e8X(MnBvM z&pC(|U#^4Pl(pQ)vk{#ST2D#f4b-S^^WpV09L*Dq1X3ZY(#*+-uz)7a*^_b==8)_5 z{by}t<+^#^-L7Slsjhx1D?UJ(yZ)g+YB(tN5Cwq6g%&|=1@l8irb*7IRMyY&q@!4% z-ye!)coHSKMxgIngA{&d(|&ABbL{XLmhI3kpEyM?rcMu9V8W|A>dtOXi1~0`R;s<9 zew~$mFM=oK$lfOy^gh`tn zsBt!K!Iq?tt+R-aXp@{nEdF3$8Gc)v72t^#X zNtk^G?389mA0)Y>Q)kRAHh_ge`x>YXr2~Q#%kUKpr5_jmtGv?&nHp%fZDO>5fux$w z13hCOw@Sg3Q7i6-3*dA-U41e2aX|lPr}NUJ+z^11{$TI&H&LQN8pv^CA%w%kN9p)^ zZncJT25ia==7%<5X9Xvib#_+)xW-8%!cCk87YaR@utmt*${uNwmZm zN7ZkvyYzZ1@^|6xRgACt#aTQPddTsOyo_p>f&ve)vr`yaRl}GLqAzbTne1;zn2Tq8 zd4A&cy+9AMGIqF=lK%2{R)1HT%P96RC^b;(bj1}fcP<8|Z7i_JmzQn5RnUq$XaKu= zk=Sd{<@vwv9@3BJ{mh%NY;lxd`eqB8yH^(f63@6NetTuF%boIzY})7TNr@33p78Yf3yb(d z1w&`~8Q7v(uH;r zOv?k5B_=Tn8qaUYTsuRu)^GX2H#Q~DHOOU?cWD?VCLFJ;!m4p->H!A9F>`?^CT>t2 z)Anr+)n27lZr#zb?^PVN{rT?!`B0*8(Aq{cK%hP~dpgl{eLO2Wu9G;ppz%v_aOk8;u>Zy_kDR@PQy?ZwPsi;&l zS*>2~_C>*;2US6R;bY5()zS?SpH zY6oR#Ut`n#;_ar7*QH2PDelko-)unR69WCCEgyP}LelDLYhJOJ83L@%fTpYrJ18~% z^OW3b??s*@`=-xdBGKID40e;!^6OF?O4YtJK+~Ii0aVF$77B&M$z64J{e`LimN(;# z>hD##Ht2AYL;r5ezJYAhkrAJ_j7@$z{>M*yd0`EJ+%Nng#VO8#{|L~zrFCpMBZ60( zR(dv}$4Tm~<>{m;HY{8k_3ZXhy)ic#+O0@8Jss&oE=t#;#pa?JCPa;HybyQL*K;TY zO^(g;5}G+iF=!EsJTHD537jTh@BQLNMQNp~Mr8NHx zxel*=wh&^s+Z)o9q1n%LqB5~`XpNjZq~# zp>wrBUy4Ria2J5kY3e*8E&F+C7jx>#j6)=0F2`PF*;Iw2$7y{=N3oA)z&x)YH4Fd5 zHXyOSh!7v#tgmHboS zc33?)SGgwiQ#zSgs+5{;NnVfq9R{#uHY<_~d$?9+d z*2}4$3uZe!hS@eUy&f^6w&y|RM%P4SxPi5fN)3#xgK_TnpZ_+i5&4~(HE2gaT^V%2 zy{>x$qLy(dh}OJ+v2BsiMsK}tvUr9}%D`}JU%sJzya8A>wFZ$1a3t}Us|6fuXU~P8 zR*l!rPu~R;?eLtc_Y&%2^J4K!>h^?OmhXRFs&tvG23|kwiW1bY@cnif4M(#5;O?|5IlCr{l9=Rx<=_Ms z3r_fAiNRUC^ccN*9oir09~e#IM)pE!A!gV$$|^s8 zpZ_zB!@el}*wrMdKM*I?_&q{*RU5S9P1+*jtJ2+ygQZUJQ~ZcEYpDYv;&w$g=WDou zEp41(2%qOsced)KD)fish@)Fa&7Z`Vz0CHzbI<4T(|Po8>`Eu9B+vb2`6fGSc0g(i z+2>YGkI-{;E<=Vgg82){cLn7?AoAp)rT5y!V69&CR1%3V8b`BBQ~WDRZ3^W4dm<&I z7(Z!`e~U>a2m0@2rf}-6T=yF{=^mOce};8o(Q6kZPz&%?yXQP!UWLb)YDc?a*_uwJ zt~5ADN})mP(E^e5aLSLtrnx+7Z6QRhLZXF-A#09WCdH?2M;+2+GMQ*?kA@INI+cHQ z)2aT(hVIKzI!i8PyE+OI&34JKJbKZDk-K7Zt9GKP;12M%(Xo#e z`8Bc;zJLf<6>|FeUfW_eBOTt2nU;)_*0m9@mG`A25eLD8rjtcWK}qu{3TyE3?A_d1 zDqgv!mYldt^QfF5>f^I+{`OYK2PM02)n-xx2DDCp_d z$!=^=I0+fdw0TOQT{;)W?usr8nveaUm82yRKF!49Ti7jG?chDP_H$}15-vn&!GfWx zL#%)cY{9gTaSU%4SHusNbd|rp6O!uZ&~~=mAz;=<=qYY%mpm73L@RDGBavbl3G?bN zwBV@qRwJw6(NrEWh_t-~F^^ks^u$eQ7CxZ@u++XF9{=l?P((49YbPmijGpTvF1fK| zB#FTq7Hy<9-cQ;0xJ=s0S-+f#ap@WT*~de8kFB%P;RvkSPWjWxTt9F=Kxg|~h42Wy zUFR(KaI0TpgZ5v)V|^l;BSzp?i||X4QAY+GUx@~|*=b-42g2DM&>uZmQ1H1fj(Sv` zwJ~*v_4ZK3)LHl%3!hn#O6dlJqV4L!5AqqVc8&q@uaegHo4}_gmN_frG;^Bo_W3_W@5y3UzP<(E>BHldfxwLx z7sY(lBzYs2Q_t(j%kJ|Olf?zW3(}z5PaBZBo&^NDAy~p4U}meFxe z1IVi@neCnyHj$`o7v&q)b&CP8W~ct*Bk9_`^X|V`UYBO;Y(Vot&8emt<4-$QRC_PA z){eo6`cIopUag3&woU`x-9&-(#ZXg=Zw@Oi%=5g`w(=d5zwSgTP>XgWQFnszOC&}7 zsJS{&%|g^QlJw;wiPH(Nj_NVi{)i%&!ZtsKZ!WmKaX&nxIXMIfHi$nnjRUV43h66J zY4?0F!Nrk|Pb7AhqMW1hlB$YNX$Ukc3#NglD-~8wsx3~Vv${l#FlMggo8c2yiW7#_ za0KyDjU7<3;0@Y>J5#RFH_j#WS0eRquYYfTMY7oQpSQ1loLi?So8e0|i2~q4o*)B~ z;#+IZnk7jk>vQENpv6J>C9?5Y3ZQ+lRyM5GmNOGO8QmKo670$uy1sau9cdXP8_CCM z&3d$KsPEu9uS=BZLvArA?a@}pZ)Y)0)2ini8>3ntf`v`G3EQ+|-7~TFg*2vNxuc`iE8@0i@{?dsWGubq^W?RfL?7uaM&@wZ?T4?gl<4jk4<7Ox#`wyAMI9K zraTRZ-FP{1=>t|MT*?!0;KaX0=|GCK>m*%VA@*St@Lfg7%~tIqDycuXPT0(n>8g{* zkIF3%K>osOtc^+mCO<#l?WKd2hO)ij@TmaxX-Y2rYg|D{u9x{fha9^}fKckbcIbN0 zylS;>3~8n0sHMG|#EBM>9SN=J2#}c6l^YF%1IPeHK)SyMK3elaAh?3xNtI@{`%u$5 z*Bbp0FSQH|C}xM?rv+STwp&|r!w~z2f15_HD~@-v)pm>z?7<4gMew^?y+t43q^^k7 zz}zmA3%KXfl{+|gq8mF+O2zn?AODK6G5nbn3NEw;EF|^b0P7z_t5t_#)EB=OI3{TF zSQN(=Mpj$IU~8|k0GBr4k~%ursb92CV41-4VD~mWS?ol@2%#d_?O|82XNw&?}rZ8c*oWs;XG15I%8@xG(SSX5}ZXizlKU*!su2>Z`+12IzV6;y; zEt)sV9EFuZim|TX3ZTc)rB7H@dZu$kP+(_;YiSbkWz0`UrmAD%E$*=o0@R`9Vmt1V4l_Ro|n*yJcf-i;vHg z&XJ$ywzdny>+1qSGYs8!g);Q-#oa&po8-LCY;&4rfvr_q3k(b9Y*0HEdTV==!<5l}^`=zC{ePdYSI9$`B~kYV+K; z5(l)XV-d+-SAeM%c??JAfv{S+xmY&N$f#O%rX(qbPhL0hp;?{_+x<1Er|NxJUPpf0 z%Ly7B|Ib4-4M7TK@R#x2wtXvq*y;x@EF5EY z(dq*uAl}EF;JvGXKMe*#Covys!bBL5a zJkFoBcfraRrW+2Q8s}#CWZ_Q$Vs!Xjx5RbuoU0)QJ*Q4~YSiY$_cdbwFZj}Ds7fLs z9r}G#NkfI;v@eyt7;?is>uy{x;)HT>ush0x|5N}zeEob(kBK~}eM)66!!n2vY~)k^ z%`{W*V);G3atS@uvHsD$bQb@Ptzs!R>#rLdrh3+vaUUUBEXul1b16O|Ner5VEtOJi zx#3P8;ACX|F($uZW;#&N#sJgIGZb{Z76`A-NMzUxFFS+RvCN^_rb!Gkam*m?l@&Um z(h0m^Uf#eLKt8&{%4G90d;Kt}7t4p*K0Il~Q%KsZqNp!lsJO;tJB-*&mLm2T_bg#0~>ma!+u!20Te&K^^)#jzKupmx9F&tEv0y~ zM2_x8+Nm%KF4+0vju{PIb(>wCG-jkfcm}iT@DtfyzzY1}gB-s229lbRj0HQKmY5mV z2h2q&IkmS5)IAeJq}Mzj9BEC}Y0q%^e0Zzcr~Ev46hZ`};Gv^R#XcJH1pKRp&g8RY z5$pr5luCrSsqRvIf~(g8y5OsGZqE;z!RzShwf zb(mc$+Rh{MXX-dOIE($rp%!QLm7^De)|0^6#f~f5=V~w;x?qL+ZCc}Y>&uy=lOhwY zo3@AST=&8}s-~sXlXXLi=gAVqHpc*m*0GvYuNs~UJaWn=h>f9oy8#{qmO|{ZivhEp zZYd&}hdixQ_)W4^lzU$*SH%Aq>(m^npo^zG=_nD70d?)xpoenipPsrb*MDkOXM#bRkFZZ>-|fqBG$H z(4#3gn~3X)9n*qc82i$9s_W+~_y=MH&&Ya6GbMZt(%(G~z_>Qz07;ckcXgccPR*wj zb&)*vJ61ngeH`OZkRO9Q`VBD+(t)3)YgRx<7lIqR@ncWUEq>Oaa)lkAXzxCstjtghG;6n!jJ(2o?!7h$?zjtC~fj%{}$cB-sW&B2~C)@6vSbRAW#yy4>}zJ{xVQ zeuk00D1~)9m)ETHC1B6|__~HR2%ul^?7ZwLm3ea0_Rqgvp=B&nnBn*Y|EaGxn=-a* zf9(->T{$KW_bLl*)K-#r%m@-NvdD#3^k5raLR2a}-Jaq8Y8Nm}$u6wm+$e!Yi8KmG z)HrH6XonXxnjt^^R>}^(Y6y|B%6gQuns=jlk=!b%rbYjiMSr~u!VkJ^m+R4u<7hys zt=Ga2=xBqt=Zj46S%pvY!2jr6X>#o@x-qi%bIMb*BM+kTu4||DMKYy2RH!=6i5QnG zO>Pte+*XoyXLS!Z?MF)f&3vx9E})&zB4j6^5MZ_hV8;Q`x)S!6r+e#vTA4gfRfMos zTC67NS;ee?MVIEoMLV3tu4uaN8eerd3SOrZGkZ(mTzQ{WgJnJmhjCIcb4}>YWT&H5 z;y!UxJHK3{Wo!pdxo6Yt$N!8>x@fL?AwidTNAQYN>4*3QdyL2kR8JOOXxZ9V>FcOj zI$eDJQxX}DAOccO&?zdiCCqQ%SgMyv^AH=^2mXQAaf%oO>y2!|{Mtk5Il2Bta#Q8v z^}EFJGSU?PX_H`8wh22JejVaAS#tbN((!2y!fYX_>W{ahrl65FtP6cJk6v=RcBx^D8~!8+@T6ak=OunH%7Z4mDGb}i^F#i0|hSd|4nyS9bO|DRgF#F*r0KnuND%#?(HZe0VAy#>DM_s9Gfn9>CQu~`0Bq>G+jiu zu=TN1(7b!$F)zd5?)j!0=W*qvy3WpJ8{rz=B(`?)GVquF2d`zt7kCU#)rDT#(#OfA zwOF1S<4P&C97k+Lm|WmETr-UTdWcPE{laf`w!7!xDyw(}`|u$d>Ynj}766OBklJ~4 zVnL^r#AXmxNuhSv(cwdz(}rxWcp-O(lCQ4;WNV+P$FfM&T(d6agEAj4Z!3O<;z%jV zfO4b;=u5j9$hSs?w_Xq0tPWN=C#hB(6eAP)4XigaRi+bWJ+kP}Gl$D^?r?F^w%CaxnQekyWDlpzPpR+qlU| zDYa)J{cAA!?w3T=8E7;DimgBQS0hKQ)p-MLL?!}dLnMta3?S3aPN1QQORLsfjUchlkYpSe*=HEk$tTixeKeMjJ*wu<)%jHOZiUKuX zm>x9A(uMoz-ffUQ#XH>7n-DAADIyQWkq|9 z9pN0O^x`FTlwbM&=cS_=nyh#l2Af`XF>Sx+bdJI;)m`kv=TjgJHtvhPzX*_4m=I=^ znMm1Q*wOBBP5rpqHfJPu;&J_CFm0^jlS*I=zGC}A=U4oxTf6bf89WRr`y^W?0{%Kk zZu*^7cZJ&*5jBtIW4;u2Pz3}`el5I#ZTCZluOaY$r23l6I!wbajoGbz`KqxC!O9S( zx(lsVFt+*DUUh?^08L@^$;dzj=tMm*ote_KBoVzL>S_aLIVG>uM*|QwS88j|}DeCDoH~gqGnUdBKqoKsA}3 z2lSQp?Dlcd7M|?JYf94G?J#Am&GEG?$l{lD469ELgxXtn(&MK(tiy2u!50#D;HZ&I zc~-2woe3P@&;0i9#2H?>D$nYw5ZP-#&~evmD70R9577%w{;7>Fg~_I-#ZQc9EEFN| ziPCM9Jv2TCKCknqpgy+ufdk0JjO5MHAE`D_zY9)2E>Cazne{$qbKYqKr@`xR? z%1E(kuRc?iJZx@Kk`p$jBzZzIHDVrhlRhmHS9yG88t^!x@ITp3bAE76%m%l*31%UP ze4T1&Bl={^w`_`C(qs6P70c6`bLESQyOX7U5c+cc)tA3`R@&_NYYh5`$ZU8XMUa?xZLaaS@COb9F{6so^-XkRs~YnbFlIP+ieo_^%bkzTb&?~FX>EB3$tgx0?bT}cdF2%}m_>Fr zv$bTh`g>+$B<^{%1hct1cf{q6{NKt^$>+@U>Kb*7lpEm`4gA)rV5ecWsuaqeK^+S`?AKQ;|s_l!w5f-jAs?p6k-GC{~mOa&AW7*G4(G*)y8 zfRU9WknTe>N~|{ssj+r_wxi>^%6H^A4tOY!VB=V1qBnRxK3Lfj)ZhxWPOFAC_zL)% zWqPrCOas35yIZZoAdskw^H&dX@$+JddtZFZ$AlnSD%TJvd<<9La0T9S+Gc@?5u0P0 z>ropJfEQW-_zBc=gPrP2yH>RsocHtT>UKkWZr#4?^E^^2xBXuJiv$;_fs&lYFpvQH zDzq%imD``rSll%|_tG0@6T)!`R6Qs+f`d1`?=s~hg3t=((k6`f!}iTuh>L@rWF@XH zWlVEer#!z13X;{IcLwdCu1emPs9Uv9_KaYh_KHP!wb3E|NvIyXp9L8Cbb$d3;x7ay z>CJYDAja=CXcdfnb(LUXAzMUY4!?h6rEwV7l&@F{J&*!{$<}vKtGvP&9J6a9zYvUe zf(5;7Fh~U zf_<>f2lD2c;@#=?)Ig*+{HQ>em#c>e@r)$3fTT~&|J)i0bA&);X?gL)xKW|6otpVf zX_TXl35kV}jn6R+tO&_h+wlCVqQzfh zxhV>@4d82wGs0|0w5wfhDE0{t%vfg;&T$gh3>Q>8+okp>B!S~DVUk}IMn(o%{98Qu zS=4$)_*Bf1a=D48ei(Zk*7Y+XYfV0hbT0qUYAa!FD!1JJtdtg49cLBOX7@X&72 z{(jYpu=&w+Rqk-*iM?T!1y~bC^JKb;HZ;4w%S}H4rkaHx2`PW+5&Ic?*?yEf=X< z2p)fD+G|#Gum45%UHR!`tMQoSvs5*+@%O+wT*b}^5A{;n0NeviQ|S%$biaE*$JSyy z;8X`2wK@RD_9oGBs~!y4$bvDmS?ylgotTxuya>x4CQ{|B!LadX0M8B*3I>^J<%(tB z&Mac}^|L$3@`=FLT}q=GIb!M&DW`7c4;T!N{z!;qt>0s-L?EA)C}I8utnba?Cvlck|}W2 zXDY-4^ro>Re0f74_Bg!$(dj(p%MdwUUvy}=P}SA-C$@{!;rB5E>?0L!Uc@nQG|i<@ zP1nsKcDmc^IaEu3NsPKoyfgEEUs+fT%7y}XQG8PFX(P?}THy>^-Cu2-7)%@`bWEK? z(17qN4OEN#E7zg4e6Gr6Y`c&>?7ng6aG*yEU-I6v5o3b+#C#ImwQ324Iy;bE|9E=` zZ9gKAQb=7r{JAZ1aqZTxh%pZx7+*n5l1j6WKZiP6{9I@EXig9i zT@M%E0cTHKLV_eBMqpM1r*q>AT0Y8s)4zqsS z)Ach=Uvz58Ibz1Hr_@*B_sE%eWs6r2LUjI2y(g75bR$fMglh?l!=|q>+Rq_WnO-7o_AY%bP|qlmmATilXCtQFgXEaT$bh_ zNES1k^i+Sp$}ZxkuL#)VNU4vkJuyPF?xI910vT+%Yp|os-HK)NqDq!B&K-N{gQ*_% zerUK4zGSl0@5K6FnalE=&8XUEtz${hoHX3{vl@TPf)}IO<+R?S>3%*XfR1;)veD~m zr6f0OQO@nPybQpDO;S6IAZ2n6e*tOuieMKbFN9QLlS3Qm_#>A;DkwQgd97+xn2onV z;THAy((<5z(_D(kc3Ud(Ec6)-fv}|wR+L>@MTtY20H5jk0Mj)NFu0;qU%BZ>X|OI& zxk}c%&5N0l_Udx#Ri!D8+w7i91!0S>Kr|ufYVHj#Hx_ zTagBE#gU$M$nz`EX$CbuN3nj{F_bx?^^&)~yKX)}aE~W7OaG6XaR4E{e8koyd1!0J z6vl<0P!Yy?ncdtEyxXt!w4`WcPhT8ZNwebteMxEyb8-L2pTjd*IVJKLQfHgZ?PuAD zNLBHG*)yatn@yyW>5PyvlH8q>|^s_rifF>4y9;Y@#}^W-y469K@i&l>WlC<{jH z?uw!n>Y(X{gmaD&5i78Vh+jh1rROip+a6t6^v~BiL%|teSveb1cQ8I7v@EZ;sFzzz zC3swOVP98!q2i;8UnfG8q)Imww=giuSol&9kH(;Dy}Y?K<;dJkDpF;00a;^`FcVH%iFgWO~JTU zWrU>p&8Cb1bJk>V(l30^O?2t>dzOnj^-DvontXx5%UC?0EvX4okg#1`k!h7L659)D z{R%E>C>c9C?vk-04M0rZp+Y>>E{{h9bCJW;avy!I0p_w7Px*c_n;cv1?E$tf@<2x^ zxr}rP3uR{?j%(z-UxgyDc=SP7x@ik4V8?Sb&y}^!ZnBP4xv07(?a0RO^~+ZxR%>Bt z*riWV(!8R{@$$>gVYE-n{qXVAS;8;8v>g!*9@i#REtmQ=^*%DxEo}w6>K=U4&n_EG z3)h$>nyZR1IDXgUxvNI-xdL*!MD0}@aWq6ar$aWuy^*_HotDe-3T7ZY;w>LEPm*6c>G2o_SNj{4wJ~SMimn zv;-WRdfga=xM)c3p%PgV+U#WKsmiuAY~(9RH+vdMWx|&+dU>?zE4eoxrI?2qWq`@~ zo!9~JNb6sDXx(N9OK;5U+q-~k^z~{Cyk?Jwrjt?(8C5DfdFjck4Jb9y&@Y(b8B&>$ z0F8qTQw4wcdRLd7nCza6MD_@5-Z!X@T*uD=#TD&wRvJ{pm-^a4DaKHu5(EQ`oGjQ0 zuXb9et3p{-uphKsC@5CB*)X$D@{XR|;k3#NQkeZ!6DBJ@jG)M@{_}kGD99+o&0YGS z&d}&~qwQ-PS3g@g!TDpQdmbJljecIa<4Q?zV&pA)1>~A$*A+A;9NJ-268XT-QLrd4 z8)sR@=lrPQ6rO}cY;>Ws?nOnqcJvOL9O4HqzY;!Ho3QJTr-_hp*0_t88{|uwqmPho zo)bL8wbT)h0j-Ux!ZEU7D`OEGQbv6pj?>YN(-d>fnc9-e*9nBY;fq7e^gCrfYp1(& zKcEi8hlw->{~!9B#69SqO{14rl$7fnGszmnUR?$}VJ&fh>-Lc5T3n+m+utJ<{On6Y zpqZl{XGXw6W^1opsPvQarhjLs%VpWj#J}=q#FJu>OuZlwXlY8eZrYj)fK~H9814MB zW2n7@KHfFY-IzADtwBOIAu|_) zu4XnFHw+)-C^X@mM=xRb(B#AIpNMzKjg*`ElEj6G1g=E&Xn#Tn<=de?C?N$caQ&ur zu8+(GhD(IcT<8LGy^_nf7;O9J-#pwAwEyzA$&qC`eAiZvV8_iQ5&#_0I0Y%uE{5DE zhb;v8ez)(-jO6ooK?uN&>Yfm1^M@ccnH??;RwshUzGgvINETU$L&81E!bX_Am2Tm> zT+{sV#gXL1HMGJ0)@S-=Ht;E#cA`%?d@(l zH^L?}?dg{1DGz*nBGw8PRfkTg(7O2c$l6S!S5a53*C!uVVUL|X9BXM+AQTD7OCnYq z)rYL{z@xDes*@bUZL&*5`e*OUZ}wA1!@a3Zs|7C)U!nYBGl5#igtRGM_6sPLT4gY- zA@TQabL5JXwM)Z>I3;z~z;F3{@aSa*-&|g=wt8%nK`a|Mi<^#r{>?+uUt(914u^I& z*VCEHr2}PR(!1v33(`0URafPK;}M!!d^r$TM{~o+e~jVH-M>Hx+)V;_i z&ph=r%|B!16sFoDq<#8`DQ z;2^o8yR!GvzUk)`7r$^+r)2NNcQJk|OolrD`8RDM`t6jwN?%_3R*P|oxjWY<9Qo+v zqSfo|hIEkV3sj=E!N19eYIl08!SKRgFFSG6E9#_ZM^Us#xPxaZQ`l*tkg5+{9@?0M z=22Z6*ok=T;JXaFX+a(5Mn^FmUSC^Fb%Pfuh&g;<6@gQE;X-cHCq5S4tXjY;441X~ zKOeAISuV*5#zKR}P7)8VYJ{e`@{%4z;h>cd?1eax|Mk7L3=nCXjw9ZYpTYzhTbL2P z@51gpEK5VOrB(MNipvSmhT(NcA0?j>N~oF;>o4Shd1uKg?6@ zc;*Ohrdhn*K&G>|`OZCI3r7X)>%R+*bY}w`bp~f+lwZe)T50-y_{|+p96}riKEmG;!vTV$GN+iD}j^TfY?;C`+Xs(ij{dkK<+pWpNI0eU{_ zmilY8iJfTUUu4WW04F0|1Ba)U`PWgcqTt$p{rtrWBHtb0$E&MhgkJ}3@Hbfc%8VE; zeSMcC``VnG0kjOYzle8yI*Pz|9VV1dTAY((gmQSb&JkW|O;0!5M~#Y|;{>TzNVaE1 z9ckHmS>8#t-c#m5~8l>>Ub~PEAX+B+`+Pqx5&Tp|*K8k)Q=r(*S`C z``IQJn|Qt85OymV8A{8CNv2v_k)ST%N+&7pOCd-6*Vy8ty~)#YXo!4tj**%EiFnYI z%!uQs8WeVVD=}^Q#sjJ|Y`1*qiZ|Y-HN?T`}Jr``E1ro z+N+r{NZ=bXHy%7SFj1g*JAQ6`CG+vpNR?x{O6RBcjY4d-sq|641=5}H$_a-I^%l5e z(AY@~+RK!-l_z7Z|M~4AHU0#f4_>3$TS{Z*u~{=;iBGL3VS26d?soa}5hh;%&)jtr4ie+=2b0)hp8 zxiH#qLy&iVAJO&Hrf3gO@GFCZF9m8C{_xNXLerW0Q?ptM6j=L;?PD+UE#?u9R3)H$ z`4vTfA*>|K!V)?=UOl%0Iq$?y`D|AmE!9vs)8y@LRNRZFPE6`K51${RaaL%F&HhB` z$~n^0|9qt;Z)TlL;?pkUsF_wh)O?o?mKiBGGq7G8l8Mp29p_#Qc)XCI#yE-H08n=; zywuSyBbdi=i3(o#DRH@cplgAGnxLZC3PP2S%nf zNc9xWaBD^!uT{__#{Y7MbI6#EoSE892*!>dapPX~kpIE&8w{(ff-Gh#r+`Z!xz(mx zNyf_tf=@L}R1O}E9vw}z9!j`Ohe3l_0sSNC`d)bv;1NHg9I#F$Fn?m?mx7hOeBa^WfLv)6wkPfb9dM~Z=r^c z>ol9f&|7V~rw^6k(sc8T{Z96y&|}t)l!qA0qm2@Mc5gw$w;KgwVV$3VaZ6ETTs6P$ zR>qM!8BJ=t_W)?x$-q6#)_wpiw+v0}+g@TSFusRTW_@P7`W`2S=W!7{RxMT%LeV!k z20sCo*p+8aq(T;v`l@_&wi5i4#n!L4qymcpVXaPOXk#AZUiRTb5W6U~iZ$RvS49aI z!+1bB)1sm0vJLokqw+_g+GsY9Bjiyk1NX^C9OK(D6K&H5_1S_K7TIAPRXV*Fsl;X= z?yjS|U^s*^E}gHQ{4^!U2}YL?A-uIU%cw0NP=mE%()ibF8Slbt*oY@a?j#Of@UX7r zt5<~D`z$e_Q^|k*H1r`9*I#H*?oLqe^O%I~XARNyb9g4nl%o~K6Lf|2#4E3=TQ@Po zGxRC=sCIXPefJ?gtMRJ4gTzvxp6x9V>zwSPX^Ych(933xHg1KGlh@;NFcjiJy1y>y z_I@fLs%s7ng{}g(?NS!fBgsU+GwFGN>Ms_`Wf{90$(Q;YZ)S|XH(;gLu`gD6V0mT+ z`@9Dlou>K=%h@3dXvBq7c!i*1^wbeSs-t}V78xf;cZM71ZVobe>SyH38im27s#Up% z&+%}^J-85>&zE)}XpD?s`I>L;1n$r_W>II2a$@Pa<3uls6{NoWj-)G%uI2ZMn&e8k zdEdgA(AlVONlmueH{-ca5viPi&SVAtBrd>N(wo*h%r)36i5R2s7bMf8K zexPf3Am+XEK3KlI#0GtM2NVkylTg#Zpm>=93cd}Vg(lDbD zw084DeqS6Bbk{y78~y6C_%Mbv&})94gcHEiTSsQJ=@j{=e!OTyO19T{WF|f@dW9#L z=WClzBf&84V03@e@;ry(SZZw0t_7R~o86R*t{Q;JRoLDt`i<3+F(!!{cTCM}6n@r?VWxhNM8oIgIQK=n~ zg=->@NPb{AeC{xhMLwQksx}*GJjC|7furcnIlC-9AjKzE%K`*P-^ngDr}?I#0lMdP zWX=#tDMzFiphX7-ifahkBY5mj!YDk@?2;2_byLMq@nqh^kmr-kwf&fDGUp+(?Aj}= zI5pqs>H#6xa9+YyI5F1dtnfS*@z^Rx>=@_JOr-#w6C-mG%B9*{=hIHOuhn(rpL-{6 z;-*lwM4{I*y)`cx{mGo06{j8%$0lz-$)jH*}}1KIM?%JG6O#*nX)swP?6 zsR9(XgFH+Es&`+@fGd0Jd~}LFVD8GFS_nbv!kD43Kvb{}clvB0pu z0ZdKk~gvja%+ zrL4%QuPlC@2+nN1*E==(UU_~d$Q(PpuxjG?eIU%EsoND@MCgS>4IRjG0tk1WuL+&l z`J=TR(%LY*ACEi;+PWu+h<7(knaNazV%5!dv#+_%!l@fF}(2Y7(L z- z{^#F>v}=k8bjS}>mD2%)SAOKyX+K*m*Idli*B$c!V*AmV^aaL|JOxWnk*h?PY^HZa zxS6gyA(ahkdHfTLMg`f>Y7TIMtY67C0QQp{$7l^wc1^=q{rhrcVaE|#URe!}EVOz+ zNYuFfZZgSqLcm6b%#Z-z@AxpcXp|SQZocgE7(6Mf&QLjrIP3QsY5M?M=xmO?9OA(n zx4lwNqLxrJ&gPfw<0dG9IE=9+F_3@#Y@yb7eQgH&_T_4Il<3=Ep{`ASE6Z%0cp=M2Hg;& zd^egPnG;5@G@r?Q5Vdlsi+(4aLn1sng>!AQuXKIkpAH;0G1tg5NmDs~UjS)4<65!g z@n^$d=N06U^9W5*q98ka`B{ADY+Ml9dBMAyKL+wqJVmAC6h;kNWZCf7Yx$QO%wQHT z=3dDeEyF1G)F)h8Q2H+cO(j)^9myU{76c7lf^exbW2t{;M3oTSmUeyFFGg~kvFgy! z10lSj9G)*E+!Z8(Uteu-&{jJ`3UNDh-*Ou()i=DDXn4VtVA4C`9KKFM3n=shZzba@?S$`43ZvzO@wWc+F9-EI^Q5gL9_18X zs^nROfV%A^Jus#`cRjPoqWXre%OE*u2+$=*;)F3ed7ZV`JiC}L=ZZ;l&*b&3j_86; z6&z@HEiWx66L=lbH+A87a3i*Sxx;o2W_s=m2G9w(w}A#P@ASOb?~Bm8Q`Vb)#U5Q> zs>Davce3`c{Mo`ehQy=joEDxGNupP{9!vz3`P-*tu-_4OK)0%CWIh~dlm@VEM&ESM ziL|KwfTgt?y>;%bAzC5iHfFSeK)A3CC%T`u`kf1r9YM0VNSb!aG-uJ;u*1AK99 z>J3EL2^O%y#zBvAMYnady8i<|xBjtak@=zP3p;QS`zf#Eyba(9TSPGI?{0QWGVci4 zQOvieb@9*hweW}@z*xx=TCip@7S$d$h}n^E^&aFzPxbmzg+6$bdYsc{23jo}ZFi4q z>N=!!JO0yKn+VWpgcZxb5O#1q7h@8di7bJsfi&2r1N0hd!I14W$lBG3#5oVZ;MO@m zKgxPT5{gDJEb|J(Slg9bd9qKX39>s1WgOxN=lwcSavu;h2vwlU^ zFO4K!^1eotM$ZQqj$t^|*(F*gNPwH9#@&k!@4K_@=o6?o?#%s;?KdaprjoD`740|! zBic(NH5WQVjU4DFI??{z&Y2x$o_QIpD)cfZL~GRJ>5l>}8jR|0#2<(R#xXc_nM#5e znh>5K!l352X$iiqX?60&LA_ONJ7=o8SnK52 zhN0`^7tL)ej)Ii1equNfm81m61obij#~)C!BNMMcmR%VttQe^Wg(WWZ1nNKo2l2+>F#EN)yG>_HF=9^G|s zi8soL%B8N67%dEnSZi-Md<7IcM#K=Uh13iB#3Z1!=#8@Jb+FYUDU%E<}gIW9ge)(~$Juh~eD9NJK;Ho49@rHt<#@tM`Z zsM}<{wJ&)(kS@^z(k&!V7Ior7W}{VYr9f6u`CaFm&ksc)L>%xmo)GWAcN)<6d@Bzn zoz><1;Gf%LhG%+-&b@%F_-COh9*}71El0E?n2A|&9ga?g%FaKY2^)7{$mtPUEi`Yy z-3SPc4jE!79J*QLp$T`Cc2CG>Wsl(-hJF_8K%U`cv)UlZP-}af8-bSb6P8n65IXHP z;CcYgHW!wS+sCzl4Q%kpPB<-VV1X;e+`j;`%jAyBFt@ZjE^Jl@Aw2M%Pjyi?SZaNg zk_@X|=PpKdGO0E_wL`lo*D?6zj;KS=ha&!y`htu?FP3WfX6W1y+Ved~sdt`W3sb9uO|m;$E6M_oYj;vYhz7QDXPlh% zs#UunsN9HCohEzd=L?-^a}1G8bGg;E(EWpK*Tt@)d8=o$Xydy$tDI>|T$Ga{M1pwQ zDcIF#6p`hPqI0J&R#pg zS}xT$uuk6S%dQLrn;ibdHSAH=9`R_FMMU`ii$b#^8M@!wE@t5`in_7 z5_88mXlphz?C5nYP(Qt>gD<@bzWLt$P=l$Hk$G4f_djYY*N0sIV5>B7`)j}cbI0q> zP73sKyA(P>MD6QRDB!xebwLx_w(P}dCSpF`0)tmAx6qKaqKow@u6_L+((wW%dAy69h>cEO*DVFUzV0>o5mwds4#2+GO9DJLZ9 zv@yE(7C)TWuZ~ra+~D#`G|O`PpO`$LMKVb8(rxd_iI2~6-KYbs=)sC(5mg`6jY%uj z%0MZUeW`<)Mrf2+0ZOEMr$tsdwUO3dE}zg_9%2|7&xbME0b>pNx#ATBB^L=Y-+2Lf znCzm{bJPXtOOPH~TEMNx#_6X}Os8cYMeELhR<`@iE%@p9 zRf*|@V-t<}w#1n)#}+?YfFarjN=?@LCklNQ-MO?N#;brFp)!lfP>J{+Af#iPG^aPe z{X#aTPP1C^r+3z7HyR|S+P+njlHt#DSn~4m4m&WZu?4w9j931xict3eN~y-ZAVs5$ zRk(81monqTIGX?^(YX>xk>+YA7t+i;3!w^wY8QXY{%)IxuBlA!dfc8xH)a zlGA;;XjF<`OHuf&5OuCUkqM9VkP?3lIn!wINyFFs#Rm= zTt7P656Fn@PEYKBbw0>gw+@_r12m7IrxeF*Kw=hmzKZg&X5Eq$Q2b8mKcAV>7k92eMQ z)2jWX_fmObR#)Xs`Uj(`K}GGXy8%hbzTp$3OyC%ct=fU~@~XPsvdP+Jv8C~`nbhv6ONyv(_8EV0G*Tq$da6U4+G@rQ!VUE8t% zg}>y+_mc9QqTRqwD#WqTT98As*6%bryHXKbjztuP`{ixU&}@- zxRkv+*&(17gEq|6sb{|YiXUkNAcUTbS#D1~Wr(us@0pjqN;g_R$@S4woTsX!eh1N4?X76& zGm8UZ#UkxEUv+?9Ra|ljiCSSYo!j-bfvH&O{zgIP*`1L2D}Rs(nlsch|J$8OO2)BJ zm2Y9{r*a@io2nn{*mUQ>pDUGS}~G6F6ix4h(3Wx3m)oB4D*yeJ-8+SihueidI{#`_edPQbAQ;}|wbs3S@r#=fNqNZUENwv7Vbs;Y!MubS23Gu)yy*0xkt+c{;kjLK;x z;7_pR)J}w7b`Vox=jm?OEc1wzaE6sp+Y`H0nTrkD+fA5=PFop&xJ zF(~8a@wQ#`L?S{EK{bu=@${~2wZIBz;X!&~vfr6=$Cao-u0=@mTSIoy->#({2vrw% zF4~bSsXZE(JpVqcYx#}x)ze9h9eT83IY$sX@ysa#Joauj>}2=0A@O$i5=bmo181%a z4F&8u|^* z>K^Q3wgdhAuB0ZaZ`OCjrK^K{qkFoU# z)MCW7uWYuM9|+`qXQl3HA>^S*x6(+i=nmL-5CvAx(M7&e>DZ2qeslsTZgk<$)uHYC zNhuJ3W|QQkwH#AuKh9!Y!zZ0zaI+;_-LcxP0bckZJAWKgG@+TkAb9uS%7Y_2Zf=vQ z*wz26{3EjEkzaoce7W?Op86LXdPX;rEn%!}QdOhh7T@Zt1Sf9W=59Wf#WozFW6ZED zVkJM{wTlAV)RQaz7L$6sgfCLYoWt5kt`xJC`kopz+2~h^eIsD|`bnMm=gUChA7M}b z>g2D`v?IxkIE~E=o@{_i^>cX=Cu;xI;?&1~u||3oeKh&i7Vljr4aR=b%!aF^xxbcO z4k>&li=t7QOX9%&YYT{3ZGMzRQj-?NIC%ZC9hpi)0e#IUZ{jwylHBuqqtt+r4D6^$ z?SU;$C4F&10~*-GPpV)UuF;?*(LngpYnq3}=2ZRUZky7$OOyg_fa=EYuSp$7jy`MT z-$pxXewI0Tj7q05;k-$K-0M7X^h8fgPLN8%w~eb%x*?FK0r2XnouWlMwH>O!)}+HM zXOXi!V}J4ckqwY3G#3Zk#b^Qm@Urt5E6G3&r*?TMa3LZ%$s`hSZJq)-C}+p(1lfG3 z=vT)5m`aM<%m13&tj^Yb*4Vp;Pkn!}1t1EN#SSFo%KMw8I`N_Zg=06SL_l|aAD`+# zc9$8iKDOiuM=>>4ZBn&K0#TvZznrNWN{oI2L6(^H%fgovrd#!?JHs*4=6^ViAjj>2 zI2w-2GLpjbs|q>%?O?y~kI5g1ilxH-O)-7P%d(e}650gF{xqy zWWu~FK027RxEX3Az9sR;j_v(~QsZ@MI zJ~$HCAunfWxz2B9O_Y7?4dlhOhsasG&~@b9`@>S$%V3)D9XLKgo6!8X=)vvmIBZV+ z9AA{L`JvaF&$|(Y*C89tWoibh6eskHBAgR#Vi<6)it+Nv1UAa`yqfmnEr`*@fz?aONKtt;Gf2X z(`+kUR!WJPGR8C>qqwl!$qkKhPkoHCXd9Zu58nofaVn&!-B&VPta{vK)X$)|S=|_u z)NXBIz180Ynw&f{jF)#j<=%8_(?UWEd0LdoLh@o3p%R0$33Z4+pwv?4Gjeb8&~UbV zfwaz-jP3|0cv7%}iUf9Ca3o`d>TyXTU+x{|HL|CrGYpDTBBc$mZ7ckidN#Id zE_|tebc4n!lziLEx~mx-kXYhoeb#uvP;yua9h^X>2VU&GR{PUl@G)N0Z6roO##P|+ zQb3o<%-2138PvjLYrxDXg*)W7#BZ^?v%VwuJfxlHvte$oR9(N~E30PzXl9#cZE9{J z-N`>jS1;y+yODQ)U&>+8E>;8Q=xfz{sl4R_w$$2IP#0?g3EB|{wn;YYV$fRP_%2Ny zwe~N*uA*j4fcdbTP0QU-IZJmUNOa9}^GBJ3MxIDppTqBR9BtMw`Z}EI)ffuL!w?gu z5<&Kti$v9>^&P_SiLbw=6|Fwgdkd+hU9kAIWz7S>)|%;kBE(KTm$){wi03ew-0v(? zlxLdoIO;_1fpkmv%gLu$->gkE4q<}lpGH)`&)#XoUH(F;ZBf1;O0oBu3gMSaPh(~= zkf2K730z7YYVS)73&VGx55R&SeD%d4Kb07|17xLFlo&vQ4%}Q=ZPtTtOh0n! zJCC)K!}HOKM=*fL)>iOB-%%ZMY z&YhZ%m-x`E|IH_=YpXg%i@m%;+~kE=lyC-pcDQ2$N?ZA387{9k065&Vdifyjzo(H8 zMADCR_z}aGbF$O*As>77pEO)~5KG^_XoZup44tnvZ-EbP^W&3z9ZQGQgvJbNvdTsC3^1MA>`rnfU9?zG;lM+kwwg+MC(~2s zFx&gm=YzTKI9}mm9x4W?KGF_c9`F*DCrF9p;R}`LX{zk9JQrH-dYWck3Sy|QHhwPiCbn2d^#sNc`+JG8o`3$m zWbeT0rI=%v9E*&^2sz1ebQtfdZzCZaQeHxDhkd10gD_wXd7lezudDGm43v~;ykUbQ?|@aOnOD1cA}M4Ymgj?aQB!K|S*E4*0VF7k1;y1^T< zM7f%42&$7Z-!F1exw>HRjF?7Y;enaTlS@Yj#a0!Sk;J3s>u6zxtlx8gqi+$N@;1xp zc^8$}bcFMd9dIjs<13#B;V%h_t$gDpTiHbcGfq)1J|+LTblZEQ!rERKyP2G#e>Af+ zS^zNx!q7xrg9RFdcNXd>D7oo>{eG66_3|_yH1fn+1)NZLVgn5m=KJ=V2<_K#F4d-s zhtOne!72`MONT6HfE!UCR&((s(uy=L+6TMzY+_Y9$y&=l|GxN#;4_vup3$LM(#2j? zSJdA)4;kq&xSPCJBx(jGF?t1>BUN$>@FUMf5puG{0q|f*4^OOWg^W*`I6PM0Yxng>d-`+jFzRXmZI~xF}HPwACQN9}U!Z-BR z7zt+G;97DwoaMmQ?wTlbl3UbvF@z&Mh#hF7nHJLY28x@ zF(2W@D9IIZz9FBzBbkjnGag?pWP1u7+0^dziI4M}nS1|C!^Zs|pmXxIVG< zATd`bs?~GD{O{oSKtD^V+VZt2X-}067(WdHRd5KCMKMp5Z}&atGun?((EA6fk2nNA zM=E3alPl8eiZDpdssBmt4|w@$yO-W9r=krkX$Gg2S%b8ttN{&HT{7F z^F3^1-QA>Z2eJ_9%KvvaX5tUQ9L$d2^g8+T_pF#XUammT2v{ql$Ma( z@Mwd{k0D72N{;aIL_%bD@qo*lAc1|Rp5hYDm*I2Jv9&K z$9NI){+&zzf<#k-g8rCr4NrWO$$(As*kN8fB5+N;)Pb+A=dU6utc)p)wNGny0LIzOCP9fl|U~2Kg;ulLTr~Eg;E}&MtIhm>;=7d znx?G2Rj{@Y`S_(aJ=Q`P9L~q7MuWGN?DYI+`}k7T{XYG;5a@KEeJYfb-x*kkp*&=# z6gWbn3y1H}Kkm}TsJN74&ZwT0EM-jYfwEnhWxtejiv`5}o7sC5ctl|nWxE$`!qa;B z6#CLGUJ4yCI`=ExDjWE;H$=M@hKi!g5vxdND_SRG#UImgP+Pp!jen&(8v26B*R?u3 zJ{*y(Ed9HRh#Yp3&hY^%{JZuD_~w6(bPk`vM<|C)-_;}VPX{Qr3m;**Wl{zyyi2dR z3T;EG!jH8n?ilyIWO%&c|>|G-*H@y1z7R>NT* z5caYU?LbU)zwyr%e(&7fN!-}#k*xmr2cYLV9o2x$T2i?@=zu~yv3pi%vO4rAMB3_> zIePhJ-7;Q~072jihFet~(_huZ9`GY^9bFoX$nImNNMtZA->hF9AxJq9C}U;<^q)e znzTXHik*xDB{ywZSjt(XbdT#c604kqfBQMT$q+m@`T{RLo}@aRgB{yYy3&>R+KM!|Q{Lye2>TRL12VG1d=GU+dII z3z6wpftgU4^4KMxWPzTV!+WD8DvQf-CJv-E65+Za<(CDze6VP7=8h9~<$ZPydH7od zg9iW++$@ec00~!zT+HhjL8G}1oKOn38dqO?zqIo%)iZ-24lJ6E2icdMMOV0zPgcU) zHQSdRB)ANd8#{>m;}`e9de!pAmnlU(4co~zMS8V{7!q&l_%8q?MC6vxNVwRG42|+U z_Lq-hG~>IC)lV`XO6JARdBRPTdEM(g7$a|KaY&}_`R21pX-O{;R+J%~lwc^h>1$3I z!^31r?iXahqdcq5n}O|RSb2$Up>C9F1{Zw)gbLa5OI2ELvfxUocwd-2+p}KkN8r*1qg^g|oy&r{E+^spLa!LKsdFOe@lM;Q@>X7qZy8 zxSfmCUAz~J9AVpTuq7`URwo8Rr<>)ucjwhmWRvtxC9q>HEQNKRbo6Qrt zrTv_q(TkHruGbN+ohg*TFXCE#QE02Yy=CqAhY-+Dsb5Uy{+NjPAUWyz=if(8g(hX7 zH8$eV#;7MkKNn*;v4vweXd}t(t51X%&*0Yfz-X%`kltnxz7o?8cy+L`GN2y~beEqMy_VV2D8I`Jm*KNr8J`#3iM+lcv#O%}0@o*Dy*HT@e>DgL5SH{- z`|$_VgiQPp%q2s$dN9=kZMT}HUPb0{E@Lzbbh~+_srmgmK-sUkUq*_KuYm7Bb5+^2 z_rEd3;v=JCc7UVy@Ae#4tWY>@w`Z}^(&d*2@zigER3a&@9vy;E#Y5j%TuD(sob9n9 zjIb4-9A~cXMCgsWk;d$B^=9Vt#TOT!?%MDdMJ~~m`j&M#WM4ca*gSndkU5-dxjxP1 z3w;Xq{k}lJ+=^%Ndd=1aNKXRLQ9144!Z-0fM^3Ouk2?v`KGm^W-K2-Cxe~W{Mvt`J zHto}BF9jf{B8VGe)gc20^Yy3Gf}@`-|0756(ln_fj8nR}Qm)+C3NdDWjK9X$Ik3>F zHWx46H5!l9I$Wqsg5dhj%>me5$)*X*xlOj({&S-y>-`X7-~jD$lfFq&-6e8DK<8@+ z;In#2SRf*}1=?%RaBgt|E4bHhmk~h2g5blG&O)Lozht!SkDXC{F#hI`hH0u?e3T=|ZE7h379* zhjQdF#Y-1vkWW;04ioYoT7pG3ICMaO?!^feCT zz7f#ZRB}Fr>>3so| ze4cK(gP&QNhE&@ zUF|B zNw15a- zP8z7>UMA4qzO5+$AIot}+sgZIuW#-IG2$|KD+VnOCN4vR;G!?IE16}+j6r4P5lD&R zLt2?;vCK~pEfx~tj1NAJ6WUHO)vq{uP}FUsmzO!sb%vhDyj5HunsaNOphif2+Kf?V6i>*NNNek%N0;FTQ@4lL`P6>a7M?LKIc&G0F0O`yIorz zkWJ0VylmROV6bJ*gLfMfmve#5j*T+9I~5h`(z4x)<%+juZ!cP4%NUL{p`VPbk!dCf zG5wTLsIrcu-I>2!r>0S9zl^5xkTrIWMO+%}GRpB@T%sC6tcKhtxhca5yp_LErJ4w! zEvsEW47T}-bVBl~Be?=J=c%Te%^=Ka2gG(Qx65A@Qz-pA8qo{cf2Oxu*QL;BS%&IB ztM+e$%|>c^1|f4;$`KU@#migQGp*OL+g0P89fTvowc|TqnNkqArDT-YH&8R@;t}!q z(n+)Z3qlvEe9e$}_E38O8p649^J?LlScsCb#p5PI;lxw0u%CFY9$0TbOP%aW(4K#% zrquVNw%h8s2TO{*Kw%jTnMwk>YG|&BCqJ!y$VcYjzyNjp-dWKNq9pbrN3&ac>;kS9 z&m+qr^}UTT0}$*OwD8W5@IsNT#JAYF#z(uitQu=Hn)g1B2(VVv8wc5lc{gqI;-l$R z1cLJZ{H`)-6<_&n%;hSYj79f_Z`6PJhM$q-&_mrRR9V3i$6XBe4IM!w4Sr1K;l;4$ zB!(8GlI--W*8;%q6K0(UG>c)1Q}s%}ofyItE}AF-jgxB_8I_ z3%G<&7w4fdv0awGkjYuZNQ)CNQxA}l4U}G4wR=3WXkV(+7NoY)0tGwV{O?o@wNW}v zD4AG8rP`IcSe=!i%I2#uO^T^9ZjoFcIs}6uQS2Gax0TPC?Io z(zdl*XN88zy+oqr`GhPqDfMzQ<+3|TTwKOd7rra$pW1- zyYyY(Bu0^CGd!*hfpVS;ogDiBWdqQ7!P&QVI=TH_ijm}6d6MEDb?bsrFF}yP!KIZ* z&$Cs8=Z?eFTW0n0^r|9LLOQ<$nq^kt9lNg=U*E|X`zeP8ABlJTgnn4J2 zj%@to?TBlX_jBk3=U{W%SkYG)rUH`>Gb;CMEWrcAEIue#st}cx92njOF=~aaLTN4H zq_xvhz+A6<1MXjzlr|?$_AFJs-TGPJ23l;I%R7!oS&H z$(j{=ohZdNIUcvZAPR6z9|Q5Jo#tVhAWOIg&Q#|qAFPd~4o>GU>6%wuF=n_jT6skU zor2~GP3hG&JE{Q~n}Dyq-?NC-?jC!n&M|ANxijf6xm78dpXo~aOn4lIe`&Z$zOB{| zE-3ZEUXiAHpFf=x<$-K|LJ2EvPBF;{*Mbxs?(b`H(beNNUyIL-U^}k?yZtdEyXea> z%#BMCKd%!JC|fJ!KPCn4>S13`WXA44&|AD&KgJ9`S%701hX`FHi%D&d%4bWv$v;EJ z(LLN)xt~8dK3jHv-zOKg+E-GMUrWyS>dbx1XECWk8!2Oge&;p)mtv{k-);hn1VZLzI8PavGH6KZ1tir0+`JaCe z6wS*4!jPnKN^?TyVHufDQ_s^1X%b!;0@3rp6us|F^{gblq$aHZY;=#COQ4B3qFO?q zKYVA$dQ{&P@25R+2PEFj=_sN*^%^b>jZ0P5&$0$`_)9X}sE|@>rT%uh0R+M4fLE}} z2iHpLdDN#^nde|DyAc%Jz2QXrf$#a!Ly#nBGHQ057(J2vtjj@HL4mQdVKS(`dH(*Dc^IoCTIi4 zA6NZ9!xL-isJpszY75zA$I&^TnuhEc(o<$@{U;Q#3(FcfTSrDa<$4&=$X=?^S_+Mn zxa=+t4~@{#3H`$(xa|OhC*SF`CPsRjB)0Qt_BWialzR}~y4$hAj|ill*(>|4Vx>** zx9fut@m_K4BRef%!+sgL<@%N4umKmE5rPwh8iiY&OXkg|J!1tKNsAMsWra`rIeLsv**yRsFb z@bl7co&Sv=aUuoa#6DIrHGOge_U^-Y;6UZZHxaneH#u+B>sE>*xoiLD-xHYT<(aYw zYlS>-@zrn#eZNS+cb$O7B+NIuO0%Y+tLUFu{E40I(3|+YXZx%BfR^kb>%!}m2Hh&7e z^}=W3xD;Yox`M)Qv9RcTjg!u&m^pdr>`Qgd+OU&dN=yvo5+0bOvttRt@4W^NJ+7cN z{_>RX`UC~{cIg_X>lm)R@kb)^>$MM@dwh;e+KcpI^g>Y|+LpR24!c$liw%E2gwA(t z1zT!+ToYdT38Fo4R2IpZ$tAva&r_IXYC6{I8q?z|0S`U?KMyum@_rWin%R@Psf%Q( zD|0aVaUIok{RA71Iy4dEcD0)%(z~V$NMe$cz^^<1K-%75$v{fto5jV9>MB=}SBRL= zEI;~0hoJ`$iHKkyTzX~3c&j&445960gMjX*!ldc#!HJvymtP4%Z=T@{N}_I|#bz+N zD$2^D7iskc)id%~0@=~p4$ zX4pM*OPol=zW7lCBy>0AGBtIy8b{f+fGn&h;vqm8hFM^6q5br5{|o?ze<|KwA&khx zhX<>CG_|THeOf@~ebX1ZeMzJSkgqR?#VQYy;pM$UwOZ7nWx$AxDSJF#*Te0YXoai2TmET*YsWm zsl9ee=*xzN{qcr=YN$L`!d8zUh8Sv_+r{H9D~@NOO}&twaZ_?jQz3mj1zKsTXf!Tn zA$m@1H~v@7WC)_nf|PGozqvG71-%lOQesQ;2NUNxw}26E?cO>z%6CL}dU;UPUQqWG zQJ(CJ*^>@7I?_Q3SD9QiV^r!yVTW5(!j$|3nc?-I0)P!^fR3ZQ0S7Qb-4HcA@R&RHOfh;u{^&J$<`QH2ti|Ar>k@KTvY=XA$5usCl97I8Tq-aX8Su|oFYI*lFp`P(fBwx! zIItMwY7)Vmp~@^>+gY)2z6ypo*SU6G5l)<+*y-WnOuSdEk9NLz*39n_J`D~b2zA8p z0+2bnx@q#=v-Fpk#pu9dMcs`SjvqkGfoHMc&V?3-Zyg1mnqtaV{%iCwWfX!R!>fEI zCq+0MgkEQ`+CgF=7=u)!mAK(h2Hjx(=hf3TSr`4EN%B+Y$yG-?+|mg^c%oqs=-@(Mnxba{R>WK$nZ@Vws}&oi^yzgzE4oCU`LEeNSV670K)ch z4Xy@Q-)kIw$b{#b$Ngzr8r%VFN<8v{4IFBH?h+yylnvqe;xVgL*J>Gml5Z}Ndlb4^ z4D~DLGEd*09n)U%I=i<|I$b#Fbktv*B5pa*46m_DHsp^lE4#n*?|0p%dBRTnE3XQ; zh5*W?8(+=BJh=;j)Z>mdw(UEW8VVJ2cyX9GZyi8D8wNp#9WE8Zx)ox785*^qJTQHVA!pkkZQ& zaq?xrZ?!`$oQ6zbhwX-Fr@|^0uz{sx=EXtsO1hM}iL?+RbDnXnVeq24?107XoGz(^ z+9|3GzWo&AMe>!b_4pKCXmyN6$0C4}zWClh;+v~Lh}zZO$>9-L`RAExzb14EZ`rkl z?e3oFElbovpi&iGpc+D1d}l}jUv4+uHSKO!Yx2=2tW({r)Q7yYH+8x=j)(N)XwK{(Z|z&jOTVW>GmSum7{cF$ zUa>4Z)D0B5^3|g~^jQ_yM?fnQVyl1T)M1u2J2}{wdzf zpfC0p!!;%^@Ny+Z-qjGv0&kqT$cOLwtYZL4Wam7?x55+lBRPttDe%sU z2N5^1w^PX&5tBW*D850tY67T>bhFZKZX$^0O316NUCIYIVP;DS9!;@E@jpQi5A`~+ z&D*KcCsFqw0a;c{@LnB~v*3}*@>MCg9aB4lpKO*?6Ru{%`N@-_0v$h&b zj)$`1_oMU^jSM}A0Ke|`T%O8e$Amk@TDMJGZr$pp4n%~cgd3Z$;T)R(RVfnmyI5rq z81IZ7HI-Im1@wa5%lLp@BhT{S9d~B2>oog>jOt*>&iA`WhLkwLR^9<4I@P>2PUsj0+rgABxJnav zL<4kFyMqCefR7z+%#K|Qy+d@nwasaPLgH3Fx-<0>w%JOF#&%bvFAg?q_q@7WTZ{6- zOghA0GEsG5ZdjOin0f#&ldm3oT2)0p#-0JF>Z%+)_$~UT7KWbM+r6n)2q=l=3=!nInMV39lL% zY6LlmD*Xy*rx}~U#t-wY7{A=up|Yvw+oc>roC+FZ#xog)FjlA!0?fhp^oW z4Uo|V!e>EO;E&eG^8?c=@co4YW)#|}cC}Ve9 z2iiPXcm%oubOB=!8UGE}9_u;bhlp8pn(OhQcQ8 zFp|?4QpJwoOO&u;>lux35jNmp2b`7OBLv%=85f>S zinnZw(Vkcz#&6+KENt!3bIjaEPqz9&>yLJ3WC1LbT>HM{n6Pf&gp7?;h_|3uDv=V# z?n!{EKD0frOV;AZFkRk=#ZN1ZJ}g$dzIeWBd%N4bsE{3Fgz=c31OQFdKqpAT4d1@dJLCNRVAevLmE0oTzo^hplfYYz{ z{6E6Z1i5luN1_|*P-q^!74Lr^{R}Wqf|RN|e%QaBuP#M`7!x3fGzJ3(@h;B`c{|IS ztd}03?ud%-&NgA&k4Bg_=mYe%)F)067X^X0vlHIDFRPzelK}fqm|6iYOC{-PQnAv z(v7pqeWzTkR31ecFV`S^ZZO^(>!=qkrny0`N&>?DF0q`OG`=-Hy2fWEBHi*sOoERH z)zg;Z4$#{Sy-r{-_wVV<+Tz+t8EKkRxy$!e<7n-m>`arRX)ev8f_l|$KskH=3MQ)8 zhg=Zlpt&WYAkaMsQQsUBJjGI{kBxS-KG=`WE8VquZuXT-1!{9^GY=``~4?ED^ zMN=a~`hq2!f>?4FnguzvT!W+KCWpmXc3q3{+S-Pp!X};2v*D>9s!3j*;EgFQjQk+Y zqUz?imfzL(;Mdjj316Oo&y|1U56l33(YE^Gr>HhA@9_$ll|JpQpCC+vvDj zW%0q6Hf=(uwt3Yd=GmboHscxN!Pt8=&J3JZ_e@aEtWnSjEm=I0Jf^eO2ipar3jAfa z7Ycl_P%?|5$WNXboiUO6B=na3*%0=US@r+cWsxGhh%XD$|+Y^+Bgb%iAw59a2fR&uS zMfd`SdQfnlQq>|AO4-RGzFZ@lLjHv5P5%ZwQV%$xdub#3OSc2>Q6wPQAQKp`=qOl! zK#Wi2VveWPPkk_3J5iPnMwc;o@pfLdc5C=iHl)jH$lkq#m<6-&dQDJbVI$A4xdfq3 zHg=Th!{q~C-`*G;Z~7j&p6Mi0nz6=ZEja(*pU-^Ket#|657CzA^RSfGz7z3%?R+bE z8S}Z~=fjH`H4`F6fPOdrIp=Hxv>8GE2W4CFqpZYhXifjY-+xnL5<7k=t$c)ClSsUF zxLC1&DBCVVu1~&R7leb8gA(-atg%>OP zB%qi4FGfq)_LTY)vREIvYh>(GmBUsf11&$lB~TbQmaUioePaQ<7sZ=Pm*aYmx*DrT{Q>so{y@K*qJ)Jmn#al!b zpPzG9{v~@^gI;7Nd1`I9J}#p~WralimBf1HrWgI|B;xlF!Ey`qU;f1y$#%devSozG zxLsOgI8nh7VJ?jNEymbzg$#^pk6QkG)>2%3Q8n=@^0oX7DHSw^Z>o%+F`IOFUR?Xf z;9)Or9)N9>%`0n4-ml@Nyrx4=NrAJsngS>>r2esk8;sjfuCu!>6~jX%^^ktEn6RoI z-z4#;43fG2t`sHy7=FSRTE#72+A~A^?ECPFIV2%Dw;ezd#E?I8$k^xHSJI;+*9Rd_ zJ-iH`Wc8?r?r4A>Ysxp+6h*hW67+bGeyZ-uh%R%T)Xm79I}mGNHQD=9 z&ZX4Kj{bIHkEu_KJ;{wAV>ocNd;T3w2!@P<#TF76*ZmuKBT zs5RgpSrU9J@3o6JQzh~h+uHUDE#Hk1o#oZ7)sJShwXt@Dz_%xjgv!n&!5O5lvT05G zd5JQQ#Vpe0>`YwDO7>avaamkSB}SziTl5D3O@{irEHo?Er3qg99nxq1!96Ja(0WLU zGq^94i3>|0vR;R|6~D)dVAy3gEuT3nAvBW^YDuOiqTj{Sm+Uti1bSi#JUZ;hp{DQP@o}pCW<;a~LXZ{$Y-M&Xo=tYazn};VC znnk}fbFkXQlUMcDt6^yVd9W3Vw!_ohO6@C>YL*9_QM+12J>#8f>sB(uVAxIoB6^u{ zm+|gY{VD|YYoC36oW!AGY$t=bfZeEOBORuga;`BUh?8{nS2M0e5Ub6%{v=H$Z;>Li z)_|?EHyw9P%`9C1s((VP>kdCyJF-F%#FF(Yhbg;mk$Gg%QQB7$v$YrZ4WXiN)uGAf ztJdjG`qHbLCls3MVa!C@h83xxClv3P&Vh3l-+3`lJytqv=~+WUkT;G45Spfs3&X3RBoLiAEhle9@! z{6RM~@pDUFQm1(Fs_v#{>2ZI>F7#_Zr`he?oZ-l3wHDs;z{7wSY}JRNZteSg`auUP zZLMoRXoSC?k;aUSi@9rUp-E1Xc*D10kPPF3H>E5W=n{O!dSzj%Wwv|t{QQ0wBU-wSfs%PL4T5WWVs=#K+^p~gku;p82s&2A*@pZhe_!Gk`7GHaqxxH=w zdMCjL`n=9LD7uKgJ7I5CXuEk8|{B)J}hNmx&V>-+pLh zz5H{c635s3qQvbsVv2Lo83W3W9FToMBp61|sLndJ*cDM5Zs#bU2k3VV0T8%LjI{ix zkP3%%^%c;Ji=K_|O^(GE``52#9hl3Y2LN!j8guz~haPnSIWgUZ1K6Eg2h85=_I8%7 z+xIv_a8t{m*LMyc`yA=OPmjh_YGK=#y50EX^gmx2%CzC`Xs8;9E@wj%i`E$DOF6@E z8zmC2*mx?HQV;30`pC+5;TC>nkCKPhc9c$Et}8z%IU;PU`aN@n@iwtuEUIJH6jjW4 z*Hy4idIz)k4DsS?hR$BeQhj;Zi@l2JKf`cor`+ZxFQ`$N)R8(g6mEWnv0_l7vqNvM z=?>phoCuY{zgIo}(my%7ys!LVXTOX-RZ^-kc$E`KTLP^Bd47rfgMauhpfWZ-S!i=L z31;clCX-%yvT2vLHRh4h^%bMB_AFr@u^>FWS*z}-8shni{C(P6yc07+4m_K_li*Zv z<;_;?jV`bFm7kZyZNvKAsABN{J$UEmNSqa=jAGl=iAGCoXLDu1Jq9j9En zt?SmE*g#&)!v^`3?Lr}lFQ`BKX=sL16n!MmCq)CFt)Uka;|2U62uv&1dVivJ!Mzvb z9HXy*YC7J*zqt8w;63VNq_bYl_sT<1wbGgxeXS-md43$b^XQAfR8z@#V$C-(tn4A% z`!FABe%*cKA~%0{ad_N$WX`@70A|DnKB9kV=etXi(mn^1fLywbucMXCWShZ*Itf1Y z^4*hc0LYi0=1Y;7H3i48_=%}sdpSke*5O^B1uTqLY7Rd5Cwc4q`Mr40=w(3bgG|%` zI#3@WN0-mj#+ucXe37@WcKMKWwxH@-IaLxzep1ifGrx?hote?eb)qsD^qT3U{_jP;#-DJq3PU6 z7wZyiO<x8(dxf4I3+#q3>&IKSDP%yj`c11ZB%)kN#Ad>=4~WJg{XNjRI~e>A zJ~1<8Fg%uyY<{%#W__{K46OmNV>7TFmq$SGjECQvcyc+JR8MoZxtq*&@J3>0hlCt= z%vpq$47-c}t3IH5&S$D)KQ0W7NRunn#$r3I*-)U5L2Nq|lNIzIs|0J^b6)x)lTSs= zs_-#jbo?u_c>$i1aO@z^$6QPs;)M*udiW z#iVNL9q6dF#0nLBdUTut{cM_;W)Gt6CU^(6O3s6Yb80{3#8F#NatV#4ZswU}a}HnO-z_$Yt^7)v9_Zdi(M)84mhdpT;cX%Sf)I_op?GSJiaxVMY4JYT zIfL|DeGx{d6O8KT6($l6%%Aqu^(dQ0mwIHC3`o&=*o4RVY8jP-NTvF0_4xm4xbNlO zE#tFaj&ZwpDE8|re;-CTwaO4e=puH!@C|H(`IhP5&Q2RoB*e60j@wE{%3@?hY*h=bcPvdX ze|jzgO+k@D*bA&Ymsf~$+>WmH@SNnEi1D=Ic5567tg{+Srne|xn=1~j9zy$uiB9hM2n7wt%f%s`==QBdg(OwK0qU3EH@%AQoF&kN%O zL3yjO($r?b@*okL_DDO4Uz7KIono*fF$sGR`Y&lO!2mBn(7z%=A^^L`POdutbGGno^r`+WX+W-akgOOqXfGWV!y4kzI7A*%OPB2`;~Y%r1cGztWRchATra`cb(m50F)yN7>7?Lg{E0LHVLOQA2qV5cplaG}CB%fNt4mW-G%K{h9W*+8ewj44cM-o z%EbGt#;M!WwizmWxZ|==oVFE6V+Fq~zJPe!SA%830=@8=&R$@%+bG{;FTw!UWYM{* z)xR`Aw#7+%B6}yo##Gv6QzW9x9c%Igz%A^9+tB;Dv8*bzdFv064_#DQb`~S~0B-fiWfAfk6=J#rzo0IBasP_d{`4ywsy#XMk1Dhot(i|X zz*gSV{Q6j2tlKZ|+OgqaX5CB}c-}G2D)Sn6j(E{0*{6Z1y8X#%m8Ga7u~mE!gma5_ zmk1z=uS1P7Pvqd1TO*P=(X*i@r^eO^mpNF3J+O`?Ko5ohCt12WbL@(5-ktRlsh41_ zXYM=Y8^B!&Uu5zKJYqRP3E+?wGr$QPbR3Y<=_q6BnG~9R7yhMlntd$597G{(R7>%0 z-Rs(agO9p@raLg^Goca}5}V{!2q2wHJgFT>Y}OW1E`7f6Wbg%>`=v}pvUmrVUAfx&zy=Oq0q>-j#6sP8p+SJ5ZWoH%;--}HnEUB|v<-b46&#zlx zf7VXKrrzKqd)3GK$#^9M1UG*X_$A(#PC{~UDaC2|wXPar0ON#2Ui=p0*Xf*i{w0Nh z3=`Myn)zbf01sE2+{#pO2naX|r)++vYl+s8y?7GZOd=sWaBk&5K!x>ig%2o-(TeeX zp3+sl@QOsNzzJQIMH+QLpwF{NnT;TbqZ{?JwzeC~t4$I%XTeH`#m}H;7I5A@is8%Q zKD&vYE8pv) zR~Qipb_H&zhW-NjxiKf>Gwra~>io(zJmKE8iNml4P{euqa9Xf>kRR+CoM2=}Unv$Z zK{h*Ip-^wb2yQ>WH>eCJT3|#`+Bd)*l?T#l$5$UcRc-`p%iK_J?)IM5BLc_-@Bs_W zqQr*zx(uigh?R?RO{q(7Yt7HgKapoxbrGo&16hb$s=FnvbPyH0jvx;^idcD7)!NOf zy8xvQd+_HQrSLKmtDjn{{j5BbHCTxAI;!ZWM=r1$V(I*f_lzJ1)ea5Bpdc^ zc$*A!GT7f;qDrTAQ5x|`4mHl#h>|nGRrAYPU0t!@qViE-i;qSk2k;^d627U^0bLnC zJluTFRZDkqc}H$P)$V`|;jIFuRjz;zq@?4|fB&#YeDKtUcFGgphpDsynie;Ifki6M zxIbD;R@L2=6?9iKW-dQlKM6Wo(I2c>ZXZc2m)lwm3dKIjQmxpBsv5EE!3=QM(bSg$ zc~Ehw%ht=U*Buv-h=#|Zi!DA_*fKKqgHo5X(?xnlSViwkFJ=D^8#v$Dz2c?nCvV?o zx@kjjY!ur8ObUv`>aB#d2V8jI$GSOamry8ZWYzPIZ*9~n^1h+OmfpyALKu6Rn_wt- zDksr=-=g+&K*gJIqA(tikC9J8T)p?BYa{J(`jJgMb+%j~``=v#G;6YZ)t#=TEOyB% zx8ix(A0KZv-E5fQ1hwgWtVzZT9d_bgYO~}W=)W`b@c`m_y}o{TvIJ%<724UeUpvpd z+s*g|fVJbKFnNjK+!mf@(YL%}D`Kv(%!?=Xs;?Zqy0o1#I7tFvBR4>@03W&EL}EkF zCuJ7Yi3mB!whO1HJvs!STuJK<@fr+JGL~AO=ayHNsV{lfmM83h+nLy;2}3LUif(&Oxm=e&adoN)s?I0 zlDIg^qV--E4W#7BkhsoOvkXOl@~y4>&@(7cOy|_Qov8wmx%*q&P|8|Ad%gIW+2Sq} z-FUOtGZU+1=Bz5`9awZ{Gb>3Gzz#O<@Q-!+7wKEZ!7i!f&>ZQ8TQ3?0~s>?Bj%o@^LTe75t?SGS(@%{OyI z_@-m52R?wRm36ZS=0?PoUP_UJy%ek4)tYD zwGioyj3!WL@WLjJ$rD2{PrnNwYgy`>9p4t?g8{C-p0t2;A`eROWL8PMm*R1X43ej# zzU9!gU30*j4TE>b5M=b(dK{@7&$fKqZkiz7ae6*ZDW<3&V<$B2{vEIQ3B#NySkK8=!Bl#5c_i& z7q|ge9W!Iw_E@czX&Qu{VLs)Ragol2VCLA?eqZ(y){Eel9FvsPCGzDlAiQ` zSTGhFXokBBAP3>x3(dGSaL!CB&KGX%#oR#&grKMG0XKJvDbXZkIFIez8VOsziD+F6 z;Um6N)Ax@dY)`ua-EPg{3aH%)g*I!~>~G{G4)NESUc2+k*(zw6dYjrLAN%II>ALC@ zTb&23!q*UE@S3H&K=IJ>^hcVdC)R2|Y5Kx!+SE1L*6GGA&1?W_>B+)Qy>tXS$_9ELvhEDMyK?Xl>0z_3|;A z^qo9)!?(dQx;QzWG8Tyg)&-b)xJ@}(>knbi^OgJXe5aE(O>S`lZhVMf^u}3vAyRFf znN9({)K;ak_uj+Oh`|$zS?0z2NByN_z_CdTX{U_xz^%CbS-{^5L-@_EH+(A$&y5FX? zVi`HNzRP%RdOG>({`qxTed?AMYK1hl{AbK~+~-(+!G^Fb-B6ls0#2fCedN>>To7`O zaYW1UrSQaZh~GN8;dJI@h9Pz2j5~Lg6d?;1H)69k%PXtwT7<7&J#gjrQt3J2tx8u4 zDy^Jspa_yqO=6YcDx9}KhFry>IxS*+Z?Umw$6-PuZ$WoHo(j9+g01=-udHlv^3{_j z5V~rn-8Zt3mPl96uKhbg#$PIhLq7ch%Fd4YK(53JEG z=486d9a>P->HT!R7FcR}tMFjgRAHfDLU&Zt#9)Tc7oRGwuPYbL?Ks8*;2!^h8+K@k zU(%gO)QSQ7tftKB7-tQ-V-|Q;C%(r)fbk01=z??z4qfIq9Ex(P*&Ws zmVdu*N!RY1DeD}suOKlOe)9Xms1*_zB=HF@dimg7;+TL7DK7JT?6osmx3eC)+L|ezcLF`@sGCd^WB7mmZP*iz2sT7BKrvG^PkF!YX zaF>5=pV|IIk%}QnhWaaC4;BeoB}#fRSh=eH_{{7y`eg3$;^7WB(S-Q|-V20iO$M!i zZ#~z&%`e!^CSqs}e-Z^?jo^e8kZi%NL1fBewZ%*M;MNRY1-J{)e&H4589oZxs?kLH zc~_mtQO$EOf2>xt2f59>t4zl$wL+Rqi*w?k^Ado}V~=8jdT~r})YK~j6CKE_)WCz+$+{D;lVr={!~;=96^+u72zEn7P@vP-4EJ+-47>2fUZj%*(nooOu+mZ! zCQf?fsnl_76ql@GRd7@vYKk{zgVa95LmA8j&j;I_VyNvev23|#nbYheU^R_4*C#F< zip=4TQ=6yabBEzR$NejHIa5QSIZ$2o+EQ@%(Rjos3lC*ykia4;w{~x=zRe?5(Rm2j zW5`d@;z=ekPt@b#F92`{kw~Z=cPkO=FN-I8lu?n@_(r^Av;~)5;?`-tv}P7FRoX9D zjSa>2Vj+`+Nxk&%sRjKb51st<2d&f2s$&+)Ub8*Z_>Qy$k3MSEb0Z%w{&VSeyp855 zyP<8`?b1E?=&CX>3+`Np0=TprMZUnbi;j`@MX6=Fa$%#p<(k0uC!MFIT-HOo5=7PZx9yX|FY zp>oMpN9%AE7{WQd#a{}fg}Vk9%M>wao3kRXgA)kwfhPC@!Y;74Ys6gGuI6;C{C-_P zZYW|O9_$~rxxLw;N5FYmBHp;_u!E+rJujytua7+MNz=bf~R2>Q#M!Qa^g4N00G@Y8mu4x-K zyy`4{8@+(v6Ob%6>Fs}n9oORA}5BW zLKJ|y8y06%;m&;5OdM8pAOHg+nKCtA76i$0dtu^xk#|m zt}0HEtb-~-gR$1fxxP9jBA*Gxfo1D-Rxn*GDG2^$=hE|xr^$d@{DYQ&h?vM84@t9erhHI;?LB3y}a#} z7c}W3XDOxc$7U!{zL4s_Myp^{nd@>YTAo2XRKXyhO2k~cfTZe!;E`SHUO0tUElcYK z@8g^4^^K41W?faEG_#F%^KC1d0&A_6BJQ~Dt4?1YhtImLco*`e{74&Ljd%7!al)JoQ*CMgIQ@m8~Lrq9l=%W{PP=fOYG!=_odD( zKH2#Fd15X|#^e`=zT-oN&u#>*+wZI=SQ%>^z?Z)^&jp8jBrD>6Gh)}8Slb*d|4?D^ zPF;F6(sBKaXHf;gv?MzcsMAAHwB_<;Y=^&Ne*krSF)NOty<{Ukm57I+IiAtmsu#s0 zM@8d&9kLiIjl&QCB||N(wAg)gUR$A0vx@h1)6mSUPN-OIr1fp3N7cAkkCKWh*Dt)- zG1P){C=0^VakhRI9^{%we1pkA!%+6SYZ=X+pL%DF?lk$50olOcM|hYU)trki<{4ld zw;k;zuN}uUf=t#|UV}sj;PcO#lbq=zDri+5I+7qWe?~`joFNsSthBx_hI7j(G|-8g z0l(tE;Bk|T5zX*iaijRS(wGL9=@h>502=85LT~*pY6wXhVUov9{hHzJ4k<_pmA@`! zeAymhcDuAs$J9trx#p=7JT}u~010U3kgS~2eQ$i3ghHa@>&al)_=m!h*I3IipeEA^ z;Kj$s7bj+|RerreC&^3Oe|C-_6bPhyf9zwL6UWx$LnyBeB98*&{*eD%X6u1NPNn>J zr*c;Q+6N`Vx`ztqQH@M(_P(N^s^j>D{86Rdj4PVVLC%Bn# zq}^+wGy#K?+HNOpz^$tGOZCeXd`U+YyOX3aK~L9vhPZGg3DhnNF)7NAWBJ51QtWS=jw1Rf*i$OMX$1hA&hc-g^eZqBZ0$%?G^_=qA6X~Z2G z=jUIV5_2h30|&#Uaqb;R7)?h`hZ}CidE)}DwQNJ|x`>Oqd|c;xCvP49c~b)&eM^(i z6MoS=#qEKu#?R+Ar>yFmaS=vo)L7l&#?7W^m$|11%a>g5JmttVOsbrqGStFhb@U zrG(ZB$&c9!cp^t6TbVFDQ1=cdy`fZJ9KEnN?XAgCXKE|1fLgV4pVypZkW6IkBXe#$ zQtp#O&6D2s#e`xG<5mERont?hkiKQhYIIU3SJQl1`x7d47r84gQJ#J5R?qyBl-dq- z%^?=pVI{!`(<%IN;xkWNoJ!N|{S15WPTx$79D2WQ9|StB0`3&}7(&SHZw5TOq19)S z^u*sAUM?@h@&7z*zcflETU|fDCn(IQ`Y|0CCrL{>05cl`Acwn(uXZ9>2e$n#FYxUe zmbLd4*0(k?QE1$aYU>+T9aCf0OILlt%2rR0nXZR9LQUSP@$dOwxkE;_b*{tmq)zLMtxjQ>jq z+S^P`*k+#0_Ov4r?Ocu`JaL(r)J;AqyvA6S+SkcBIA2k)6UuIeFUK>oL_JIIe!KnX z%`^<*LKUOlY#E?KnmCz*j0Z)C+MbRUDNb6N&86n!YGThuJ~ z$jc2N49SMKzNvG^pOn_g4{gJ%2wRWYZ;@~2PR$7q!PZJR1ciLxqm-n0hAw+Dtit&= zA`t-58uKkkSes>V**3Qvw3|V`K=7&gP;S<>l<|j%=|(w7(A@>h*R5DbL6%iJ2zqyl z1cX|rSPACdS(@oyu%s}Z=7REALSKtvoZ!5?zZ5dV5;03q-A!{z_dA~2py6aI70<9O z7fZZ(t2R(mTf0veYp&`L8P&h}-YV8gH~7-OM!gn$Y^J$yO&Q4s{U>I>zI! zLGpQx6UNqVHy^X)Mxg!MJO*RVygcW)jZ55k%%_MBq~e}R4dBwS(&ic~q;6Z1j5VO~ z__hm*{j*I(J2Z&w`kf=|xNbW}+q>AWBl!yu1iHOgxVs<-fLw8tnm6qX(Z+x8{5QKJ z5z2a!RXg+rB`qDVwF0k`eM6>JT=0cA*ZGK$A(LxAV~&(9^`&`TT^BiZG8Y!LDiP^Q z^73wf=Mw1y-&4dm>VS)jy`g~oqf4_sWn>30G`VW~$ni|_l>{G;PvF^~gcYx(1B}v2 z0`M7mAhxJZYJV{s8ZY-AQK{J`M`8Y5>Kgz_c~dZ!D;oMPWfBor6>>ATD^_Aw1n zSn^vhpjt?#nqprceQ_Q6S@~-J`Q1sdeOaItk$&~X%qpoMa?a{Y+>JM@BkbZibbbYD z`1^(K;bf*l>*eK^EpUAv&11SG~NG z_R7oC86hOB_AZrKr5MkcKZN=lcdHWh!B6RCA}L8#@aoNpsS=r!g$}Ex*xFN@)B%GP z%0)8PKA^iu8aN86M0eA?j9YTj(z)X_J2q{Kt!`tt6Iq=UtfL^j6)=crMsu<9=_yBP zv2m$kNV&i^_A2zmEmC#UAR=wqOgHD(U^jnmFAt3~YX3AyDV0I>nhIb~;>lI3Uq$8` zi^N=kiOMOXI?$&5SqiD8lj_4^>^f9;VD;pv^FO5o;9AAfppr~y7c)(A3RiT=s~N84 zwh(cXPSOj}lM$i@-A~a8oG(}g?+e_sPU$X26)L?BCN0>)r+{CtYvp5sGM}f(Gewa>v6BM`-S|0Ti!2N@9bfNsAznkHmXXIZT$3tw$_R`&{*uXtMhrwg9H7C+whqZ{)&93+1;Dn`Q3=9z znaEuami`bpPM{2}$uw>ZaXqoZSsrKSx>OU<3rGA-@Vbr-#FU7-4!&vD9En}q?31hR zpWkcr8a!2I)OtnkdSadi{c5F!6bHd7_zJ*Tj%;N&6ga>et7vgP;8`?Y4R`7@H z9k?y}YhUf-TuPn7jz!}iX@vweyMXer(eos9-c@;Fg|u-UK4x7r+R*V^Z23@|Cd_=$p0&eA*G@-F~vLQ}6r);MZiCqmI5z63WtnC=4 z^GXggMt58b&#J(nt^G2oh;YGT`|$&)Ox5n6ywbhfHc)bU*?FI3Sdz*9y0ViHWsgSR zYqJL}r%78uhGp?#>+0qaI0hda)k5k`ls}YXHro468YNmA(kO4hDj25yxQ6c#J$Jyg zdyGn@;{{!#W&>Zz8WqcnzHP9w+#g8Sr@n|HO(|@=*oDh=2`OwX9t^`k(S50nd(hZDGh=1&`vgHf9!| zOD#%+Af3Ma4B<-QKuPH(eQCx{$wWEAfUj!^Ap3qK6A)@_YyXU-Fk>XrJd5wAR-UCH zYoc|Cy_GdMqSH|)U(}*})wQp2D%(O6gEY1^`pa`bNmyVdACGgvbh-zfyVM<2?SO*d zXfeoFxRyRZD9)2rckW8AX!q>U;`Bf_vGGSvaoJxxnORPVe#HE%2zv@GDqS^rg|Cg) z8h4OgGXW2EqwQ0YP`7)^Q9LjX;1Xe zW(h&bR&7iiGOBG-4}*G#WVQk;uDE+|e;5?zT#np*7$`is^bBLd6>|!4yhJDQb#mF? zt*CdM$M}jUl`g8cegV46lQeqyChAFDl;b$Bx|UpEX0JaT1td0NDz3wVwf>$V z{EIg^JaV+Wl42laj%fmzRa2Ul#JCjdL>kPe#@%qX@5Vnw7kByc>dy|xQMaR}Hb$LM z#8x;4#Mi4Bz|Ab>fA{WschRy%c;mB-u1KWgTEUpV)bDlLoC1odD16PKIzv#^IzmQ_K=8`Q%j) zseI^_L*4w*KM#VZcC&6m`?D}nMm|BZYUetw00(+776oP~r3m=FypCvAd$8Hr994S_ z581c{M_Mlhr|Y~;Eg%?d5g$db_OBfc5>mvppcO|F2gSn6jlIyuJ0QZoO~vo&Xh&^3 zFw8nUw&C400^&Qq*kWpi{1&m$LkKsJtEQ!W13eZ=&mPrW%17v_oJ?mGP|gH^uL6ru zLyNzT(AK5n3}#sr#>BwvrdjkRe1~1j>Tb{W8lykR*RJ429eq6%Ti{c<$w+r5q92G{ zjgOqbwCD*pXj*VwaH=NVD!(J%kqAUJ7&d^}#7A|f+jpmCT{a_HSDnYC=-!1*=hu>b zt!9HuZ=UZ+*Lk;P(3fb*NJ%8MSpa(N+y6?vwL8cJlK@BRi!U(eu+@9 zl&Ld9`ufR=Y}eDoubSB0^=73Rt4h)X3t`{$pEla?_)rpcGt!C!-;NWTZZ>+r`1bAsx17vCD)V!;F4?X+UO2u}bC2_dyUx7ds1J z{G#@|0tkzyS>Ts2!1q)XXx$h90(Yd`wAYJYQc2Re9fzM;$}|1>^iuZBS_u=FRW+kN z+;_;OHmw2sV6)dP%0N>%9kRbo+JTT*O&G86(^BJKKxME60IzJ*ETc}Oiig4($rnZC6@mnmJ1RnZRc2>;D2gN6ZLKDiKPu<8B4FDzz9XVlOpY(+ zD-V5d@yRl9WW98a(kE?fYm)EkPI zb=e{-jz#2RF^^_>*qC-;nA58V545Whr``im1#1kE2BCUYaEWfK0vLOr3-x1KqH4 z-HxHONW!z+bxhK{v&7vEM(MVoC|t?XWtKPWdAlJGJ{M^xdZ!wP^4ejspVCx_Sm|aZYmy~bYp3rdx(inzFEEK8h~Cn;+Ee zndtcW4G-xg80Y}3wmFGVZDk^%7~(&qa$olY&Dw&U5{#}-II8?X|0anGUeg}W^h)oF zES2{&EKU{)j=D9_SxEq)9-e#`DeEV6Se_q4#dgFYLy(ph-$4_rFW6DTuHC|;fU#n3 zfy2az_<%3b47C+R;Xn0#?HkGuA1yhQz3RBrLHf+jj?5Fn`3W~S+9pe#{Ru8vrsk>M zno<=EU)Fnx0z2tbU+TC~?a-cd`Fr}Ru?mtV0CP2TAY5PN5T1O0X@9}jBTZd=nX&}( zp`uA~r!s9%?OC3$H|jJ=|4xnT4?iG7EkS8Xm+|FO2`2dHE>2g)3GnBi5_e2hsO+iB zbzoCI56H9x?4^N65sKZswQCo#eieVT1DsAnJ8b_hzWRgDu@+N-eX7j?OuYcOKO15- z$2s?llujoS2T$yz21i5sZWpy+XA}XnxA=w_ssM4tUZH4 zQSrHYI$e8hIXOEYyGaIhn7EajK6mVcGpzOL|NFz`(_C7Aqr7P^UQJ#x zxTntU(mN}fhw3XkleZ+)z`PY{Amkk)#i~7#-6)F2oi$;jAr3M!U9$sw z`=T`?RjaEKj>(~lzv+9HvX4l0laco@cQB!XL!a`!S;ob{ZTQO9&+uVmYzY}s8@6#} zHy@N%Cm;}N)prhzg)~WqATEo!L@WBFHhYai->}(vc1%_q?Uub3YhW<^1cROP&+n$9 z#FsUm=2EEiG8;Lgo%Juq-|8S~bKJJ`(sbQKG#GN$zt}+1{(N_{GlsgWmin|;lLxDe z3nR(1bFwLeDL#HSZ;3$9KjbwYPHS`QA2cF1ka-!gY_BE~bNPrr4HmhG*sz|94ao{b@|7tbQDG7s)gPk_ zQ<`XZP!O9vvp>!zE*;G-5wx8{j>k0II4Ka(b5+uL{Z|;7a=48epmX;ePX6PGfALd4 zDV*Wg93~ly#DK=(WLBn)1$4mKV zePsI>FNa&$#|MLJgK}M*%{YJab~L>BbsQG!cq0I8J+{~ms(=A#JZwGA!sFCSyO-D>Mg)wMp{K#f_Lm)1#J zH8np9$A1&ut{R>hx<+8{G6b&AQf`@9r+0w7mqkww_(eq{CZH+tXfU`U08lwx6ithE z3@ki-#Rrj5I8`M8gbvB(iclho=(rFT748k`^kd?FCeTP{vfNdIuIWQ zqAP9duK#7*EoIHg8c_;6QvuEfd!red^3HeDK~IHAtk^N^R2-b;b$MAwiH%3Pm}qLK z-B#khge&SuA%uNomAdUK9BXoy+;qMho|R2=1FhEpx$KRnjPjLtw8J2vFZt+Eg&{T$ zoPmhFYAOW@En#_y8zpqO0x_qYII;3#;7F9RKi;&3*IK~3)(2cK>w!k<<9&0`HdXfo z$7$!Ojt{fSCYhBltzrar@vLx=;g}7Pa9cFwv#<`FmG>81aMQ?&sf9=foxlnw5j6^H z7d?GT1u^*AK1=4h-pp03ihJIF*`N0D=Dd2B_MVzW$&M!%kB&&sj@eP@Rx3h~d=Ib@ z3fEcL<`yW=cVSg=EvNf3oT=H<45QC7jWqckepm&FJd_J1Bx6DdWo;H0P1GnKX`z+_ zG;pe}?gG1?U#`47kyw%wE0fKt$Pc#WdUve^v^nsg9DwkzF8HD*UobjwxsV7}FD3p9ZEIS-2vgEXu-epd!6 zH*e!lbafa@d1ul#%|*2*EZeemlEtXpj!G(51QXHd0VVd%ryUVZECps-aHGXcU^3k` z)H{fiZ%NgvM6q_;V;GhYohn$jmNm6t?~%|(`-@Es>8^_{RD6Y=4ZQncb z84l0xrOO%(j=DElYzCo9*Q;!XUp z9sObGsrt8BO$2as7-7{2s|8M?4gQY3^6^tqw&>yDs%y@hlDed2yqBQ8^Zup+61N67 zavr+_MK~GZUs$6rk(%q^n+H(4tx75w-_M*Q0(3ZK6TIoJJoTyW5A2^F=f;TU z_7il$O7Z7YyOSN_{DlMcu2<}O=Vm8ivbmE!O4eF_etjEDhy6;%*OIPsKoC2j1&O;- zwOkgNRRqNg4^8JVxp0{4-P5gOR<>)}xDBJK{669jpR);qI6 z_dDLgT4!A|&e{nyt?;u|Mv+RXY)Kw%G34kTa+*WCrt8wo@r*UKjcr*$ttDjxY5?fHv?X083Z@9 z9C0r<^bASj)-&f6MaIy9 zlL|x+C1I7kwDmoU^~{E)oy*HRKqGh`wJ2R#7ad~f1);XTLbv{Ekf}J?tF6ixk8XZu zb>8RIv(HXLJMwD5ve$do_r^*_v%?Hi(-Bb3<=Yw|vt*0NRJ3Y0cVlOs(zw{n>9N_P zyqd;J6`;MkQ6_15(`XrI4R(;7&T5)Ru8r?+{R?H1kM_KAYjm6H&-1SjW>H{ii7ZWH zoImmGF_ort|HAbC#WA<6@>k}dRfjT<tu2&x|t(+S=BucT~*pOTcXgrFN1T)gx1!o>y8YN-!^wy0|W3A+?t2Ks|dkwtUb->Bf5TUm~QLF0#ES_xuX1(l%0oU@U zOOx-ICd?c19V2r@w!V!#+&@*%Irq*7mriz+V0Uek?nPYFpM&IP+++U`x!H1soKO4)G<-Pi3%;Ko$=a-bcyyliEt1qn( zTgnvXCG(UAe;oBJ#$$1DMMpz@JzGZ`!f6C5aeW6}a)1_lwYVRfELWS7Y%B9=|1QD) zS^22_JL{D24L=MPUM+97vHHLScFz(@;!8YQ`3~@XNX9#(g{RzAp1F#nLW&)1=rV@7 zmp8n|2;E7T% z=&vEd-9n28&G5^x_C4{-9to%`++87#+#P`Th8IG3dtM5L&+LKvJ}qB6*{h- z)Fp*yG31a~GndgojU(=K_#*F<1U2wr>?#yAzW5 zA)W5RCN;iIj#}ESwf$LsDUOw#jpn=fQubcsV%Wpy$pbKm?>yN7ahJmF%YrxK9S{8r z`b@NC=D{+l4z`4?@2^K|Uiu{UnhosG>ZR}IjvL3G~bpqL2_e(EeGGtpQ7U(#o2L1S~7}Zw86`Ez6 z9Eend4p${2i^1>AQ#;%rVHWctCP+5ndKIy%Ra{ zk)yQppW^BHUPS#btn=idL`Y-}s^jALcT?PV5BH0vstuv-!qi|6Y5c5fswFGAz|^=A z(yb!Rh!a}JW`!h~@;a2t2{z4WCkvu6GC^OOe>W{(Mq0}gc#0?NfF;Y;Q!wv}T0QJ= zkr#Z;btTsDaiT!q4(7bV1A$MJ89A4yK=&ZVJ$iqRYq?L&djr4zf}w+C2@@^a&M(h8 z-Ar$teovMRq~qpuif300VP}8QT>E#$T|;4Fz<-4V?U<6w*N!hGlz1yh1)ZU)D}cY; zuB#}Ipd(sSQJjjd)1mOmdWY@qKfG3FYGwNxIg8!$q)pD=2s+wzZlb;ZfIo4@Z_FLl zAvrs#yc$lUmgxLFw=Zo3XPIn(Z#EQ%Z>Z>l>PZGT$RBL>!cA7@MK$TT>*)cb@xzPK zoF&@HQVl*oJG5<{`rW#;L)F>Cd_SVqHay{4bZ!4iW)W_ZdSd;x1LXe@7Vki0BhiwH zN_sA>HBL=01%51W)5KKfPVhxk%xTquL}8hqKiS&5e7j_asTuf3ZV}yD#Ir4??5)tf zAcus~SFXEhFf`NLQ`TMKpmVT696>$thV+3|cjn~bx}}pGX`cmcqmG*RA>x^A zHE+wwb%gpc7~B2;I^hLiI~jFyG45K4SvTy!{GF(|t;Or5dw?bpFUaPzh+w}HqLfj^ z>fUCo#Wz9`#tW((Z{9jQfD6ZPVTyU^G03p!UsRpnYII(I@G4^Ty+`eKy^tU~-wdvp zjzcVG2Cs8p34PPo!j&q*wag$iU9e4FTsrHU0M1F<0^p%K8|60bUsm0$n%zdJ%v~cF zha}QhX-9oBe%4qUnhF(^mkREhd1gDrU0PT_u-Ab9y|OoVOMr!rxWgOdka*(s(4#^3O`4%nf(gD!jS+K1trE~c_}bFYRI7x=;q zmu3xL3Uc9@;HhVBoy!(hQR_f(TT{--tG?9kL|{SeRPmhZbodzap)H0zLjMIP;~tZ< z71$n5$IZKz&*o=J%4OpLTy?!nJXa!y;NF_t=*HA>f`#A z{I6IaY{w5c9F`M(yRr3sP3ST8zNg&6I-%l!$b%cTNjrxW^O}dR^IUvcP-3#v^7DHU zI=v9m7&%Oh?Sr-*=Q|kxZvVAIz&C6lz2NJ_#^5492%#I}5;nepSLvsqf~tB4U^vA~ zhj5F4qq+dqDH6g!tyq>>e2^MY=~Jgs(|=KV9IKmHnX& zl&|oWyT1^6WH@^3UwMY?F&|9@P{;r&;*wqLwbc5Y-J%5&USWY4^YVCfj6Dlsi zEdipxaI@F))7l~00~_Ahs;*`&+vkQl`SsgAE&snqSgb4R76MNE{)yQ>6e=~6x z+|0zfoDcC$Xg1XG%bQzZPB8?h{hlMC1^|^tbWKR(cwH%I%%wA031s2pW2^KGzEGP_ z_8%T|JU-GA&(5BflfhTdB`08z3-#)|a@PPXWxy-jFR0|l5Mwuak-W2JyuFCUtBZIB zSmB+?o4(8N3(K5AXLhJwHOT5L^Q;Z25oQgd^Qd9f5uMz$dr@H3ab<)7ZB4S^mFXlP7YvfD^G=hullu2!F|*Ctm>)!$H{eEwzd7d>+qO%Mj5^I*Frgg4bEaWon(^$KpD zRuPa@Z^`WxZHe^@*T%q2M3b%VJp0$}zX8rLVRFVQ>$?Bd25gfopzYQCfh0~cPdk4v zBg%(H)x>uYQ@oF}dZfN@1B{_v>X|}3m&xcQC6dhdNQHf*t>_(&1;59qf!JMV#CMgZK(B`pSHuc3=r^YNH$4iK=acX66(4oZtd2ka4 zM)cXlQcpufUpoFEZIj{kmu}45(als&!uxJACy%vDFL`!UvM}>F#_8RM-;AnvZ%Zw6 zYZuy!zi`~s7=X`PjLIPds3He^fP2geg6XuoApLc~N(C`RXU-0u`kG8CZ@9NU_6+|W z(ZY%ACJJ}!ms1`qF@ir8r_8OyzUFf@KKgGfoDf{BsHnZ-5IJ_e}VjSeEC zCr&XyJ1yk$fwg=^;@&WgSZy+PMA0MR+T24 zc0S;Lq#m@hH`{e;kha`m`8E*55?LlfD)m4?rvj}8zSC;E*kYHm@$njXuZzwn*~q1I zbcjE^lsI9`Q0tbwwdSd20c0zoW5%B^@E zDn7uzuR!a&l`&D_N?g`*pD|0A<`lgWIv||&t@iE{w3NBPWNDrCn^3L8m_ zG5FFXcfTedMI{`Uk~6Ar6@=Omv(Y(y7BN;S7n}*FNMM6fBOQ~ibtqUSxAyb73*Y;Q z1aXrBs*t)^c~T_wGIF_i&(mcs{N0l$+I;*KLh}WpX21PQL_dLdJAZEzE4W+*oVqjs z-ub||3tsaPGCkGXR6KHB&^qvv$ll zIpr#k@f^o9ldVg7{b(OKZ~`G`aohg$%K^ScYvLACz}OerPp2m^tc$P$KpFh5q|&Z^ zK~px){~tK%cA}m)EQm~D8Zb#0;ODuPQwv|1LOMgi0k=p#iTR${?pNFE>rW9-i zS!WTSl%vsF{})KgE{CIeNXc#If6=DnH+wSEV8HW4d$1dG*`ceRdi0Nmy`Y$Gc8D*z zNuiRl7u)Nshb=iyfaZ1Zc{|1@g);iA4mEd=dEzHvmfTx(!|!q*I8?GP`x%4EGMNjP zu?7ySLj6=yoN0v3caN~RUJDf_(T}}!!|WBd8C~`m*o4|pCoWr<8o!@Rn?@OV+7->! zHp9W1`FOJL1@~H|{ek#|@mK*jCq5aCPP(B!Q9 zFAhMm^mNT{gr44}f@PVDv@OGQTkj=geOwAiPR37_AWK)*g0l@Ue4ypKET26?yAJwF z%zgLR1QxtGoc&^FR(P|1 z1G5KAplGZm69Jm=o*KZVz+PLaiMeKi;kK!S9~niS~=jw&5X?sZNjJs7QZ;z9}mS|3Ni=c?_O|=!OpoKKA3EoTdR@I+X6SsDXm(;j-fEO zgYcrK#~I)KdwtvCYB;_c7(&p!YDQm}Z4^s9g6a~tux(eHo!tnxRPOe_W07Pd>?fKk zEx9}(gOz%q6>prH4%%bYhn2x!a`2WH5%(-l2`cS2+-J=R5vo)=VxjwgyE7f+-~f?X zh`bhX^t}Lk*w+(1uDQMSRdU(#^P6(lv9@?<*Su&uC#Ut&L~nGFK2}6y_-ux4=@0V0 zejeO5vuV|BX{k)ZkZ|-={DP+V?($pTdZuA<%j;43JatZB0=EIM$u{o7yaj~jCR&dc zaC=I-y{CzCdz>4wk^#XO?E#wWkUKtica+f$Sup1-uB_eGa+{N=;cM&`a%ANT+P701 z)P*O)?a)feT|0G|}-Dm2;3ji4hBX4D;V9oABQj`DAZC;ASTm=flY z49Kwl=J!65GU$;JKxmguJILUg>qe^8ZBFr;0ndeFFB}#`)5qk+GFj1=552g9?RVF- zao$(aM7PLY`9EkJA_Tx%%I(DlU8PQ;)@U5FV_}%Sz#iq0c5)vK6w|(^Z#m0`M9sxa ze)?-$148!Fx2Im~GM0UOCin{d=bA(OkWH}C3j`pb?fW}s>?ZTv(d*&!yrofK>)al^ z#XkqTQfZlOhKR8?0xdUKBv$Ep?S*2I9bLueOHh8UI$sa|L6` zgt+CjC78s`h8tx(Vzy`pnee+c6rR_{*p2?WRs_DCq zxZLCZ0DfX6l758w3EWH z3{Y`)3_ryaeULjfZ0t17RR<|tT_>2UI`m#LG^Jz5rt!MlX*+KyZR{BI6%QylA+|GL zIO`*A~+fgy5$lA zl$vdp%)eCEF3!+(JpWmM)^tP+y;O1$I9+&$l11E&)FOti>#l6tw55>jWKk;-i9>zt zdDrTLxY!vQ0LBV31zzGfK10K_VHJ-8THVk7sjTbLTg}`cjVreF)@;GEvGwIbQcT$( zDL1dYY6Oh{B;PGoyGsT4CLtKTC2V#Z0_H^yiio7|f+zlZ{W!1hpb{{7s z-ImO?wJK-ojyH^_<^%54>ic3oN%8aB_C1S8mv_ujNPxOq19tE7Ifju$DAsz~17CA#B#av|Bku!M>$z(@fgP29F zc0x1(kiuU6h+YVMz+YTN9yrQg9W?@b>0Z~kgV>Z)-~d_035`!36O}U%j?{{4feJ%QVvj4Of4yM&Hj|i3-OJw7G1Ib?eNFw&$bTCyS7&R2@fW09TdN{w`-?Z zF5DL}!HUfvp%x2GW)Ma%wXn~w4eNMc^S&)RH)<5LAl@%_$p8yu*&utnnw`;_W*@yd z@ePxgQL{K;Vbud$c(h_VI^zw z)8V$-%Lc&#Q?`(p?9V)sjLv16(7cZSx-O_8X=KY5pB5m1m|>5cAReD^g{ zksJDUjFa=F)aWsBU$zzXv?XWqc(aRbY{nrrdS&S~om(0u+3Nbw!M7ISjpfUzrW|~= z6ImWuP-}ZZ0i@l4A#RlXQQiWQl*MQ1?W1*86mCbqo5?&mbxe%K9B$EMf{3Tru_GWn zruo1Q5fPo>A2-%ko+nO1IUDC{pSccbTcq273!z)4Ds+>%T|%dIrx&+sb|l*AJ*rn~BftA8OyoFF zxukl=2UmOUIJ6x;mgG5Q=FZo-0Rwqx15Zd*`L%&QlZ| zr({q4;z+PKq=`xJ*Y?+LzVvh*MnQ=Y@H(OX*})rCntrR;O##VWU$CI&akknmA9!o` z$MBhGB~%HQMnX$?)Hgk1(Du7i#Px6Fp^lo2${d~5&sOD~5TqQ>*T`DAC$QpHgX^H4 z)P7g0A&a?y(|wmS@~%l@ zVmoIDKFh}NBMv|4^U&;sChpry-3Rp5C!U`Q-5r{EyDBWGjV%J)!77Jan+R0I0t?gg zd6ki@o$oyw2<#_FM?Mk?;_us>g4c9QO-LDd1oZS7YkOU2SWa?Zm0gzd{{}T(AHp^W zLJ99~WiLV&F&xqvz|AYd?#3Z(RjgBw&%=ZSIVMxB$y8x<;w7MWb>p*E$B=R7a0Tnu zOe(=oef1#%alWsov(|KKCYyCbSHS4j%whB&8#~S=5YUGSUU}fq2F0I(5ac(O*SavT z4dV0)#rECPg#tNgX%!@qZMgvrrji~4**}4DU!J#geyl%56>}sjEQU%?A|&8T?U%R^ z;U}bqdai^pcBOz9*a(-L&~V#+eqBQI%9G)omHg!i<*FmQi{7UOdtZ|fv|z{K2qpC|wR=QJqXook%VA*SAs2wX#Ha1OfmEJ#h0k z)QXmzy@{1+7isPZ4TAa#RXCzGZdjI(^D(`v)ngw(uQ$LZTq7+7HTI0#6bzSEJIDj$ zzOM0c)ULoRnQH&}y}z8J-cHPh!!)?ZTna5UwpB2m(7N5X8W(#=hj}UKPwl& zRM9qcI3sR1xZ}TQrC8}jyA$7>hSEY@cy+r5MqUGfc%9Y5?D40LpWg$|ljGY}Aq2I< zPh3%|B1JMotS8% zX$~+&haO-J;Co`5(*6y}*l@(TDc7m1ONI&)4K$Fx4*9K+K_V^5-j4D1HKy(E*s?-& zRhYd{xVtP7kny7Vvtz(OJHAx&F2z;gxOV+^9`L<24(@MFB4UnP$s6f>(BHOjjbGKK zI|si!$6{Vh=B9QQAKl>-x_Uq9Cx8$f<~z`DUECQ&hYONLKu+ z`re>1E@t!1zU&EcV&h>;o5(RqSZ7V8)W=N~pUXTE{N9U!X4Np9&0qK+Z7YcJsLdmn z6pB`9@6k1O39RrKg0@x7q=#a~K69R42$&lqtW!xP10*hn6!lGgRf;@z3}q@8RBJ|O z?2yezto!D=hd%SI>L6!@Y{^;oe~$aEaR>_bX{fN@ptHMK?S#}>f`!I#n-MW}o`blw zI2$nF#6!EnA%T;8i%9C~tI{7r(*$a6SB(YnY=9z1w1dL|UlNxu?lZ7LvJI4wJ{{#| zh2-Pd)JODq%5vB{Um@^vl$qFKjv-K5$=OMfxd3Whoev7cwk|qEWe-~+YBBJ&Fn3GQ@_=<#X&X2~( z^8C)>gZ?=t!=S=YRq2i``}F3>z0h~o?v1?U zN`ghG!~WNXUVpu@1n=83f+#1yztSuPD|(!{sA2Ys+StmtQvYE2r_l? z$&N0uvtpa{vuCl%QW|-+ubdUj+4Z0X+W1R`Gci*!9Q#xPR=Mw4b<}w@uAtLHt=De6 zP)w3l(x+bQ{HnYp5ib5ecK;NcyzepS-Nt_P8Car@3B7jaKWjd%%yJen5Bqsj$7RV@ zf7S758Htcv{cGDBARn3>J3CoFaDXObi4HNS93C@A_q(rso!bM(S^0?OS1l9^g8&}b z$>OBc5oE{VU&-6Z#N1Qywr_pvqhT>cJ%}E`!Pa_~7b0io_UCe)MY@|$mcqVx(OY>m zyH=K~ePmfBOjS4t`d&uSA$Omtu9h*l>S2j^Z{3Nqb0SViPTKwp1|yoSdkIv+F5d)$ zX+e&0U;<<|H^FaQ_*wrDBWgNDcO}Q0zb2ul$Eg0$-O-A7 zutU|1ajQ83Lwpe5CiBTv$6r(Bc-==c1Fg;No@B) z>CSUmO>E+aAm>rxCWyKCfO9)}B~@l#v3FD8FuF}ccl#En=x$(j6J>p=c-Gmm-BpOP zo)EKjKwMyV&lT$7GPw^=UYQ~CRW8A%ETuwD!zIqNPCdOsK7n>GoFp8jNf{5AC*BrZ z2qf>L19h{20J^I2WUsRwHN2sR)RbljfeXMx47ya};)q`}Xv*wC4#lHs8HNRtMpk6+o4Q+}=|Uhon2$=QU0=sf^>&rd z&2WJ)Aw8K;2erc$X^Iw}`t-9;ZHoNC2vLa>Uha|;4?6=_zbgNd1(6_$%vOY1+>dco zLGYUBzz!S|(a|x;Bv)!Au%LcI@^3ed?!(!sc9c>Y7c7=aM*8al|2c!CCsMvxTZ_+w zaLCmSRtunuM|hbw@i*ef8rJXS?OjWHc~}T%?$$_ZIJ_$fa7||A?FS#K;S%vw-J=S+ zuGL^<76L4>j+*!D#_Gu&=p!T9=?UXM*AUt#dKaIL(&#=@ot+$%cL2W#LIR&@V$HxY ziE>h#(GQVsgAS$M3I&()y_Y#@r_(){Wy_PboNDFXz*@)NUbvN;^d;}T0^L; z(8}Ru);o1DjNz`e253_ihakbM+T^sJGyEYtd~0{=HlWHQ=EpvcxYEOvR;77L4R);X z5m9KURPD+_LTqpTQt;F<|NOpNtap6yuq5oXxg8&je4M+}op=@c>FVk;XGM;SY-%tN zphOkeU6V-cEx&;X`U*`^=%5?~kxqULNqEFW$4ec)vpe)PNi;E<%$Y1lhHK&qi8ErfAa}qJE2su{B$NH&@?NACs>WzZQR?E-t zPFW6D1B}x=?5$)2#pC0l+q=;>ffzMfyYuPNnFw!+)jwKw z_8}X6r?hEA5j$~gUpO6}qS2b*JM0)7d3#zCq!GDE@Xw-|;7^C*?%K?&=31;o*b^j~ z34qD-mzgO^m1|IKM!PsqJQKeU%9X##Wxhw*NwJ8#_J@(MQ3&Me@qyrxlfjVR@Wi27crw~wRe3{0EO z3dk%b3R)g2FI_}&XO>@))*_zT`h+r2XX;tN_0Da?F=z+&K+DL2T8r=c&kJ?SSoxH~ z(2me}1(PLfF+wF;)_fR-#PI71V#(idyg?v*N7Kc3uIdtLQG~2q$<|TS9>Qqec%)p( zsf10Ze#6B=J?A)X>LuTR{(45wJ}p9g0E#$D&BiV_cW-8EUyM}BN<|RC@^{;ldQ4)` z4xReb`dZQ{a-7U(|1w+H&ZkouEI&d&Hua?;XGUKPq^tz`l@V9uJ)wf?d3582w{hMd zuY0}i%d4EV)r&9Ne5F&7*R8ED8R=?ji3?MSA~q!xTngRlL-7g@!Yb5wyGe*u?L?mL zy%OJwO;p&DSx}%$A#PLRdlLYr=7CHA763oZ@%J|njyaU zi7U{7ow1+G-N``tq zGBSrInO)xG+Hu#4JH>`$>SNeWv;uujg1PL8_$Kn<=fo4F5~wpK;lc$CJ|n1ji=)fj zIK?3yn6I zbEgF6kD16R;XL=;&818C)rpywI0&&X1XWEJ1}B~K&u`W}&SHm8(8luAuEhCziXf}p z4)dvI(om*7HgMDpvNYt_ml;yC_Q|kv zId09OE~XKnf_74_=#5gTl*^1=_p?uxY zmc73zo}rSmPFt2QaM4@d`MLc3HsrCQpY?}$V8sbFow+SftP%XYh;Dha*qdz_2nc^@ z4TY!m#k=`&_WZyn&kB$p^VlVCVQPa&!BN3$AO#E?>J|*%k;B^0>uXx=lF4|_Iy_Sl z*Vu@fTzoG}M-a9B)!PVZ388d?WlY!c)|f`kw|8Xpe0FJ`4pg7DMMo$3kJeiMur+p0 zj#}H%5Lyo!qvemnrgtc4iFy1*@cm)BKQAV%O191LZg zM4XM?SxdqWoJY=Wm27vMr*;4NwQVyaE&Y{+`qpNpJR6T2sn+#0(h#MpRF4`&tDf=K zq*CL_Q2&Gf{n8g;vh&fw7U0bA63rwfK`gcX$5Nl>&K!|P^u-SyDag5$ODw=R5B;et zQ&Id5_|NX~>d$*ZrO%sT*)T<~MTXr%`#DEpROr$4MsFs`7n7K`*Ob<7?PX1^BM}O- z&O05X(Do9iI^*P!6mu-5=tR;sQ;l_>TII{9=p)gIt&Y!x>f5!aHaL}gH^OFmAX5J; zrB?`)ytKEwEBiVk^2wZCT52dKb|ecFoOIQfmeP(xx}*Zj2Ve)wWcP6;pKdCqwqK9DwuSm5m zqtO|wV600E@?Ff61wtWY>ky~b zv$ChUvxlg>n%?gAo+1(&E+j^xRKD@n1%2J!v8Wd|({fFn6inv3of3_%=;zQJ z@V#~^n{NI1LE$7gZSBiAI=YHDUMxKRvUu(ir~oh->kmFxaN-cXi|t}fm)NCBgqH1M zXftU%+{J!c+=2VH06ui<0^Vw;RW5!ztu=A@$vLoDi|xxbrUqSHm?>kgQ#D?0nCuH4 zsWcFwwdPQ@3twBY7;UDNHBNomHzm8;45UR5-HQnJEG+h=u2T2E$FuEyph_dKs|WNDqSm3qxz#NTyoefy}TfZt`_33@I0sT+ju@)x;jm8&O~GVDRX{ zs88J(w)`IE_6bBTY<292aH?VjBtMNfy7mAd9EDNi(ekGRI))i^qjL}uQ}WkgO&Lse zX#HDhY;;D}XI0L-vtNNFBvtM9fd?#po8bk0#HO7zvYhi{+ZZ(rc=-!m*d(tU}+wa7SC*w}7u&~;rRsnJurkyN2&>X&| z+j$*(u{B>GN|C%?5-pBKSsOZ`Js4BKrq0RP^kF7Q>#J4#=e1B8@(8*Pe1_-PG&1r@ zxpKT%@ww)9uHu0%dx9uKvAwnH;$caE>V$W|AIS;Z@NH;#V4BFk8LER5;*<*h@nVvv zeu}zedgzGz=%>8U=i1=aH|xzL+fYlLxPt_&$KjI6A~HU3x*l?@Qgx=yrS5z4BliRz zw*#;v!6o91uVIjBDW~m|r=L}wFelk@X>bwwHQIy4emr0vK%fJjzNcC>YpW_6$Kim! zKB-@@m8p4j2rphLc31_2!|I7Y+HX{w?zlN9a!4>HSN+s<5i>hN0Yi9ewEgWmljL2w z7LZp^0Xuej(oAlf6$cpxFZ~WCV~c1Th_>B|%_4pWQ$KsaGM;YE9sDIJW4mc)kK`65q*spB_0pHo9w>^!g=b zAnb@{BtvcgiK$%QEy8y+o<`>e3%Mm3q9ubEZ@(>+I7vVU=}Mnq@TsM=IlagO_jYe1 zVrB5nCVKJGJO62F4$b9}e&>*q;zBx@s1kFqDDT6M-6iw(1c?@&4>)rG#kIS>wj%LY zeOVTWY)t7$4A0D4!BC7G(C8Eb=)Z~<>u|_6x22MkOLp3`lo>34dgRGwLtlsG z>VEkJ;LI+xL%R<%@mflbS-3x6``E~vxATk-oZYy%%Vr#%gq!XUH1X(Q?l43G{43wV zCy{KHok4s8z-7~99(9(?oX!YrB2uRBl#n;X=v0+ajE-J0D!N3fvm`#%5R0gAdPQ4Z zQh#LBq1HaOit$(d${_z3Ed2Rv^3?I?uOBGPUnqE>N^MCBq^uDpR;`Q3Xmn_(RBz)d zcg~*+(PZEOi)R+)b|S;B5?2Yac!WGIvF6dp={>p*)Os`*oghR^d-4wyp?kXg#H3dD zH44??O!e;?vH6(u*q}VXQ=TP99U@LveRd%9N@X5~K^RV!VVIDzUkq5sTB^Cun7(!3 zgwQeSl6ZIgD=37W{)4Og<@8Zx$g$5R8)A8{4sLB6k|mvz*e`7h?H+Aj;gGS-A-4F^ z|C^imExf6h>YIEP0bI!`Z)bXERnVvt{0n2%sZ<4%mq(A+EDL?wtC59D33Vaz^aB^L zw#vw{tz!~Phq>QOL(r;=4Wf)isG&Q zE&6o(K9^>kSdMtbKgCu|@9Yp>Uk>&|dKhUovYILDsQ(Kw)naxFntXL5_@zoQtnVOm zSc;&BzH4xaG7gZFM!HWNops<047}uJ%qwk~a|hDoi@j36h5u)LQ8TaR(ynQ3^5p$! z0cC7Ert)Mns`rI$hCsV$$dk$=&MRjv`Re}j_v-K}fLXOCF0;aa<)zHBDK@Gz9SZ}p zhUmm!828a>6$MW{;ipz&xTxLcz^3KJR{~s96E(NK;>4=v4R&wunp|MFxR9u&JaYAf z%b#xfA`i3b;KBOd!^-b*|89TecPmL3LTv4{>Z*+{9h>?s(h`b#CH8HiT$|S1*_twF z;#3Ah_l5}q3!T4dW3kYmKYv$kK-%Gk8>hmW0nZh`9;qc_d*_W4I4$+4t>EBGmK|&* zVg_y)ICn+D3~`Q#K%3R*1!DiVlIV_3ob|vF0S}7B(8zAYLzw49;0V^Jwp2^ESv2BW ze!!$}cJ&d>0_6_eB}n4eM0!IiPKit+2RFQS9Ww5}^YMl4r`-U~TL|2AF-qibTF;Nj z*<}U6vbNlp##;AJA(vk_*i7&*dgtRI|JVBG|8qj6>txJRf9n|2?E5cHF+crt>)7EB zYThvC-OcNlV>KSW7n{2W!)_hl6%PmI{1+!sDfk~U0lD$}5%n?t{kW7f^*j6KuS2Z0 zxMpnKeC!v zARX2`zSe?eF)n}chJrm+n+xx$g~~dW3O=#XfrjnIIQTf0@bJHAga;qJTZ9q!@|_An za-<~|;@I8DlnMIs+(q<72$#oNkA>#AFKAeYD3{z)hiJ_QVfs{85sc&-r zPNrld?N?wNB5F$}Gw|3B#cL`Fxf~bQo^UqHr$~*_I(01j>Ha9!vJmg`djnr(`J0s< zYv)(Tlb|ihm?1&Dk#yequf#JE?=G7vlrh~+30YE~#HCDYaTT#DJlW{b6d{zvElX8; zFoUE<>ed|~Rh_Q*7?1d*wW=F*^5=ZbNuSqgHIGouI~Hg^(ZfYxcanown(z3z8YjMV zR$_Z8uI52G+{zBeHS}IRSTgVKAE-QdM*3UisJP~f{ZrCZ8T7gq+024RyPP4II1lqM zGdvU*{u+JEyt?%TSLAs)7|a0utIR{1MjWuFOu8(kXf|uQv0hRaG#FC7T?ih3xLty+3Mzr_H3Lb z-PE%v(obd3fgUBU(;& zm;nR2d1r*c!-kS z?p)b{%p=`Jw$Bn=S)3~*t9P@Clwj~KEG9687ALf5?UPkyYJl{V#06KLSOqX>p?*%( zXX5~$blOB${_6sDku$lG%=Kuf@|a!Yge;qt)8bg?gQv0i+Ve-_>EtD?VlM49iB)}c zxAR>GxwtgLE~ipNEBWWz6(@dU zO6yc~8`qowKvX|5Dr*CPY{S6ZM%zuobfYuu6^r+W;U45Zo_ZqSLPJ`+a$z!`13NU$ zMLxHy5~s?E&B--c?r3{fEhT4h^Q}Wc+Kx`~kB!k=DV4IZ$zrki17<-)srAXB%}eA{Q^lHT8vDkWh z!BVRxc@lBY1Y#X$VzDnUCcm+_MYX)NL#Si5O0BfNAZ!2j9<*V65fz+T&L}yqIg0h~qJ?V~%u#_p`XCAia>ztB5SCOyeSXX>^b%MZyl*HujWgG|E_*xcf3~_Ob z^j*%6hKVhBhOsQ}U-%c;MlF!oB^ascN_XWagSeq_LOAuouwb&8ZqE)}IEO)Z6lM)4 zHk$#*TQ+YuGZuM?N}Y%8v!5lp!qb1bNZz+GqvH!2%gL}IBc}>{c(!&w`GR?B+KRpw z65a@2{u50NJ<wfD4W}HXw7m8_A*SdcmV}iSga>_T_?e*;6@r+7=~zT{<97i z(^%Z9g(=oD7ZEbpVWE*PJl72lL5R`&rS0=_mSo)0WoTE8Q|hAECpW&ujF{2xDBwe7 zn)ru?uJaGU2s?J*Y+;m^0Qyo+tbP_V?V0;h`v~pPLGYte&-`92`BqBv_-Z*d#n&F7 zV#h}*9jhi;2ctdLA~dAR4Uug#gqU(crcHa7WGijq@C|oBTsCdmVc>1+jNATC2pRzg6veE)l#&{UoGnJ^EB9~4~&E%{DIKhMx- z%_?|h7b6|*sXqCKsoLgOHeqz0i{+oMB^6*Q=P=4kjEMFG`ll&|{~$UZ?lG{b4JUso z?_k44_8w55S)MjdbBd{0m(wf&B~luOf+OsKOS*^NVU*uoe~DTSYp=3s_X= zpT7rk2Z%3^lneluBdkT<&|qDe@a97wn(>MA>#Qo*?%~3YD>Md7=ci=qkfdu(#mC#+ zG=sC3MnK&7-9M*Pj(wN-$06>yh*cUA+A*dQo$Q#o({q+AsJQv}=O>j7b1ULm7Z+#;dWgGOD}01f@o`O<7Niwz)N-_0b$>W4{vmoiANSBy~x zCv6T*Rif}@S2oX0T(WehG;LZ#FP4X1Ve-=bpHf6hb%Cimts0xfFnP^CMi1i8zpW7$ zcCnxwE!$Q@_*ZFQ`^9e^zjj6p(VqO<`Tf#Cm}3cQVl%><8sn8lg>-EoXv}8JBXLlx zJg#M*(CcWRqs6-%6@ud~@D1^VJ8all9XBnNj|^UliVfYzldL^9p_&_pi)6&p^;j`% zxI;HGT073)c9eUw(Df@ey0vygS8Z z?98@Ze>k+e=~@RpcWuyPH5sfW5oAOlgEl(bo3{65vQM39#AS=x#-XV9)%>8w*ud&W z1h}+^3xyCK?fJ`S)2iIfOB5uUfFbf)(bNu20F1cp-3T1HW?v*c zXapeHA88^Z95gWa^iGH?ZFgYo6+2Bn?^XV7WEsCOj;S*>6i=#BrNjmom$O{OjM5wF zfPs!IPGWPep$vDlfXkJ;%0R2oj)ft@>C`0lZ4U9hj7hQrLLO)&jaV7%=%7^mw-hE= zXe{~EUW{@#v24`*csSz7-X3+d&ZC3-3tb5tE4jER;ILZmgCz8QyLk=%6ZY(MspeY zaX6kod|UH5#7FDT<1ceL<#~^$YAXnSoc$=0FS+&4x*X z2KNZ+w!H8%!p{81ynuW(%drL=(#=Zb5;=XFP%K%M)`rBn@ro*$G1*TCxJDL`l6M^Uw_7eM)n%;at1XX<6@hQ?`d;l=Mv zL9eKx2H^uW{{p;c*rZkL{tV_OGBL_!;EK6)&^=h(%Q{?@gleaEys}RJ`xz)`)IZ!- zfvw$Z{)$!o{5+q$H15)GpS7RlpIy(eja$IprR}50^Ji}-j?8az^|!xwZL($=F5q|$ z7Gw6;r(&O)T>e73gWRJl)~yqud!`?U4cm|Xpk$Vp{}{(+W}Zt2PgTZipEu?7rGd9s ztErstu3$EQt$~4HWY3i-`m3lg1aBAX<4k|Co^_s7cJk1na%M!nc|^!?T8D?{flM<# zj%Brm*J`t1`9r*r@#9&R>`S8|HV?J3VO#pjq;D-~TQg6#NLioULe3z z)t(B?FOSL?n^{PC6z6SjFqba`TnMTwE((Bfce9FFS^Bw$`#0`?bTnS@Vd(uJ5VB)7jtBlH1=>Z-@km!rDr(n}>P)dLyltM%{mtTrHzZ zK|i>NHoIuhfwixPIs5`tDFZt;3O_Wq`+*65pLlGAGaWYIn2vC2U3etw+jNag|>dTiuMvz6%{V#Ju8v;$u6_M_gR*{b_SL=G~#r+_Zf% z*3~3dR{9S+Vfk00`+uZKk8I;9Frt9fK?I- z^METl5^mwH1xqCFVAJXhps=+9|A)bWCf# zvIF0F7n5R}%9CMTp%zrTQT%N5<)cPV@o5-QyEaVQgLKT4=o+Wd z@c@5AY&>v8-N+ENz6N5HuI}UF>SJH}&(P-63RBfq7UM1^JgW8N!JyP8nvJ6ry{849 zqvX0d2Ls2{UIgU ztWYQdg}?ftnHNn>_=+bSk1}q(x`wgX~#ZZs|gGm$%^F|hyeyYy+Q7XYn z%lzkWU66KXBNYE~?f~L-k-&r+rWmKtEwe1ump6#0@9QrVv*^%bcW|%zWdm4O=dLCA zb%|Wk2Fanvq(kHIFqs1Fhb3@2j1&P`)s3D6*;sY;aFg}!j=~>7*!JY^Db5*Lt}k|V zcrU)tTI{Sg>S*ygWwzW`9`;+6w)FYSkUYgtOOs4UayxoK3v9r|Q87jG&Wk*aY87~lIpJ9Sp5P%x}=XmmCD~TwF*!g^&?C@kR zba!n40$LxA`)Jeh+k~bhhy7G~!8FPPJDxHWzJT3m@D-v=)R=!YXX&kYgZGRa#JuX# z(fMiT-9($qe>d^fz4Sv7|5E=eUe;Ndsw3m(zi(oY%qbHw@~|$VkE=u?RVlw$L2$88 z{tcse6+^hnj7vgQA9K})mkgkooPg0=)Ad7^{p%^P89@GRxQ2wGnWocRY9p2cO<^s> zzc$(m2i@tjEJOeh9bu3p{V+G@d5IM~lP1FL@RbeKMx zgX67#dvwLMajju3?lFhC#4v|4tVn;o+y~X}vdi{sW#J_U(htWks6-^M+_apESlU?B z3Z7HdDxsh9Ecr9J?g0Wn*=+ywH*04g`ah!;bHUKQLUYVD?_4D8D2KUgP~&HQ6$kpn z_Y*&GPp=zj1%Jc=9H+J7`ndKbPt?I}XZfbV&<8&sW+^X0;QN0l9?0*?0=3nJ!2@K9 zp@2)@RaY^ZLwas`lx0CM$)fB?fYr*0zGWQEb^IM^tZ_P=@RXs523YmYO6}yRALKn9 z?i8=PC{oo&$dQmAZuCxiE8h>A+g7iwf=azXfzZL8W&mP9oxjg+da7~F1^C!0wk=mq zHj9sADbuh5Bl)35jms_D?m{VGA)=J?FR~w;)9AUuWm{=#M8Yb-d4{sYE>cf4-a)R9 zq$iA_nfuxVnkzWyM%E^UZpL&;$I3IeXm{xx;Uy4ByF>!bPaqz*97XhGtut#iI_IA) zMlW_%Bne`~4`zo@KgtHur$7B+Rar4eD=UkL-hzy50s61=S zWG$T_X6S!--Fi9M(Y>#LKK_=;zv zFHIIfLI)B%T&BXpGzr#vM92pt(=Z`Qf;U&SuFTl7VaU2#!(^B(t6$Y9 zEK-ae?-HxJDTy@SPu9EQK}g+~SC;IIMkx!d9NbxOVNiBXGe}pDsg5uXdR@F0dQvxuXaxc`E8)RstNwR zGyhK{)op_9PRY1uvbN6Y0*f5}n~s}}PW>U)1-WY|cd>F5vjMS8ByZRcpN4=?apEKz zp$y_=M*wJ?ICBKhc0wNy!=3fqiG~n1oPr%`LZ}&}lp=FlFk(6#gI^PHPR-|P-%O5r z{xi=veWzD2cyME86DlN6hyz4b2E`m_O*>`oRmPAe*%Y`?NCB3d_9oO2D>o<$@uwqT#d1wb&gI999q8`XEs*nH$0P#z16- zrhEj?eIfApk{yH-GSuKO`#Y-9M87SKJ6Yc~jy7A{hUBoN-K!b7Jw3@dkHk*8zOuu0 z{N34%`gihJ78nOAt3qzY+jwnhw`&>buz~(%#k8!q(Bz9JrgJ7!DUWY#F_wzD0`#N$ z7v*d_=x75+l;xCIp3ZEyM3%YP(w!`vwX-|!X{U38MG&i~$!N?5y-OB3)D+|42K8)_ zJBJD&=2b{0Gy($X>UrtEYZppE4p9)?FE!(U;UL+mNt2s z+;W^^@vp=Mgn-@OWU3D5gPRFw)xAzcg6T>w)d{5z^TVRr+6xC=d(tKFTYQejx6H6r z!RK|$;4^|HPd4JI?%7(q=fuDbhN$OZ)L9gN0McuJI=|&H?%tw&XNVZ%aBRRKmbshK z(&4S0EDL=A9U$|P zZh>LWBnQoAOw0#Cr427o09)Txeg*U>FG3vZx$@wTi<3u=^M`kjoVR))M|A6FvL29$86bgmKS5lX9q#zqqH*e zKmW`Z^-zkkK~Al*Rc%ixN32Z1 zwJ(P@TZh2bp~G*^T?LWLLOpV#4+3&7#0cCkhV;w9U&i~{SRxs%m5I?NpCw?TKjWpM z>EtO(K{oN>BV7NX|8BiW>|6Syumi5mbDG4)&XiM#NZ7P}U0L6)z{+6I)#f2){`fpb z-%IU0R#;Vbi6Sgd`8&Db8+-PWPX6oZu)ym+QF|4Rk@Gcc#H%dtzFhyRH9$Nyah2Dd z@cPISho|$NHGB}vvze@;GJvPf<`q`h!Vrwi(eytNqLVO>8JOV|GSN+AYND!|^+bkVtX%R1V^3xf9(rVUD{t-R=54|5HhOMw>Mws{)Vf<>-26G zoAmqkH)J5hk;*vlsa@e~)n;1i@e+mB7YMN7Sun%7vO_4k91ll-^!6St;HWdbHLLt@ zGSk&xli;jv_>!-9E#_zb(g9nIQcu-%S@}i8s@e`4fk4=A7%(HYuHX2AoGnE*H;r#y zGUcTI3i#Jn=&-I+HNZUA;+u?AI_Ts^x2)(ROrO&;!tzQ{zM&6CEYp#N!>UZoT<-oX zpA*})HTH2`JVLD+q6h4$&Ry6-OkB4kAw@$GO(G67z}Q#0ly0RJ8b%SdPPW8PzQ`XA8!OLfvBWb?TTG zVbRx#D!HKWVCK^tVjCAmt(75DFIC|ZU)_h9zoH78R=x})jPigK?}}N-YxIK!&MwWl z<3>(%xnN#i3?GK^J8&zI`Ost&V?CByk|SpsF17%Ga*P++14`)3W@(+x)INkK zSPr(GbYe%YL#StYJmAdwd6LfQ0sHCx{Cd5Bo-RJ_5_r0uTWDjkT^oh?C;U)Kh727&o@^^-y>UcE zVW4|SS=nuYSkBfkL5VF7q0cv3#Gc$waW!56+^8s<^50{ih9(4UPfX*hpP9N!YUFYSKb==wqy_oMG& zdEIy281>#tv#}pmx1xjmqze{{BRALr$CsCuxjSahFRohlsh{<)W!9Tzd5QMJ=gCuR zLI{o&j~onOh9~kHqY4{eJ=sy!9Vbq+>mDUH4Ud=NY{r2FwI|w;K}-%O?KW7_y|1q%s8Tp7FG?DNkfFP3S{FcVm`-SV{=9nK_MoTt=~%Ew zjc;+EL)&yqsW`2B6QVb3l7~)%rD+?p@lG<={-65mOu71F{9DLykkT$K#!bEm3>-YY zPuXQ3ck0<4#EwJ^!T=yPvnX<6NlF<2yQY9xv>keB{e#L4(a!zAwnmnH1zVV!1dSvt zdjrGw5Sv2BdYc|tLKak*s@h^}h=3)S=3*axH+7TXqRUS<)FS^fDQ37RJemN&M z!=WdRM*m_op~nN#68q}5Qp;ec_bz6L1%%w#2n_)0&l(72b&7^XKP7)%fBx=BUhQ8W z>5QF4I(4(Xwf(zyuYzyJUv0v3(Ce;=^q3u_t684=jlS}~GhUmwcGraR=_R%I_nGl zT&{$oz^k9%o>E0)Jv^(2Bm9Mu+VarvYLGr{!mVVC4TBmf&RR;g__G91ECA=>n95D4 zXk_Ql7(AdI1_AAN8xZQNb76%Q$0EyRc`{Ks3&qs$`$HR`d0Z+qRZyWVA|ZiGLQV6> zPx@#F!+undLsi9YW-{{&J-d2NdLf95AolI2;`%Hu>8xx>jAZZN<*CUnzrU7onGwuv zkL3^%$^US|8sJxi` z9e5*+w#)&ZzW>+wrb(qC}HDZ z5q8-KQ&%aqkoo#`0$VUGIQNSg(7S0t$%x351@C?Jn}t2CczRv3`UAqY6qutk+-=WM zI7ARuNPyc!6spnFuGaAXjJDlc(E}@>--3XS=TdU4f?bmGex39_>R_W}*@iJg75$;8=BXxZ3@I8XUKybUqc? zP*)enao13Rp(Nd_K~7&z&cDv_SMaFdI)GTfV%iq!*0ecXBjoHYH#=?vCqF z_>|UU+(+lnO|*jTS~OQ?U+q7S2B>-(wd3|;yh*ww0DLsjOVGP~3s%B77z4sV`x^&c z?CZ(s9VgB)X*H>lrJ5KLuO+&Jg&pdSQ#uWikqV>YA!q5Zn4OLn)7=~$*#oCoI(4gU?hJ8MsaTuC8A@UjD~eR zpryc;uVN1pw6}rAd}?uY@j%83RJU~HXKld1BIUs{t#H?8?ZFlfFoh)mW||?*H=Lg% zxv?A4Bq2Jhr#|{qnlW_e2U&ezi>y~*b~w9uEfpsZ&I1zzE7F!LUTr0R!Ep-|8*o{4}z*S6D7dZ(^(uB zGkd+SnO8nn^(h1#q~q{+OU3RDwAYaJ21e(q4{JTqENe$V6Y?5mcr#TV?Z^0eh=8MC z)-kjp1e0#Cl=w4UpG^+?tD+zg)ndg zetz2JWcYbCTsYZ+%j0bw{_!{)=t(x?%|0StQ-Ra=@+DrDYLaSm|8=J5#}uSs0YtZU zD`gNnM>Fu|oQXs|s~5)Hsr?mcwRFknYx!>iu$=#A8g#0*o47yImvWSVJwVV^~ z{L5zC>zkTV=hAK9Lo@&TdfhV!7J?}J3!5Ny;wRrG~M0~w?*cm?8 zr*DO@OY2_xdoJVesAd$YYgcQtpE@4L$JZqbG!YDS%zyq?TW{6&o`#uYGC+Qvgxv_K zC59;1q$7BVGKmkd6%Cbv+`W=B+if_ERHv6}g<(h7}8iZm853UUVQ3P|*gj$tApwq-S7cHo>+bt4qO@R`iI3GI}liwbu zltLmc@$JKNTuszQbl=Ro>Yp2ERqU^1v7g6F5lLePo^M#LM34@Am#Ntd?FOm1De)pA zlA(uUuCvHvW5$(WH#80C7WI|!t~08N{`AB(X&JaRSFR+njm(=RZD&4rRRf*zJQQ)< z;#j;~)sooPmwZ4Pc_vwy3Fgf{z~H$oDdMi8=;9}VH_2G78X#UG+xN!O%)+|SH`3j@ zwDJ>clbL%=k{CzR>v6dLgRa6I4gu=>MDLtiWcq7q$5La7*aBf##L`YDZ&RKHM*mKe5Sdwah zdQe*_32cw!HIZFplbw={<6r5nE}mzd!T}>LPI6okk?pqX7c0aUgKgw*=YN(gJW$t}KlI}K-l*U3nyR4s zOfl#-dLbh%ScAP0C+(P60cUJ{o$nd_`=~c_*{f$Kw-zl+TmF z6T*5-;(h3*;6VXzsGHFVsHb|L-pAD!FOE(livs;Z7Roz~@N0Z0Ho7^$$wkMXzb=!R zSoW=*t=+eGeUn|lpgZ#_7zmpw(>`V_Em#B-Ui)ajUm#wV1jIPb>n&1A2G)a6UTm>H3+9^h81A3PuqG@$+W4rJRlgF1oRd*`cR;tZuQ8 z$J~%qKQ+~30ssXZ@(N=3E!V?rmKQ*#dY(+984vcQ#SRh0PZ^FDRaW^17EGrABRt&x zTrxIgrkJ4EUDoI}su_f}gfw_V_ja*BQwp3F=N8eGifz`gHF|Y|)Q&6UyDLlTs(_hP=Jcj{i7Lu3C zM3-?pGNC69W7srn-5taSlxP$ChAzsaQn~mIw(n*x5cK*ylo$GPTp7%6bbqs1Fz`fL zj`4rz*Lb(~a5WICestnV8$O=IJ}b_Fvyd`sBz1`F*v4pxf^DIPap^G$0suSsPq+46 zziy4oPyA9aKj9;^Kdj=sxy%R(0d7PnNIN;)V(+KnFV(*WV@zK(uL;LDS!(=BjIEk3 zoRpoO7j8|f!8&~A*Od3tBAuK?|5}U{WsQd#lT2R)h0^Cm&k*#`moFk|ozXGP^@i>Z z-_+=>3_ZWE6?%6URMI*N);i}_2YW|OR0>aG`7pcFYtgv<9Sh*SEUp?#1NBjtkb7<0 zYA@r7b2IcHo8B5&+c#^%A!2f0=F$hS@ml5`>}gA>g8^-T5q4Ywuv|&wmT^!uht1@6 zr5l;n;SakyJ~13u=$qLLH(&4H`9+s*z-BHm7pD7YkyK{SnBIu7A?MFtzgKg3^KwFO z1Y_9*=|CX;cazXMmzMqs+%f`JK@67FiJI0j_1mRAcBXaxk?okd#fZC?($TIQ=>_E4wwAmDk$ z<^m3hD|i+jaP8^jYUTe}K0rA4g4gz63EYRtxJqXyE~l0pPIU%JmmM%BmKNelYv`1K zMmfbnTNPp2N{7E9u%0*;`jwT(iU3$NM({S0WSU(C`~1mF_fxH3KXH@c#!eVNHsCO8 zAL;?9%mpH}l?L4&XYsgCb2C=9)95wb*cI%yb+iKEL?>mfa^^<|HW9FcvAPoej2D~f zS-*rVvicIF^gfFI-G$mdgkBsPj@_q%izbLfg$p^eGyXqO1Dz*(S&Or9>9gBuLgkk{ zh~%Tamq@wIX`XdxD}_;iehjW;3Do#|{Hx{`bvu00noBGrA>u%fV03*zwhO=|qA0}W zwsxt9r&O5u!oXbt))!;vVFJX67tEi$baQIaNLb8_I_YEddyhih*R@$jj_HN%fG<@) zHqs`)L&KbtO=&dpMT`j7v8(O2B7X>#XOIJAA2eM`Q-@taqhzP!t>B#T0jfIcH(v~N zU2dWDT`GrE*C8}QvNMi9x?wca;KbaVI7?c?%edDDmz0d9E012eqt&m8mPaMu2J|gS zwbn(P?0#&`1w1X;_Tc~d_FZf*rl0QSVd`|Nm__hQpp`5W9lyNEP`9z2d%&VjEb`HX zL-EP986tTccpO+kUJ!8wLf;|fFLBc8i!;)II1_+tnuVaNp)440pTL7WzZiSu1dhqP zMUlltI(%fM#EHRC9CRDGqslJ7B)ziY()1YRh7&2psk;XBi$dL&UwpT_Tvr9(GYkSG zv!XxM^b(<6&A16P9NL$V--qw#rC4DIkZ+O*%4``+!p`E06Ob49=8BnUzizd0>gr3r zD|6-id3@Bji>i0H2@d}X1?$ca5`82)mQIUlJ z2rfYhtb^rP6RN5NT*IYAg zkRaHN*D^LVIky))V4kf|%6RfxmRL?FSD{&TGHG{%^82pc>X==V0(EZ4_Q@0T)fOj8 zRyKV2>O=O#%RY#Y!xEEiA(}5>41TDjZRdlCASQrAoK+yZ86r# zT-K^cVwa1snq?wuqUx#Du?h{^iIqmIME@-r(fgn&Q*WqPhgSM;OrqV}Mct3vv^zw$ z@WOQ`uu?$I+ET#-*H2+|geT?#PJWoqU?A<%4S-4&1({}!fO2`8I^VuXIh?DB1ghtBIeRSakXUILkOo-1%zY?Q{LE;xKWO-ahrXl3@ zb|R^Qa>gKuzvKnm$v{=eiU+U<0orj*eAB#*j(fM#X=!hLKtXv%a6!x?c6Ba)mN{Z8 zRM$_EwU$4B!{e?_HAmgak6}^;OJV6RWfEOrAkH{QqU)7TK2EbXr_~lNi*BW7BoK87 zFQ7<&PMLoxG8co}fJxLr%a)vpqLY=!amYxStt7c&K^sz@I40REU9~GM=(kSnhtys4 zi<@31vRBm#VjbGF1tpOjdug++N?-39`!vHw(zB{u*J>*5m&e`pBG9Yf=2^`xT_IxwPY#+DP24g0! zuOj06v6x*XF@)Wm>e>ovnyEd-2(R;^!({Y#bt2~0J__MfRc$9VxVE0d#Ug6MWd73ENgW2=*nF;;A*uEY~!2i74rfl#gUb< zHuT@|7I&Qz*(rx?6M2EHazhLQ)C0@_XgSSFtyU2 zvxdWhS_*CQV?w*0GmjG;#`d(SSuTJGlG9Rj-cB)8SIO9$q0MaJ7B#fSJKxwO ziD|N6w4-D-07k`ehnUq8^{GZ59{=e>f<3(W%<4t4bo)*?L~{nh>>ZMl7+TX3=Nj& zXJk;`MKMXPZxR+T+1bzsUpG|S;R2#vq7##d2u0No7WXQh<=J4*nXX46rY~J*a)NfK|7QJ9BOszGmqC_TuMC@+_=ClX8iV3 zD!UxEY?_4D;X=LgjaKzKddFqcVVBB6(g0!GhmH0aphg%r#{zOIbpUK?meOCr3-?Is zvh)o>jue`T9rlzDqC-4<4EGy;@l~H{7WnOm5NH`wtQ(>J)Aqsze|ZvOuKUm5ypSMe zD;7I3_LC*?KWg}x&>@Jcad%8yo>SHdM9)6jhogE-4+o_)4xmSSd@(+#h%W5ukdrkT zcx`_1t|pBPX3W4mDi1bA3Kh)LQAXH3UHq(A*C@ys65=gpy_yVxbuPR}*4`dR{K*<# ztNP|JqBo;$r(-)^+wT0w*wvO#$z|h-)B(6l-9DWWh+2I96Ir4tA^PffaQDqf?()8C zruk%!OfhmkQ$K8P1dG0aVeo62cnWVVwp=b4Fik=PD^n6PXY$_cIlVAh#Iv7Vy(-)J zyROkC1usitD~3>2JvK74;={Xp6Fabd=}9S@-l?TuswRy;XeIIEY{dInX0^F3Z6vL3+Gd3YLs~vK8HyA`7u-VYY1KP z*E~`$&e+KwpzyTU?nXvm{pQjYh#O~fn7Z;ub#B-^*+HfHC4RnK-Z)_P@RH-}ho%lJ z)i$*|$FoScSg|Y})9^ojcfyPJr3zP-+q@|UhS=J}tP7Fjy%?-%2d#Y{8&>pMy|k6> zIKVo0#MS=iuiwMyF@#O*;CIo>3&fl3=-qHAoOsg##u{M~%mjcp+*mmc9{=US-Xc-E z%DGLlq)-FhrqaIE0y5n}={SDc$kTvRaQON?t(WO!w$MrF#DP|-O!m@+rtz3?-OX3E zS;`{B!{?^}>ILsTY;GK|sR_h;gc{`MWeg!C3do2^G!;v<9phxEqnT6XA-|Cla+exN zANJ3e;i7e9ldBr$bcN57PSVTV+tvBQ;rh~vtyay=Xs<}Lemv*$lzDeu?v#z=BE{)D z;>H~;XC5|Lo8H2fxU{hTQCU*Wdr>W_Viw@uA5?lzjX^Zb>%kbGH zlk>H_3mEkiVobuI{8!w_j^O+?4b4aWj;G%MnO~b5M_f^#zg_N2X1ad6O*$z)HtrNN zFE8(ZTsz0zWWd;_~MLedS($*2WD;db<*Hfx>u@eH$wBG?W{40L8phYmOjcP zc5IIBChp8OMt_&ve~EVsy&F~;=haFywMp$bi#kcS$#Vndz24!vwa-qx-Ku9*4*_-| z@0s@Vg^j-e<=xXcw&^Vd=c#}f0=VDjp^LzOx*TGqr@d_ZneHDgPjScRJu=SKhSdFR za(qkzXB=Tb)cYkSY<{-V!Y@_RHninHy^yA86X9Mm8%8K4s2==;r~K^-`1O&?X7d~S zj|~j=!RCBbF@3x+n<(eds9n3V3|p}-D))71cqyZxpZ+_8_>zP2)Ua2^UGQi`rs|B> zn{th7f|s88&tJ?T0ttQTgFFH_aGE&u^j9>RKp&SYzd#BrYQYJbB)+$f4>mU9vLex@ z&-92X*u855$DI|=bAi#8zq}8>+i4zlGxhX{u;sPeu)ynnK!VURK{z;>b6NlmV_S9SPD4%`Y{)#H!LE>U)c3>E^2>vDV;(+suMz=E^{tY#b1>Y`YeC``UTz3 zLI4@gA>x^_&t>X`xZlvs9Won_#CDQsba#$|;^LdT0mYG`xq3n^+$8OEg)ERDaqOQ6 zEfyv^p3-Vxzke0y|b6>Imz$d_{8tW^;L*F)cTyTR7&^ zj(q6;teUN71ubfCjF8;)Qz;#;99an6<68Cy_*F=He(BT#vN?%31Gz)jAptC4I%YaW zx36Gf;S=I`eM(SVhwf&EFJsd_PItpyBd6p^@^;^wW@jW_g8YB`wEriXBpAUt z7R4Kc#$>VOlu2>c>yA|llvhBnYI2F!lpNyxFZBco9^7V22+4WEnu*hrSh8X4YD@ec ze0;~2e5pt!(W!}E)^{L;9OzsB*G)L~3FVQ~>g;6VUd_8)^sTy^rzx9v-Pk?M2P~LN zjZzwlxSiRnsV+dW-A6$cEKf?;ZU#su;hd{|EyJs$yNbs|dA#SRbox9rb0t}=qxmd_ zsND$q&euLC` zNSSp}V?H<+=hpZ8GB@*{62N`!>l?KUwIYMXzKR4R?xSPc@w^{m4&B_+8E(U}xUx z2?O+Nw$g$j3=$n()X&nocTr<)^jW5oew2T6kYCC+=@!R3b;KB;=14#EX75v<@e$b} z_BBNM@Y1k;2<2Ru6J_PWF7_QiUsy@xpnHF#@=q9W1PUa-mM+*5TPU5f8moCp&Ic9O zQszhRH@Xv6l&o~MKucF9M~jRFM_1rBoh)CB;(g{q#EHE5c?X&vA5Uto{_u|8k@wj$ z3WD@2d$f!wC$q}HVyp!DtDjRxZmx6UV0+DD`qonCm^QKEelu%$)v>SXAIVX7A8mPn zeY(GP*lDS~tDiWB7;*2?!fFF|zQBaKHgQ4p2*d@+WHY1yPGWTN#H4Z!5mq{s8v!T6 z5VLVB^VqcG>KOyGB+_>PV6#JluLMt`n4C+$IJ6??$xwf8-)qxZ-K+uO5HePDV1pe( z$N|Sw{XyT#Nb{p#iz`TW+d5}Mrf{Q1jUfSsTh-JOF{k=qq&0H>XwDmMjx z?xMq2BfAkHzCHynMuM&1QP4MlId%!BJ^#15T*1<-ew}XhN~dV=Ym+Azw5Wa-p&PwE zq|JQ?#DZ%{MqM2?J49EcJ&-Uchg=cTgSPH$FXcM27^N(DW2{#eD-#w?otbQ?r22@O zDDG0h@P4>yo9A~VI8DH?7~@}GO5BN8dh1y8>qK)fNN(BfwjRaJK*@=NvP4<(PXf`>d2aVLyeM^7F7;nvM(JM zt4k9zhF?VSPLScNJ%E(d9M$wP(xv&~k#+(m7KhukmLDj#&}Q)!0{J|&0zU9#ROtr_ zKqxnFZp}7*s;X;u&D+($z7X!_PoMhwTE4CgXzN1XBPBO*hXhrDceE%(XFfuDK*voR z@@ci3n0EziWO5SXT7(PXP{f|cA;1nDHN^&&bqaY&mil=%G)@C3Zs!AVF+C2HCA)7E z;fPzKFV3_1juJ1#wX$|o?6mU5Xyn^?UCA)vfnh1;z1Y>wYX{*eKAPy|u*R&tw8j9x z&O47YB$1wD8{0sgfnRZ%i|+fOv?dx6U}#{b!#)Uv*J6;H%p>9#|{UwbbE`vw*Oqc&g+OnLaqu79-k>nEe3a>ORE;! z<2rBPW+ZAjH@J0i=#RcASIp1UY1Pb5$0#O19L2JNAMrg>+9*nSfZKnpa1pC>K&5K; zg4x_~hKt0gr>EP9Og?-8Jq^kP#mbjhZq`_(M7f0@hh^j?FXoV>{c7SOD{T#59zfd> zw<0$B>TcCs4)|)%szC{u#EyQtVfoAW%L%xBx*+2qD7{V^l6f0(!@HSFixc;4k3*LgdFpj7m36u$ympq zziD&$=$F0O)y?juXxk=*=Pj{cuK28vE@G5bhongwCmQ>baaPg8Db^=ZKT;d31!q5J zanANTiGO8(YO*KVJN^;lGM9`1XzNhZ?V1gVM&-4~d9q)hpp##qq5xtW`Rk0L+S(X= zZ+oREyaSska}FrEBFsH6?nsx(7RmB#`A`8?XeXZv-LwU0d>U=yuAdb1ab>p%eRAf% z%tHYNSSzQbD%v^JJVA|?KSr9(Dcb717-X$;y%@!Xl=!|d&?ISCVxhD{f|mKAxhEgf zn~(eGnik9kNrQn&ExzAYPm_!Lv^*By@vEYz5{^ua(FRI>tr6FhPzr}QJO|ZYSwh%n zi$|q=lFX=84f37bZk+_J)Ejfz#Un)T#8EBJyh0qL%ZXT)>2ii}8+I9>XXO>(JWS>T zqrjb2)&b)bA3AKDPv>ZdNB?kEi@fK5%f8uOr+Auc`KPWB?a<7j*ZiD^-jgbMID%5u z$--Q`G*U(ks{N!)A@MaI|l@)(Z|47 z8CWqS$T_X7Z`@+dR+>#T2bkm};52Sv3*AVBXdl!!AL3JCR2@~Wq{45QXfjoMU{oH{ z7-N3l|E=C1>TOBuTipM-`iCRP`y!RiuPPQ3aS)tn@)xMR&UG$m8sBQeV@~s)(FL8m^ zZ};4S;^)w+D9n@#vB+wnI-0UNUcl_sPjn*?beVr@5Kp}v+CaZBgn=)yF=p|{B^}4h z1s#v9^cAc~uf4EWw!`Qma8zpf{ZHF*9$J-J@}mj7qIYDY!#qM*TXh? z+32w%jLAzskBF+xUVaXUghsx#5*tzREx^%6j};1vN`5?VCulrMjFm%O9={&pnNpN2 z&t52KW+DCx6AEj+nBAxZ78d`vsM(Ibj*d?aVJrIkO5`LliqlztVmU+ky&bek#H?1j zJh0}5hzxP6f%#T#lkfMAlUkAGuG(DX<$>DBrxU;i<}#wI%QsJU{f!QKX>D8DQ=*+; z75#NF?$b`}B+*Q4!{!GWhOz$88e$0IDg6~&_DtkIaauNjl1ZL=my?l)IYqE|O3F~u z#Ij(}!+lCgt7lD(;Zx#m*2{wMyxJ$=h0Ev;)}EIcbQd#dLGCv(tV_Xl+RLuc^E@*`!Mw--3$ew-8YOW%}>b8tKn$u1on zQu4vE>W;N9;}WH-B>~hxR#GtQ&flr)lHk!^zfHgz6$D^vWN`+#?e;}_xe+WlUev@t z-WUbZjX#iPFV;&;Ia7_LEz5YxS3f1vYoxR)uiww` z(`%BVMrw~s+j*Qr1MPfDn8Yi78}9`g)SrZ9lyh?tH|j3*q$y^=r5Q{fdo5FnxugzU zM5s@t1&6=pH0e|nGR)I=RfmiP5Hq~LIu!TpuY8x6L^}Wc{c@=}54X7Uvqe(GYVeoE zHOhP;Je3z+TJq&hI}(BAXxv8&Y{}C%lln|D^1=Kr>BKPxs~vA;kIVF}9^;nMS&AE^5d8g|AeBkPB1SVr*n$G@~XQS z&V&nXP^!`A$X8r8VC^q}IbWU!PWAEZPuE9H&7n z_%6emVQ@*JPIigjjU-U~8kv06ES5^h&oCbXVR=0hy0F@;xK&qlXf8%?ZY99XOpcd~ zeN|O!F30ouQXa;e`3s=Ut9}hoTi{7V>ycw_XgxRqSO zlJ5evMXmHvJ9O2tAge$Q&dy4!)9{y>UpD;G?UL*vJCi%ywYBHczAy-m<^JVl!((Z? z+7$9jQ=QXb_5WyJjFw{->?lY(>lz)fIhH9g3piqj(zuQp zhfWRJmv#CP)zKs$%~@c1#L*bQ|A(lYtCk{_O+>7SW|+jT}{exo;a!f|I3V7O55w*4iEZ9JAGgL zod8zx5H&e@SUCt*-^yrPMZRb4!ip$wSqNvD6Qc1r#wlr^31^Nxq!Vh)RaOf;qWvT8 zv=Op-B&a&JoD>$oSU=ipLseeI+9k#jhDxexM;N`PgD!?T9P@7m%$GhcX{xWPANPpf zm9*eIv;P0Bi}4H@fxN8JEa^}*AUNmReN|iLiCxv^F7vHl*#WrIU0loJhb3plz1X2> zs-3IM*@~**m{9EoEbD@4*a6=zbv;ENcjsHYfNQXpi&gBPP2;(-4Gt=W$)a=Aq(HLP z*^0e#{J~s0Z)>tuzd)v4?A__lLjz|lqn;S&FFerpfg;*4t4fX>Intp7)KyE8d_>*N zCUcosyMnf9My?>FX&IIRx5j^g1V-5=8?PvxR=u!7SK0zxw{#h`LWUC)w-B9GM!_m2O zvDk|>yi4j%&ER?As^#@hNb|Dc`U5sIn$3dbs*4U|53>J9Jn#|_DU}fDQ_tP$<+H=x zq&PQQmu`@=+L1O74jU$N7(&;l!@AHzmw{O+QQEwafJ5}zyd7IT{jN{PeRiN1tq^&Z z1P$T&B^pr2r)`8U;Ammbk(|j@cdOAUQxIvoW2BiOZkr<;PF}0NimVA((zZ<shPa zSG!{}*sY7pZPq379)(VCXZy7*J2Et`FPzE+(lahO6YPCK`066NMB&sn-MxfPoy1oj zzWp6So0{STyB*PsyC=HjO4rFgi2-M^)#r8>dvWYz(;uB&@#?}%5FLGS6^8qY@_YXL z?Mh|<1GZV6C?VHBZPnv3LMNS(O)b(k@7@5Qfy?P$l{t_`aflynxWsNfY{^FnMPK~W zl+z~hykvPfEU$F>Zq?lS-f@=0HaN8DnXiPZy$L4O#Exzc8t#t;ii$v|cidD8pj#28 zIR$-oTe`_+vt|L8#u}=_45PPoJtRAz&0<0Lj-XX?k#Mr}MnP;8io;?u*{ABKO*(L! z^TBM~mpIlHL^2rU+BA4fLK-rAZq>e>q(=BL7dgG!#q`mpX65fS{wW_SH2VoT4-(lH z=5z}@7@kO#9k^qoo0apt&{V*kjzT6MZQ3mvLtHQsD*-WGBhJ(ry$cpXUd;q-;rvd7 z;oQZ6&RfvA3ns7)`qB#}Al36jv zWUr+;g~@_oNw~~@IV#m1m`;1H146UlAi^QOc`#iirCdlLPTYxoKLX=ny(F?qTvR5Y z!Ks>8g2UTeC-}8ZW?g*2B|x=(8A7mQ;VltIxap#;xr7UgMa#=<6eCB@Yk%7mr0Y4@ zSy4JmngvJ3(8BDzV1&gV|O#v(zf(fPPy@N$L0t=A_ZVbS6kEaF7eT}W+ zaHR>kX`Qc2?@|p3(XFC$XB{G#9#8s}LYYZ6w>aq6=kzX1U%?8)wM{D)3M9Fdy)AxbLpTmtV?C_UM9YWkU5wqIx3uMDuk*o6B zf@0w1MT;*$Vti)fs7{<0w`sR=)y{7s>0lzcyMEl+us7#iOgon5TRd;m+d4mVU~%Ht4E*O3CEhQPl)caIv{3! zJZZ%zsQkAeq869#_#_zF>@pHL%PYX}Ch6NF7PiIYz};*mAsjg)n%#luhh?XkNJ_HR z@WQBOhZns6#sY2cf)`@~pD=CA)Gq%~#h`XU6T3R)ia;q5N~qx62!QdO2IYY#7wy=} zU<<}-vlYujdg@mb1V7*pt=JrnZj~S94WxSQ475c{eqE;E7PIW^G>RF$D@VA&n1s&Y z{E}x;Wx=Mc%=&AmhU_YXH{rXnqOG35X4`Zzpn0+-TxQd!zpY-1!@R6qkZPuW$LWq=l?OzfPV{fu-&YZRX%Bn4 z&T>NN5JAb)fIHEd2{%^BC_e>FB~v|r{`yW2Vslk6s_t$&Nx4C>1Vmt=waWXTyI%G{ zczVHTqJ5QK8{hUF|Isz~OB>3gMJH6t0mm~~CW|ny+OOA?7D%_T;f7(os161%qh*9` z72K;P)rx3^>ol!P)IKT!h`@s{9;ng|X!o0r_9`pedCJ&uKu(5!Vzf#%sgIGSD%!Z4a4ZUjTCU5?LQ-U=v`sOWO;@aMN9;m@V4ID%)H> z-tc1WJ;h(t42^i;h4uz8b`afs&Wmo;q|(A`sMKmsYUB(Kv5Lq_TQhb82VgIPR4Y>puLtSxJ{&8STM z=*(04sjT&gMJn>(M?4cT+xf0@h>cd0ymYeXyM3bIOrf^ji7~wnCf~&yUmky#jCOif zuR24R$pDcn?CE@WTGnonb4aG@1MWX1VYaDQ3hZ2-WQWO8`=ZAW5GfrP62q3F8fQ_p zW3OoL2ImXU(YNw#JHQ`ISq}4J%fP}LYQUJqnh2&p#X{9O%9oUb#0OL;v+{s0Gn^uw z|Mi>WrBWzTE|sX)eG>}D_y{dSkRh*e#7W1|QE!q(D}MGq(m8h|wqSvTuQLUPu>s{j zr43-&rCq;YaJDu+ghB8bR@P5#81S$9CH%?_zt*ogOWNV^=j-90nj8xvnpCkk>icF# zAuStVukD|jxH{NVza2W2T+NnHxAD(c79i}{KA(}I7=2nCyTcM%#-Df?>wA*vvC;_e z5pT4Pnzx$jsGO}ur25P;mnvL2FsrzrTb-jGWMWJbm%X7F#TDCZqJ^j%kk^J1ffRnu>2$g zEr0%|LmS`uYU=7qzp+7L$^Y8qyEjI@c+oGp~1r_`p5{EQ# zpWmjXe<$0NM^HKfOv>_Z@%u${pPnYc=+(pN^Yo9S z0iPjEn$$TucOn-g-3_KO(IjPV=bTE1Pr#a zj@OHu?bbB0j5ejwI@^V5wcug2e_3Z*-$|R#y*!D|d^&}ThvnYl`~2jH&%c@3(bdK|_;o(;yl7YBLYPyU zSB(g+l@^Pue}4^=_ND9hjGwRCq%H={2_Sakh(!(5wl`>S84mvU_}av@wJ>R41h1ul zxJTA)v_H>L;^;nfJr(A^fOa<^sqTUt=o2OvQ2>!Xj>QH0*ujKPp~4QzwIlQ?GS<00 zA&D08k}9?EuBT407L*|-#u*QCp7>yq>J8Mxm3L7cpBj4TGWr$-NSShc3#;yvQ{n(` z8fW44jTZ~7eEdSTEdoPg$HIs2bSW;xV)MFKXX6|hd{?hAfdacb|XZovZ=IN}s3 z^S00@Zs$2KpO5p1ozDV?eA!EW$2=3U-`yl1m4t9X@l4uJ40YUNCpdvpi4{#X=5(l~ zi(Oo(o=>kfEdNo+$H9QM&u<~QW<5Us9f$86#xUa18u{OQg`U;^{`w%cDOe=V2Z=-@ zoia6e*0KE`Pw^OrA>FJ!CV^mjEi*)fC@5Yg?*tfc6G^l+sJI+~n76a8M&~Vc{G=5A zFCuXBJ2^=u&SQGSNUL}<_pD_Ur&MfsjSuEsJ!#Iz3c+=K8FnF$SN+19f%W3t+{Ni) zPIaIRcSTd+y>?k{Xyl)z7b^m^+-4M)-IKw2k zG*rf!5&W&Rn||fJ?a+R+zQIA&OhH07h9-D@h!5cn^m3`~gW@}YxIJrg-uoi+0qNrWhJ(3+jDr~D z$j%*lT|dXtlV6U`YI&lPCBjS=!qp`?j1aD0(Qdgk2D#93%1p@6TCD9>t-$ zXtERdA8j7iG7PGvk^OzxJW5d6==$&XR;l)Gap}jsi-Bhb19^ROWc~& zAMZ*E`5d318kWKdi^U8`U+W$rw(09?5<;Fbq7P;z#~tx=^4+YxDC0?c;{^F~^{Uy~ zQ#&h8=qh)p>f9!aj)q1VfcXUbz4ctcc-elaP#&E~&RX6HOxArXDtKhR)u-wpMhKoG z&OpYQ{dKI0F(5wWc>^s^rFId5?|agJFy8jvuglM z*8SBWa$9)v)cWTyBD{*x>b+zMM=ho!^+6oh<&PH7l)|0BQav&xm*pV7CSfnYy!5@Z zuOrPEx;#GM8(OdZe`u7o*wH2(#R$oDypcg`sQGfK<~H}N`j|vQ()et3p5X;+(0avs z{M60e>ca?#U+CMaI$>7R=8|^spS~p!Cil&m_?pkp1|>gjS)puci+Q_uxlQZjB)x7+ z!3I9x7igL@NxQMXqr`*$?^3ZYz}As4q_%e9?vV3U%;ERJx??ak1#}ygq&SN7gLGCs zVa>je?Htc=GEAu6hkw4_j%uDs${^gtSF2kiV2Sy5d2I-)kT?G`W>MRm3}@&~Ov1(B z)R>{D@!U51165#yh~PUE`XoE;dEc&Myd4%%GD}ks_>tgS)t0a!(&}bTayh1f!DK$& z+V9R5TW||1OXrnZo7Rhm8~qAIO6vH|jnDZ#P@AT8pF9JZ|Lsqt*J?Ac)Kg)9!6?m> zD%9D_c!sy#%rdbn5r1KNYDL1Oq)X1>$F;J`R1?I64SN#WM8!Edg*%C>@Xh3m3RO6d z^z}3y`DQ7pMVD&c72^Zo##VMEk(Ryzyr>`KI@-(E`zuH1G0yY}gW9t?*2)U=yg+7915R#ljf~cbxo$(tj5;N`>q-rXzUV6cX!n!Xck##Piz<3*QyV?n zK+qgC2CZ4e#DfKmJgAmZ-n&~oo-61qWuPoUkeiDO&(#eOyiFj|IZkC|cX!5G@l#eq zlIkwlGsT(JtM>iScNQ0M#QwQZtI^^5qGBi%j`<_ja*fnon@2^T1c*VY*;JU2s9U9_ zrlnTkvQ5lVfR$n3Sm&eu@P4w^{h#kAmkZJpL~8$i@tbiXY_QG=;w)1!$R zM-`S(C%#A}`II1XHxM?2+Ff=oy1QH*)-ltjd%mDMd~rI7Y&Cqyop%z`f_)^ykXKQ-KiP2t|;-&QwI2aT5)Rh z(idrQq?XTYZ3(MQY~i|=ubZhf$>^cDdDOb8`g3D$evgt`I-}`ZH++o-k@F$Q z?>3;NUq6d`|1}-J5t2;CjbAVP2kp3NfA22}U8wa>`fZ-_Z!=zrPgZ}UHhIL!Sc@-C zJsSI5Kef$cyO#1Db*R7H;te!IHN#ms0K$RE_l41C^w@YTuN#j2 zx8Ny8OPr&ueY@*pwxSJziJnh7i~aF_MCP9D;uzzoEx%=f2rfvqEw#jP;uYx-l9+KE zu=Z?jbX4VL-UzC@N@mH_basB}>ma9<6sK8!AhVrCw9{w^1R_S35lA$gblbJG8U^iG z#g2?Kz+YwWco{CR9-+#>)~1z`(3k32p%N?b-nkm7uOYFyY}boRVokCOTdMM}~c zJAz7upcUE>8|I3k1V1mDGd|YBjWJ}U4I|3IuP;^%8+`*|!ZvuS;wOpDQWYh>*Ewl? z8#nJ8!i#ZJzjodSA_%$58}`c+-J#-}zH2ZrOLEoPM~jhERS*S_+J>9NnKGF#)~Exb z?MFY5G0_3Qv3c}|c{dMD(#!R3tl9~XAsJ?y5%QRvlqEa8I5%Zc)4nS3PODAM@#nRk zc0%3hKf$QY&17eCX8qae#EgVZ=B}$?iMsc{UdfFUca#~{@u0Wo&Pz&=JSZ2<(ci5u z;yR2)CI>vVWdufiCEr{&tyn9L?W|v$4ypF$VblCtyFQD>JM_>wWA!IrGC#x*)z#ws z1Wc2s&ry_@O@vq}j}(8zJ^UGXU%qou8l45-jEDl*l)A7$D8GX~X%w6y<`|9fgG8JcVs=(e6&7{v4T~bc0x$-~ z-X3gKqqdFxJXehVR_9i%y9!P;-kh?mL;oo8hr@T%a^Vr5io-fW76gt_{GAFgq!WA& z{gEpKU)jMvr;<6jmVxU6g#v)ssc|Ut3#^0O2=Js;W29Y*2(CMJiTF^b;HToq1wQ(< zi0Xb4w;s>i&O!+IGwIqPUwf=_hVFgJMqu=xAD!WF6{9k83< zW24MrVa=b{7uu~!yk!Y{&dKUVz!dLzIeyT34wI@)frRp%t~gs?_(3Vvu#`lIO0B)L zlUN!>&~VN_p~`Ki59D^VrfGm`l%WQZ3BGXMZAr|thCb>rz}N@q z-KV}qRGsamv=;$aE#Gyb$Ms|>#|;{npBt9xM8cSCvm)p9L#6CGnb0`#tL#~YZU|O5 z5!1fORADJ-zKM*l;A-Bday00*O(Jv{VeJiqd1!+t*dFTCY`Q+Yn$6*sh2Q|Qdfbj} zeU%LBq(-1pubj+T-wQe(h{8H=FZsf-cAcP3ZJuHT(1R;2^Y>IJc(SrsLXG+hvDARo z>?b^$R$T^|zD=Lc!YtyeOy1k{t4?RF0B066Wd}9B^3oV}-0M;m+>d1*Bfm3ENz2=}EKyIhwhxR6vM&MAM<=(o(}?mZsnGV%HGHVS~_P*H5r}kk}-9 zWly=NM|*@3RXuE7a@76jZ2>2fi>r7g4={5Z*O6 z9xZr7e)l!i%qdi*UbwcwSd;YIWfSB1!f9jfw*hAE5FDj(nnrM5&_u4&D%xKJ8Nv=S z*J)xpM@Y$h4jY5BPRoYgR5Y?$MhjC{8V*xCRAZ=bj_;{gKv<%Kl+m24c{u7aRXwnb%@Rw1wKea zG!NhEe-Han5T!(G_M>!PK20%t>R%Pqt%YDG`^MxW+WwBeaP${XktCkV2Zfiw(Faj_ z>L1&vt~c7Usb!LCam=7vFMtoiT+qxpt1ss@Tgtw<=H^FH{#9 zSE~)lsc5G5+OA<#eD`W_ERHqB$=l&qz@(|z$e>GyPbBNy9h66IcY1pp17_mDi!V9z zd`BY`YIa^;`I*&wR$9ad+6m!4L+f>zN=m~@9#@2Hlik&|q?6|)Hsa`O-dw9PP$vh( zkCgVQP_fm(ayw8b2vh6+EMY>s+4=yyk5Q!WZt>QlVo;J(lA!Psh;Z!mgB4Q6fz8Y~ zIw2pc_-5gpyipq(b*YZO5aq7rGqh@LM=>BsW<(RfGKEX$A;&;FJ+6GW|ww6gWgRCf%h%JKz7l6E2JkS95e zc~nrh%l@^Bm~BDHQ0qt0O!1PdgXRMw9h}sS0>gv^%csY_(Ayo=@-Ctn1dna4rl~DF z0H>x*N{qIO6--!p@+S)SK&Do70^H@&1}{(+e!HJCC(VytSRK439Z_>>GCiebl?4*k z;3n;j`qx2?5xnLMOljzf{^{fMk0Sg1Nl*26&FWsjiY=*wEHyx zFl$pTw8v)*Jnh>4dFpYl8FIM4j2>2xVyR4Uho=IeV#;Vc(soDBIQ zZ?dlrJeFB@P$91r&?1DvDLQ@^Fbc}09FARg0s%HSHma5zhEPnaVh7G1XjgEmgwsz_ zenIO!1fsgZ7P>a(-xX{jjLrI~BbG&^VPww#UIc?+a;2J+VySu|B zwo>XU90GsDF~C1Khxv5)s53y-fMZ|UvFKyr3HMLw@pY0RB>bhyM%7fv1s7Ke3^?~y3-2Pd0cwGX+OGq+wo9f*ERgwI!m9d+@?=XuB@LaNhKJy3L0;2*lYJPf_--$pMMf4d#1CnS4dw z{+F+F%d#BRf#`(p^78vpQ>ppS<5o(<4uPHhk=fOGd<+O7g+d^r)qo(O&V*)c+Zp-V zLl!V~>-zIIO#ueKTS77AsBCtx5>=%-Ll|Y>R^Qz{8qVr64~5N^I{B~*w1;2%GQ#kd znHWiD_3FHLC73UEwFFldN$;R9gm{*zYB)Ev<-DIL!dJrJbZ0n3UhVwuq~bJ})AUq$ zE;l~sq>IE^P2vzer}tdFl%+KC{XAL9ZPeIA&zuse!Sc-b6$Gy!(M9pHgSe^04b(Kd z?{=(jDyr|-Z1jG^8*H$b@TWFoxiJI+j}0&@_KnrCmj9;c*wzrz@5t;MS>9&gEZ|dO z)i{8=ClnVMczeUe+@j>Y5w~obly>F^{aQ2>%)`mMviha1-|N6_tG9IV4LpPXeX7^3 zcbL=4kr4R$IO(f2>ZNCPQW~GZ-eEajaB5>5x|uCK6lIR=T<*!enix{QeyX})Qd~Ms z;^XVthnPB;wAb>*m>;%49e?4ane;a1wlnFMG^pESUX z1$lSNUjM)iqggZ4oR&$^#ij2kv|oIyk1H1S^!M2heYLtL(jwuB0nHR!EIr|3;Dc{| zty_f_0xK=6bO)#;T)MQyj01np{c`}sTYsvcz?(R8e2O4L#hy8fpvlM?PL&zRozLkq zz=k6jbRrM-PsUNFefr^p$MGvM;nTtwJodkhwpMXw#>V1XU&S0M8nNh zL`H{&gMQFVCic}WOjY(P)ejx(cDuX8l6rdd-%BeEfePx3j*>UeMDnSpObQCt!k}%; z2fBgvYbV7dkPc!jp2F;04ED!{xl#+YoEI?+NLPNyGMO_ zwKvW0jh!B1EWDa|d_C6qLqLrIRwo9~<(IY!K$!N5$~YBL|4dKN(5W|INBJOy?o&6onWK+=p4c$@As@$AWVjS zAhS7SM7&BS1W2~L?v<@S?MlqAk5D%D8W^RHIu>gdJOV<-W|@Ou6)DynPNyDz%!@W#)p3>tm4^3T^k;@dKm_j$bp9JrVgd+l~447=Rg@ioLm`lcs8 zPoib1BKY#Jvev0cnXvO&JBZ`%JkAiljt7~62)G4`+S~2dpXWF+ zv$?Gpj__-l?U2~J;?izGLy}QoLHTtJwcRot4(7{Whtv+9S-gM5 zc0K0Jm9F%Pv7^ERv-j$Pzh5Sm^ zOilYUqFU%rjqB~6QZ9}r+m8qtEkIV?7>w6TmQ$PJwokx6W9s)OrM zrV{|Ec~BQPxhdmzxfL`xh0zsbXmyb>^qQ2;d8*|Q7|yMWCzmQ-Nw3mm_NNe}w?4yk zWxl}nn2dz<@wOEbT0Xl@T^={Vv_zxTT*mCWKBGg3*W=_}1*TNYK;)1WNR_TeE4e3V z#3b=xC|n3K&71Il>eIMs-L!AZV6jg@p*9l}=6&VS(|AQAZhPmYdku9|=zRFG>i_lc zkqkS$pdhKo=%`&?ZI$#+dD#S3)$P`2X2Y4gj*RP()`z4mKeOOpkE9BY*)nNF>g}qT z%c4}kH5S6vt(LC1ZvDCR=w~2a@I>fSH9u186+lzqT%D3BAxNszty^by(RLaaF?h^Z zjgd;3)(4*Ib<ivJ~dx+^!Z^ zv|F43%+l)b2*rVoH}52;(>>%LayZjUEf!rF#7^>*8+~1ae|!^`bnqcOzxk0|%wJe@M(7 zvWMG@fTa?K@tl^wT}yg?B_;d(zy{OP0^oR|=BBeb?cGb;Z3V9CK$2vb9xR-?w!?nJ6dB*6U`2HUgR zjyc}Ok>teYW}ZiHfX`yQ=5h7*RciH9E?v^>COG5guo#dR9TS=h4wslUJ5ga4f^CD- z=47yB;3}vKNwbbKgwVX1x};%Q_@b|ogN(x}T+jzFfvmFS2RLe(D! z^^>)2g`)_xc00taq9ny;e`U)tF!eFS(&x$9r3XkDY(+6rUMh7VnGK;X$z|nuX%aDjT4Mg$dgjd*^XA z*b}^(DmRx0+ro_Agh7BEZiTF*DO3i2G@CvU0!GivJ@JmGkp;#)F&V_-DPgbJ(h@?p zYpt}Dur>K-c-3Q!4>CAiq$an&RF}!EVI^gb1?s^1G}q+Su0eKaB33_4waK2&PvmBP zxv_;zSJh+fSlH*Y-9j^!6^-^#Ig7|E??{9o+nBM9L1i{|(MXwGwp*{PQ{aj0fqMNA zPS9iKFJ2fXqohSr7e+uO2YdKQ>LgY`RRCtZN2VeR*?<9 zpVH~FBnpQ0wiQ_{rrZ_-pSNEQKSe0A!;{vj4uxMqo}j0m&-2BCYybACt^Q^ccnpgp zHX%^wA$d8N%)6hk;eZI1o($=ZFq26PeV8@xE3V2kY2W)-&9012FF)|g3?!J?J+ewe z_b#o)mrjQ?;VgvUa7>lxCusBv4Oz4oRDVm8ZYH|{iX4b&U z1u!lo#)`x5xIS1fOagT8=RF<5=*QpNMAEI*FfTxeinbeGAP!2+4e3X3RyCFf^F%jw zz7DW1`#_(ftH4{(nzSR{>AU_=!}u)v9*yqZqptTsyWRh#c0GUoo`j86p~CL?nBF0N zL;BxRIlD9_kSTBBelhMlpB1y{@w`Q}C6eheJoPrS#WoV>6CX+5N> zm@~#~+u_uuP0Y0L&K+j1TE-xq3|~J}iuUHYDr-Q{EPtriGXMEY0d>|daSycC>tuWz z`69(~&8^N8;tKb&^JoO@7awhS6v5sFtgr#(k#rZyPa;Y^0cYQ);8DhXN|!B86iG`n zWQ?a2O|5t?Y|^7A;SdS70SAEzvz}mQdwun;&yH6Eo$*U3vZF{J-e498*M=&hdQWs+ z@G)H6M)Or)Rt>mpW_u}CXldF$ChJucPf_CXLC7bE719`$TD+4pYwV+@&?W7$W#r&- z=}dBIBaz*~voK&QP57c*EU=U^jbn%{+Ax6X6RLQp_@6NKM2q+2@R5jv#oc??_%i{@ zW78_gzgset=W;E;QoHvcAn5`>GUQo(jSK_HD_&KT9$lhl{WGamKev=JO1z3D4iilre3{lc^uJvyx*XX(amWW_U_d!b(HbVQ zs@Z|;aKQT7M$}%92JbNRnx@PiFB*Tlw;guk0K&T1O-aV%%PzX(T+$4VuZ!-If?YW4 z)QR#;nwS8rm;P6BcO2(lW&#QiiAeKOJb=ccN&n=tFcBI5c2F58kjnsD-dU5KPC4cK zVoP>uOX4(iZ2K22_QV5GlRA5#`@ZtrmEeFf>Ui=4Mr9;Q>KgEd|Ihm97a5q`?Jj8X2|Q4$59=`^nv8QFe@pmEkCIr(R^cH#6(E!$_rcM2Lwn!Q>Xe;5^lag@m*uT| zIS1Zt(6;kUbGhJw=pYYg62PzW$M%bQ91n48+W&{iTObMp;wC!+PY)Es0%gZ;KHOQE zxSmx?(ulIuvHf4rsF!V$OP{>L`;)u_plPNuR5WCn`ei^Yc3@tlp7N<(f9Xx8Qsdb! ztUl^L5|tgLU3aHLwpD6N+4`O92PfoHnp0Z`_6PYb8I+RkD0@|U! zfSg+K$O7qy86$bRO~Wro;t0Z#0SGal%94oyc_|m3*2i@5)0M5rmz=B>**+H0%0v0P z^zXG>EI*4V+8r$A5WvISF2VVBMGe^7_=RF#8U$D}#J6gaW}4f+mg20JJ=Kj6Ri8{z zv&itr+{`M#gVKY%PMD#g!40c%zzKG4@?rWk`ICvLkj^5lI{*C5fP7P@7NXsyd?Rgm zj4A#VX4FZrI$`B_hx*wCCNbKu)&OTRnEgvK6v5na#xAuoQZ-|XyCx(V1PH8|IXDF^ zTQ!6lR~Z?t%n|I4`nPv0XJJ3i=0)vZb@hRKF+(e`0Xbl65u=zT-4oM-lgHDC+8yd5 zeNp60Ac0a#J|oeb1~?)x^nPJ#S9N>`%&&DJYf4XPk$RB|_Ok`v2ax1DI)sBu_Ekkj zB|L=&l(Q(eRHFhet#nrPYg0lgH`k7{jPSTEF=K~h+C9c5TqlilTEj$zg<;WL>W0RS z(_VZ|SIhiDych1$^^;Hcifx6t?SeiRrCy-ujWPnP?D|G~6~4ywWxO;LjjussmdYy< z1IdPrl2IEkAUMXo3-hpgw&j}!4@V84nTomCJ1x62zZlDUl?b=@%VGC2V_v(!BK22d zh8d{5$-{UwYtpZBUoF_xim=x%foP+T+rT*OGEWu9*?jU6teLF z;az;7l|lZ&oH_b0;n)T&zzj>MX!gbL+)IQ|6kx{+&ngxU6fBmy^syd9_@{Ky_*3Ib z`nn5PyzH;?8)1#{qpcA3I+g6F=*&hW@fG0arXlA;#3T^qPIIXt<*OyoJx#n)XSk0J z4#DhhT?TFB><&M3cKM6;Y#0N16DKvz7Gcu7*ju#2XjTZdmf4P#tqzXyaLb}s_NfCc z?Lv=NAfSIQ9uYzK__B8DKX1_004mz*ys2ybj&s@eD}qPdTP_?NBULDi^mE* zT7PP}yJzZ}ObkeysdchJV|s@;zL-f2QSC&F{=#y7jddyZY#H8*ofP@LafV4IyvViRVd0toZvE z_T4n;=FGkCYa!`b!R<!j>|XK$yPy_1)fC+UP+%%V?_FRw9$(MZx~ z=YiLK88Nn)2fwiEm#t)Xv9)i}Bp-U(a^ZVg2WJUguO$j0R@tN{AzrwEg$~lH_?mY9 zyDq)(XP3r_KWBqlID=Dtebs9yo1}~2F@kKF-K0-@yR&3O7IJ&JALo#GyPXo9xpH|j z-+?kdNN;y_=%pGfBb}K$ap((k&gO)O#^~Ntll-0B%GgI{)dHX0vA_^p>*@Nh;X3oi6&^R9$skbT8-mC7`8OSIDXv0(>JNNH+!Q zE@iv;mE5`Q!hu?}|3_s>Oynv`(bJ=9OIpa`;jU0=JA7;Idx);Gj>#je=>6h~5#8*D zQl5yl6o+*b82=mEx~M_l%DY3bNxIk!DDQ4ZBJ6E2Uyd(#M;kE2VJu;8K5o#(R=sdtLpG05mOkeE~Z;jJJ@Q(CIy-E0wi4PxsnJl zG_w@zhh7(K0COW%tmTOQb32-4(iNs5`~g{IfyIh&z&=2!A&pjh8`Fq~TI`M zjkWyx3VYn@QS9yTP;NoMsI`sA&-iFGVjLD?l2*RkJGHFG)@~`*)5`ZzqYR6WB!mge>$brtAkm2x5dPOiN*P=N2$kh zgxg|LRBINnxp<86W^fZ$H@R~j^YsKZsM?`nHt2>fDFa1y>*KAX8$h@L19#LSxA+j^ z>J6a+Py0-rLdy!q;#0*u`_oxS(lRQ-mw1{xyUJ7g(1jA$e7ZA;RHMqjsu=k*~w!>!R zR79k~`ED>R0hE)4NlOt=7Nk&$2gLO3JQ$O-sxi`4re?~*PHnRTmGxynOH2PT6umM% z_Q{90hC)v9DqjzS4;RNp_pY6FAZ$Vs6DwZQ(vWyT2oS`lce?gTOzW+&9lSH&LRO^x zoYJuE&tHu)acv+HR9|T7Dxlfw>mocx7K_AfV!7Px#~1pudo#ZjU#GFWq)*(K>@bRl zVjd29RuvW*1D|qb`h?m z{^dO#@$1n{-U{1XP_J!Di|#u@he-Is{Tuwj#=@g(p}z-DZ4xy`P;={B$#S1`$OO|a z58-QCRwWTPU9<{b_17?clFLExdX4E!)?%pROrJ&~*q0%B|M~l_Mel2Y8zPamNF2-3 zzv05j({Uu~On5UhEKK~gy!>w4r~&T!9~TpDrRe7Rm;#S-$(-GDgJ1&2JZwY08b!7PFgBeSZuDq2?=GGk+K)BOJ-f2DAJ-SqND#@b`dM>MkC7Q zoh))#E~h`dnXVk8zOlWH14np>1Ew-h#bSA?zg>AImFD!jFxcv(PfcG?AKhm3rCe6% zlQ#V&PAF2IHx88n!@pvKSzkR!AB?u-g!IaMu|qpOvnp?v~=Co$<>InIPO4xb7)@r>z$ST^BiV;NTn`;yUDl)s@|YhiBgsmBgl z%FPw*4CRwK5S-nGhF)_b?YX|M{t7ce8s}Hdc%(b$*a(lA5qzam>#I1oQ(02|1l&BJ z330qnc|p6`x3C|dvtUl(65#pj(t$_Lhxbw0q6OjrmB03H6jA*xpY1@(m!x{%|1~R% zN7&J?e>zKTQtV<&cG7EbFpiosgC5I0%oBdQvV7&pX$uw~&5_=g5EW;Y z=VcvZ5E1UE(=0Jq12^~UCgCzQr+IEeCsvdT=$Vu(h{xWv91!ByK^lnK>vbXdI-DDG zcWK>r+H**7zB^?%sizKBb#w(A!EIps&rWw<_%iM=Qss8T6YU`4YCi|V0ROp$k)v%M zMUxcfLbjCiGV&Y>QCEE%pxAK@i*FOhIHCFFE?##7Rv z#q3x18oIsxHzJx#q{IG0&g(H;eqn216Iin;#Iv z5b?Wm&Mk%KwE;Kg&uUixXJIU+5xV4@!0#Hzl=pERzXN{Y^^|hZ-W8-KEmUYP(&4d9S0qHF(YQ!@Qm- zk@%lg@q$4YT`?yHKhy=@9*MqUpRnHby&MA+8^0l`#i>C#0sVCP3UP5`Cf{YdXZ>}9 zf6N_+UQ3dl*?o=KRX#;sr*3V3{vJ+riKH20hRg}2A13M@AM)X^Qef_-*v_^DoMu6>*SU*CiBabDv(EheZij^JTY^f=Y{NJpYR3N&#ZiU)`Nl4`kZ{sy#*m zDY2o6GD9dSOzY-j1H?B*U%=Mt1T4UPHJJP9prBR+R^GwhQ0AKD48D>^?Rg8&%V*6J zMPEn`JggV4fRl1@Zk>6MGjUDFhfAPNc7EQAev<77{d&eZnAOvK&&*2hu3;>ywa8ni zE1Ihsg>H!zh=}6Ttvlu|l;sGue4$bjk27k;(D?4bs?TlIqaY$IxuhWX=SGP3!W~mL zQY=fki~}d~;vZWwAtVUQ8@m%jY0fpZ>1dltUC3Wt@hN?1TggmJ@*I}-L+t#3WU>Kr$4(yYP#fKXZf{Q(f?pl^V6#bj z>a`;vCL+3DvIeP~trfi%I!zZE?)&-YZ)Wpkw<3%;IU(htrA!~?WPOsHS5Zmwto0!n z8W+`mpL@Qse;{TIP}Z252|HU&In>a#2VDLmRnmc0L^3$guAB<(WMSV;gOpKgS;5ip z#(Pe^v7Y;q;zz$8rt3t(A>=0D;oQGt(-e|CT13tyNr6LsS*WRbtknFaJc7GBh*`4c zJgW&UIsg!>V}Hd4>N-o})M`i_8}49@CcC>hDQEO_uL$8ELxQj(X_n6~bb~ zDP1$ng0C_f>8F*^8<_)umK6}9@tl*vaJyeDOa~P3i>6;|*EYYls{qHtC!e>iJ=khS z)x7`Z#>*thB`+n|KBpc>Y|<#%o16jWcPq~)dEqxMqlr^=u=<&8EQ_8w{1kD~tnpoCC zjq$?1(eSKybajfy#oSJf$o0NLd&_|$lj9OMd#a>)mFFW}dj3JI)JvIh`XDhOj&_V9 z$C`6Bd0okWwgc`ltS>E%0pMM}IGH?da}1yQLf>+ojT6W)PAuq4=3{Y>u)3}gN$ec! zWzqEJLW1l~XUgnhAUAZv`r|DcdTiB%r~Af@U~44Da!sqZ-c~1@qh=3Do=T3{)vD5z zRjY7zxiM7e(ki^C`F%b)qbs2Ijw2XVO&)v`v2e`osC}s4ttsjR*Tz%oD(=<$NONk* zf=$dzr%Ivci*%uWgcS|68*dDo*4YFYj=U>+Vb)hBt-dcNq?DD&n3`kG-W>t~q3r=e z{Dqas4#G^2p1JLpD`KeWMs+^s4;xu|>D(<0xZlw2W$IPM760-wZMd$kLIreqR^&(h zyXi8t@%|jqQ1Jp%Elx(%#K5iIx)uUA8XikKs^blv-9>(jM3k34hs|ZW#)v%6j)Tvg z`gJM8pawi;l3wnKl3By%7y1WNfceNHm<8UdNi*-M470>T?3H^p7yP=ZA(vCZ%8j?O zAWk-Kdn>w6LmsU3bf^V~O|y%#Ek?Z{-_$8^vexVP-7o0!!EG@8jR=$P_0*RM*aUWus{7AiZ4eyq-8 zP37EzFCmFV?gc&-*ZEWu1PCvOXbK zAc`+Z3Y#vuNF?6*gi$l|Q>Bw5K?GTRIv_f%63_-gVr|+`PX7i2dQr=7VH(uyjFu(5 zx}4Z?kUK}u`WkTEOshww?C_V%>-UOZ0z`%N3}FcNyh|5$&mFAq(FOqV7uOLSf7&ja z;P^z^yiRYE?oECPdv*MCj_`7yZ%1UgZv>U=x~O@}!Ny#V!|^>$t2Vg29?6lQH2)zD zGo{6umzmtm<>R+nu?lbkY!}J}!|FXMB6Zk$7#-&Cygz2D)| ztFyDC&+~bgcEyy|^}&9D#V8Astd$;GHMKQn_EF6=hk!=ewq{^vO`1f-;u2)@vc1n}gHHUgAOPxw5V?^UL6P2*xs%kgE}txEzemTUC z=T*GovlvcDceT`V$MK@h?xH^$M?7naIAfQQgx0^eXPg8QPx~pF(yev}nh3fB9XXJY zHi?c+xvm;^s-0XhE59GTGW;Q73afkZ;bEUL$?f7H1N9UypL;^W&V`99uwOQ!@ofMm z(wz{NJ1ui5u>yo!8ntO$S|~9yH-VR+%Z59;NV_tvScg{BbS=N9-U&0u-V?Cawcnmi zCA@CYq&CW{(Ic$dW9iI*D2mR>a)N*o!N>G)X=R>+)-I`v=*;^m4bp z)Lo3@u`P1%?7yM$J%f?~r@mg=rKZ$&ZmuMpZpZl8Qgnr0ZHuG%PE;RX_W zTK#2W8~uAnKGm^zp1Fn7-p#g^r|d2XKeA-UC?z83kVO|T43{cw@M_T-#Soa|NfNUFT5822kp# z7*JcED>r_o=S%nVie#b(x8~B9@9_W)FsJL(pM2j8We!Z-hS`Ion*?m~a)dBQGheMs zW%^;<7cG??|dcVp;*sq6-O1Dc*B#E&GmIF4l0v41uUAkQ**gN zQFQxj8rlXPZl;kZ^U;pfA7)Dlkuc2=t6IlPr+axh)=g8uXKzXxNxw1hUcku< z#-?SI>+Oyq&G_KS}hK#zv>*Ud;8xl1f+lF1Dz%H7P zS>EhjD=H|rHf^@F_%1=&qX#@G&0N>TB_g7YjX};a-Gof6EVgkPm?_O>tmwiqurbL_ z#3D79acb(N+N*nZSv3i84bDKU4fLd<#&XMWY5`f%oj5yu2GM^exYq+%?# zVc(bj23EKgGgGU+9*xEHKJX&-=drrwS~vj@j6q#>lEP)o7Lo~mPazzDc>3`z7H$2- zADubVzY3atc28Fhq>el!84NSlb9n9xPzKgS+d zNaxEe>KP>*#o)&xOND%YMj`o->xl)k$&;&1KV1cuSlOcmT z^S~uv&>X<3X)e%eZ`zZ(b-ZCdIMfvdMhqMsH209q-1YI`LR@kg#?+T+fS_n+cV#xy zpAzS7-wXfIG{wr#ARJO)e6SrJFctd}CjsQv6PoGIq6y^GzEkdLOm++MQ1g7#sl`{? zoO%id)eOL7o3lBu5a1t;POA$wI8IZ@e*IM%fLWM}wbtMqQ3vAz(i)BkX>G&zB<`5N z`Vy?-${NgK)yN445dvN4u`kr=Qz$s{Z2Hkmb=ny1&{%hw2`ZB%%W=Zh_jOLK-kj^#JvvyL-jhXZ=Es`yZR%TeV;QXtM{yc&$W32dSA-SAD9s0_8-*;)RbMVljKhlJd4T zY8Gg?zS0+36vK$ zxlF4RGv)DYfKR00u*ntb7gIIPE1jipK%`CY%DI|N55r=5J*Fbu`d{Ls=4;S}ZcC}R z`YLG}3U~c5_Mdmp&64|t4e69OI+{hC;0sRb?O=E;>4En&r7W6yXc3 z#!f@kxN3E;29jxKiVJoF6)@u`BtHq|$FoDj&n<_NyiS)klSh|I8& znfqg1Eic??c|@w>_5{6lVHNUg^Yp$-T)9trCN*tsyCl|P{JO-u7ko03AiVrT_XyuU z2<@q6N_5mSAydO`K0>ZY-C(P6p^v)h0$^?sZ+0^GsPf4cAJh2;n;{gdm%e%N{G~oV zQ}GdK-`00-g|(=zIvo~hqE)MiM?qJy5{_QYh`h^%z!J5-0}SmW1ft!t)l>x4liciB4)8rm(*4$z{ zdQBzSkqz4QX&5Tqle+ao&%ZK()q359*d9KT?i~j3hvpn^6b3`!qLN9uPo}Cuc1E9T zelXX&ACZ)*hb0%70>#3lrtF$JNfNo}r|nJIUmfB^AUPvGKm5?>UGTUIYpKdFqy7yj zb<_`cHRKZE-IR!OsOS{)aj3ab+42b5CbeO+HSio1wyL*kKs-n3NvhDHx|G=NFF9;P zgiCp`Bf*RvH!$q0=bGB1%i0i5(w1KBt#YS~Z3h=+L9%0css;~X)3T9*B8^)$?jE4K zH=1^n$(X@)-pD@>uWS$^_db7`jaJ6Fpyk&McQ+rgvAk;5iiEJ5m(;uSZrGx5s4yt5 zE`r}b^*^N;L?{C@M=hlHiHcb4%}J(Ko&TU!7Z7O(7`{^-mdg2RkZ|mH-}6hKuuW~h z(?|_;-Mgo1Yy}$tAbIz}%-FU1aJ-2hV|+7BE?*0@u@&d{Q*vjqCbcj#`<#wKaJtU- z3JxnbR*jBPO&)sTYYn@V^D83s=)?S5#Yb+GeaWlaJ+AQ~O=-g`qp|N=yhb-seo~oA z_4rczKpsW_n@gE$oP}X;rvXPJUVGe%NXW9(k6}=|B9#d#Rw&Ey8^oH6Z$<-u&3xDS zk&fOCH{qv_vD=WsS7$X&_0pcN_PJHVi9v#mUaLhHia)hent9Ape$Lhx)T2~Fr5}Vi zw($B&40NqRj0uz3Crk<}L`|lnK7&j2x${y`0~P`EbiWV$Y$(Y_P(6CE4OTfH3bR99 z9Sr!ce&)`$LYk=|b0kTt)QK2jM02e(vxz!)*zBOG!=qrcv*s=akghv?tAOFAiI9=c zLsWeqWH~*_dUdNG8J)sFl()G@H$=p^{PH4Oi8>53GJ^*_6pGy>v&3M%>~LO^WeRn8 z&J3$-A9Tq@T%xp4u!SIDN1-0qpp0)UwN**usSxC4q0{<~>$OwC7!Vlt>oKZt;Z<|H za~B;;j%BUPQ*ZQIC59NejLq2A?e~A437^$YXR$)bLW(SG8>;fgStgwECR=gv$Rp() ztzzTxXMph7D_q9ZOcb23O;m=8@Lh&Q^f*MF&&QmjFQaBJaE0EQDm|BzdYUHPb6&MM zzGIgD^ht7*nfXXoBdpyz_5kWcIh%U8SQEh#tqJD!); zha$yGZhC*e7>13{vUD_}&NRD%#J&0zpkygmont5YvbJvaMFGvL@6ZgHWg~q}_iy?D zN8!nyn(-8S&*HiyLJQ6Z*74M*9z{?OkPLO7UtOvIQbfW1v+4bnOYg5QfL-X`^l0ia z$WNU=U@P0yGwE7Y_?9?jVax7Y_1p^4PUAr+q%QV()=XQ0J18K1A3x5HsPARKmPTv=!7PRxbyIQuy+_c-hF z%Fy7zq9E-bL5R!<~{FT8)X^>$i$(r4sd z=-lQBIQ)A=xr?U071hcq4lNQhA!YY2DIcxeY``{Va>c&C>}1U4!$a-7P7{Hax1$%B z8DRZVR@+wtyGQK0PUzf)W{lq>k=SkjmPyHYUbEBrZn)*VYH{R^$P)V0vGnTr^Y^HL zL0^M~3=8eboKA6IP0|DdXmawf@Ea?y=tvk3?Db1)5<#GBBxB(?ll8g$TMk{*OQ5_O z2}Ywejq$pEGLN~Ck%QxnRdJ}{S>4(9^0L&T+(ta=cNpQ_z3sdWM6!o-R9K<}Qu=gY z)ADPgVZkIF8tsTp8YdD9oT(kPs?qB45XtnB-1l{0oF}}`R(+Yo23WTJto=%EaaUCk zAW{))L)>4%`wl&{e?iiigVdQOOxJGI9G0ruc|au|8=2nJf`dmNLbhsLWIr55*SLgj z0Y228)w6(4ota%dtV#;)D1tY+D@2DBN}GPFqpyWF3EPp677l^o zd9kKJSS?Qe@!%!JII&PyOZhn_J~4!~tt6In@5|z3+bhU7yj@uCUE%Xc4AUPSXQ*FgSc zQ~wBOFfgIcWEv7f&^uxCq-JszBEv8w5B9v1Auzd7l(Xg%4k;wDq6#sy;`7hZbw*itGVZ<;&V8iE{-5yHOXD;&c} zWz2aQlzU^h_mN-tiVjbh;PySYY~FR8dFhuoiCBxe+#1QYRO)bTj=3b8)xyZ+3P8Sc z!!S%+A(0X2>#re4`H!rX_3M}!}PG%rcg+dKzFYNKK82_2~(9b zp4@7zxC5;q=0=XQ=ho7G!L^6p%`%c@2}a9h-Be_gf4W#>$$P{Tn*FRLa_L_#2yGon zbqJx2U4taz{=S99N5Vp@G-e9EtXu&%Xhu1}_Y53-Iz2M8b*W}e zA8}^Mb!niR(TD)0=Rx*R$ zcz9viZH#73(&|I6Y`b^Zi!e^>F42`s3;><#vu5bW%B4!J&0fW0A;Vje>y##cIb9`z zb`NcuqlD-qF*Zv^7jkDIcd4s`$zHKIj|Kq0lnbOBv3z*}-q4Cg9v1W`Q@@zl@SU(- zrev?1qgIwhjC32ivx`)y0MtHvgDW-fo&ddar>eH}#o9GZ>s zhS1mH5e$&`;lBccneITq)=(&XP^^321I+cNm%PKW<96C@JW`ZH5?U2RWHgtTFjWTP$S^MazB>^66Z_NOe zI9g*8=oRnq?El4O27WqVrmCiQjN53nIseOwQoXYIDXjFiO&%Rb#!JfZ&1$qe=( z)M{6Q-pboCv=Tuk`$H^HeU8)}$7_;&Ehq6qLX8T}eQ!-#OOW(}di`u)CnV^4HlqrT z?y-97kPof#pT%$>hU%ZLv+tFSbX_hPO-sZJ21Z)(c)C~6B9$T+_*N*oRlh{^(?2JNujDwi{M{jz>aO+*@&o|%hZNh|nd zrb4sDq$Wg}nXv`E%^(D0x)99l&J^Y5ArA&qn#XyCwvNe1>YSHO)njy1*&+c* zpjNO!Q?LK-YCp_{&w-O>#YeM02d?2xu+?%n(c=+QSU{x$_9MynPvIxpv0BH|(p4XF zl`=q*VLWzb$opU7D|^j7T@s6Td>CCyH^2o4Ha(bw@G_LcP8TJwrcf_WqA7?yS;!;- zLN6)|D+gH?4}HV{2@g<8E7DT6#m9IyVB5}9t{J(hu}vLFGPF8aY`Ij@g&g5o5(q2a zK`O2vJXPbh5F+mQYb*iU^|Rj{opQMFCabdU5U^8mfj-BKtN+RCRA?LG6duucs*?J6 zU(PGAaZ{{79MnA9j0NZ@s!3`InGy>$oKELR7Em&?kKI%7eR$(Q6*N*f%zpIuUA@J( zaHpr{VYANAyWGc81vS%F{L7&cARMMdOUnml(5}hHx%l} zT|#^ARH|d1|Cy{Y?5#hg?EbTsM(Z=!NYefr9cK<-7_|W-7~6$}@Uo5JlUfejd-Dij zP8gM515Q?K`{FkPwWv^m3C(qHcKz}5cE^)(ydu?BR^denmyR#4jzYiFe|Y#faLviW z7~bb(Z|CFNUppi?)1!4@lhNH_ z$}-vt-}JIyA+G{Mg%91ARt7p~&W8g`Clt$qmG8}7XjT^t#?Lvp*+j%(0& zvlu=A|I<3Yyw>unPVG=i+lOgMrCOU($qLL!r`3p=Dl?7-lc>pkLGp(uyj_v_?i^Qq ze!Xlu_;*1BBeD9r#f|zDu)`B3#!od`5U#HZ>H^HC>sw)}>r*aS-Fb0hh(oi=E)~gI zX3WvG2eV707%=s|6->#6#bzPCiQ&u>C?f<8iv(@bjiYElW=jnICfV5jPgB_sQtrs> z#L(I7OKDjlOfky>Uo0}|C$tb1sNEO8g8 zNghotKB;_S^-PInaf4CM6xdLH(y0TDUqDtdpfBlTVb)MO8+sUComvSbpQ*MjcL6Ct zy~TQO*rj)c+ScJ4k{VvRup3zMJZ^XMx%(>4R+#-sSgl zVc3P-(u0c`ec`1M`+UIoE&$V3Aq-+{=MxC(c7bnU_{ed$^h%{Vkvy^+ zc=VIlJRQxe3j3i^9F{lriz-~o$eI6>OTd(z(yHU1R&A17m+qRp`m$K~HntOA+4T{n z?>sdOHn+d88j=rIbvgt=nE{&U&RKKSibjdmlzotfT|BZ_&bQZE9o*|#U&k;iz3bz1 zzn=G{=9xbNK(ew6D&e~&*3O*ttxH;y7usqALY)FJlHQ)5WXsCy>6sQ2sf3mO#rlb6 z2%Xx`vQ+zsz3pJ+3A{CdFve4t)Qf8E@W$)|sjQ3gCuZJ8SlvLqSo=8^-3*-W^mEy>G4$(fN37j>1$@mJkk`7VguTx4Th6ze?56|sL>a3;;% z%z-to6l$IhH5wu5$3w<;iexb|Wh9%voLFb>lp`9FkK$F!CuT_VV!eD7gNik=c~}qc z>)M2!%uD!Yi4w?$l1WEb0*hC3>FmKU4_>-H6}tR*GlqBe^2B5>rE`METx!L1w#g6# zviDn9V2_2fzT?Y)L{#xd^S|C3_G*^?h&pxjvkB?AtP~!=RmECG<@98b%HPS;NbJ8+FqJ$J<9ncMOh^Z)9IXxxmlnw+dYW<&XLBW(=FE(iuWb# zTw#0v&^UReVmeyi89YM0Rw+jDdZUl@i%{&=#M!+2_$F0ec7nfd_7HID2Z3pMrpp(Y zk&@HN1%4vz`sc}UmyVIqz1Kahth~mLtd4EQ$6)@KSA8JI-zy=4luB`N-mf^j5dc?y zM+i-_!=|*7GV5;&u$p10%Iu?PwYQ3X(!)iYBbW5ROI0AbI8&eiwmP4cLZ zreG&+auEawiza@&HP7jg$G+`wu2S>nGz5xn`qhbrXX z>*9ZVk_gzPkFukkkYjd$PW32Jc`E%Op3@iaz7XP~@$HYa>u0-qd<(>{(XlUPfyHdj z?Q@rcRzN;D%T&MIw8PVZEbpY#-F1vQK?R*W^RB6B#P>Lqvh|DBW3dy8sz> zvfW(8`gV8=dg-dt%GfIETh?Sc+2_=ewNvrj<}YLt^xul67w^$n${T!?9&7O8{WI)} zj|eGq>Z{GjU~(URkEsSg{pJT(eJ~EOIuRI z7A72>^~JG{*+=W%gNCocSS z2XDA}Z^Xm0?*z?{gybVLQZe}RO}*HK-PG5OkRVh(tAwHoS|7duJv!AN&6ep{^{rgw z;UH$|+TL!9$hqpRqxH;-7LG6g?hi-L;q;Cgh7* zj`0(-M93#IwgIhnLW_zNZzg8AKp<3%s4oV=SsIVI+O}M6C+guHPHjVhzyt2jPnAkV zLe6j@>h7vXWYbn@P@>k5|APvsdoJJ$38g`97zwNQG?zoau1{C3eA}oJa|a-PF(u4h zp5Vqs9)JFpiwbAS+O-ROibt=C5v186#USGi<0*gKMH^vqdsrc)Cu%Nl4#rOSsED~^ zluy2Shh}SgIx8E$Lk=H8Jg+-H+t)IHAA?ukxZvZ38!8>1+=Y9Yugt4gaZ(!0;U`x7 z#v3L3MO>lVS@o$cWeIU~{#k>JJbXN&zJzom4uOSjbvLlGFQ7xzAtN~mGF9qCrM}P$ zormyw7p~6?)e@`8Jb4&H@2jnxL}c zfN*a&GABuW>+Y9$bPC;AW1QSHL#TR)q*9o9vlsJ*E#1mH5^aZ!!>4`ezI$ZRygt*9 z(^mqY7(+u;+_Q;Ut#C~cVd0e(YO|J=-r$QQ`yl`3x74?GcC%GqcxSawSs}h!7Fnq1 zzrT5tZQaHs$)bh=?6)JorV7fFM&gJ5uUrs3&NM6YV7ANvCf$abCE`s&65edy9JAr$025Fxii78U{Wv>QmMQ_Gn)X&+TLb>auR|aTFZlahCoBe zF%YT2RvX?)OLMDYe5P0gtdn=0VPswwKh}C)W^yq1RZ4^o7xX!~D?RKulSuLT^Y?%y z{<5WO*Et)2DiHMCiNce0UVC{$-_K3*@AHr|BK_)4J4qg+y%^|d+Duw!?)Tjvc{iZipolf6fCoI%u6HDABka9p2)Hkz%CO%bc zo67Wa>*)%Ix_URlFs4?+&J(&s7 zP){`tD-02t*FDm>XoG4MPADc{f8x5w{U{d_L)o3zl~C))L$9#29YO%7=h>vXMnWMX zHiQ7#Aljr;zER!9D2~s}TnKTu5EraXH>n#>M6h?8d+Vl4L&{wjN)xVYOXOUzh+}99 zC&mG9R-lhpc!z@G0(`^b0Y2pgBF6x)xx>oN;o^Hta30DflVJYViKjIDP{JiH+chvV zMZ6?~D(PWOiDW1PXyo2#x!YZ`D~&YfRPc+x`!=WDQSRcRjf`E&Ze30Tjjs{QJL#JmA=6+BaH=0oL&^ucwCoj7P;O9k5+zp(r1LAh2)*xW5} zK@kdkXb84yF&F0W;8j=6zATI+1@m1!dl{ZZjXLL3zVIyR?rJRApAHsl-+7TkND{ult|B?P}Pm2jnu$>8HR~9T#hWPyhfUY)@@= z;zLnnR9`PmTSRv@N0{J|P0C4{SGj|S%fT54ZhpyyNBkfreFR$RUwd%CFr#z?}7Gskp)sWo&trhO< z&d*hRnAv+N(F@{%x_+qkFd7gEb*9nWm<3?SyPT;|&p|kFWA8f)5xNHz^tlNqOB7sF zZ`*~C@`i!v&!)DvO8v$k@RSK>+Lj{7P0HKG|BwYPmp0sJOmVu{pbv3s2SmJi_hT%BA83N+bbh@)dU8>*2ae z+ii+cu~a}N57vydr+GX--mrfgG zEjG#VWsbSHJ}k|n;HxuK0%WcH^cOcoPXO-A(3cZ;3l!=UGaVq&x+|P_OZk=_JtYK` zylZDjF$RtqCBN$Bjb@7FH(IokSImjReRf{PZ)naal;RcM5m(Rp$7>6Fq6I*5mTrF8 zSVQN-J$z*pTC_ysvpX2aL#veOhjULb`;`RPS+CnMy^T)Aat08u9<8Y4Vgh-bl^fz~ zzkh$y^?Htu8Rty~qq%J%{xv52!ZAd9Mx@WDt3E&wA@lo1AcyavXRhPXnKwgm!If+5 zQWtsWVbwA3$6EF-ja`4L-C@_R?BR%JxOO(={`1$dHyS|%#3NIn2b$YWJ$m{x5({z2 zDFa(S)_>FXVCQlzo%*06Kf!@gt;khpU*}ZT(IB=hB$;)n_RwKBE5>^mtqO;Ke_@HW zd>+229U&VYJMg81h8YH48uF~a<7X30DlFEU;FN8kj?SPA+5||^kW>8Hr8Ma=j%uaD^qziz1}gz9>LfI4`?(Gkwh;2B#yDvS$g$KY zI%%+wamhwkY)KfGd)ApZZ^I+(!&RH$g%9{e1e-JfhnheXldSLonT#y2H5G zdZ?h#SIT6lMMk75^R7>%zN=>4y93+7Z*9x!oB}j-yDZ+>=(RpN$rg6^yR)ICv*A*N z8Cr#aG={}oX9f<3OrTJ}E%Z#w7XaATPDxmFTj}0cHY_?vw?|-tth3(yu2~}og3a^p z*i6SR<~PUYTxYF)B32b(QIBE{_bsxI}71 zXM|wzgr}`en9UD|GmyF6cR@B1Dx9s}dHTIs>Ak$X_Gksue)I_KoYfWYd@MH|zVOnl zDZNLh+;(W=wZ15#yvbnvX2BmJMb1n=LqA~#|G+cFFz=s4ivl=e_NoCsp z{N117OMH2fR${J3K?Q`su9s=gB6)gCXqf0<3%N+8J@|R=I+iriRNz<{rq}Adq$>Ph zDG=5%0j`rBw(s!EWuG!G3Pt-u)eeF4u+A7SW3gu1CIjZL`OpNHRgupq)z)2jmuH8zm+|T@^*ABDDhS%2T}NPf8|A=#{I2eRhQ?{pcn3 zWO%`^*fNg?hTe@PoMmP|(^9tU)K6a6)B^?Bonsnb2f+~O(^qDG=k?O<_r!(d9!X?# zk9sSc^H5&6ssA0pGD*M69n@cIg)No2UMeNEXtWn=sq=EI;kv0NWvCFalK~jQ*NT1U zW@^%r6^FFyvGbEDwcUj8$NaB$IrAs691o?Jn5U1BSwB){Qi)PXsJ*Fa+Xe*v6mp@1 zzIO`Ee(E!;5FcQhRyoXWDrS8W^kKO)uFA;Qztua;Q@b=-nx?j4VXhLs#|9n7Xp<|aZoRzYCJK$pDbKnmi!=^uW89BtX%*k z^Y=A(m)CE5?>M}YM zo)p)q_01j_Vw~Jdy^30LoV>_jjz@tz)sMy{Ti)5oa3``GAr2BdNsGtd#zlA%!s^wX z0-{itwo-LDIyh(~>7RSDU_Qu{AY+JmmWh9=}*lKcu^93VhRzK?Mx~Jlv z7lkO3{LqaMByc)f z{g7q5Ar8Ogyes!ZNMMYMONrYK+iDLMHJcT^M-hO~p(Kx22q!jsF`(k+9T3ws`-iYbY~Uiw!# zabZ-#5#%a|wMeZ4*JaG#7C>)^>~!RiPAr*#``o4}ZyJi|;Fzk#>})}x7;N2zj~ZpA zeDFT^m$dDghZ7tJ*;Hx04GOO9cgl<#U)m(BR`fY7)1qn2KXf=5dM^e);+aNr#Al{> z1~FzZn+$ctpYp&DLGMa%mf!>rYrsMpvbql50{On6D6q6W5gGqe5ZyQpTjdR)(nr8N&@IZk9YMSs{tPO0}y~`HSNliR{MVxqitIUevnv5r)a-hEL0ev z(Fdm!7wXP>>h+KV7n~kr|e8Fa{+sSjw7(S_}ocZB_y>T51d+_wH|r6XjulK6+4LUVdPlxv&40l;dQ0w z$am(xMzX0d`r?p6{ZxT@BswYkrq`5=1`}63gZ$s7+3U*%VFrua3rLAu9VTO%%g%M| z6D<}$CGR#`n1+$eTa^DFNyOC-s`e15JM&C@BPK}}e-Ng)Er_ZvoLe<;*9KT@?$W0s`pG(1?S6Mp*@`n78$!2jb6-F$AjSBJ9HYXaRH^-+|Eo{o`#jujgw+YQ zLqvgK!fGLe`ZiL?r&DLG@XAz(c5PIEl9cC)KR}MV(w-0D=^ZP|uVcrv9$D5-Ihjz_ zYa_8qb@>|HPJU1&t`Pr_xUHcP+)&LJYK$!I`WXr2u0eMzf4#PTgziR zg#@PquU&siR00z4c9K=3NN593m1~9oJ6*7`O23YO`n9V|62EbSSOkUz6?)JG#+H;d zZ>xwG9)1Csc+<+b3e=7ZGcDd~4W~yb{LFH~Ya|KlT_C;*uZv%ZLssJpZ}55fw?NCp zs*fp~((jEF_Cv!7!! z1z3NOD;g6M95`^{(UGcBgq^DOv-Nx=rnLm~+65Wj`ss?M_;QxDN?LBS?G=lqV6Ru- z6mqrZ@TJ5d~T3;XWDN!%zgmr`D#CMSz>x9ROgziYa=j@|Jq5037gepGYIi* zthywCwWKb1f+F9_oI-OyHvKpH7)vxPd-D#)dw8O;)E3?}BB<1}vaql6^Zb26A`dbbRh@ zT*7O8kaCt6bjT3iFE7TtG!+ZJ4Qn6&P@sQm9=n=bzM3w&7B9E&moQg*02Xz_8`1z^ z#0sF=n@XjU{gCZl-erUv?Z&+>NW~1v!d$QvF73Gx5a_8IEogvRS&%^1)b9e(?Ft7w zCLF)?D{O_V=dcWY7*TUOmkyN^&5pL?CATIutL}WQ#wNxZIWAHg-;DOc0E@*t3*?Mm zx#Yj}=rp_TB+p>4VqNI+sjub24K)_jOO5&|{Ick~ zRT3u*R6}fGofP`Zjy|m`W#O=xVtQ~tun}^nP;|NZsw1=>^|q6dp~6j%R*)HcB@#{Ou%m76TC8uUZHhuK)^cAdWs*G%~TJBg7{G#(3FTH%Wx zYIv01YgLC`&V=Y4SK}gO3Y1r{YO9Ul4HR4+i!Shw@>FAOzJe0Sw!6H#v;Qtg{aP)7 zsCFLO2-zwI2w`HmUCJ!CmsWJZvc;k=K6%lt2$w<}`y|xSP7Hp1oPA+Y)-a{owY$a< zz9OWWdwIZPZKcl$lV41+cgD3!AH)D7s%Y#%v?ap#CHYmKzE~Mvg~)NH*sA!eyOEn< z2>?4uCzl(Y356H8Bi#|AW0OZG#^|ern`|wATC32RtnAVLN=Ho1j^5@xG#bgoU;o_n zo2w)ALyOBM0~&NRMcl`;>jUie#YBH;*y?FKf9+1>a-%6R?Z@`#@1@4a>2GJT)6BrW zu`Rh<*P$FRaF@TL0TC+E8^8A)0Z6;-Fx~|-i#ARmbG|&{d*`4TwMhRYX=lPoR(cJU>i?2iNZpAc)l*h1VV?f_s*Hh9zo zBD@Q>r2d!|Pem>J2g{%q)<#|xEnl08wdb`Entnf=JOEK#%x{)_a8B~9N&x`b{PkDO zglf|IV60z|A(2(Df0cwzcb`t)4RNd9%dVTM%HwOl3Oj&F7%8!>*7f)%&Kfi#+_Y(| zkEWEh_{d$_x17N=2ijFZbwPLdk^|C z;e3C+%E_T01CV-kv^>sf8?tM--JYi0E0zu@Rz5LfwKT1Q(8=$@_}58_p0niO_3Pkr zqmrTqy+KQ`<=Ia?cvmw@SOwvbY|L!TDZ$7bxTu$JXKN;RD{s6->kRq@;3##2@j+MZMBQ5GA$bM<{LBVbq1iTg^zMkeN9OifX-$2OWy8aCWa!ESa)M$6(5Bf5yDJ!O+-(|{Y&uz)|phT*uU<8?#rIGos0_U zL*48vAiuc?T*{pWQ2OGk+^_XUzT72lm%_RppUl$g&lh#Z<%BeHv#dzY*Y=VsT|2D@ z44k~(S+UmStgnk$QcUJ;Byhu1p`9Kthws5OHu8;<@q^JCzIjK59bH0_dZ+VfUhooO z4;}#0OT-x|EFSsT^=U3wxpQZEDwoQt;{qx*lsOq23CfpecDb4pUv)};_kt4CutJFz z%^e(HHzM1;G#sc`7mZIGSy=R?1tx7#c;x$ugsGEHnk8><*jN~mFaW?3#keFxZ_(ZP zT1F1`cUs{q{b-q`SO9VgYQXn9x2u`c0^)mWXM9~>W)EjzHj^>6<#V!+C-c^$rtaqZ zUE89oWjafqY5XEC8CkwrU-y-Qn-uJvTh^I7df} zTyVp##I41%l>Or6XVBz8QFbRCE>no&M0VR{^+?kBcF0`T{DPHAeu0efNu$)#ky9gW zl<_^zq;`Dsz!r||VqQt{Z1f5wPCAR?o_O$Z5p*zt^S&opC89+BoDSvrWH+dGI_fRL|GE7$x+_F;@k@p z+WDz&*@ki*Jak}Ae1{&oLWf+$@%Gf6_5HWzK=YGlrL~H3orou?zJWK#bUdJhPRp&A zk5C#5Zufx8tr0L5Y!Fir9jz?<86);X+)*|vEphs$ zwBWhsv55sT*%!!-J?%y=FDE;tHG5b_?7QpSU1%AcC!64;Y9P7QOKBh8v)@B+9^0I5 zt!jO2W_&U)Gb_Y+k8zSSV$-qQ7MBN|>cjq&ueL2;WWJb1S%Oh~3bfmvAXdlO?R60P zP96~}OB23z6|?j@nw{Pk_L_Ih2wVMe2@I!~5(^Oi3Mx1(hiQbVN!{8SMM{QO12%F+ zK;4!phV&R5Z4&z006##$ziEG&Sy%{%ZxCJ^L>eT17r0GY%r2-#x}tli6nNPE&sVvh za*FSDMW3*pjQ@g8<9}An@8vut9xi(uDl8jgvj%c3&Auu?-pt*M(W{=vNR-Mz)(2ms zF&@Yd6HG*pTSr1CP&o5eRZkbMsza}Sr6hMA6c2IkdAFNv&4R}H?qKJEQMXbjo~-Lm z7NWbyLLiG+8S5K4fI*f>!V{K&Zi-or{1^B_VOft{^gF9}=TNi!*MINkt-nQrV zOIK3fr3r_T7_m9~Q5H@5t-p2`4viFPix6vJ)e$n4GWto-9TGOn3oM<5zWuE)_+{ED zPxFpS;tcy)`!@Ax9BZ+lls*oHcC6^xk$Q$z+T{%@q;A*QIuUkAB|2OeT7FBXc9sUD zgEx-kTtOV4FRSE}PA)_SIb&7;=dhAdd-FxIjnTkmU zf)s@suV1l)JX=A>y~|s5hS;eU6L(tFJIus}cPtKE=x0UnD~Xx!8d-#onHt8F*4d3O zf(RNH4iQ-OWP<~1!A^P$mT08|^6-o2;n9R?%_YJin+MNT!CO0jn9ZP?%%&^LriT$` zN+Wyuy9`R8vtDyLrmfuvsmT)U zgn*shzk#sR+n44Ji&?t#Q(lG)_t=>*hp`Yo>4b}!fbXr{B}Uu;>f>bihCOYTSsXBY z*@C1vGQ0U&BP5FAB&WeJ$i!@>pCH>o-+x8~lZ+t~u$f@v&XKeH{?2 zY8HBwWuf;`OtvyVzcLRz|JJK$>8llzHKvch4+6y4i1@O-QP)^_Nq?Q6Mv;U%RdYwV zV0l6Wg!c0|)s#1zb|{eEUJKU(-0N_bZt49I4V&CN*yYiwa-NvrFSQ5^J6Mc%od@bzsb2 zN2~qa2NwSeOHfb)z}=r;z4V5=_`*>uAg>b)&uG=6iDtWuxH?OYz`CW#o|4L-f2s^g6J*}pNGPP21_y3q>p}j7n&hNNW(g}l3#BE zRg4y4*N!npt{Ac|D|+eS%Naz8%eIERYKtj}@6nK|i>Y5*yV#p(7!|GzTN?~Yw6##N zcY;$FFk}=3?ObOK%79Ew7nOI{8Lzz6$;)Iw17FkdRM?1^H$3LqPg*0`MO5OpR%s3N z_>Gs18H2Kxm0&M&tIJJpP~(lbSMR7dP>ex-8Bwckgr-T#rkx!R36vHNeUd>?qV!}w zYrfa#$YO1o*b^m30xZm{NuBzPD`wVuMX6W2i>i4)%pz1uH)3RARS)$XWISYuQpO9z zkqg3hz>AyM6q3M^CS5PNfTS<=rBr0;eveEgIii-z@uS@t69$z_I(qqvdK&2%88YQ^ zR$Nybfp<=D?Q=zTL?Wene=6Osh8>S~*RSrpnCi+- za@zwBrV)KPmih);V&HF;^+8CNSg;f263fN=AgT^rv=qk9W9W7`-~2f# zbUZ}u*5-c2>||c~mBEeqF%dsY7rOOe4ayKD?I>L&9<{Svr4O$v1Idcs8dJMrdg_(k zYYEGLF#+n?W*F-jVxD@F;i^;u02^LD5I%;#jTG8W_7 zO-f27drlbUENY^(jemA@1F_EHOF=LHt>{aP`It-`N540orTI*wU-fOB-i19pHL7g) zbx|&+%hiJjrhz-`SGa;ymmmJJA~^>fBK~^B$8o^gL)UA5kVP4GfY~&7YUmnlbR9>3nZWfBv^7pu=w&8)y6wjJH*o)lH zfidw;BCbC`KlD~iaYgG{{RB03O*2k>sM!s$niuw_y>2sC=PQ==+BE6@;nZuE@|8lI z=KfCm_pW;b*GnCH9VPY^gQ?pI`6ba#En7Q2AKATUnq4q(CE$Mbr`$)q$rg64gk3W# z-VLDlp*iea$n~>6L7pUWyRUovF26nJ8a?a`_QPYh!STxzhqg&{dAj>$PG&b4uet#vMgxwF`Q;AK!2*xLtSK0cJY zosW;~k=zW?2hE#y>k1;1}BuL?Fi6p_)-m*kmeATC<^z7c(2{%oo!z z?F->r3nU56Dh?H-^1kR?I|pCc$IUxz11YCAURyBRmU~?5Ub#}t^9uNN3bNax0!P-q zkvz|2I3c4JikxP685ARIYP^I!B%6laDPWb0Gl-C2xVr7nU+z?d+V3#WE|EZguqmFP z$lJ>RK=>j=dKBdwjRk%0to!0`R62RDQmKj!E@QXUW%9vf5GA zIIxKHx?Z{G4_0-#`%gfOc{i1&ESf3mxQb+WIW&?vq>+=Vqh!ZX4?>XtqTU$ znTIa*+@|lh`9rUMcy!2-sjPip6l;6`s3+d}Mpl5`0_kZ^|CR}r$|WLWkVmD}A5xxdIntmv|f;%T1QVZdn6IBqKS7(<24V>vT7Xa0DwO$F=XpE~gW)oC? z@4)EV3CFB|TaL zDLfW*n#4z)CbU{LB{9=3nlJ(<=5a%(slu?7XEe=Mkua;diaM#(7`c%i(u@U9OkLY3A7k#jj^h&&CM0!^qrK~=&Hwd}at8LyHSiSTzT zPkLiyLS&(jz%OaYSA=y<VWZ(n4>+pVj<>8KgZ{WY`&9G5 z?ar0|&+#N79m_4fyy4qNqe66PB6(N_q zOLqxksTY}>Q1n$DTj_lfXl@RX6u4cOKTHKCtNk0sMDp3HW?BGjb%wfZy~(-p2HCka zW&329^b+%H>-Pz1D=YOTrrE@zPq57HkE^WFUf>8rr&*eG|3mGPGf+Xj)%>1{y?`sG z@IeY#M|nqh>8UNUZpZJfFH_*!1TEO@1b)KShEd!~6UqC|fvOk&=Id%;qA$CPA z=_#U{aw$H1jv&JLstMWW+~_4-*Q&D-tN;|ULz=pmvu?cptYJ-!cqLD5IIaVpX@MQGoS^I|3CNiJ-)OH*99O}wVJC3xEn zuVq-$k62DlKaI1ql>}1_`8CQSwo;V)seXvmWvg+M$@yZ|#wMAVg3-5=EX%>qyT^@UsCdKC5&IH*6pS# z`v9tQ8s&p}&pi9bw&9_(H00D8z3&)`&3UfN^i*IG5cEQ~MvUA&)tKY2 zbeL(OG!Pq+wIyL*e1L&$vVx3-s=}#-cERUT#4NF&dLZs&uu2#T@N`bMSX|!hErLi z<6^ob#ZJqy1FMJ9hLHNSCZIYdd;XU&oUHkfrT3C-ka;gnd?XkjV0+C8m=$j6_jKQ) z5s!Us;Y^@BUe>*1rW^U&V5C0g&d!qSLaBz)ZraaqX~SqDcIIg5xd6@UT15CY_UKfN z?z%%a5aTel&a0N5Y`s|ry?~eT{W)OfrA`>J&Lth%e$ss7Y;@m^aPj`m-=#QW5sTz_ zX<#DIKo_HZ;29nwf{aqt18UXhgc4peAG;gs{H~rZMHK294x@H^JR}i1 z0V3wy;z%OR*RfKs%22lo19G`F?`o=db+`ISkLz^y!CLFo6Ur*_@-FrI*@$lSQfI10 zmuq#ROQG8_c6J%nmI_I|5{~^+reqbNbcB#@}fy+997HE=>E)pr$71p+j4 zbg7fM5mghRo`tOseT$U^UjVbWV7{ti>lB zo}n$o(5m*VAD?SXT%Xe_u7#<=5BsJfwb9PWtm?};6;u=+HQn_hIdYS{^xPf)tN{?q zKuB9_SrUZEJLSrWpjSz}?Ot5<0YWBu3uL(*gjZ|UDMXl+RqAx7I^ha6FOIXnmbF9Y z=NUc{ILjNjZb|L?T-F7dUZ=AD+Z0y|u}A2Su6B{Sp&=0w$(U%EB;e}Z7<}ifj5QRU zV)3<0Nz_C5>UUa|FzRrtWG3Na$@WQgv;Xmz8j5dpX~QD|`gYjfFV+QfRyMznXlh5S zg?_Cs%Pae4&8hv4FZO5>NR|2_)k7J1aLoHDJXq}%a*>4#1WM=JkNx#=o`p#191Z)d zcjg_lJ8y>oCM&Sn`LiKGORtS}<2M|}oWZfCi1&yt%sQTxHozPxh#%K3bdj9j+PfNrV0_XjHKdQPq(+3bj z3WY!z6Wq(FNz8N-xF)xql{(bVAz%CG^?3xD?Bfsc&eA7(A)Sy5PYsG07g~V5&@@=p zw4Q*C&^paa6^YD3hZQR~IEFLu!MnS>;xJ6Ol>P`ID2@{v0EIco#x2(`Z<4#CLy^OS zDdG4?z)JAWm?X4#K3vpW)zqpFLAZlpe$ln?_pUa6t1D&xr8YIAC?W)TF=71rezl7^ z(Yb7bl@B=*ZDo$`kWQ73V;T;&xR8S%TdrPZ;^GtXCYX+|ekb6}P-JcuT6ur#^#gJC z@Z?j_-wSGz-O5Q`L^5ktk9!N{`iVet10wd{7(T*M7beJ5W><@x z=HsOK6g5qrR}iff(ip%>JPD=xSM>$zr61|{%WigKvT@b#oxBI%KmP^hyinu*MVX$u zH-Q}5I9wCI8t-aey7HOqn-_<9Z>AKHAPN8N4f*m!KqU@ZDT_bq6zaSB(KTcDDxpgQ z^6I$(jGlq|0%p@J;wvpGAev*mT?VF_m&USoCkv}QFNgK&UUaN_8*`+f&vB>W;Pv)D ze`mI7TsyOrh{45nQGA#+bY!Tv1y>9rtFdTIxPfK(_!cH^@&y}zS!Who^Ml!)D^#xf z$kQV(=i%)V)mOK&oK55Ydx~vO`HeCTYMpvot`;)qipF<0hW{~LI?OcRzqJ#;$+ zbhsz=Z5qbSbZ^YE0d)ivjM2gBWgkA<{UJ=6H0t;tI-gBRjj1wwwM#aS28%kJ(LehU zA{cLLxphxdaa!7u7Q+-fq2W0j_8~&L&4X&rG6PJvTx9&%TR`+NQ}efTV=zNrx)Yjt ziz4u$+Yo^eaGME6BD7%vfh+YEB4Nm-U~0lN+|PK`Kuca~G`f3`snDYaEs2Z0(6r8d zEa*K13qm=4otwQ3(`v}>=7OSA+I9BhMV7Kj(g)QkTA|FagY^w1DD?KH0H*9vPVa-j zSbf5vGfvl1^f6P$@WQnp0-wev`FKv0d--S}5HV9}5iWiY6E<`bZ*({i!*OK+*H9*A zqV5z4oOy;^YK9W<(JlArJ!6_DJ-dVRTjw|IBXulwGDA^CWsWpVa6WsVpWV-TUD4DU zCduCpb-}rl5cOYAQm_71c7ZGVi~>gIrfG==X48vVOP$=L2_N?X*8Ju0R$h=ux`Uk%b5G8Q?1 z$+5wUT@w26sOm3noTUxS({a}&b9h>u$`@qX-I zkHU0+Vl)|)UE}#Huf9Y4WlKI00x-{$aGM{J$l2M1=@Hoe)YXIunx&t2IpgDs1NEX8 z0JxLZ`7j2nBcr$4gWBqR{(}Pk-ps9@dppEO_j)=$y1LEs(a&S{K6gK1BF2V?S?q64 zJ$n8J%|jswpEJ$!;VWkf`zI@J*YA~N^LQr932vIrPAG4N@dpp$u)$F@Zq3Dtff}WF z>u?fkhdO#b<;`#csT~lT17-;zN96HnSWkuZ@w!7AM06Bw1ASSB!)}N0D_Ay~GgRpG zIskL_c4`dur5;}8*@NyGk-OePmI3%AQ%?<$*s<2Mil)J!Yl0LT99t<>P*N$|T$!UX$Yz*;J!Q zQnPv=;9e<^?AN%FL?c;F|9r?q&h5ed^`nle6otfMst94tEWtnnhn0<1XCfLbrG8ND-0-m8E(IGF~m=VaCalFxoK?7df_xh5Ix?jpPz5u7Qp4|+ML z=KZe9MXcVbykAor$MZ@W$WF<^&1~TT!TFhVcCQx>>oea-BOGK#<_8^8srEmW3fH3v zi6sIm!6DUmEZxDs&T0Mf(d3AGqkpzHdL|pmwkElcekNTQi!^(`MxhK)4A$lmncH=# zA^*XIMswU|AHs8Ly!g*0TS3BOAkebl6v(*wrJweb!?hiq<-NO2q_>7+f%B;GI#gaz zrHAAuX|b11mDLv#MzRFa^P|a2jZ^iOK5c*grmL2utL8m=lZ!Xp@W_%#q72xZOxLYd zW*c_*D6#3RqM-$$#QBQQtzl`!!1QyCV*GdcF-#7oFI%kW!)3YyHo@Kq50xjMIAfB| z@aV!Z>nx=_#>=tRvSu#ToEHdQ!RYLyOfrnSt4d{pJxtIoy#RXB`9lN34qnU{KxQC> z8i|zL>qDlNRK*5EvU@GXz+CUB{3cT9-~Up}bP%a!E-X@}i}X*$(wkNtGCnl;tZakrlYr9Eja8Eiq!a zpaE&ci#9c_)6s_nYVs~GJ~dvUL=^9fxq6QRy#?}U)8NBmh;j%qroYDFD5S}XsTd4D zF4|=qgF1OgLr%XA&C&rdHY&7NZx#UkY35O7pW1J(jhu zIQ^~+iGGv|YSbBq$T&R=BNP|YIXkkyW4T!t-TtnFiuRtp` znQP2NUI4B>&MzVFo3zY?IO9>BGby{=sv-+5xbqPkm(bRzty@RpNl@d%= zJyxcp2bif@*Pp+oey&qpMQ1b>B3cjo=(0f2G3rd(&r-!%0{|~8ROhrCiUlHRLkSX? zni$sToQcL>tcehDpnt51c*j0|A%v~IKm!w?z3EDpxE|cL{fZmIteB4-{7k42^nB+> ztEG+y?Cy7bhlb;y<8HF3ro~@fK3uKQnH3o3xgSd$V{%BV=4dD430IPNBq6>puM_pz z?vAgPZee#NYc-PO<{h<;+49<0qQmChbGYxNYoj;8>~j+lq~Pap#ug)bkty8}w3H(r zLz-e)YZ9p(MIgtQAHj@e_c7gA5~)D-vvGa2*p_4&&EF2?a}uOf-nj2$12S}%71JL) zxpb3s2#~t+2^?>eXj~8N%R9$K_kvZ8XT`9zX&g4UF_)g2Oi?a3Mm4xQ?{lsFN!f2%}W7RJ>HB&!j6#qoX=2ot+dHj zola6#r6`ARJP1Jq8?sYx2ER=EGQ!6iFLv-5G7yST9ztWNWC@VIDwQTGF&_Jc+d!ea zEBfkt+6r@`E!f0U;-s=H=D{L6?O5R!>PyLf!(F|(t9|BP^SqbpU9(T(Y5KZ6R-Dk5 z)t?h)uS5JI(-$(nFo*-k5#X(&sn9p#$gCT9^Qy*Xm}nb1sk?ir1E-&ey({WT!|CUd zAn`PR>r?5UENR~$?`-ulg}Ry369lQSp&%~#Zvkgyyu)K?MnBL_b?n53=AjZlv)8(< zmFl;|QNWl3Qx30PdX>xJimeQV+SaU&*I@HLr;AG8O7%rDYoA$=a*s}66DtmfCp&8l zQ6F&u7Q8fGcZWvcPHI)p&kkrwxfD;zv}iJCH81D|)+x^jH8#ndk9tL(#ml(pVYcIN zn;;rA0lmm5A#p3x^5~Xc$%|(hBmt!mVOz>9jtN=akF@($r>25agJnBPn|-F{HO%mb zOHSdmw4NWL(Ep}xwT{y_sN0`(MlPe;7}n|l4X^26xQfc%=KYfNkJkKuu3;7q^iU$D z?X^8jq`GMMf<&rK##d|_on``1lV$_3=(b#$0Dt(RHnx?6`-jsxc>_f(s-kB=4)vsu zPv%P}OQMM}9p%HLGj9KlEpTwsK9UWaMvNySx5B=wq&^ipNihjwYkrg|_!<1$012b@ zueJ+jJNt5!w_^tvnDFTNTU$`ylf5GSXNq&a=p+|fNvV*xBX`eg{lo>2y8N2n8taj& zqi$2Kx_k9&@PQmf*W;CFA4JnibHML%xS-=abMuADi$a(!ynzqRS7x-QOgPH$#4 zxcFR92)m{ZoYJ{KkYQLP=^t(B1}le;=o;%i+?A8p%+qz%Ceh?7_sjQiK<%v& z9b}k=Fd<=cE(IcV^fY5p;;x>%){LUXFKvAUo)n@ct+%;L20X)|yZ!laxmIT%eRa+6 zJOK*wk9uuDqucM(=fZUO^ruLhv8@6N-EmS#WaxI}o`*vM%k}TbZ{Qg0f-+zPWp3KBtp`(EBxG9hEQ%1j|{>c$dhAF$@VqkPY*pHbu<|MGnEq($>zF zLkh&uV8s_j6GJRC7%8}ex-~ZS>fhRQ*dXX1*Oh;y1-tX5M|J+I#sX*-q72bo_tX+K zJd7e_`IlZHe@5CCHZ(Z2rA)3g@FcT0rw-<%Rxa#Yb#oo9zEtIr05rc@ z99Fky)y|eVR8sHdN9uTZmJEwGd18YGzJMWEvtUx#8(8O|^lMCVr6&N_)Yb}VmHF}6 zxTClj&u)z7&pJJLu>V_$03n?^sY77{pVg3&u1TiWKA0y2tp;qz zbm=jeK`F%Q1ndKbne31>3 zopxCQVS|7}xWmfxBEyHtlO> zmElI_N7%wd1jJ$BwR?EpUc&s4jH-!!mI5db=>a@625RFGpCcZ@2suV+6su>#Zh~|| z6*H;eQ#gMf3LmYZ1w)YMBeG}AzG=w&p1V&x5;H8ItfvYBh#}g!`%yE7K8MbR{Zf36 zrRK-eD&`DGa417en`)n!T6Id?YI&lp*_|dBy48y6@%Glw_8X7f+i0=oXzpTwc&fHc zYJovY>-a10GzjTHRmb^qNXoO8#J>q&D!UNTrT94a~k*rho?l0Kk%yy?1XS$gAJs3_=GcfZ@_blVt2WWWd zZX$+XQ5d{h--UNcnf|fpae?jK9IiAWl$d(4&x2I_HeK6m>cUE+qBZwdaw_U{RjF4u zDsTaCKo^#+6-gA%D|?_fa&Z~U2Yi+pLuwEgElSN8XwhW-H94C7CDYBjt{X10z69p6 ziw5HA(R({?4iwCIWay@Vs;LvNG|q8s1p#J(VCXm8^%%9}uR{_|<^+e%fIJ%aq~*8e zhpi~qJT+_o^EYejDd@r{S9cKRFFKSf-Dbad(oD6l8*+93)~!R&DnJe^(YVvA~0dt z^^9zig3_r(LJ``*nHcCThE~K6Cy>(Fj$5~enm!s;3i?1qBDI_lX@p~nYs?3i=0rFS z@W>@qrVpGOyB1Hr=)ME#JWlGY;^zR!1781>1&93Ji90u#lp4J5rd3ulU#yOZLD@Bm zC0^-U>!M|X`$FS(cOkWvE4>zduUDkC3%f^rP1!@=Jrom=ItSv+wxD9NEpRig9W#ti zSQ|%wtn&vyFKan?d_27SV197iVV#q%?;>K;8AAo0tTr+OWrCcrzABSZj-EJ}tTQVp zcyZ9Omg<+O2&ewabAv<42F5TxmbUj`Dq1}AMQ%~k;LITeY$nBj3Ajm=ABE0AX$Ktv zx?zMugHa zyyuol-m!2#=~HtYvT4@?3Cb`V$s`V^!L)K~slL7OeD#d<KLvxa`P8>ENfkH9L7W;WFZE}5(5Ss;JBYz*o)T?8CHZauo8&qa zwqs?$qL_nVp51+~On|BAtM?^midT!k&k#+m%K!}Zy&%!y4xNmk^a3YW)3On>=>7_e>nvfvyg~}IR2(Z{Vkd=ntrL=(V4*I zCrY(c5MB7s5P@w0aYSt^AVwB8wd={UXJK@92Ct4Qvm+NcMT`F{7uXlcC1Q}x9<<#H z8N!IG&(##};8Ryj2Fmv9i=8-#&oC4kmiWM?!P}G$SVDLfxqzpbMX1de@$@zb@NP`u z<`xYbZ)t;<-47>7qS4)Qt&+gL&+jQuH&2CUTMAyhm@GcQb>M6rV}oCZ!-)w_F9LuA zOQ>e2sTn}!A-#J4hqUT=#AD9+<{diJ+r6Keo=8-VD!4rVa3Pd~kGcK8)#f_sbc-sG zn9SRNIu{CJ0cz*r2Q$~*{P@}|A}Z_1j`3b(J!lnpdSki4(h>Lrb71>rjxzQ8*Ce4LfdeLF(1F0Sw|1dGHB|W5PabuwjK2jHQ>u0_n zzqJh+4b7tr&oGj>g2jPlxP?ci9KkNeoV7G!>Qw6sVXm2-sLk?unP*!@?8CAN{Czr_ z{j*|&LoC1zvdiplD+;A<&&}Bib)B(U9bokrYUU&h*((x+C~JZkJBt8;D11#}(BkW4 zS>c%#;H1{HBj4=PNg z|Ccyt+Hft!5ch4{VX+08q7zWCxf(1?5^S7H8pZzx)*gfiL*M;iYSfYEh>)1UQ+*^;6Pgp=dIo7O`R+}xbrv{O%0U}~R}Mobb1+1LuX|D9i+7a|i%dizF#Hw}8rv2yA4=wOw@>Grr$y=fW%l-K9)5}I7qCWPZtw;ciM_NC9p z47+iE%ji>*zNm^&BALc~FZ)f2nBaIgH)gXkmmfSMBc@*HibD@MpdF6SSXN=Vr>or9 z=z64pP2A^kY2(9U2PyR)`1v~O{g{_k5_A{p8^dzFXvKwCXC)GhE5|ECdBiy5|Mz*JQ#nFs;DqKAeKFl{x0c1LQq@Gm z;kC#()^|X7G-5!ubq=Z_o0O}8vSl(L)$@cBT8KZ3S{lx-Gjq{@Ql0K{WTXTS2SoC; zvIqorDU(&e?4F$wyhyhsG0$hE!-h)I_3qHXygA0U(w)+^Ohh9$@EBt+PUTmX*U(Xybg#3x!vWO)pA>v#p-qR@bFIPmQ&#*|030 zyId!QNhhe~>M}Q&S`TC+1Z#0WEKQ$)sZozlWBUy5&*2|LU9+seyZwy9`LD*fxu5ar z`>$_x_qU3eA86hs@*e}Xb5(ile@GEg|6h|yeg8i-oEWKxthO)$M{>s|7`=- z^2{8S;zJ~}J4PK|ndIfX-(45k4%kZVUH(t;Eo3a>W_+Era6 z@p>s%8Cv(yd-7DXZE7y=LYPE46#Udzid<^bZjZT2<|MLikMp%)q!xpm^w6gSYC^5zzs!XlK{0K`djZXs^yemr! zyrSfL)}_Q3PUwN4$qEm8i6w+N`$v9+lAUYP34KL(|4oC)X>Tf9U zOrLD#vNjB^v>cn%+vLcovS(xp4k+$ni3j+bPL+yC%*qccI(hNu6dYOV-mVQaJYN)3 zkIDU?XVaYJSkmgKLKd&YYm2$a1~O+8POg2Nr3apYo75=tuq4I5A%|N0(Z`*XUSmMfF99gJ_i;vE`%t#|c(c!donTV` zuX1zf(KsyWGwS2;-?Z{n+zTG&EiWc)epg?4jWhhEvztP{b4xy9unJj9-~&Uu=`wk@ zOv)UyE(bTw&ANp9(npUbre6Wi*VctENTXV)sA2hmQ32kR32RY-qjo* z!8qF^*T(vNfSIY8u7;^md*2ChROO3N1eiivHZLM%P)nzCwN*gVrY8>hvO3gGe0|3) zd=js!I&`@w2bb{2=mr`fR$w0qs#NZN54R9_q->jV$0AuP1JwB3@ z>&lT6sx!8!<$V+GVCa4vL!=isH>R%_nfsZs#OZzsal=Aw{?3bahxD0A3a{6Lb7jI* zG2`qpZ+fjAq_@*-tg6|o!sY2Gx-mha1y$bEF>tEW*$ea!?4jSftlxE*F~f)iyf7V+ z>t(NoGi~Z2u@9pq!JvZm9Zn(ch_i=kJiJ56Jc*nbF18^Is(g^%g1tDneU#uvAnRhu1x zjd@Zo`0UqxvGce9a{XH7G**vI_lplr^q-tm4OYsENvv+RhyNbsX;4{+h|w8RNA_A8Q_xff3r@Zq!!K#yfw)`? zGuLzE8mJk1f`YOV_bDBqSlv9?UN8OdV=sAqY^Gg&<<8g&qQIwqnRs3UOkfG*YDiUj zn}%8PdnDFE?v+;^0|(N@VQ8s$3uv8ShZ_-rUG&_Ua6al1id3tXyZx+j0GIG{IDCyh z)X383<$(uzX!1V2HwOLEu%+r=`Zbir#AH8u7NqnAKB#7gjAcMfKwr;AXwk>VPiB~t2RMb*VUZmL^9xlJRm&LP{;+SpQ{Qr=^H2k>K7!x)VYqK zH-ICY?h?_=I;0c*q>%hGgpHJ>cn;1{UDRa9PVQB=wk)fV8_23PCXmsGK?4mDVj7_e z$#zI6Da)(AuwULqmAv+Dl>{n_K&)cF`+^c?ZArY@YuEFdN5Bf9M=S67+D5P?qARlz zmn3}8kRsIqTd+wh6f_|u)S3c|p$J4PNSsJ@Z z`?I|`5l!8Lxt~$QtNv@o;BdoyRjfW9v&72JYyT#bjs0v~>oAw87wsiGcjC;{oPf+s zjJ@hwT4Jn&4~+VuGhvBL?|;GxOiKpPUiII6N(qxEjVeYYD_gA+>;d=1*cJQ1D1V7zL1@^SQ1kLoXRc%BlKd37o(SH&Ir zuUNZbB;FZ4H&4Pctf9W^bg6g!18*=+-bFZ8Sm^5u=(?;j%6o3pTQ<9eMM$fkN~_sO zui{P7YjVe%Mi{ei$9xXmTe>?x0DHUGLZ1h`0UZfl)xA8ne8v+M5^M}KzPwzLx^;O+ zgn58m>0G(Yk^_5}>YF7{7wylS(ydOLwwqu)5&VY60>pC3=B<~sL3K~^ex(-5u$Nm? z0dolWFdpw6sh7dKc=gx|-#vh~1`Mb}Dw{eVaaTh;8JrW$rumVl5r(impQ}#}k)9g) zq2-^I-W6r!X=ycJ(YN06@Ep?vLR!%96{Zh>JRe&q=G3Zx#QV;0E8H;sVCo^9)T)P6 zuG(v)8oj_VC4G(oPS*gWXY@tO9y8BruOs!sL?i_ z<+!JpSnK<0^%#j$1Nw=#4`A@pm9RO@Nb$U_+#!G5yz>n(RF#Xk@0D0G0lm&?PRBjv z_g>z1OyBh@m~|m-_3k|8Rylub)auW%2AZ-7U134`fd`>wVFU>j1OiZDt?q~~W7@qM zV4+eNV&cM1y%V2}2M*Ssmn_I3c4xk%k9iKyFVCEg1xNU_9}n`GGR|99KLLMMR@QP- zW<_lgM1&Q%eKp8JO`DEmR9#46OI$Uz3iX;PsnfW52w5?dWf_Vr3_jC7HMuI#GhOo2 zo6=K_guy`jd%}@Jd}iJ^OE=JgtY9_I|D8FL$8T`C^d$j;JaeBZp;h<4TI=+LnG5kM zab!phE81adjet;a7x--i@}Hgb$LQ33YL*=apC1gYCJ2x0)g)qQ&{eOisO`(x&GDR1 z%p1%;ik1YPR0*|S!Jxe@J^|dlzlg^xpPtJEF0QIS2)aKYELHWgdV!Z17OONXgvkyY z(w|{{KgH4lpWPfLE(}0c8DB7Y_>A~mZlVedu{yY}eS!y4CYOK7PH6%h2WkU&O5 z3eoHCSL;0gKy`&lgcmYVu;LWX@`gMOI&FUpJ+sK08)RfTzRm=7^NAV18s*hLP?S%l zJF9A*Jg%Wy1BZ|szz!~`*`Af=#Z@Qy%3qj6Q%4?O3d{lxnXm&p7C!(t6VtawQ@to$ zD8_J=CJeBCAGB%vF1(7X0uj!n*r4L8^moJ`;o)@Mn)Z|5!%;WDXC*z$wtkqf z&cLLG97pPXgCS?Gmou7)w(Et-oM5?1-?us*F93_EzsfF=R7ES591s_hI<7&ed7(S*1&T5a z1vxmeZ+@GXhEEdn2C8%dZ+X5r9Nov{y9reW1;E{9itv?~hl^Hcm}iuv5j?n)`aRXz zKT@PKlgqmXks85UeV7KMv%;SkzYJK<#8;nAJmo6*z^x&W4}r;4kszxPTpq-MAa}Ty zN`dSEC4H;aS20g;W$^;iMU3AiO&UB#D|d<3%tPydc6AKQGv&U64H+y}*M59bJPP){ zc^p_X5#loM3!qeoiGUxC<7d^U1JT_Q$-r}-mwiReT(`Z?4t|%cQ9>*kJXl>uo6Z zt`?vww5xlyRU+7GvaPo2mJGK#b3-J|Y0brLsZ*>+b1^OVda2rLZS_bH>i6Zlk{{HK zY;k6$V^GO@-X5FTPkG61S+V>PV%XiA?>{v&F1PH2;eL_7#1JuvTD>#$nD#mBR5nSH zg|EqooJqP@D=+Vw=O2Kcyb}@&Ql3l&_50uXqy~G)%nT#xcPVVR8OO!0q~`z}(0xb@ z>T0;5%dITeF+CJa(es4Zx%QoWWW61?ov%L!;wmWt#C0x3%R^IBTu?%p`_W*^in6XS zV+gL<(b>B^vlZR|{9Om5dFf5RY@M!10@M1ASpZTIKtF1h3sy;`34wNU{x`IVUPVBY z$u773tY!->QA>M4PR&GFiBqceuNI7)v1{E(TR21jmm#Bal3zMWlb03h8i?If0VZb0 zBxo)bxNz!%HvO!;!27OEvB{gw3lwht+G_l;Nh!){09HV$zxMYGPd5fI&s-6r%9_>^ z8gf8iVdna_Y6z*?&@QXc++PWa+yE(J5CM?d^A4{pnc$ZWsrb#I|1NEKu~8(c$yXW) z^a^ZMaWvo*}`pO`_Z=$5;Nlaia&osS^8pt5RGPxus{ znN!mRKJY4r23a5Q8+90RtuKh!3kA@#a3mV# zu6e0d?a$wLKucOiZQmc9v&Udzzg9%eV+lRlmlZcb;unA)doeFb>!qi2S~W z(yJ2=vJ^wr3aQv-80ULFHIv;c?532c(2J1XuSOnG=gFum01Ah^OZ+{BE0r1mf!8LS zHZf%ocQv0KQ(oCzC+=Z^M58K=Uw^{uVaN*yLBh2;bhhWii9BXoleUwC9SEqc*%$Rm#Vbe>m6!q{EN5NE%7`>tRat_wM3&$ z<2^(ZG4n(8>MpBO`p-?jCiyZ2>rU_5$ibJ^(p@{Ie^&lyy7IOE7?@2M*k^uO*bTT> z_NFS3(TlQBW6c2P3$OaDN<4HmX6=I1)k_pW?Tpyc)qF@*s|&XTku$Ld_l2VYfz0M& zD~kaJm)Ur0e{*V5XURjS39&VJHDc@UNzFQw z_@sFR)~ppp3MYJ?YnOBAZPP7DY;*m%L20Q_21vG)8K;|xi}zv)g~(zYQXN))yJog# zy#S++^z8{cO|Zd91lOC(eQF?sIXTKr*(RW5olo&6@$)4??dH}?ff-QQhTF;WScPP> zND_ak^K76iTTmD4=sB?aNrld=7{PjO!r`R1+Gng$J?vU6b-gI}fC^uyX8o(Dj;xq) zoab@Sb@-qg3o$exMlWVOWY))%#pFPma987b+u27!37rGwesce^q<4-l^P%Av}#K+v_1ecHPrjolj|#LWzi8!s|Y>1NX%D z(XddOhXy7qj@NjmTG4~sss5WqoMxE2iJshjOZ(~59*x7^r&B7|{pas&zHhzO)dhxg z!qC+)S(}>GLCt(&{KC%c6`L{qGO7-~P%hVX!~`>wz5UtSfgt1!R9uQ{u{opdK8=DP zf!XR(N+IvHJQ9vz=qwn!qPGE;Oy7kyaor^ieW(gkEe)b<3Vs7*hG5b?{lPfF-_xsxk<|P2Ltzef8X1 zyRjW7^=o8@s+?gnp&4pQWn+9y3lclnCG@gJn>sPSF~MWpTuG8)-~jD!ZYJG@b;{g? zT|uoH=%fA6P*3o_&-52UA#LH3b!UB#>5^N~wRFa1qQl2uW}03pirx~YOo(syh5g9{ z%>XfcZQr#8IMu9oyFL`6F3Smn@2j>T$XWAGYk6o4mW9@r7=1KI?Qvm4hgtt+P;#v_ zp-GWV<_UnlI17;$#6wplq!de^>vl!Cy&+LiqbG^A9ZzJ`yBR^W|>4O?KQ zN<-1Et(ux%WmX<+Zp`MEm?ji(&tkh-)PkjH)a z+pT)xc3SrW@kH=&3E@RywCZX!y&tj_1p`6=!)) zd`)Q9Dz_m~N(x?a6R|g) zv;N?(`Dy)tI$uBuuF#C8p**E1EWD@K+|Gqe+2Q_Bm9#s+UWn6PDx0X8Rb?`bIW3JW z7qKOEQD-9uaYNcmRMm3izWhTn?vI_7_$4|dwKJR>nl=*iD}Amnx}{EMsuPge%qFy; zOM#Ru9y*sR6VQg{(oEiq8#ixE1ebFoPm;&<(&THIreOa$a1obX0xN1^OkWz(T#ThT zV~;^u_3FbH@3R?;O+6QZ=fa;UZnCM+k--1qxj_C{Fy+(YmrfqKYbypUW#!RY%2al_hM`KLDPSs}slk0iFu*8y zEEn+doQsA4f7YP|_H{Q7=zJ(%{F) zjS0G9ed@yi6IqPtq~D*pUYhj&jF1-*QTOtjrG8VJ?sfh1w?`{d`_b9xj{{t(uojF_ z>JHY#sFx4)P!fF_^2uHT0JoI{*{(Y!vJ8lbst&uM#b~G_b5FJ1O_Url`TH?ld{-tZ z&FO$4uEE9O0@I&7x+ff=4;bz1;(;aXh${yMp2Ds0!}yZjP!QdXR}Bj#HpHmOBU{B3 zXX1IY)tPen88O?AK;w> z@y)!(qyFVez;k-CH1&}xWicayrf0gIq9ffYy&kBQ@vWx8TkiT5LuR7vZr0e?3Av)( z#RQYP#=|u~!02gM6Y*@*C2+pd41aYn(24Ohl~8J@{8@-r?VR|o9e3)x8Xfa-Q%O59 zlhiWCkOeqad1C9On6B;5UmpN9ta!nebJ}Z9B30*do3AOMHR(aJhBtQ}N)&hvTU8|m zS3_+4pp~v=e+=^!3H5?3<#+jWP%qul595J_8|%b6B#F_ixP)FlbFwr>Ax3yFty!n5 zYAdffV;JuaQNidSgQa`p|-tI>$ptVtVDh zk4G)!qRh}}$RzR~=(30s(ji08mG3p~IU&h=4pmgE^ErU&A5F=+ z)D9)9En54luX+voqEX!In78T5!xF{TZ(}J_~VChRKuN3m)LxxNu6k~*W)Q1D9u3q zcHX2c$0h`f|J~~NVfTKcD}!69k3N}%brO5EhOuPD#eFu0I~7PRpLvh{L6%22wj2=; zHT^lH()|0$RP(uY!ziv?x%2*>Iw=a0pB(tjLj(+OjP8ZqvXK^4U}$g2*IOvQ=eqVM ze{x-t_)?&4$@CoagA^Ske5{o9$JO1gEyPgNbgF>z4olTAXzHXo+E>Y}QiE-s+QpqO zIhui3(bGwv;6BPBFqx5=Lc7_N`Gn6v&oTcG^Zde$TYc+>fhk9-V7P~Ltb`nW!NByb zKJ!E=8-P~knyXlto+<^U5BdOM?&2dCxtsI_B$28h*Ja2{?(;R9L*K-~X+v#&B%2)b zRipNR=rXVa01XZe{d)53hbj-}`3B!ISi%4o6QYLO%Ran};39)cN}oBPW+u-Jh|(N@x-MpGxJcr8VTVrgGL@`%6_)X6 zAtK{6PPb~hqs6jCbnuMUjlrFlRO%@&^#0mX!0 zyw&#$wsO!az4o#l=><=2ypHuWcFrs%U zuJZ9P@~#z59VP961zAk_Y*3Ue2WaIj=+^eXn6OeXwJA157=+ECM`a+CA4=-n_Pa9d zjBoSiQ{JNH+pH5L)t+M#wAA-e>nPX=3%n`^|; zm>hi%%dHQw&4eGf{a&4VxqbF_msV)s*+CR??x<#S*Wf7Tf%FzzoLaotLzut^@D)@Zn|Zjw@;`oeba=Gi2o;ef?ly_L38N=5bKn`;3xo!$X_DciHazNRcVahFQIcZq$G!C}Uu4#<8;gtkkkVvKa z?{@qTQpNjz87k?b7mYkK?=G9ZWJA$A*JC5`gAy&m>SbljaEH?hpvVt zAv@74>s?Zroz&UXg#fWHcmXsa9tCoMD5e3P%IR!_@ZPDtHO~_hX?Iu57Xo5>hq4Ia z;Jd3@GJY3GHEVyga?x5ZUfrx&$u@}Am;^Vm4U7Zn6vh;7I(y7lQwqd4K2~!_QFrpe zV9Au(BRPMvBw;wLEJOJ${d?%bX#PpGEn$Sd#rtCruwSxm7?tM2(HpVdJj%JS=jHNK zR(G&DRtM<+=Ck5*?N9s~Y_Yl0i@3NK_yWU}{U489Y4z@h1~Xev2w!tbI6B-(0!`p( zg$YD}9VCDbYp45$+-Mb(>Jt^j*qmzVY)@|~)>X)a+T=s8KWd=m<+UB&<^YEPNl0yq z!1MTtL=||OJ`usVYiXhWE^9RON%o2KWpgGK-~gMjS;6|@-KYOlCuK)7MG~Wm9)e^D zJ{l~5`FUONGP}7vr$86OZVC7*HQL9JY($fTJqq)R{{%H;IE<|)P?dw4kvgkmFjX-^ zSc(4aj>%{aT4bl0X~R+U_;0Ty`8SzTz5cCWKQvOqvW1U#CoLbXL$LB#No&K}W}GSA!xYvj^QN7~u9qDZHDcP3LWFDf9Gc^s`T%#Y?k5pthkp5m z)f-*@{Kj`tHmI}`%DPvvmnfpIIcqicr=+nDOmoiDkR=A4eh8-?nAo&R`NgBbMlg&^ zb5NfnI$WkFGM3(Ax=CrogSMydj%Z6!&*)Gc%NV|x+2B~X6ulQdwAa|LTBcbpy59RL z26LOtz12yYkPCv~OX3}V(~pF7ZF}boc7D%3+pk}b|GcP;m2bw?vY3(P^bCW$6eLNp z7od+(%>+c1B0E*#$=ePc<}3ua%=-)P-}K5{#jlzcCYO0Ds6iI z{AC-(Y&b$F@kcZgw>aZ<&7EjHf%1O^CaH(;y#uG;T&9YNtpSYJH(w;5GN%|QT zsijIJ)IKBuklHlN5qTF0h|uDpDVOze=*uFH-zz|H85-a|_fBaN9o4DzTn-!uE;`!6 zQ`hnpt}29$#nGrf_?b-I5NrSwLVnKwHfh0t?g?uV-g5(+qmSLqe)8f!7#Nl}2(Szi}LpKzyeL593M0R{Q z1u|qGMs+PO7YYr{N(L%<1lj8R|4`a4)MoRwy>-;OdSc8s8-H81ENF1%>IkfmmW z0CG5At{TgdX?)^R0C3vG)Y4yefFW-79UsB=1~N6nlA$mHyX^I?Cwi<=1r0R+M6A8h%bt#p0GL3mNX+4a#Tb2I!BeUAiB7hdIWi z&}(81kk2Y|+;D8u(==qs+?8Ybmg3c2|7M09x0*U^z;=Cj8NLHIW#5Am{jvd@gNmWX z5j?EexYVWNfAG64U+*v7u(K!|^5QW8D7j&ZLxEM6Q@0vR|+j|Nh8;$J#JN%qlwL4Qs`rw zu|~D7>;|A5P`$&b==i{ku2QH<6iJn^Z=C)S-8eLERYf5{`qm63I))SQP`P-z7@pLt zvmE!(+hVQ*cmnFVrSm1()GyqCsTYhEE4txvm_f)$Cadr=;3T;fcpo40qa%U~!2N)2 ztZv_3>1%hKc~#d8mINc3M&XukHS=z)rI*5Nbnu*-b@fFE|7ie2C4ha0 z*^=6HEJThuigrv-vp}TAh|MQ6xx~$Uy8%sS1;VCFX=#K$v@r-FMFTJ%zXDR+$cwvK zb-Q8@1Ovq%0PnbILbge|C$ zKtGx5|CR);LwMnPR_W2*7ay$Z8iPEvFd7v?6WXa3nFL4}kjKj-Yo@Q>kltdB(HuG9 zGy131Qav+dszlvj*5(U;hM%iCRgQoky8b;GzWy9W*yyhQjov#psBu&7;CR$wA0aj< z&rbTCW!O27iN1d|sqgih^KyJ0KJU_~62wDU8m)h}5*$*Zz1Xr;q^GYq@TQ__n|+Q$ z+`S{2Rku7$b3zKAm4dfR>$*uS<|T&hVPy%rTJ37AJ`^Okm&n!Ft%9wb*KO1W^O0~e ze6K#eo%ZP4C-9X>^C0H9)MES61mbb6p-<^opX2a>2e>0zE9;Rox(tJw+G`}L9~g>K zf@@jFLm)!oUPeNas!i&i1173|chI2lz>lOYfgChQPGeW=tBXnfdOHjCVv3^On-oBg zuwXPk9lU{GLFXK}o>*t;Ni$Nc=ire(MngBRYQh0f=rc5b!`|q*ZPqKVI3I>bGZ+nh zH9#Cq`O_RB+X(7IULlWNiX|7*w=SeU#T#))&cdE(?9k+@B7RIRJpUNd(7%uq_+~g= zv(y*E^xqnR7k3n+7rny(#uGx{!F{3BpzH%y!{=N{yQD#(Vfzo(9ILg-p4T{4SLBkv zn*};vioq2)uH4Q`mQkS;cz@T}{9+X1DIpRNc|)@nTifQX(l`HQ*c!PZFAFdAAc;Yu zxfP5LnZkbRF{6kna#H!?GOD(FaipJd62@^bnzTN%%njvWw!4U-5090^veH3?8%b+6 zNxrNKP0v4McwAU38Q9Rlggx~wiqgHdz|~4i9GR-saz7RWW>qI6vY5Q_dQ~$7UL;NA zLKs6Bcxn7JuPUN&l*jba9LULkqu-dVnmNuoYcV5os^OwldFwQ<`|%>_LKPfpDYgbCTq@=hCi zO%eRSn)Z^(5|UzZ5w2^t?p_cWSC`9XuH(=&UTUbf#ceFJ8xCBRgvqiwd6t+!iven@!ldQ++Nkwh^j%mX|Sc9}WJn5Nl^>(jhU8^a%!-Ar+P zSQe0+mn|_V2BwZZr2C$Gl>cL#tqlJyd6y}%42JOinMC#9O)BmFt)KyoP~wlu_)VzQ z|2=@8k^WDCBKZGfdNBq6FNN2n=sFnAcwc5695r>|#8VrrG%z!LP|7(pi;e$0QR$T2 zO4=RECt6ayjAt0*hM~2@7PD9T(HG`+rbYTxVuSW9Q9&jinbP{Tzz0CIX;U!@KnS+YubmNyu>Zb6yE1 z{2m~5m~Ts&jG8s&DCpkdAs}#!aDX>%zjpJVKx(}739#-^m~c-oXGp^S5EL!dsZlbB zPzhw&+>T1>7pY+LI3;?p@9u*KT)^CzWKas^rVp}qSaP|E`$%?EZzJXxFR;c0+@f{nJWh;-bu6?v@!B1m(xweWb z@J$Y&1G1C!yNB;C|B|jwb^3R_X&SwX(4r}gm*I7{%2I`Tn9$il z|2FRo^U7rpfQAljl0>0L84gLuhsR}Ia`5LNod!S7 z-F>s)C5e94BAMpiP2Cv4PF^krYOgU80SK5t;?Yx^4XLGcRU}g>l3T}Y z_jup{J_~`3$OPh3!CEq^qLB$lhuSG<@lD>dkc*`~eM2Me%sU#ZRrir#Y8@bIAlJ%b8uhXN zKxQ0u?LB z;G|9!WTcnDDf2puSAp}P2f!U|YCvBo64JQUM!kb1>!B6}wn{1y&!8r6PD7jITk&bO zzoe}gP@h+w;wv%zGDT2LQfp32Qr^!?kn-C!&LOVwC|bw^`gm(*@Vf%Mfy2C`J#`V} zhu(O$#9SvZ9nP`sv=ZPYHzm(0h2oJ?xz0a-cd}=gvx?$iNt5Ns`gql-GV}~rHbN#Z zbQi7v;H?U4`*Dab7YqFiO8juqg+U+oltvRVYv(6W`1gm&4a>Nh)~AtywBJeO=$pB)b1trG~-qR^`EHL5d(lgNh+ zA*b3l_?q;$VGcq)&gp^xhT=5Pf7gl^{9x-e1YsR-uLo|@BQHi|^7{PT@J#TIM|l$9 zYT&Q;cY158)W2fwy982Q7CbJ~nji+bowl`ugxj)?h&JsthK0au2LX_vOKZd!Vilc= zT})!tp~xNg8(NsKa7GRiN2#tm?6nP@0n`BzP9S$!YgaJtMy6Chaxf317dh2njT+A3lzLr*0l?L6*II%f%K_YZ$JDE zhYD1eml-)ChQ}wcxx#(UFwPVWO>Am82r`!(u)xG-80J`(2({_Amm;FzNT{~epOoMJ zb12*pO$)qa1M(0b0EM_Q#{=%lbgAh+ z!R6MJP7aH>5nb_8;9QH7#^zyAr4{&*Qsp8Cx+(-h-bNZtCXx`Mbp<=uKYwKoyi-hW zSQZ4Mr4Qi`Gn*9Ch*kp9mW}~#0{E<=!ITeaF@4L#0!tlwFKrM?~}Mhy!~I;!zyKGo&=h7(3TDp-m8S3B=wI0Lu!>B%ZNO?PLIZZ4N=%>sXn45w z8rQ-BZ$L$97vQc7QoytEORAPyoA!-pojz|;_p(6av;QyjGt8%`6D`hTo(i+&wzqs+ zqh)>d09~o8861w4G@p0mxw_b9R!kDWdqCZJ{{*pZSeBF(iKB8NuerGmF7mA0QC*;q z#TcM0X>jKZ@M&rV0IF0(GD}Txpb3t@xKOoiM!36%g}T;WSXM&4RI(qXXn>GyJS7#~ zy7bmsqX72M%c7G11Cif^MTsEys@FrDBgaaB%<{|b1j8!ue*}c-S3!t#{9xE_%>+!8 z9&RV*0OO~tWYE~`e=Vq{L$1;R?uh!S(aFFqQu-Hs96LCv|K3aWN8Xn&>KaBA}qMUqp+kRAu z>B9?#?VX+>WPcvtb8>97v+`6WqiAT(!!%7WaP8+Z3@6+R*8OQDB^%w@(40`XJiJF> zjS4g)*PIRnL)*TE2S6;#s)aW*dM>NyqhYsnCpSQaSZ-;G)F2wh)Ts+^XD8p6mBzq^ z&6=%tU*i%_km0bp`eYgWU|i za7VKP1xEIb-ELaF3Kz5c`S;}JBYzX=C!rG{_RTomd{uO!e>r9?yRKZ)K&TTiB z#!0qyf5ta|*YW^+9x_##qLE9OXT`49UXrG4cIey63w?U9q60ECWdT81Q82&FwKe;~ z3B_2oDds~DNjj^r$57z-;Q=91LX>_uSwrH{vcBPjKK(Z}$gkj2p(WtBEOvGY9zx24hg>I%YQQYg?Nm!ysz}QxBj2SmC zo#;={(ri z%td<+*gvFRv5{G)1}{-IP0#uC!j4)0bpdih57jus-kv60dE=mtmp{+crt>$lCC%>i zW|V~>`Yz#Yl}rXuZyzQ*;jXK*!fhTxz0I$+kWS2{qzHS^m;E_iUhQeT$0+#Fh`CHf zM?R@u|7zLH9>Ztn_N)MQvAm;~vd8wa2-^XWiZrgPM+C#Yxs8m zQd>m|T{c^%|EzGMA;Yi=;jiWh#Cy#T0>YDzf=7urfRNA-`|fg5rwp_R_2x=`-ZNik znvaqg*drec=VYb@xtMYe=DdUxNRr*8bcLTwB8{rGTrVUR6 zF~scIodfCDDMLD=igLOh{O3K39<)RbSDQn&X=5e zRIXkm9<3wwAUl)cn;@)-zp$9(TRuw+yWLH_QU&-q$Vj*?&Z6c%^wUq=B@+I*592bi zd0{X$c?}kwkkRB;K-g>$l32AZt!-Ik@K3HRr)%$1tIjf}F){Y?3}Q3l&PX?n8-V`%$VLge^Nof9vaw~?)lKl zbph=OR0cDkHn6oW_3GbAs&rX>lpTS;4lv-uQA^d)U1J>%f^CX;rwLr;`j0sZBVY>Q zV3Zw9nXquekG_uXJIqgcd_&Z-5zNYs zXP?rq{m);VprjOC97kL9ktM_9|8N$9FW<#sWRXO9` zlr-)S{~wR7aadojXi#P#TrpilgvEQ{lk43fc%l=G$|4jrETfb%SY_8#^RdfxAS7IREXIf*pVUBBo12 zcdF}ZE=)=W4n4o9H=7P<7VsrOzyS4E=SFql6txx5Ak;zQlg4$`xHvoC!;kLFa|X<%ChUkEL+~M}RfY zxQ4qAfo9ngMZQv z#WgOh%P@7sU2sbL4%yq=OkCDbxugWU!l+?)(= z*iI&w7h8FV(s{c@>}Wjr$h%1-WC*Ba_k^B5N??O2#7nl%OP5?i&%hbT=v6i{l*cvP z2%U->@K%&czQ}SOy}_wmcdxm1!}R=T4fVPWu+56}>mnrq)qS;MM-`nR8z|9aK6ed9 zZ4iC$i~B;$a0Ua71VV^jZ-~4(x~9>~%)o%$Hg}7o&sgnJ_QUtNK~{TxvQU0kdv=JJ1Po=6>STUMTiel8%{QZhKOo4 z)gsk4$CWXI5d4N08FoMcxX8fnLdozhvQlv=-t)uiY&fxxx@wr4&xN^|WYwv&wJDku zwt&oTX%efwe8P%^AMNwI-Wso0&li$;j7^pj667-f^i?0vMAX?=OI*^Lp~rS~iQrd_ z^iZ97l;6@Vq`IQs8nnM)r{T_gMHnUb{Ii~dE;`^n09Wt-z!m)CQf&TWzvsB42F7`| zGQ_W!ub06uE3RHiyW$He;X#1wvtJTh#_WbJ#d$uZF;290!V^OGzm*6oYzOlV??0)nOL`7#h^o>YmETJI??2R2i9BpG~!xe4`+T34fHJ972p&cYS~A zwh`hCa|fm(hE zmR|~9^*S~$&*(pzwW@99urgU6EEtm@9G_^aI;3%PA@x51SslLIaBt(N!^7y3{s6c1 z-lbl(|DkmQ%)#6Y$fQ)gbVf3KbA(yg5)3Ah6y$V@1_A+Avr@Egz4PR~CV`VPkcP^^ z6{_CSD+_L3lw{@!TG7e(^lQ{g{e*!Y5P!n5TcbbZcY$m}eg~oguD^VHKz+9Ikj}Tp z1)AlvP2KAaUQ0U=ulNt*os(zINUOZ=m&tNT*{Z#ALMYbu=Wp(@9I9T}5E{EOV`Py- zDK6hDE#d(&t`=!-zY{Yz7^EE?a#5cHa*yd7#st+J>qAXg$iMrk){- zd|+ejl?D>B`R)kb%(qwAAzSHVfo6o)aa=0c-m85Bz>D^{1g9YcW#f~BTh->It$zWQ z#Nlrl_PM24K`WLwJII*k5M$btM<(4Q)^0cL1ESP>H8^MnfUNRF6|s=MZR$dO9u}?a zXG4V{lV7upeT}ZHljn6SXW&%SWj7bPhAUAUHJZ@)_aKl@NQ7FMuKNW3dHlO+Q%<_9 z>XXA$!@UWyrE(p8yG5k~;c`>(w}yRaX!Cbv;q6gJ&luNLMNb5=^UhG>HjVf2oRO54+GCp((C0>MMnf zIcB(4mO@L33_E#K1@^lJNveC5zrAF^3+$>L$Xz3#x|v=biR-G-YL0@!`^=1vw=epD z<(egEWw)IF0zA2zXtwK@>)?rvsDBT8rqyO*oKh1A)2$9^I^;Qd1*C?FvGS|A z5d9V9gi0NtK^F3G=K(fSV-E*zhq0cT-korm5ZJBMd5y|@OpQ?2;5|yUq#J6YdO3JM zSB)gct52K=@`;5vD-B#6vyb^jnhd(T4vWq30U8-lSQk&~*Oe)0l)IWP{Y{Z9H#XpN z+=w$cr0IiMG)BHj2-MlaL3Fpe12%oq9}-3nn*p#Lu*VfQIDkbKes5;a4&A*uh*?my zRI4D~k1pX#PSeg9Bs6*_u44L0Fq+95FiJXQyxTv>L(*pw$5{HTnlwN^}>%5BKLh1&>Yq={+DgQ~FcNFW+cXeSP3 zo?)K>Z;Mc5|1k}sPdh7Mmm3qVGHJjI7jY=d^U6gPE&uy66zf_0LS^CpI@ZTh1=>WLSy31I5N+j@0hH9XS41FSTo zt{@s%vd@ibUh>wJI3Nw{ zHq6RP;>uGKJQ0S)=4TN!+>&c&GF~Z2iS&?WwK1!M;+8cNMOawmJoY5yib)*##l?YL zu2ZGuGEqJ_h{qnx6Nxm*^PBGsBsGYstfxlM3fA!^R%B3LjpB)MkUJ!Z zACs&@TH(SO+^Iom)|QOJz@CQdg9!)Jn=G8!$NXM7#mKum+Xt-V;Fj^Q6Xw#c8 z<|8xF9J;mf0Ma2!SS7g~-3UWn?$a0%de2Y3xvP#(y<&){dpC$as>=)qPhp0<*25C&xjiROBbmQ%TOeyfxb59F21fDVj`PglI~ zQ=6mEo6wiic5962z6ku`~R3TJ4wn-L$9kVAV%!Y*6=eCO^~X( z?b1cwa)!;Q2K52}k`JgreZy{@{hY%X?zgK}kh8oAZZ#BR&r6 zuCISl+Klt$Zg)wn9RHiYvpD=#9whq#gbe$VG)MI;0}M$Av{v>vpha3>r1uccp9W<( zu-AkKQW~(nywBdHk(xD~%<3u;X}L7jZ#eYhzY>(!EZVqj-a1csH2i4_OBmNLx z5*X@bqdLJ>S7^GTNae;qR3EB71WZx-8u(U$Rah8E{R3Vh^qj{N}TQ zeazWsM%~O(J@1{VwV^K4XI1-b!wOXB&!Ss#Nm1R4@nvyo@T0-j2Pw$kkeAb`)q{pq%vk36}lxZb{JZ|Bd& z$fcZzQ*Ntceq#CKo>vXZ+T&Kr8gz31J3aUwfFm*g(Bx{YXkz9GjH{MzkEwa$vx!Qr zg+VHHI7*9X>wp|%2+pxlCAC#S?WL~_#EKrKa{XKPUTID_aXG+{suM&S>xBg$Mq0Xk zEf;q28H5asxAj)-&pI`h1Q0qs?a02sgZeqO=%87&&=2{Cb+{pG!xRQU9#&4v6J#~T zhb;0LG}ki#IDWi30@ zu^+>(BS4}Q3RZ!t>!Dxo+N&E4O3roUA-~0A10aU>Is8-F{mk4B}B&$jn@7B7sz%)(8<>0Y}_$yHPQ- z4tdMfU&QaMzKQw_`X4?y_ZIAu`f&K@xN9(1z76A4n$?j)%Be29Qe<1?=xroKeM_Be zkV-C)AlMNyh+`7FqwCXTV$XX{cgKGzSB3f7z?VB2jcd1wriEdLn1~|15*py>e z>jk$OrUvAa8gRG9ML(4&M6~iuom3ylo(Ma+LF`^NFFr$jGtuAz ziZ~{}!iQH6$<*B!5Ko6Pk*!I55yOV&3OzWPaX8zD`M$uvc3sb2q9zArXNSVnT3Fz=3?}elA{L1#fF?OnA?o!vo*Y7xN{+tSgI?e*CcuOu2@l zu*xp6#q)cSox~Y~<2u#N8PG zJ@G06KtW<2N82z+vdXUeZ>_5Veb)#w@Ns7bo6x4SJu&?Q2Qj-Z8bSpbo5xD!*;IIMdxQ2bfdYhhe*F zmOBBzZshFgYqb*Pj9Ia__4(F+qUnyV~TG%;F&dl>|h z^D9&-TFJWye3(l<^ac%(8bo!h_ur!TiexuEz*|y=ZI)sXH^&z~5|cy>3Iy@=s#j>B zLImj+BY;@KADkM>UhyV0zFHq2tM*wDQ@yTqrGkg|m~LSAi4XTxhxclQJDtQJsQr?2 z_crJG&C9`q)tss4o-)fZlPTo21T9Dy=+-^_FNhr0^y2G}hS=NX1)tL1GDEpKy&`cR zNvAnYfU=tZT8hCsQ2m`3mMklF=al9=SP9uu#IYElz(~q;^mhMKqi5|!X3{5%LxTbt zaAO(^Iqn!|BQ^;ew5d0R>%7!tdAtwZH*7hs67C0X9D3dSeM4YiA-M)=@Jb&fH7}_bWk|uqGF%0U=gV&J(JC- zKIbCX(tUYY`UfWI9!vCirnjlbS|a+a?a$xjL`n;!sd(56joFwin#M*Bm%9>H3=0`= zd^N21D45Ee;gype0&slBG0nok?*~*nOXUFU)a$F3(}}F97*n(^D4{*Bxcf@XSGh*D zX+kqYbhSO(*bMk;SA;N8ow}y6dNtT5jNMK&K-#T`2@XlCxS|WM?(s5c+xT6hJbY{d z$z1VOUC#@BWP{v)05YaWgBAygH--%^^%8)oYTWA4<;swA>pYaVKi^`e94{Gf7nNd0qeSysGF%ZY;2?wQ)aAZX}& zQ6}e)ylO}|>~h}bCPFQR;ii_JnqzviM)KH)$EP7gwY-%>GRqV_K3!wxgqj;o{%q9d zOX}q#@G$a3m&k@T>XrSWsajWu@ih!QG}UJQIenDO@5-Ott?|rtBa?_+UGi-iYnO$6Uuq$69SRd?dl&p z@AXP_&w$;fP`yg2MOXI`Y7)_g%h{Q0nSgS1L@kDsc%;^=o^c|9T|K_=l!05gs*}3? z^RgOHIztTCM=sUt{-1i)m`QNK%(w)zLD25_Ng*Ntb2*nN&yb%J#;1*O3}XD6BgLaq zO_$Vz^Tw-9!j)F#BsrAf-lm52@mk$R-TgRc&L1gcd1jyArY;@CU6mqr4Rid(Dc#8f zi3w|;a@%Rcd)l>n5e!x;o?1Q7fS5LB6tZ0U#DeJw?P3T?^|<17L@Y5Ewqdj*OruAP zDC5u>;Z&@ryTm%KUMC7!JZ{=s*lQmy9y)sSN}&DE_erC60^$;HYQ<6C~WXkjZ4Qe>#xKtL+$v#ny`&P zhY5aa46I-=!EUwgh8S(%HVJtj_-~q|!BqI%KImC|X>dkX=_zA`DahhFm=70cN1X$bZ)6TM z1-qwUraq9mH{K8TGP!dXa_FC2Omzolx|u}bzi#zt$VH+QC0~81DVVX$!@G5#^O#E! zH)z9n*N~MGo+_0uenLZc+3y+qa!~t5=wndLs~x^QR#H%U`o|FBNdSJ4b;p zbi%IT9rx7vH5p=79|Je}6g$WS)TACN=B~@AlTdaU(pTDWU?BimXj9+QdV=AXVWRTCHL7@|L>X9sldl^80rh+lCmR>J2B@=$ZE zCMkU>zo@a?B<(O43~?~{^(VY`)BBy@yqt7{JbQp>rZDlp4=OPP*02#}bE1^&{O-5P zf{?@ozj~ZxMtYsly!f8%YqiH&YPxvxWi%MKdi#wlyoS;P3_iNP=Q8UNOE51ty7{H7 zm-=Vj^mmeJAf1CdA45Pk82ga%33jJ{v6LT62S*OX-aM>}e7T0yq*_^%>5#njgJGo_ zVQ$%k$-+G^#SMg#ol+MZ{#FfT*v8AQpS7*-F@XMsQl~%`D%I+mF8LzS1aDm3BvOUq zbG=HJuSI`YZBE-Ab0pyt2Qvo|pMvL_Z%O(ZoJVccEJ>26ms%M(wFUFygo@-v%5T-s zhD{}%rc2w@G&9w-_0wC0x^-Gc6O)v2d1hdfVAdbA`s5~tJ6t}uzl9o}CdKN+`i_zv zWp2=Og;PUKQ5%qx_|>O$V#6L31frbAgt$rLW@5i^!g`)E`<`+s>e`N3e433LMFX&8yGfe)3(a>owXz3QRS$&(!4tI(1!GH`{q7e)!tZ>F4nIhU!9wT+O!mfc6ty9IGfl^7P%16UI?y=z=dxJrers$W{wJ4b+ zNR&G8*V1`EB=3ru?`kuX#C;b|c)efz8y2l>wUj1(51t~#Eb1_fqoT2*$Un~yhM^2; zPh9BW^S0ItFn|&;0ivR~)nsnt;1y$S{=vRPD`v8P^;D+$u4^&9(5V?Yt6h^pR1DEg z0=VShzn=;%d352`+Zq-AJ`)B~-0E*S>C>Pfq-#Wxt)Sf#D@G%|vR3r|R~kgs0%N6Bwv|IB=JT zl74qOE5*I3L+?`P5CSxp^YB(C_t7N|Yp9!{6)fK;xV002jt@-Z!9MfaAtKGs&&n?# zyOQ-FW~{nhE|$BifU8t>S;@2QS-+#|p?oFhWYslC!m&sm4REHL97|m!K64songHw_ zBO4q>|HL}Is-JvWRyEsBJ5E?D)1_or22Lw~_B7qIeBB8E^%_Ri>q&rP2vvqPu=`OK z6$`*u=HxY=7yn%f|5I+O`(@4Vfr1IM$nyW}1a8un*IY?e)c~0+`~&uAu#3B8b0*1Ky?Rnm076cjs3*Rs1nF_7?C zr1TehNI}N}ekF$)H@e`#TD^o6F+N#r2mdp0wD^hP!nO6 z;OCAZ#B5z~xtXl2*;y3OVp&HHq5S4sU@g-Y>|kO%c^G)Hw7w+4Pa0hfK?XYK7ahtH zFi8&f;tjU7(2MJ`iZ5c3hDFpQ?bl%xli|bBtmLv8 zr<`dR;#@#Xzs?=PZixG*7Peo0F!YB&1p6|8p_o@k09XMb&WKp#iF)Q}*YC*IC|o(o zW_l*vhuYa4nM&_npxdFU)HJ_ut#Ct0v-i}FH5khs_p}`*Xivv^s)V=C`t4`8B zFF+q-)2KIf`NmXc4lQ&X=wBfse?N@WR&!Xyx1RDx4hOlQNzu)K=3UQ=bMo8U@2sp- zN&tJ~p6B%xN|C4rQ*QcgF~;k4S;LB4C_(S#4ke=zy2xw&IsB&F$xPf25^551o+I77 zK!#kKyO5#B;fCMZ4fAiZ)CZ&&i9PJWCI6lZK^WzX6=waLp@2hAkxv>M$ zQ6}Q(5ORDzdk@!q1n-YEZ%<1KgHTbnmLoT(ujNDe#k(ujzUCq3+DLA+9jI~FFvjVY zdj;fK3tW1alIIWPjocsJ;W;LZ~=$(sLT;y)*^a!x{4!{QwI(Qr+qMJ#r z0jhB_UK}5_SgTie4r>%^USiQGVM@b{_KT~I#krr#ZI@!&7ig&!zI#~k`cIavtPGzM zUl>CZ{8wGG7`RTzhmnXbRlQ8I&2+y(v9Eg4vrI4a%Wslv=_!ev{TbA(8d4WY$bQzO z&~J>KHB)9rH1f|BQZ$$@oIg-0-$Sm&FHd!Q3U|FpLPExuXG+7er_$5Pq0*x;r^4*} zZa(xZ?`X{OfN`8`0VW=RDEzT(W78x!Uz~f+|BGh*Y)x>f%YIZ-YqQ#J$*mW&CN^uO zQcL}@-s$1}*Sq!e$${*+Y9G6&_iRx#v6k@bM19IjXQPo^!p7(4Pn}viys5u9!NLQ* z>LTyu>R{pSaxqqB$3?Gx>=?8XTkPt`;Wofj|HZId9!tj%a0u#)w{IoA2+CPX>h1<2 zW;rdwH^gBF0uri$NxX?PLS5c#?~G&78w1}DdP~{B^zepxB=+@Vb$FRNV0a0$rM$## z<^Fa+FIf6EUE9bJV5)lLT>h<(8GfLjklQ`J3pG&C@X}AZjnP>QLb^y!&BtfwP&ps` z3cSzClY3UlX&>K5QmxKEe_f2jwJc6dJKl4vdjq=J4LBt<^YSY~GudAp91Kf}^i<>C z@$JUWb*|^pnex%_R5qd#cxk^2aamUZ|=^aEFB^2h}H!`G!JI5 zvd1xJ6^4iXi|O-ILvbOfCF9(k5Sn=CVzq|BZ0gZ)(XI13yBfGiQdS4#IwvpGsqX?c z`BRN+o-3jo6=tM*T`J#!^ri7O+^d9(mx~t?==&z<7;sSiWLr+Y&D>^?4l&YZ$q&BN z9oC6)gkwm@oW+02V;BEC>Ix&W?-jd3o|ojMaKTqjh1q`TPjjp2FewxQ>g)!gjiVxr zSEl3~P1lLjC-*viVpSk5OF(quExg}~Ywqf`CeQG}Vms$cbRuA6F+;qVeU%r{6!9p) z{r>ZJcM?=W5ZRjKy_SKUVHlY354Q$5P^aMc#2oQz0{2;OoW5|nMbGU_+`VA+R>@qi z3{kD>Q@zN>=P%}PIvXgL>13r8Sw-05CUqd7H)z@&udQ@Xi_adRUd02|+bIne$S43= zoirYfyT>+2K3(!1HKPoA_Z8{zMoTvYu8b>x+)BA|O~7zYHERTgQbMXlS7ng|AX32| zV=gK2jx8pFIWV(DDPq{6Jh}Pn7dG!v*MDRtYOtEj=3PG70FYtQtL%n5m@{h^IvxLI z{fVf8MOM`By1VhU7ZtBbh*Khbg?fQrxliz@&Enhx@|_OPb46DC@>nKkjofNe{Vtx6 zYlUL+p!jd>!ci3)`={tR9{-=OIkTz5LLU zUH#0pbb~P0(gPc!&bUL1k$zch8+~GYfOt7!p;W9EpR-+&W^^kg7kXL1S7@bDhO*j5 zPig*Q5mw8uAMm$vX#Cn3w8+I!r*Ha*u2pB^Uw3iXI@Cqx@&mVQ1&9N~j}KYoLI8k} zbdq4XT5c$6kLk?fRUrnDS)KAjGXPZw@6x+*b)`D~?OB&7Zz+ZrjR^C)cyNR--ka=U z?WlhlH~?Q(rvSneY+px^n?2ItOO|z%Fh4!Lb4o2jM3|$+<~xesDD&t5I%qWrU2TS$KNLJ#$T@+BL_Z@BFn&EK$VNl}KL0k|O-P z_&N1_W5hFq**7|n&Y!J}EY#6!!oUke1As9ZlloQX(|q@M-UQixJpF**L;25nNuyT; zdKD>^%RA0@83lnra<#ihhYbO=Rn>|e!qC^V5BFLbS2xLzWfW=xOPjG%>9pChUKOS$ z^HzS{Z9CN9utuWI7(;%ck7mcEu1h)6NfcF+nfm)u19^*$jDtwu7y{vNxn{nuFTopg z*ctdtWL~P%uc9!AUOn33O^vuH%&MMxm2Ox#bmEkzJYLJQeiL^NCd%YO0h6*eT8)@< zKhu09^m8=>8r3i7iYLWJ*F=oZq73E7c7JUj)}3r>?xHHl9Mpp1l}=tYQ=p+GqqR%0 z6&|ch*)|3Q2QWC}$bw!5^K;DVi|dMZ;H-y#Mkv{v8qY%N$10+oll7@D(N$eULxyLT*Ur1vYkGe0ax2F6 z)HjApvdIaIwd|z!kDgC>MSL&kkrq5m4>#2qENbef4 zoEF>Vh$H4Eo{}G}@{_?y4f|CI2DjC!d#I0u$g`87jF{0G_d0hLCiyPyeKPGe4=dg! zW{!>WgQ%Sk$csv>ektb)!OE3xxSHI@BnRd=qCyMuU%49>q`J>WGNwEydGp(cu#jK( z4UHMXE1X#C8(l3Lrr<2SA{m>u8aO!{sKl5X@7d>>#=hN_$mh-=RNrAYZl^qx>U8x3 z5~ac@NXO7~(f-L8*+3NoZ-?M-a}J6-5hsk z7KR`iiQv-lt{eUZBMXFtA290J21Q~EwD`NekN*QG%f&MTp|z~#LaXkzP&QEaQt&PL zrGP0u2Jo%6#Y8tNlboSBCOFcx0U*N+v>MMHkXvBz<~nf56vcrkuZI|Kaz~oboOJ0$ zkQXlzE$KJO3ZJ)wlHm%Q#MrxaOT{)&k;~Zmg5M2VJrl|@8iS==5=o_ob$Y##KRgv# zRrf~79$zNME<=!eF~I|9)y6D^e^fTf8b>~^?AL&BGDINeDLc_??=+(s#g}_&_^&8x zXSH_8taDjDHwJyFbwqAaKjO7BrROaN>SjMJcxmKeaxVdbl@H7Qxtrvymzg^!g|sr_ zpLS#R*+_W1MOtVgvP)?}JxL_&bB_IdKy;I(eyBm=AERAXKN;#&us6>*`=|+rg9osm zjwU|(70^qivS3hpHMo>&fTS1kFqmG@W?icK?h<+BXFDD>&*gAp?(eFJc+4`LXqcWD zRH;%?Lo{;hE#ypu9dT;?TY8XOT&S}jnAdvGNaPz?de|;Z(_;pwBK)#@sYViN<0x

SQ(kCLMRBdfAWK>!aYF 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
oSv5&s7-zha25#Zm@|q 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%0ABl>Wn+nw%l6^vIdl9aL0fE9UQ*(_Be&8{ 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 K4`IHP|c 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

lQ?iLrSZ*U+or%LnmPsqycN$(r|Mix~3_$St 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%0AQc=^{>{^%s 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%0AaRZh*3n=BOa9slN; zrWM{!vvt+Yqw2Cq)|&W*nW%6cMWsJdX22bGfx^nPL2OS*i}z11)C=0;PDZf4%kxxej3ec z5$pngR>9vILo=t?RRVOJm0|d$`#2&!CEpR#QfZ$`%iX{xX%oY~@r-mmwjwx1g(3yw zja3d+H*G`~xyiiAaOj=Zx=AJZz_dJuQxwuo*4=zH%dmFrTyq5EB_$gF?zU*mb_0)H zwtcob!5< z5vGpq|6taXs75Jyp5sB~8w!v>m9pdKQq|QpvZP-wEl`J+RWcjlY z%kFy{@wet4tYEY#blwVwkAW^VDaz=_lR`!kuJdATV(0`Q^Ng-S;DX*JV>tTy025Qc zj!ZwJ`gY&SaVmgRd&sVA80+v8zzaRkXvn4MGbLVeGfJI@Me7>R-H@U!g8s;jJ$!^8 z@KJZpFl8KuUhHm@u4Vl|V$paujDv*D$d2Wz7tb2f^C{Bh6^X#rD(UXTC1MdKKc6Jo2d%N8R*L}lYw!>*Nho6l zAjEZ)@Zse3)k5ana9Fm>pV5eX@GALDC&5XD2G`HJ6rh-QJumY3*_eoPPd%>!3-(}+ zVpxyVXA7bZusae$!8E5$H*ZQ5F6YYC67js>x z1NFtOl+b{UWA!n~@q{wq0=R1_+PFK@xLDmJX)~*Ut{;M4io-M_r?3oPtR^9 zRkpuskT!5R6@i*r9nxy=EHX33s*vtyFO4!MBz%>wm`q=?v(BEc5``lJtivg}-USe0 zbS90cwr3<{M6jm$gQ#FM#`J>b?;8Hi-AZ5WwNBGJ{hD0%2jZ<)GHlT6x;?B~Xha0G zm;UP&k(iwhzcqGf5;wgEDD;7cHpS`d{FB=CB;=|y$Lf3`Avvz;ngNzC#`Z0p75&)k z_um)TgB-BPEc>5Wp2IXBjvq;?(PJY-pycqzF{2eykX$i(F7+9Rk;7Tw@gEez)ih0b z(+4s{#ECx2$2+Pqh1pJEoS`=i&&hymvW){!@W>#-IyN#p5U&&+aQe>k1%uc9Y|b-4 z%$w$S{D1@KLiSIVE!A0Py51~ydS-6Vhzn9%)jW+?ny*Q64+O zqss=M1Sl|R&&AnW6p1e)qNIt zl~k=Cj($^TtMd3zZ83jel_?9uH$W4YfQ6H`=;e;ZlYh5fEoD0Zo^=_sEtfY=F$4jo zU0U>5-M;u}moipJx#`-Cx27aXurj-=1|=20>HRLKkCVwYeh+UyMCcH<#NLj($gp;q z^ngzXb#>6Lkr<0eYEH(C-J#xVilzUGk$j{K%<|b^ZG}jznx4xWHN8{ZOlt;R5GA#1 z8*7zM^~QqNA|CCKe3XIuf6gwyC!%M`w;IyW-e`BKfRj2&%j3-tshrtQ0_u3z}_(-kOUxqoD zj0t%HhcF+)_D1h#EmglBw7ahK0%4s{K{$~*+dB~ye@xB~)Ad8t6V|V4DUm=aw^8qQ zresmNYc7`*)8*20T@C4(_|qoc=^m|(_WD%irgnLO)x6SzhIz1>7ggmnftaq!^S&M> z=pYCjK9q-Z2I&2TDFfb^GA{15OpnowVZbKl2UOA-Uk{B`qT-l?SfrD`IzMgzDYf6E zw7;G??8I8L2=arvW{3Q#WYYLI73|O!YEShL?HtaK+o^UimsjBjIv8=QDqoIEioVN_ zk?BWu-AMR!L3vv=wGRn%}BnGIWX_g*guSz_)_jX49s~pkPvTH1x*z~aPkxpz;uF8cAer_zom>!ei7HsT9 zap|I57SkByVfaC~ye_at%u6Jv&4A@HGa@msHm>3{pvIU22J3X>A-7)uVlh!idrk9o z6mf(1*V)Ik6A0P#JRe?DF3Tm6(;&YUHcvYgH&V)Opj^L8+7Y}gaP7KAHTyO`N#(l# znXp~2@==>!r-Q7@TAj317>}CUIGD2uc@_P(@{{XK>y%MEAVNf&?iU*yMkG(H3yFgm z)3BhP>FrixN9w$eB_}5o%%QLnnBUJD2xm71No*k zuKO>2-^$zUag)whE)*fMPNjJSH$ zKp!^Q<2!S}F1~g1-_IWJhTo-i@BEPL>@?f6)~TelF|4`pAKKWaHfGO-L`w^$BsCfm zO;d^zc;++Rm~t%6x=UAU7tpW#s{Vcp#L1VKX`8?T&)U^!6JD9bdWVjz^Ck|fey#Zc zti+ZmO1&zCYHF(#@UK6OA;}nJUw$3NRH~N6bfs~Jo=teO=@ZHkARr({$KiY+=|#FE zRr}o#^rB%+1b{GBxdqQhe6u4HZGr2h71KVGy8v&Sme8DUz58Wq6~lZnTy9d)Abn zL`}YsO6{p*+gO9c6Dy$0ASK$S=ajRxC$8>9M-#+2FfA9&Rbp=an%*B%7d3yR8)s=! zBH)oB@Y<1gc*`2kQOE+A^D*@L*$6W}Uz@BH#He2-?!yvjTZ1A;5s{ zJh=L)X-<#v;#KLFmkCHnFayq?4yuUIz$f}^NYFXJCh8Lc~%TK)G4^b(5RIgy8Pjj*5sEsp~go#VTqAvj?i6L-pH{&}l+KHfQC$hqU zEMfPPylm7(aX`1LI(v{2dfY5{nO)=1YWDcnEmTX50m70J7&k9C1-XF@uw;3pw;tt+ zq&{$+C@0rA-#i+G4*3%PEnURSe=+FY4Z|-_EAA2A#;_@t&|GECH}xx5!4X?5jv(}N z(#^HJtbxT3y|&{ie>nLrVG7UG%#6vnQD?TgQ#AxuZ+9+uE#EUDW*kWKbKT02H4M0q zSrtOV0_yy9|Na0?nU?Nr?%JfPh%we-f-4r+8=be{v=)?T!=9yn-^)CG9z8i*(B;c~ zKzlr#Rd@FUf=He1JluTK zY9&IR^dV8ckLLtpJhDZ)Z~~9Kd?S)QF~{#Ax5GFYZ8hO0g;--;)N-VWW3+xtRXPra zF$1mm{EJq##~80zA(&TEA@A8_Xr=0U|Eb+o{p(wE7vRcwH@x|z132yki1~k670nJ= zrqoyHDeu|D3okNw4FdF#O(TE3p*S8@aY?yH+_+(3VO^-zwazsH?Ll|m`lb)m*V}<< zuD8?RzaKXCz`%wPN0j9ERxr?4ax7TA*#1D|T1c~sMc>cMJDt`Tlra50KWyUKRW zNF=`bEVx)SlM~noLDw$Z^gVth`J}}t&E$h_#~A# z)MiTkXw-;y3u)~787#L2{3ejpw1DenLsY8MHmaGH6W?fe=|d*By53f4igNDEG7S8| z2>Yx6tcNt$-fPMSg>oJGwK1uX=!U+ODjsdh$f${O)yMn712rjc2Bf(F=(KM2aUgGB zs6XO6zs5-v9APvhr66HJ{spt25irCxHrlgm05#Y(*e+eFk%kf2SjY3pfyxG7rPYfk z5SA?+RJ6X%0G#bXGFj^!Q?pdKCKn@C!hG@oq`q85YkOU@mkHwf&QtzWt-p17n)NBK z7av<$v7n1du2LjtEMcygSIXkU$@46;7(uvg$S_LpNI&xYC2WrZ;0cA|KX#JorQSqU zaPzQhY4xOX8;Vl8^zr?Hx%>`CQ&NGqt@1j`UzYfWkPh|ngo7ocDC3qnsd(NlMS$8} zB}mq-HtAIs>7d7sFPdsT~u1+FyFMDN)f=5>Me%*PP zyJ}uUJaGzYR!r_>)8&InSO|dV3lA4Fmk20hTBw5OZBb%gbqm*Euw3Mt9HkD%D%Cni z$y`DLg=P~U24JD94i--SKjp5y8Em-!80}M%W^%=&Q{qdh&cM;(ki#2kD#1Rf#oQ)p%PL^qYPHkA?y>&g5a@QjaYxzq;ntIWhm~E!v`|q;~zV>{B3}bo!xR z_G%T%=WvtL9ZlhOYsA!;aU8C-lfTyT{KgDF$Sj0O2yw&agbned#?R)lJT!177`D#@ zk=+l9@nZDQ6TvCcB7_mqJtuDP2&<=-v!82`lA7z5mg!)YxU@9q)u4k?v*dRbce?ys zSTM{8b8qK+JKga5Qzer&H|)^kHwmHU4zjTjo5rPAMHn!8 zg@ehq>#f!+OhPwUkeA!k-JQqk>fA;)CCZaHjHyD%DI`K@QELaDdYEhWO*6>}J?~t? zUB%;BCXv&0tzJIYoC%KQzW3Uc$1e`i6X%eS$@1t-B-h~454ORl$nCTgew&hegg&f+ zX}S#@6(%7js%F<@{TE?UxWr$nY@GRrD8X()v#(@|Vx&J&HR$)zE6rBRj_i{msx3~s zAsYHysA6E%)Y?M^8Rl$M4!z6gf)@oIgw9E8bD8Ke2cWruG6wb5$dc%(Eh5vmj;CB; z&(R=F^LY@vqrq^p;!xw6@iwx4Y+_VzMk2Ffr9d(K~{`kz$OT(xM5skW`@RkZVT!-_t@vZ@p_jeU? z5ch{e>{6^BrhTFiepwERFUbHkVL-~aUI)AE0hkC$+zW#!50)X5%(%laR`RKLLLuH? znM)^(E6~s8&-kC-H_k%g{#JfyVT=p3Qq0yvkF1&P$hNMUEM63v%usSr6HVh7z`hhW0O&4`&kw`cZSG zKetW(ZFPc%&}6WCH%-*-OdOmMJb2Zq8k9Un#2SsaxRAeQZd|Z&!Ib`Sf-j#qVK=li zK0VwK5l?A!sk1PxsDZEciL06s*-r?FtRyW|fn|yBfsl=eW^!U1ogbQ>Dz^PY@9L`w zklH7&4moF7J*~jH85$$rlpCS)QuD&Vq75>7vVM(a4v$8@nu3FtjU5k{UI>e55UK}^ z6J9QUi^p(fnTx5Ko1yeXSi+kJ5$8kVE`>@^XIw|O;o9d_beBdx`_#GMsD2a+kfk7Y zwbdkw;0v)LGvgKpLm`+dE*{Q?-fDsmHo6~asa z7y~AARD0ybQ@!vJi)|Nx4-D-zg&xKT;q-E0x1#zvSyY!KH%KvN+_Ji?>;1mGyp&cD z3_XP3RkNI*RB~bLezhk01-tM^^__!m4r8C8_1Au;dld5%$waGAwY8!?Ksf504sGtZ2H8@(A zJ%R$toa#FmIFL=eiDy$0^ddN~(}deHpVW8(p`gSGl$rwGvC=8}gcqqUZpbIp`Ox@K zo%E=)WO_>noU~8ziDEDPd#_IjS-MB}oLEN?<{g@!Rt-{3s+2=hNJ{c%CResN6c<1O zXYGo`E_}*avINzq0t1;2Y*sm`6)Fk*i-Vg`_+%eyJu;LgP3IfWX7bBx5JY=dox2p8 zs6jqRgb08g^oWyABf#+3E?K$b>(!{Mw1ruH@v_<`FM9{`wEniW-Y~!|gCnibzr2ve z5VI$;Q#3g{8Ft%>@*lhw-xB{yTN1`qHiOA^xmC`J?CcC zU?n!(t3lb^{g5{cFdliRod`Kz2QHfYXW%cE*m;US8t}_}#;i%7=a4~_Lr%YwRA~EpyIM$WndKPBxoY4wf zVt`59vx9`vW`~O;{&gYjhK(FSl)fb1yGZO*RiSTXyHP3Tvs8QjXjHAZUIRaz_9dy^sM@NhZG=-S+#`D= z?Szm*K^lSH6r}NW22PjMW}5m$IEg|Xs^h%61|7Zwj_aApQ$eXw+gyVDoJBoWCh+tT z7Yn!6OX1caZr))ZNr-8BLy<5wAJ0N$rqD9p!~m8RnZ1{*Cf1cu+_kPC)}X#B_HQHN zSuQ!wVQRsl#-J*hIwbZqTGN2-vK#R|QXw zZ_`UG*bkupkyfbFv!>DFdhu{-Zv2EDs2uK!dZ2J2sIPOTjSc$a(_$lGO#s0#gcizH zBm7S(Rjo#mM9=pE5r2KzLG^cI3J}e4<%@%Rv`08oncufIirZJ9b zUCJtu1Wi>hMdnP`pV+Eh&2*lm44DFx_?xWUTSu55xkD>Y13)&%z5KvNMz`{b2MEY=UGWZH zf;AnIM1<5yjAf1ZDH7T(+%lG_Uq6**8fqll*XzZb+T1Z2gO=1Z#+14S9N1<<#j(YE zeflbavh;V*&M=0#2L4o6HK;qtDeH2C(YY8TSvIE_N9!C$JFVoT%_>XU=G&YgB&@;; zgZf-q`9Phdkq@%icu($Cn0V4~^IgM!6P`@F5=Phtr?%_a6K;<738`R*J}`&1^SRw$ zV}n-f##1ssj`B4LD+dk=K2yPtKYtIojf%>MUA=N-nGH_LDVUF-IT@8IiABnoOB3M@ zj&h-_ZQ77(hBSl>0||oPIJ&SW1L901&txWd4{t_$3Nu;C$#Mv=(^xVhJX(b-$&6*} zB7&+r@y$sXe>Ny?QisRpvMYtZ+!ZC-32MqKbE9(m3Bc+ z@e!Jio<4+hZrG*n)J*DT2XCZit0gilLkVxgsu8kNj8Wer!~fKP7xf0%QE!S@afX9U2b3AmHPGk`FpDsUf=&A!My^e5)VGwz#9rD zE=e|gvwH5j`a_%QH9%-VPM2F{mAvRd3nynlv^hGIjt(PQr*H!6u!xr2juOu&e40j za;b&{DW(_Tj)qcIc`^7guB-lXg)f?e?}d$3JdzcE>X@TUp0o#ge1V5fEI6bdusLgzufUHed>Sy&O7<-E`?n_CC8eS z>Y{%!tTD|E7xB$_u*|^0t@0+>qg9(d)_}W}l3{pCTUf-}ofGH3< z4SslGmUXLR(XQ#{yyww?N-((Nxc}t!^Qo|Hx0BI= zU%nWfX0tLZLyfBvIb!Q>;RnU21DCTD?|F{{+|pFlSwSq4y8|^DJ~q?sI0g3KttgxR z4%>v+yT)-rp*EW&KJCSgxpg7&MymscW=5|o?%jrSb%fp#j2 zbP@Y`)xfk-Vy{-KGcM!=Hfh#ADi>Aalrb*V4bjg_&AZ+$w*qCs?dbGm3^G?3287`F z1KOLuo(c_g38bt?O2gSCO1ANlIn-nv5E`6hQg{L`;YcQY8deR>^(Gkj9}*`Tj#7aP zgBNXrz+fk8jhKi2`S+Cfuim26Ig9qH!*9p~i};>dp|YI0uz!M-XdYonuHT}+Yk5=G zom8z&mHH_y6DIc!6{=mzoOTXl*iT}ww<{ia8HiF@KcLk}u_?gZU(aZ!@(Eh29T~^7 z-D=bQYio8H`mr^Sq%na7;7gL_h~`VOWD5F>EeUtx5l3MNyzex&c&~e6Mb*xQkdJP^ zZT_ljsJnUzN7eDw|I^RE9ZY-^6DIn?^lk5J2%^aqLDWfVA)ui#sYmBOrw3xL4bljY z<<>-2B(`$tEa1L7!vf8cmHA`9!`$JCILxkVbmt-*p}=VIt}(EQH+fdESaawzxbjVp zK4q^om6M}f_2|5G+V+$iv#OZyv%Ku#E(=fw9<1X>?;u_Qkg&g*>pS$FB8?E??Jnr^ z4n@RxwesFWA23hiCdIRTZqihIpwQT%Loq_cf>S96_ApjJE8Y3gja04c&)-9Ws$PZ# zg>TT`G)~QxFKrnwHA6<%<&*Q&x=lJEQvmW^y@-N9u0m^s->8i zJLWvT=9$mJ@wR{iR@fDMlPWXU%l(^vjg5_(PvOnfA2qg`OOp!sIF;8+$DM4cPXi4S znrfhv0Wewp_ChP|^Z9Eq$WuRO%BMRp2jIaLK%~0je^@0mQ7fJ5nCdq+>4r&E;+c#$ z<}|74U!bm)4PSn!Ar--`+`0@qup8tJ$<)@xATR^+f@3YOadn=&`Ks-xmew&tF4%%0 zy2=F@39}B(=LqjZHl>QLMr4z|yM+3{m#JS**6ou-kELYXqzRw(wC29y?LRAaL#nBD z*q!MhAPq9$#0CGo-LLDeohS;Argmq|6H`6b$$0-UrC3&dSJY}Ob&>$9XKU`ksMUeX zaXJRZBwpfZFucIdt%4^X4Kd`{VuR{QJeXUA_$SH~j4 zt9!}{G<Nir1a%3<5 z>NhTK)Xlqf%bO+130-m^fn=Ct@65u+HDga4#4e@zH{Nw(Y*>|@%5E3hLBTAlrDcAX zv3*420o!jLJ2B7kNp>n?O@JWh-D)_K{}XJ?T`0`;EV&bkT%nzu-3}>|Rc@I7SRi;U zXtmtH##{li$Vxf+T50Jf=h%K0x4&%@J~y@KlyG_n01ka1hIss2EsX|P4{}L0YLpK*Mf5>!P5ro} zZ6})H6+2DH^#X3v^|o_2uDo;6Bdc0rRx#@*SF&qdS4G@gs&uHilI!87jr9_hR9Eou zOb|DhH4voTHkId6G`W$o%X1P5l2=|?P6sbP1ktV!#2WKb*`w!s}R- zh;+96D)nmnr&laas>5R2(y@_YvwhB&iCjb6crWgo^|%g3)NOl7?1BtfiVH%tDwY80 zZbx^}--=Yj^uUsMpXO~w}%7Mp@Eye+X-Z+#g@j-CA0#43D)7bI(X@)lc`?& zpTA{u`cd9qC6h?(Ch!1jVObYaA@YI~LxMWmp$4P_*Z!GC4#y~SVw`t1M_3=bD+A;+@1J@Jfuc8r_Q}K$Bh>nH)ITEER6BS!evFU{Ez=JV_ZOz!iyCkfKDu$u4y ztr1_qlR7>92)+V!SVBX<^;vFRwh7s;PdpAl=CPdLPYEG)NoE)2omzJObCU0noQHQw za6ilYI`L{uBF`iS*9UJj%-;#TmEwioTxvFyvQ(*du|(<^zV>c%YH5Mk2Y=S*t?Ja} zP_@(tc=XM547WE|Xe=(=SgSU@5xhL;rDmJ$Nlw#H(BH_yg7Dd9vk~KSmD-~ohElWK zLdMU0LaJyDNzDi(^%{?rPJ&|fu2F5NJYSX)f+CelC1+r!nH9io()Dx#M!|KaGZ!M< zMEchR0fau~wGthaK2dA$f^k-MT-Nu z*RF1X7I6ie8S7=}USh%M715s8#hsE9sUmAVNG8V?WK5@X21@B-cK3P_c$8F&Z`+ym z(yX6C@7^%5*pNsVFrkM+7iKg$m~$c-LhjD@)&PD|+0Mx7GFhSxX|g`w zi!rA(!DY7=SNg%HS_~Iy@I_8}DT_zLV~agQgbXJPLhDsU)xK`S?^p|*S_pmeUM94v zWV&GvC~((^BRceSN2N?y>ycool(9N0r2+`%)#?jGxbjw2Z-lt*hR>8CMhWCToFZOK$0r9I4Ia)5aO~n3@pJeNwj& zC|WeSPafs%U1DmST=-OIgPz3WS1wA&K;i{X0{a)AGTu}%-jw(0Ka1fpZI-%Y7tqV5 zS*XTjTRq`j0c+&XwFDJ6iz+5xanb4EBwU-rww@UoBDbZwt!MCjO(X5& zjeJ<$#W3$0{kiZ9=v)2Eqh3Izry5XFU7ZFziZ=Yr(lAWgAw7#eg&qy=v9K zdOMIgz8hM5l@ef@M1<1e`rg6(x{c4>K5OFHh z&w_YCFafoYa4zFByQ_` zRUT^yRaIvghG9}8>DFnU6<@XqrNaifz-D-_7!L(9^)U6qo96N1 zW`82GkQ|mO_ktYKCIO4VQiNX>I3!Ji99cv{60VyU!X3L-0GW-Dic|%hQcC5gr)^S_ z$rB`gMtxaUBn2m|SFc~m)|mVEm!r^aZYj|HoJ-jrYJTFpUEOjJCh?x+9?}#redLhO zr{0G%rrbR9sa^prmx~z8bJqxjg+8QGx^kS)%=nE(3?Vl{`*<<2G)^<=1Z-5dD%MQ- zqx&|{K=(^;h^ns{lZci9(@s2H=qYv+mC0IoE3{zdr^77JrI1q$1aU@|YAECu(5h4u zS0J+C)v@w1V|M+O>e=-!{JPJz-6i8(39&*AIhLGA+|%jBj{9S+s+={o0Wk;AH-dry zxaksD!=wj^-u{N>(Xso_-OY&xsAp=(*hF0b!2 z?~NYD9ykX!p9t0kiz??QFm3WSUr4DcmLjyquLhf!(+;mJ7H&QC3yls!YUL$D2Jc@w4D|Y%RvJ`U~I$v{xAV+*+8g{3HU- zaoTNru51U)EIpSO;E-q6aeECh7hhyReH&?lmbPZN- zDCM{AEUQuu5@qeM14KGSqp?E%eyUkF?Zl0E`x(til^PXk*4IyHM8uQ0sA&k&^pdbm zW^L1G#}i`yg*1sv(|F-bX0+fUK}jAt2aI=Fikg>f@5Is&%kE&Q(NLo$Qnx&{>60`M zfhB{h+SCd~QX{_W^zQA&LLQi*aXG{!)}Z@yX9JF-y;kAxF~f}oU77y7eA)Dj#qesRX&_KfjBmYKCILoruYy0T-I*r-J4ng! zLojbLxeZ*;0FAayG2;GuMW(f!=7NrWUyMiCh!&cQFTGn1H9N7~&7ieSwg29?mqW2f zgHoM-YQRqo{J@w#i8?07L@1~i#E-eBO-X}D!*2DtWx&S~VlO{?5QWtl z-~-ez`ERzWodQt%5TT$SdQ}@s7mutX{S@v&ecq-FR!FTWY(i12D90MTfC89d@ zs@e>oNgh!$7bc!&P*~j%HI9E0;_qdI)s-9kq~Y)~WA6#^85DTbQNehXK<5(&V{i^h zDTxT8z<9Ua)@#JQX6X9#_0(g>VuxR$j|KMB*`;XQFm~WH2pn+}bsV5PgDVg`)&%hp z(I1n}Yi=m^cjV)3PUW1or5LBfC&_htbMQ(zDuM`aSl{r2<^u>2&El0~lBOdx@wkv9 zXU#OvhSy~0u1>mO$N73qIW)YfQP>QZSR9+ldTocdILO4Q!ngETTpe=BA{&Q9N8*s@ z`ba7^<+4WZ)?iNs48mqY-hJ0AJ6?;AGz}D=RcAR2 z{TsocRSi0!0Xbe(4;oW?RUb|$lHB?5!5Uuh?QFa8j@UsoA0V4P_2P}AqEww~gfdB7mQ`#u-=c1iDcQumZ;v+c zG_~NW`JLo@Xm6HbjP3!Fpb!`h9|?WqsV27)`bqc{KTK-w*r17bwMcowht`E2 z!@DRG?$b&$IaqG%06cX#_n6wT`HtyWmRwP4jgW;9Bbg?~aJI%6PDy3ZPgKQL=|M$5 zjOzw1;nEkmqc;WwbX>f=xUx69OV>b#q#q7)cg^4u_^mGHaqS>HY#uDGVvB8zeJI-g za|&y8oQ#&{3`vv?rO!fQCc1FkCe=pQ9zaVHc^EI?x7X{{klO2@N*;czlV(GAa)RJ1 z^K1fplW-9vWtbAFG^jdRaRLOVKAkJv1k*Ql>$B%!tU-uZcQ;)|8j$YH!8ncFlqcDX zy8IxWIzfiqJ{IO-E~i+VG)6u~V=jX`mqenyxr6%Pjc2*-c5^P`{`3P(dy=;%@dQUw z)7n2xlWxiCY5uY1B~R)j-Rs%|Z8W8WvtgGRsPQEBd)` zgewNZTVr6=jjqEEHEzpy8+8fG?)drQFNGJ)h2URZhxtJ*wigEs(cbZGyQSpAqJ3yq zW*!;;lCj1wFPir_1OR|g_^zi@-KV4?x5X31snh5Pc5Z^^&g4F5xp&PhFNd|ud#0Af z8LkWud|t)c-WEgJCby|fVV8NrPDt!+g`gA318kmE0BWape+)qP-oyz8rV+OSY2nZq{wPMGRO|Ug)M@|g>&v|6B>xr&csH_Ri zhb?P*%!AdJb*O=SOyjsLG#30*2bM(1VV|S0tgPJbLt(zW27W(KdM;kSrCHlQ`-Ljz zK;ikP=pzB=JEAU9#~O9?eZ!62a-qKllcf@eIF~|$@9lM;)wd9zpw>o48V9*$Fl1SH(Z{%DWsm(qcm+-UloXHJf$$2RvkYi6B+yCiU`0f%ws5fOu z8!_b=AwhZ87NTxt!@4>nqb!4b;SyvvCSu*i`sTt+Y<*4C?@CT%BlVl!U@h3Fuhi;i zbu{oOVFwNk&15Wx+b5-g9yK*@Y;tH4eSM2Vo6cP1M&d;oRUc*RU$}&6b4zM=b$HPi zj8!uQ^fo>HElI+>>iLMfF2y9jj@uah)Ty7^@^Z`766u-Y_HyGN!g`Z0(bLfXgO0z= z`J^ENom1m;++|gb_X*_}=qzyPBuEV%SP7$akMZ(qdyTWYyr~88*rQA^`ah`}A>rX> z6NsRPZtYcBI&AOhE_*@9^n{pQ+v_reJN(*W*PMI!0Nom!F4W)sIHzDFE&7$&+S0(~ zrLu>^yCLgTs8fz`QhoSVRv@KILXUHK4FkV8Jax$L15jkh9PVQcg+es$V^#Sl^%};Z zOOm;jk1@D3I;k;DpWo)<7gkT)x-}-K2wjGd5F-O2VzFimJwXjq{q@j0upWM}^SKYA zXL$`g&FM4%2$l;*QxEsUGz8~wSC5{Bd5)z{rK;5-m2i;Z6E#H@?!oLofCvnVICEEn zO&ctLp4xT&`MZ(q`V?f+#L6wT(dS2kuOdE{>O||xwmO9!R(l!#Mf6jR?qioxp$dlR zaJnVSJML!j34%lo&@2Oe((n6^CRbnQqYbH+B@D zd4LUvm9&;kg-fiNiq+ zsn`AI@7Ol8%!D_@(}^$*(S_6!p<7|dlOF14Qq`eIO;`9#un-Y$TR;q(-JJzczp@$y zL>i<6Jnz`3-1$99jzCBXBSips^IaOcT#OdFMm!jn>2gA3V#nOX^bt)>0DWx`Nm=U7 zaRGdaS0B21&Q#?+#x=7OD|(>72yTf2NiKtDni3oS^?ncfh3;8=gzm*tO5t;UlNpfh zBwdi7rK0_;o)6RXc1a^#MrOI$>5T_R1_%$eSJaNa4%gB2z;Pyey$&pn|MXEfQYP;a zaDI>RK;!b$$M1C$symG91B%3?KHaS4Ys>SQSPnjB=t%;YpB4-pAtDo$2(hr%K{#M#0(1fe1|rV3NUP+ptz_Hyvip;E`snXa-p^-?(4 z6HH1oq8$;%SmDisPp8Xx4`4^)r)?AL18~$~4_`(=;`LNWpmi54M>aK4> z0B8}faT@fu*#sy)Ap<|WK=u}YebI;d5GS=KzBsfg1RU0tVY}ZA*^ndCE^A-_f7n?& zg$Ntg?8H~-q8nuW2FO(li9)7%ABHF*lAV^xjrhK1B-PA$5vqm+CKnA^Uzc^QlCLq# zR^uoJYITD_W>ttzw|ZF?$Hq()6eQJw@#=s6o+OqaFNxo<3qG*MtX>72E)o*+DTT%R z1k|MT8GL|+rt^>DD~D~QOy*)4okrz`W?DUdp!B95pxVtfsH{zKB=|2(3!nV1q~f0(U?q~X%hWLgd+W2>({&SijvWsf&;ySuXrp_ zDFK*gnapb@^YyBFA?{qT{@BKPiIa&1{;QEemh_0sMrex|lNvW0Z6t$&iLPKWnhRg> zE3)ZO47wzR33)ckAYD8PD?L32+`4(tuiwx@NapdVzQe9n-S$zKjG>z8CLQ}Px0f?z zoe5kuz7_Y})p%?(ZfI51West?BYp{V-4!=YZ8;oIJimhp2KZtd|=bUk1ko#CYg(-Vj;2QmqxtaqWpMM6I8 z8m^wDNruPG_2w8KxJe0XEJ2?f>#~+rtbndVX~W~Egw1cF9i;m_O2L=sm_I zY%xCS9mblD$od5_KD2VydK^>q7xT$Q1dv&z2V4ETo^&I@H_*c~p72R75i^D0!*EBF z!cqm!#qiKYoKu6z$1{TuK)Rqg+ELrL@k z&OU{u@@`TJUhOdF=We*)_|oAq>XeJx)%L6p8+IA3-{4c@swM#_8Q10&+X!Eh`hS)} zD@{X_kB`3y)EQXUq6kw2r#x0ht7T<_$vDBqzf&0$k#F^m$C?T2S@k#<0uXxR$)@J7 z9w@(b+9#hmO@gX;;c2_EI1PhKS<;%NnqB|AA&~PocenxVx*2Enb}|HVs$L1JON5Y6 z#$S(-OvIXY`#)O~O27HamDf*(5s~iYq1#eYo$|n&1fQpnJHC^ISDtXZ^Ju#NB8J@* zPEQ*67;owpse?0&B{f*ZMO@=kY~nk4uD68pfEm#6C#7kD+|0Z79*Y03>s+%VS79K$ zBOhb@>TG59zmGd3QC|r<_ec87ByPZpSr7+MYz%@VlL)O0&PfPM^ecV2 zp(*CutxvTp80KgI0c3{L>4e#dnYW+VwJeWQ0WmFD=0`UCtG;dG5oGK$E=-gzg_VZX ze9K?-Gp7U6et8?MYvsp>Uf74zy9}5Hc918@vf&7Ljhsi+k5^@hxy>vZ2-$&o8dd9o z)+L(Knz~ue{ATu@uu&!-E~J#q2lsKDUy?9t@S;TMC3a)P3V6>ND&xFfUibn8SEolD z1=~8}94%A*xj+)rp4Q?mLa^>VYX&;UmFC#wHC8$CAfW}( z5$hK68Gm16bnmM4-H=}fd>b^B_XT$t^2QALaGr1NOKSl^mJW62)1=hu6?%DeH|$5p zYrxfs%XUf2g=ZNQW^G&CLzYyHnR+#Ta-OZw41_+Di}h2G_J*XIDB{Vahp-FYh5wfC zh7ZmL9yN36O~Qf_ktFdi_yo}N$ky=Tz+L>4y%ez~j#M_FuM%0R%ZK#kGOn=W9<3%` zzR{xk3~YmsR6EZj8gSfDe`(>=Q59R#B;!a_AcrsFNIj0q3(+EO^fzg!kgU4eLPU?@12lk*K0$DuN+dws|b>`ur~iu_t+9_n=fQr zXUq}mp(XEL1 zcreeyzIV+g)!5LjS5P@3oY%=aIeTI=p%ov(hf>ih;PhZ90s+6gMTW2>hX6-v_VVAS z%^IXyM^@j&u@tQw9*yN9la&;Yv#?w7lkie{^;Sm}wx~;T+Lt>X?-?NHgK)9WpknkC zp=eMn>HY6=*T5u_6|9VW2bziEkx?6GkOEq*R5q?+5ET&w!7f(MeW0-&VybME!lPaG zllt3ykoM(^7p^yXR{&l|yhRFJcyVrr@pYC!l-wN_vflK3Seg^dfj2R*@oB%|c~W(? z9)8iWJrIs~Rb21D`*=2|nGX3PyXxD!=Uwd%@`#>)DNGRfKIX@)ca=K=w*%%qU|MAg zL|3Gg>5kXEJaOS~VKu(;Aql?^&CSO?ZnF~k5-aR#hkmQr!W`DAuNgVe6PB}hhRqft z#*ykEO&W2~mutrK98T+VpQ_ZqfEv9}CsG=x4@Hel({h5JUU)uNzJ+xfO^|FLSVvr+ zX%1*Vud|Ffz#b8Ik24{a1(44(Cz}v6L8CYint!K!>EWS5vo&uPn8qdT#XDX>P6Q!u{QhEEr)Wt1*?0Gq(u$74Ku@Z6z|Nz@1g8KubFBPo?8%x9*wKSy~iS@9KVksJMD@`w~~S9sGn91M_YSh+doCDWOCo>Cx7 zv3v|G3!gtcI>Fyl)8eGx2{E9NTNSTba$O+tmAm=V|EEbYiCt ziz$2gWfcHvhl6zN*LW;N>&aW~(%`(bw~`jAS}E<9B<5GwKPnmK@z4nQYRGwO;wyri zDpZ|vG2Si*N;>$+H!`#QIJ(+g4&d;)7oJ1!FPzSc&kzH)rpbk>N2x@{Yir=^9G zE#>Z4Dgi28SnL4XzoX)*P|>lPI=pNthTMJ|gbQ`&{P7))#>HMe)tTLu<9GF&c?N+E zAtsIW%LFm-qn@GQzl!{P1;f|`5E6lVS!*-kQ9DDwNIZPx#ddWafF=VfGaBB~Em6+H z=eO4UmC=Opb_CE|)%<`a08lGyT(*@#^b$CR)IbD`dAMq_$VxJfn1q32r0*`2Os?^VHWOLQ0k z%!nR>QfG(R*bqe=FK6A#A#W`fd6#W3*IT=|;_yV#j6$5m17W}nBr)p*YHHdiV@f^D z*(cd<-O}+Xjw7&tof`nf@f1MIjr#WNMGA`X$N4F=0tnQ+ZS6^KWZ=`*jM0%UtjO0R%bgCJy| z3b)C?mneAmtW4+`PpqoGyINe0M9drv(N`u$WY-gg<|mC^t*9f2Adc8*Fj@B+F9s-i zmC>s`LyVp{OA!>bv}08&wqZ%el`~*$Hb3yx$pfX@q@<8(+mRk?=XOj$-Dv4EqqQiT;TCc|RCk=ylntyfLj9IjR*)eSeKo}TJ{ziZNj z1a&R^vr12VDLTjQ{2Nb7R4*HDYS69*K2ziXnbM%go7%*Vr91P7URI3|L!DA=Rycgt z$!p`}>Z_ba9k(7IN-=TU_^`2$_u+F*k2O76UhP?*X^idb)XOe`$s%wTFqk7^6U_KF zl;b8tnF_OFW7j(f6-B*0rit5;eUBk^4Yrz`k*#*5xXmh!)gOf^wX_m_Gk`Xnl`?(K zQT#!n01*=8cbK1D@{uGcR39iEppg8zS;;zucj;GQ!yJ0+2ZSuT^daS-;bK!tVrtS6Qu8m7@_ae> zHlReZQ|1#`2gQ3YI>+h*Gi1&0d5vS*rli8QmlGb3S^lXq^f6jJG$%cJY1cJwko2brZ(S#%=VVP9O*h$z%7Xeh_7g(MSkBC!r%GbhYKOqpMVhIJiv zQqp#UbFE$0U%rlTbW(xm? zpLB(nDSHk5nA2SR99&;@{?*TAn z+$P!a#RyWF10Q$ce07??0=&=z&q|wb9>+F>C?n$KdeCjw*0Ha#2EJSqi0VAJ?eqe5 z(d^z2W|Tb01hb0RvkRmB_x-n1&E@ImSB(iqB~-btxqF%H(N>^l8o z{hYr%pl3-t%+g6AG)4mX?c$DomF3I!YTIkAt{Mb9$T7lofL5~V4F)ZAM~|XSorDxo z)v=m$&`{#uM-y0I#{toLpXf9v&3_9?^(@p!LqEVQmqoG+N^z3tjrKnk_g$R_9;5oc zQqog#;Wr;Aa1!!^8|-5f4S0_^IB;0ecu31+zO@W8uX!sNj=9nvIKWq|!2~D()=e!u zIB-2&Ozn{TgJedX3llxzo;pu97s*6G4q~9Pt39Lw&6T&zy*pocF3c4SQU+etPBZft z1DS4f@{J958EQtRnp{Bt3D0oaH&nWP@;1Kps7=RFaSep-9|$W64fIr!O@#L2a_F*v zN>_4dl|m17Ie65Ynu)Bu;;V-Wh4OcOWJyl?+2+yCTwUWkBZPzo ztE_bzToR7RLICL-V&zNDwjsRUWgj7=H*F4bSY zv?NvkmG%fNd0--aWB7_~ayKOY_%KbUw~n`haFgIWBuhC!nWqk-wT?_=n`DjVi{E$6 zw_L+0ihc0S=~R2kA53GKx!f=<7tgya=4fSXLY_>mz9G6IHtJhWkFVmXN_ zzzHy^Bh^6&fT|lRJ$PQ=0#*m#6Sm-HVYXQ|(*W=w#%R^8#!7ID%6tD6FOfFbhOJQj zAu2JL-?mZ&EIold(5uqghZ(ya6_vO14x$G`?23q2)g%M$F4=G)y-Oo-HRr>9!+zTG zVZFxaV$i(!u2=KPP;AYIFO^epNE{)4j0zApq(&lD1?i){l4j9j1cZi9y0DE|I8AuL z@U~34@6F7lqal1O310so_vDSWG51#9`P6`3{{qd~Gwc{a9wkVzG{n( zVkQYhKbD1C{l&LK0wwZJdt^}>)Z}Cw36gW)WKAL&r{E}ZTSOolW649$ z8B>*F;Q5(&VTUoEFqZ3yNaQ4zzA)CCAARWH!d)V`BRCD?g23J~;tpCp$_dZzT7Zk> zRZ8o#ne7qX0MF8B%!fBiu>(Cul#mu+x%qqEdrsUkDltJY+SIT z3kY>y)ap~wItWCHJobjggkw=o;EQmQcT2~UJ6{4ghmxH19;zmDkRtXO0pu5bnpSYf z7CU1?+}(g?6q+x|x)7v^*rxqMlHq*vNmuF%kg+Z?doJpSOr zU(IbZbrDmE!#J^<6rQq@pUUq-{usA&+)>KmfavA#b+|GHnab#X*>&>5SlwC&n0A+_ zcZf6PYhdhvfzYfCc5_8n@htCp|27`U23HP-V10JoGNxf+_Iwgk!c07Q3$`{#f>(Jc znSq-%k;0@|0%i&xDUiU_Jp|6b*TcWS@8bY)h|da3xvO{7M|$}5bxP=wD_N%50Jji> z#;@UL)*-ZS&Fpg9)3ES#m@}5m^&pdW=s*qz^IXl(QegF98~GjOlga zPbR(OU46qctvlP>h|S?Q5C^gv+AuTHRyIQ@@iy0 zN2K@AQov-jQuB4&OMyGlhlfr0O$erCIB2lF{0B4@9*@0Y&A}tYAEMwo73uXS?>Vjo3csT+2@PWM{30f4Vt(o*ai+*c`fA)z z9YM}o4AF@S=sOJB4OW&EBLL;tn}&RpAM%tbRR1=@Lky8ifOT-r*tr6p$n(N!wczP6 zB81*lwgfNL#+YWH}fu*Bx#g zIl62`c1@o1quvyEYSg3RSQ*^I$F^$=muJVtMr3AhJ$BF5Nz;hmsLWj-b9(|Rk&E25 z3;XDkV(A{bB9hNg!1r^h(3|F3_cK!URPW09rJmBKam_(JB^v{DRkH&#a zmbth70MKBb92|>zk&IT0LptduBJqt*TF{f_n8MsRvOcPuXs0ec91{&t#tz)d< z=QLGGhIm>K<}p<#CwYbWuH|#d-=~;8KYuQ1DeIs<4h^1y(xWCM@QU^!7vg(iJXdTW zOO=!mwEw<5(x%OOUw<9Ni^$lFJrC#F8GgAVI$SC+&CE84uD6oz3Jr7avI|V||HNhp zC9^XhW|j-=dh>C04P;{-zXkw7@gee-MCZ|oH8@qc+zHntNu*VrW2kR3z{akD-RJUv zn1ynegEG=7OK%2@*v+ew*c1B6il4~Ky2$17zZZnCK8Rxun_txi5VaK-U4EZ8emL!M z0h?xG*X3XhzwdCP{JBtYScTtasYBWbVy6^+<|90|U?KOi{;NbJ()DNf zQoY=a_YbmIxmm4BsrSDFfldWmm6C`lB1Kw?FR7hSMJPkpD{aQ)Brp!?29f6CU6acv%YFTmtp5NGNe%{umRkTao2sP% literal 0 HcmV?d00001 From 598d60f87c60ba1e789f3dd7616174c2b294a986 Mon Sep 17 00:00:00 2001 From: cpegeric Date: Thu, 5 Jun 2025 15:35:18 +0100 Subject: [PATCH 086/223] cleanup and remove stderr --- pkg/sql/compile/ddl.go | 10 ++++++---- pkg/sql/compile/ddl_index_algo.go | 2 +- pkg/sql/compile/util.go | 14 +++++++------- pkg/sql/plan/function/func_hnsw.go | 4 +--- pkg/vectorindex/hnsw/model.go | 4 ---- pkg/vectorindex/hnsw/sync.go | 29 +++++++++++++---------------- 6 files changed, 28 insertions(+), 35 deletions(-) diff --git a/pkg/sql/compile/ddl.go b/pkg/sql/compile/ddl.go index de7e90a674aad..815e05e66bd3e 100644 --- a/pkg/sql/compile/ddl.go +++ b/pkg/sql/compile/ddl.go @@ -1998,9 +1998,11 @@ func (s *Scope) DropIndex(c *Compile) error { return err } - // TODO: ERIC delete cdc task for vector, fulltext index - // cdc task name = __mo_cdc_{qry.Table}_{qry.IndexName} - // pitr name = __mo_table_pitr_{qry.Table} + // TODO: HNSWCDC delete cdc task for vector, fulltext index + // cdc task name = __mo_cdc_{qry.Database}_{qry.Table}_{qry.IndexName} + // pitr name = __mo_table_pitr_{qry.Database}_{qry.Table} + // DROP PITR IF EXISTS `__mo_table_pitr_${qry.Database}_${srctable}` + // DROP CDC TASK __mo_cdc_${qry.Database}_${srctable}_${qry.IndexName} return nil } @@ -2562,7 +2564,7 @@ func (s *Scope) DropTable(c *Compile) error { } } - // TODO: ERIC delete cdc task of the vector and fulltext index here + // TODO: HSNWCDC delete cdc task of the vector and fulltext index here if isTemp { if err := dbSource.Delete(c.proc.Ctx, engine.GetTempTableName(dbName, tblName)); err != nil { diff --git a/pkg/sql/compile/ddl_index_algo.go b/pkg/sql/compile/ddl_index_algo.go index 617b0c5877c03..a34c3d18b3602 100644 --- a/pkg/sql/compile/ddl_index_algo.go +++ b/pkg/sql/compile/ddl_index_algo.go @@ -516,7 +516,7 @@ func (s *Scope) handleVectorHnswIndex(c *Compile, dbSource engine.Database, inde } } - // TODO: ERIC 4. register CDC update + // TODO: HNSWCDC 4. register CDC update sqls, err = genCdcHnswIndex(c.proc, indexDefs, qryDatabase, originalTableDef) if err != nil { return err diff --git a/pkg/sql/compile/util.go b/pkg/sql/compile/util.go index bebeb65a8ed01..7c92549fda755 100644 --- a/pkg/sql/compile/util.go +++ b/pkg/sql/compile/util.go @@ -19,7 +19,6 @@ import ( "context" "encoding/json" "fmt" - "os" "strings" "time" @@ -563,11 +562,11 @@ func genBuildHnswIndex(proc *process.Process, indexDefs map[string]*plan.IndexDe return []string{sql}, nil } -// TODO: ERIC 4. register CDC update -// DROP PITR IF EXISTS `__mo_table_pitr_${srctable}` -// CREATE PITR __mo_table_pitr_${srctable} for table ${db} ${srctable) range 2 'h'; -// CREATE CDC __mo_cdc_${srctable}_${indexInfo.IndexName} 'mysql://root:111@127.0.0.1:6001' 'hnswsync' 'mysql://root:111@127.0.0.1:6001' '${db}.${srctable}' {'Level'='table'}' -// DROP CDC TASK __mo_cdc_${srctable}_${indexInfo.IndexName} +// TODO: HNSWCDC 4. register CDC update +// DROP PITR IF EXISTS `__mo_table_pitr_${db}_${srctable}` +// DROP CDC IF EXISTS TASK __mo_cdc_${db}_${srctable}_${indexInfo.IndexName} NOTE: IF EXISTS is not valid SQL for DROP CDC +// CREATE PITR __mo_table_pitr_${db}_${srctable} for table ${db} ${srctable) range 2 'h'; +// CREATE CDC __mo_cdc_${db}_${srctable}_${indexInfo.IndexName} 'mysql://root:111@127.0.0.1:6001' 'hnswsync' 'mysql://root:111@127.0.0.1:6001' '${db}.${srctable}' {'Level'='table'}' func genCdcHnswIndex(proc *process.Process, indexDefs map[string]*plan.IndexDef, qryDatabase string, originalTableDef *plan.TableDef) ([]string, error) { idxdef_meta, ok := indexDefs[catalog.Hnsw_TblType_Metadata] @@ -594,7 +593,8 @@ func genCdcHnswIndex(proc *process.Process, indexDefs map[string]*plan.IndexDef, sql = fmt.Sprintf("CREATE CDC `%s` '%s' 'hnswsync' '%s' '%s.%s' {'Level'='table'};", cdcname, dummyurl, dummyurl, qryDatabase, srctbl) sqls = append(sqls, sql) - os.Stderr.WriteString(fmt.Sprintf("%v\n", sqls)) + //os.Stderr.WriteString(fmt.Sprintf("%v\n", sqls)) + // return emtpy for now. return []string{}, nil } diff --git a/pkg/sql/plan/function/func_hnsw.go b/pkg/sql/plan/function/func_hnsw.go index 7ed40acda6d88..792e3343a2c07 100644 --- a/pkg/sql/plan/function/func_hnsw.go +++ b/pkg/sql/plan/function/func_hnsw.go @@ -16,8 +16,6 @@ package function import ( "encoding/json" - "fmt" - "os" "github.com/matrixorigin/matrixone/pkg/common/moerr" "github.com/matrixorigin/matrixone/pkg/container/vector" @@ -65,7 +63,7 @@ func hnswCdcUpdate(ivecs []*vector.Vector, result vector.FunctionResultWrapper, return moerr.NewInvalidInput(proc.Ctx, "cdc is not json object") } // hnsw sync - os.Stderr.WriteString(fmt.Sprintf("db=%s, table=%s, dim=%d, json=%s\n", dbname, tblname, dim, cdcstr)) + //os.Stderr.WriteString(fmt.Sprintf("db=%s, table=%s, dim=%d, json=%s\n", dbname, tblname, dim, cdcstr)) err = hnsw.CdcSync(proc, string(dbname), string(tblname), dim, &cdc) if err != nil { return err diff --git a/pkg/vectorindex/hnsw/model.go b/pkg/vectorindex/hnsw/model.go index 379789bb0983d..5436412ab1527 100644 --- a/pkg/vectorindex/hnsw/model.go +++ b/pkg/vectorindex/hnsw/model.go @@ -196,7 +196,6 @@ func (idx *HnswModel) ToSql(cfg vectorindex.IndexTableConfig) ([]string, error) idx.FileSize = filesz - os.Stderr.WriteString(fmt.Sprintf("ToSQL: file %s size %d\n", idx.Path, idx.FileSize)) if idx.FileSize == 0 { return []string{}, nil } @@ -262,7 +261,6 @@ func (idx *HnswModel) Empty() (bool, error) { if err != nil { return false, err } - os.Stderr.WriteString(fmt.Sprintf("Check empty Size = %d, cap = %d\n", sz, idx.MaxCapacity)) return (sz == 0), nil } @@ -352,7 +350,6 @@ func (idx *HnswModel) loadChunk(proc *process.Process, stream_chan chan executor // 5. check the checksum to verify the correctness of the file func (idx *HnswModel) LoadIndex(proc *process.Process, idxcfg vectorindex.IndexConfig, tblcfg vectorindex.IndexTableConfig, nthread int64, view bool) error { - os.Stderr.WriteString(fmt.Sprintf("LoadIndex %s\n", idx.Id)) if idx.Index != nil { // index already loaded. ignore return nil @@ -465,7 +462,6 @@ func (idx *HnswModel) LoadIndex(proc *process.Process, idxcfg vectorindex.IndexC // unload func (idx *HnswModel) Unload() error { - os.Stderr.WriteString(fmt.Sprintf("Unload index %s\n", idx.Id)) if idx.Index == nil { return moerr.NewInternalErrorNoCtx("usearch index is nil") } diff --git a/pkg/vectorindex/hnsw/sync.go b/pkg/vectorindex/hnsw/sync.go index 9925580854cfa..a58aba0d51f66 100644 --- a/pkg/vectorindex/hnsw/sync.go +++ b/pkg/vectorindex/hnsw/sync.go @@ -48,8 +48,7 @@ func CdcSync(proc *process.Process, db string, tbl string, dimension int32, cdc } defer res.Close() - os.Stderr.WriteString(sql) - os.Stderr.WriteString(fmt.Sprintf("\nnumber of batch = %d\n", len(res.Batches))) + //os.Stderr.WriteString(sql) if len(res.Batches) == 0 { return nil @@ -95,7 +94,7 @@ func CdcSync(proc *process.Process, db string, tbl string, dimension int32, cdc if i == 0 { paramstr := paramvec.UnsafeGetStringAt(i) cname := colvec.UnsafeGetStringAt(i) - os.Stderr.WriteString(fmt.Sprintf("idxtbl %s, type %s, param %s, cname %s\n", idxtbl, algotyp, paramstr, cname)) + //os.Stderr.WriteString(fmt.Sprintf("idxtbl %s, type %s, param %s, cname %s\n", idxtbl, algotyp, paramstr, cname)) idxtblcfg.KeyPart = cname if len(paramstr) > 0 { err := json.Unmarshal([]byte(paramstr), ¶m) @@ -159,8 +158,8 @@ func CdcSync(proc *process.Process, db string, tbl string, dimension int32, cdc idxcfg.Usearch.ExpansionSearch = uint(val) } - os.Stderr.WriteString(fmt.Sprintf("idxtblcfg: %v\n", idxtblcfg)) - os.Stderr.WriteString(fmt.Sprintf("idxcfg: %v\n", idxcfg)) + //os.Stderr.WriteString(fmt.Sprintf("idxtblcfg: %v\n", idxtblcfg)) + //os.Stderr.WriteString(fmt.Sprintf("idxcfg: %v\n", idxcfg)) // load metadata indexes, err := LoadMetadata(proc, idxtblcfg.DbName, idxtblcfg.MetadataTable) @@ -168,10 +167,6 @@ func CdcSync(proc *process.Process, db string, tbl string, dimension int32, cdc return err } - for i, idxx := range indexes { - os.Stderr.WriteString(fmt.Sprintf("meta: %d id=%s\n", i, idxx.Id)) - } - // assume CDC run in single thread // model id for CDC is cdc:1:0:timestamp uid := fmt.Sprintf("%s:%d:%d", "cdc", 1, 0) @@ -238,7 +233,7 @@ func (s *HnswSync) run(proc *process.Process) error { return err } if found { - os.Stderr.WriteString(fmt.Sprintf("searching... found model %d row %d\n", i, j)) + //os.Stderr.WriteString(fmt.Sprintf("searching... found model %d row %d\n", i, j)) midx[j] = i } } @@ -264,7 +259,7 @@ func (s *HnswSync) run(proc *process.Process) error { // last model not load yet so check the last.Len instead of Full() idxlen := uint(last.Len.Load()) if idxlen >= last.MaxCapacity { - os.Stderr.WriteString(fmt.Sprintf("full len %d, cap %d\n", idxlen, last.MaxCapacity)) + //os.Stderr.WriteString(fmt.Sprintf("full len %d, cap %d\n", idxlen, last.MaxCapacity)) id := s.getModelId() // model is already full, create a new model for insert newmodel, err := NewHnswModelForBuild(id, s.idxcfg, int(s.tblcfg.ThreadsBuild), maxcap) @@ -275,7 +270,7 @@ func (s *HnswSync) run(proc *process.Process) error { last = newmodel } else { - os.Stderr.WriteString(fmt.Sprintf("load model with index %d\n", len(s.indexes)-1)) + //os.Stderr.WriteString(fmt.Sprintf("load model with index %d\n", len(s.indexes)-1)) // load last last.LoadIndex(proc, s.idxcfg, s.tblcfg, s.tblcfg.ThreadsBuild, false) @@ -320,7 +315,7 @@ func (s *HnswSync) run(proc *process.Process) error { case vectorindex.CDC_DELETE: if midx[i] == -1 { // cannot find key from existing models. ignore it - os.Stderr.WriteString("DELETE NOT FOUND\n") + //os.Stderr.WriteString("DELETE NOT FOUND\n") continue } @@ -364,9 +359,11 @@ func (s *HnswSync) run(proc *process.Process) error { } func (s *HnswSync) runSqls(proc *process.Process, sqls []string) error { - for _, s := range sqls { - os.Stderr.WriteString(fmt.Sprintf("sql : %s\n", s)) - } + /* + for _, s := range sqls { + os.Stderr.WriteString(fmt.Sprintf("sql : %s\n", s)) + } + */ opts := executor.Options{} err := runTxn(proc, func(exec executor.TxnExecutor) error { for _, sql := range sqls { From 50be8dbee4db1f3c545b2775d84bed1bcfac9ab7 Mon Sep 17 00:00:00 2001 From: cpegeric Date: Thu, 5 Jun 2025 16:12:42 +0100 Subject: [PATCH 087/223] update and comments --- pkg/cdc/hnsw_sinker.go | 7 +++++-- pkg/sql/compile/util.go | 5 +++-- pkg/vectorindex/hnsw/model.go | 2 +- pkg/vectorindex/hnsw/sync.go | 3 +++ 4 files changed, 12 insertions(+), 5 deletions(-) diff --git a/pkg/cdc/hnsw_sinker.go b/pkg/cdc/hnsw_sinker.go index b15fecd07c096..a56f6969cf6a3 100644 --- a/pkg/cdc/hnsw_sinker.go +++ b/pkg/cdc/hnsw_sinker.go @@ -14,8 +14,11 @@ package cdc -// to retrieve the index table from mo_catalog -// select * from mo_catalog.mo_indexes where table_id = (select rel_id from mo_tables where relname = "tbl" and reldatabase = "db"); +// hnswSyncSinker is to update HNSW index via CDC. +// It will read CDC changes and create JSON as input to function hnsw_cdc_update(dbname, tablename, vector_dimenion, json) +// You can refer the JSON format from vectorindex.VectorIndexCdc +// Single batch will split into multiple json objects and each json has maximum 8192 records (see vectorindex.VectorIndexCdc). +// Transaction function ExecTxn() used to make sure single batch (multiple json objects) can be updated in single transaction. import ( "bytes" diff --git a/pkg/sql/compile/util.go b/pkg/sql/compile/util.go index 7c92549fda755..1a01954e26a5a 100644 --- a/pkg/sql/compile/util.go +++ b/pkg/sql/compile/util.go @@ -594,7 +594,8 @@ func genCdcHnswIndex(proc *process.Process, indexDefs map[string]*plan.IndexDef, sqls = append(sqls, sql) //os.Stderr.WriteString(fmt.Sprintf("%v\n", sqls)) + // TODO: HNSWCDC remove the line below to run the above SQLs + sqls = sqls[:0] - // return emtpy for now. - return []string{}, nil + return sqls, nil } diff --git a/pkg/vectorindex/hnsw/model.go b/pkg/vectorindex/hnsw/model.go index 5436412ab1527..ac0c0749e79e2 100644 --- a/pkg/vectorindex/hnsw/model.go +++ b/pkg/vectorindex/hnsw/model.go @@ -32,7 +32,7 @@ import ( usearch "github.com/unum-cloud/usearch/golang" ) -// Hnsw Build index implementation +// HnswModel struct - This structure shares with Search, Build and Sync type HnswModel struct { Id string Index *usearch.Index diff --git a/pkg/vectorindex/hnsw/sync.go b/pkg/vectorindex/hnsw/sync.go index a58aba0d51f66..343c09be77c99 100644 --- a/pkg/vectorindex/hnsw/sync.go +++ b/pkg/vectorindex/hnsw/sync.go @@ -32,6 +32,8 @@ import ( "github.com/matrixorigin/matrixone/pkg/vm/process" ) +// CdcSync is the main function to update hnsw index via CDC. SQL function hnsw_cdc_update() will call this function. + const ( catalogsql = "select index_table_name, algo_table_type, algo_params, column_name from mo_catalog.mo_indexes where table_id = (select rel_id from mo_catalog.mo_tables where relname = '%s' and reldatabase = '%s') and algo='hnsw';" ) @@ -41,6 +43,7 @@ var runCatalogSql = sqlexec.RunSql func CdcSync(proc *process.Process, db string, tbl string, dimension int32, cdc *vectorindex.VectorIndexCdc[float32]) error { + // get index catalog sql := fmt.Sprintf(catalogsql, tbl, db) res, err := runCatalogSql(proc, sql) if err != nil { From 9144730433dedd141b9533a1d9984c03ee26fa7e Mon Sep 17 00:00:00 2001 From: cpegeric Date: Fri, 6 Jun 2025 15:44:57 +0100 Subject: [PATCH 088/223] debug --- pkg/cdc/hnsw_sinker.go | 34 ++++++++++++++++++- pkg/sql/plan/function/func_hnsw.go | 3 ++ pkg/vectorindex/hnsw/model.go | 5 +++ .../cases/vector/vector_hnsw_sync.result | 21 ++++-------- .../cases/vector/vector_hnsw_sync.sql | 12 +++---- 5 files changed, 53 insertions(+), 22 deletions(-) diff --git a/pkg/cdc/hnsw_sinker.go b/pkg/cdc/hnsw_sinker.go index a56f6969cf6a3..4f2f3df24cc3e 100644 --- a/pkg/cdc/hnsw_sinker.go +++ b/pkg/cdc/hnsw_sinker.go @@ -227,9 +227,30 @@ func (s *hnswSyncSinker[T]) Run(ctx context.Context, ar *ActiveRoutine) { closed = true return } - //os.Stderr.WriteString(fmt.Sprintf("Wait for BEGIN.... %s\n", string(sqlBuf))) if bytes.Equal(sqlBuf, begin) { txnbegin = true + } else if bytes.Equal(sqlBuf, commit) { + os.Stderr.WriteString("Run: wait for begin but commit\n") + } else if bytes.Equal(sqlBuf, rollback) { + os.Stderr.WriteString("Run: wait for begin but rollback\n") + } else if bytes.Equal(sqlBuf, dummy) { + // pass + } else { + func() { + newctx, cancel := context.WithTimeout(context.Background(), 12*time.Hour) + defer cancel() + //os.Stderr.WriteString(fmt.Sprintf("Wait for BEGIN.... %s\n", string(sqlBuf))) + os.Stderr.WriteString(fmt.Sprintf("Wait for BEGIN but sql. execute anyway\n")) + opts := executor.Options{} + res, err := s.exec.Exec(newctx, string(sqlBuf), opts) + if err != nil { + logutil.Errorf("cdc hnswSyncSinker(%v) send sql failed, err: %v, sql: %s", s.dbTblInfo, err, sqlBuf[sqlBufReserved:]) + os.Stderr.WriteString(fmt.Sprintf("sql executor run failed. %s\n", string(sqlBuf))) + os.Stderr.WriteString(fmt.Sprintf("err :%v\n", err)) + s.SetError(err) + } + res.Close() + }() } } } @@ -313,6 +334,7 @@ func (s *hnswSyncSinker[T]) Run(ctx context.Context, ar *ActiveRoutine) { func (s *hnswSyncSinker[T]) Sink(ctx context.Context, data *DecoderOutput) { watermark := s.watermarkUpdater.GetFromMem(s.dbTblInfo.SourceDbName, s.dbTblInfo.SourceTblName) if data.toTs.LE(&watermark) { + os.Stderr.WriteString("unexpected watermark\n") logutil.Errorf("cdc hnswSyncSinker(%v): unexpected watermark: %s, current watermark: %s", s.dbTblInfo, data.toTs.ToString(), watermark.ToString()) return @@ -321,6 +343,14 @@ func (s *hnswSyncSinker[T]) Sink(ctx context.Context, data *DecoderOutput) { s.cdc.End = data.toTs.ToString() if data.noMoreData { + + os.Stderr.WriteString("no more data\n") + if data.checkpointBat != nil { + os.Stderr.WriteString(fmt.Sprintf("no more data sinkSnapshot batlen %d\n", batchRowCount(data.checkpointBat))) + } + if data.insertAtmBatch != nil { + os.Stderr.WriteString(fmt.Sprintf("no more data sinkTail insertBat %d, deletBat = %d\n", data.insertAtmBatch.RowCount(), data.deleteAtmBatch.RowCount())) + } // complete sql statement err := s.sendSql() if err != nil { @@ -335,8 +365,10 @@ func (s *hnswSyncSinker[T]) Sink(ctx context.Context, data *DecoderOutput) { }() if data.outputTyp == OutputTypeSnapshot { + os.Stderr.WriteString(fmt.Sprintf("sinkSnapshot batlen %d\n", batchRowCount(data.checkpointBat))) s.sinkSnapshot(ctx, data.checkpointBat) } else if data.outputTyp == OutputTypeTail { + os.Stderr.WriteString(fmt.Sprintf("sinkTail insertBat %d, deletBat = %d\n", data.insertAtmBatch.RowCount(), data.deleteAtmBatch.RowCount())) s.sinkTail(ctx, data.insertAtmBatch, data.deleteAtmBatch) } else { s.SetError(moerr.NewInternalError(ctx, fmt.Sprintf("cdc hnswSyncSinker unexpected output type: %v", data.outputTyp))) diff --git a/pkg/sql/plan/function/func_hnsw.go b/pkg/sql/plan/function/func_hnsw.go index 792e3343a2c07..494fed0004851 100644 --- a/pkg/sql/plan/function/func_hnsw.go +++ b/pkg/sql/plan/function/func_hnsw.go @@ -16,6 +16,7 @@ package function import ( "encoding/json" + "os" "github.com/matrixorigin/matrixone/pkg/common/moerr" "github.com/matrixorigin/matrixone/pkg/container/vector" @@ -30,6 +31,7 @@ func hnswCdcUpdate(ivecs []*vector.Vector, result vector.FunctionResultWrapper, return moerr.NewInvalidInput(proc.Ctx, "number of arguments != 4") } + os.Stderr.WriteString("hnsCdcUpdate START\n") dbVec := vector.GenerateFunctionStrParameter(ivecs[0]) tblVec := vector.GenerateFunctionStrParameter(ivecs[1]) dimVec := vector.GenerateFunctionFixedTypeParameter[int32](ivecs[2]) @@ -70,5 +72,6 @@ func hnswCdcUpdate(ivecs []*vector.Vector, result vector.FunctionResultWrapper, } } + os.Stderr.WriteString("hnsCdcUpdate END\n") return nil } diff --git a/pkg/vectorindex/hnsw/model.go b/pkg/vectorindex/hnsw/model.go index ac0c0749e79e2..c892239588ea2 100644 --- a/pkg/vectorindex/hnsw/model.go +++ b/pkg/vectorindex/hnsw/model.go @@ -159,6 +159,11 @@ func (idx *HnswModel) SaveToFile() error { } idx.Checksum = chksum + idxlen, err := idx.Index.Len() + if err != nil { + return err + } + os.Stderr.WriteString(fmt.Sprintf("hnsw save to idx %s, len = %d\n", idx.Id, idxlen)) // free memory err = idx.Index.Destroy() if err != nil { diff --git a/test/distributed/cases/vector/vector_hnsw_sync.result b/test/distributed/cases/vector/vector_hnsw_sync.result index b4239c8f1fdc8..109417901abe0 100644 --- a/test/distributed/cases/vector/vector_hnsw_sync.result +++ b/test/distributed/cases/vector/vector_hnsw_sync.result @@ -7,15 +7,12 @@ create index idx01 using hnsw on vector_index_01(b) op_type "vector_l2_ops" M 48 drop pitr if exists `__mo_table_pitr_hnsw`; create pitr `__mo_table_pitr_hnsw` for table hnsw_cdc vector_index_01 range 2 'h'; create cdc `__mo_cdc_hnsw_idx01` 'mysql://root:111@127.0.0.1:6001' 'hnswsync' 'mysql://root:111@127.0.0.1:6001' 'hnsw_cdc.vector_index_01' {'Level'='table'}; -select sleep(30); -sleep(30) -0 insert into vector_index_01 values (0, "[1,2,3]", 1); UPDATE vector_index_01 set b = '[4,5,6]' where a = 0; insert into vector_index_01 values (1, "[2,3,4]", 1); DELETE FROM vector_index_01 WHERE a=1; -select sleep(10); -sleep(10) +select sleep(30); +sleep(30) 0 select * from vector_index_01 order by L2_DISTANCE(b,"[1,2,3]") ASC LIMIT 10; a b c @@ -34,15 +31,12 @@ create index idx2 using hnsw on t2(b) op_type "vector_l2_ops" M 48 EF_CONSTRUCTI drop pitr if exists `__mo_table_pitr_hnsw_cdc_t2`; create pitr `__mo_table_pitr_hnsw` for table hnsw_cdc t2 range 2 'h'; create cdc `__mo_cdc_hnsw_cdc_t2_idx2` 'mysql://root:111@127.0.0.1:6001' 'hnswsync' 'mysql://root:111@127.0.0.1:6001' 'hnsw_cdc.t2' {'Level'='table'}; -select sleep(30); -sleep(30) -0 load data infile {'filepath'='$resources/vector/sift128_base_10k.csv.gz', 'compression'='gzip'} into table t2 fields terminated by ':' parallel 'true'; select count(*) from t2; count(*) 10000 -select sleep(15); -sleep(15) +select sleep(30); +sleep(30) 0 select * from t2 order by L2_DISTANCE(b, "[14, 2, 0, 0, 0, 2, 42, 55, 9, 1, 0, 0, 18, 100, 77, 32, 89, 1, 0, 0, 19, 85, 15, 68, 52, 4, 0, 0, 0, 0, 2, 28, 34, 13, 5, 12, 49, 40, 39, 37, 24, 2, 0, 0, 34, 83, 88, 28, 119, 20, 0, 0, 41, 39, 13, 62, 119, 16, 2, 0, 0, 0, 10, 42, 9, 46, 82, 79, 64, 19, 2, 5, 10, 35, 26, 53, 84, 32, 34, 9, 119, 119, 21, 3, 3, 11, 17, 14, 119, 25, 8, 5, 0, 0, 11, 22, 23, 17, 42, 49, 17, 12, 5, 5, 12, 78, 119, 90, 27, 0, 4, 2, 48, 92, 112, 85, 15, 0, 2, 7, 50, 36, 15, 11, 1, 0, 0, 7]") ASC LIMIT 1; a b @@ -62,15 +56,12 @@ create index idx3 using hnsw on t3(b) op_type "vector_l2_ops" M 48 EF_CONSTRUCTI drop pitr if exists `__mo_table_pitr_hnsw_cdc_t3`; create pitr `__mo_table_pitr_hnsw_cdc_t3` for table hnsw_cdc t3 range 2 'h'; create cdc `__mo_cdc_hnsw_cdc_t3_idx3` 'mysql://root:111@127.0.0.1:6001' 'hnswsync' 'mysql://root:111@127.0.0.1:6001' 'hnsw_cdc.t3' {'Level'='table'}; -select sleep(30); -sleep(30) -0 load data infile {'filepath'='$resources/vector/sift128_base_10k_2.csv.gz', 'compression'='gzip'} into table t3 fields terminated by ':' parallel 'true'; select count(*) from t3; count(*) 20000 -select sleep(15); -sleep(15) +select sleep(45); +sleep(45) 0 select * from t3 order by L2_DISTANCE(b, "[14, 2, 0, 0, 0, 2, 42, 55, 9, 1, 0, 0, 18, 100, 77, 32, 89, 1, 0, 0, 19, 85, 15, 68, 52, 4, 0, 0, 0, 0, 2, 28, 34, 13, 5, 12, 49, 40, 39, 37, 24, 2, 0, 0, 34, 83, 88, 28, 119, 20, 0, 0, 41, 39, 13, 62, 119, 16, 2, 0, 0, 0, 10, 42, 9, 46, 82, 79, 64, 19, 2, 5, 10, 35, 26, 53, 84, 32, 34, 9, 119, 119, 21, 3, 3, 11, 17, 14, 119, 25, 8, 5, 0, 0, 11, 22, 23, 17, 42, 49, 17, 12, 5, 5, 12, 78, 119, 90, 27, 0, 4, 2, 48, 92, 112, 85, 15, 0, 2, 7, 50, 36, 15, 11, 1, 0, 0, 7]") ASC LIMIT 1; a b diff --git a/test/distributed/cases/vector/vector_hnsw_sync.sql b/test/distributed/cases/vector/vector_hnsw_sync.sql index 04efebe72d1e9..149c3e51dd1a4 100644 --- a/test/distributed/cases/vector/vector_hnsw_sync.sql +++ b/test/distributed/cases/vector/vector_hnsw_sync.sql @@ -14,7 +14,7 @@ create pitr `__mo_table_pitr_hnsw` for table hnsw_cdc vector_index_01 range 2 'h create cdc `__mo_cdc_hnsw_idx01` 'mysql://root:111@127.0.0.1:6001' 'hnswsync' 'mysql://root:111@127.0.0.1:6001' 'hnsw_cdc.vector_index_01' {'Level'='table'}; -- show cdc all; -select sleep(30); +-- select sleep(30); insert into vector_index_01 values (0, "[1,2,3]", 1); -- select hnsw_cdc_update('hnsw_cdc', 'vector_index_01', 3, '{"start":"", "end":"", "cdc":[{"t":"U", "pk":0, "v":[1,2,3]}]}'); @@ -28,7 +28,7 @@ insert into vector_index_01 values (1, "[2,3,4]", 1); DELETE FROM vector_index_01 WHERE a=1; -- select hnsw_cdc_update('hnsw_cdc', 'vector_index_01', 3, '{"start":"", "end":"", "cdc":[{"t":"D", "pk":0}]}'); -select sleep(10); +select sleep(30); -- test with multi-cn is tricky. since model is cached in memory, model may not be updated after CDC sync'd. The only way to test is to all INSERT/DELETE/UPDATE before SELECT. -- already update to [4,5,6], result is [4,5,6] @@ -50,13 +50,13 @@ create index idx2 using hnsw on t2(b) op_type "vector_l2_ops" M 48 EF_CONSTRUCTI drop pitr if exists `__mo_table_pitr_hnsw_cdc_t2`; create pitr `__mo_table_pitr_hnsw` for table hnsw_cdc t2 range 2 'h'; create cdc `__mo_cdc_hnsw_cdc_t2_idx2` 'mysql://root:111@127.0.0.1:6001' 'hnswsync' 'mysql://root:111@127.0.0.1:6001' 'hnsw_cdc.t2' {'Level'='table'}; -select sleep(30); +-- select sleep(30); load data infile {'filepath'='$resources/vector/sift128_base_10k.csv.gz', 'compression'='gzip'} into table t2 fields terminated by ':' parallel 'true'; select count(*) from t2; -select sleep(15); +select sleep(30); select * from t2 order by L2_DISTANCE(b, "[14, 2, 0, 0, 0, 2, 42, 55, 9, 1, 0, 0, 18, 100, 77, 32, 89, 1, 0, 0, 19, 85, 15, 68, 52, 4, 0, 0, 0, 0, 2, 28, 34, 13, 5, 12, 49, 40, 39, 37, 24, 2, 0, 0, 34, 83, 88, 28, 119, 20, 0, 0, 41, 39, 13, 62, 119, 16, 2, 0, 0, 0, 10, 42, 9, 46, 82, 79, 64, 19, 2, 5, 10, 35, 26, 53, 84, 32, 34, 9, 119, 119, 21, 3, 3, 11, 17, 14, 119, 25, 8, 5, 0, 0, 11, 22, 23, 17, 42, 49, 17, 12, 5, 5, 12, 78, 119, 90, 27, 0, 4, 2, 48, 92, 112, 85, 15, 0, 2, 7, 50, 36, 15, 11, 1, 0, 0, 7]") ASC LIMIT 1; @@ -87,13 +87,13 @@ drop pitr if exists `__mo_table_pitr_hnsw_cdc_t3`; create pitr `__mo_table_pitr_hnsw_cdc_t3` for table hnsw_cdc t3 range 2 'h'; create cdc `__mo_cdc_hnsw_cdc_t3_idx3` 'mysql://root:111@127.0.0.1:6001' 'hnswsync' 'mysql://root:111@127.0.0.1:6001' 'hnsw_cdc.t3' {'Level'='table'}; -select sleep(30); +-- select sleep(30); load data infile {'filepath'='$resources/vector/sift128_base_10k_2.csv.gz', 'compression'='gzip'} into table t3 fields terminated by ':' parallel 'true'; select count(*) from t3; -select sleep(15); +select sleep(45); select * from t3 order by L2_DISTANCE(b, "[14, 2, 0, 0, 0, 2, 42, 55, 9, 1, 0, 0, 18, 100, 77, 32, 89, 1, 0, 0, 19, 85, 15, 68, 52, 4, 0, 0, 0, 0, 2, 28, 34, 13, 5, 12, 49, 40, 39, 37, 24, 2, 0, 0, 34, 83, 88, 28, 119, 20, 0, 0, 41, 39, 13, 62, 119, 16, 2, 0, 0, 0, 10, 42, 9, 46, 82, 79, 64, 19, 2, 5, 10, 35, 26, 53, 84, 32, 34, 9, 119, 119, 21, 3, 3, 11, 17, 14, 119, 25, 8, 5, 0, 0, 11, 22, 23, 17, 42, 49, 17, 12, 5, 5, 12, 78, 119, 90, 27, 0, 4, 2, 48, 92, 112, 85, 15, 0, 2, 7, 50, 36, 15, 11, 1, 0, 0, 7]") ASC LIMIT 1; From e00b89ad6b7699c2d1ae5562e65d7c74b57b2f1c Mon Sep 17 00:00:00 2001 From: cpegeric Date: Fri, 6 Jun 2025 16:09:57 +0100 Subject: [PATCH 089/223] fix sca --- pkg/cdc/hnsw_sinker.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/cdc/hnsw_sinker.go b/pkg/cdc/hnsw_sinker.go index 4f2f3df24cc3e..779cfbb57f529 100644 --- a/pkg/cdc/hnsw_sinker.go +++ b/pkg/cdc/hnsw_sinker.go @@ -240,7 +240,7 @@ func (s *hnswSyncSinker[T]) Run(ctx context.Context, ar *ActiveRoutine) { newctx, cancel := context.WithTimeout(context.Background(), 12*time.Hour) defer cancel() //os.Stderr.WriteString(fmt.Sprintf("Wait for BEGIN.... %s\n", string(sqlBuf))) - os.Stderr.WriteString(fmt.Sprintf("Wait for BEGIN but sql. execute anyway\n")) + os.Stderr.WriteString("Wait for BEGIN but sql. execute anyway\n") opts := executor.Options{} res, err := s.exec.Exec(newctx, string(sqlBuf), opts) if err != nil { From 6da9b6804bada84446bfe74a02faccabaf4c098e Mon Sep 17 00:00:00 2001 From: cpegeric Date: Mon, 9 Jun 2025 10:09:38 +0100 Subject: [PATCH 090/223] add test --- pkg/sql/plan/function/func_hnsw_test.go | 115 ++++++++++++++++++++++++ 1 file changed, 115 insertions(+) create mode 100644 pkg/sql/plan/function/func_hnsw_test.go diff --git a/pkg/sql/plan/function/func_hnsw_test.go b/pkg/sql/plan/function/func_hnsw_test.go new file mode 100644 index 0000000000000..e6f1030c43726 --- /dev/null +++ b/pkg/sql/plan/function/func_hnsw_test.go @@ -0,0 +1,115 @@ +package function + +import ( + "testing" + + "github.com/matrixorigin/matrixone/pkg/container/types" + "github.com/matrixorigin/matrixone/pkg/testutil" + "github.com/stretchr/testify/require" +) + +func TestHnswCdcUpdateFn(t *testing.T) { + tcs := []tcTemp{ + { + info: "nargs invalid", + inputs: []FunctionTestInput{ + NewFunctionTestInput(types.T_varchar.ToType(), + []string{""}, []bool{true}), + NewFunctionTestInput(types.T_varchar.ToType(), + []string{""}, []bool{false}), + NewFunctionTestInput(types.T_int32.ToType(), + []int32{2}, []bool{false}), + }, + expect: NewFunctionTestResult(types.T_int64.ToType(), true, + []int64{0}, []bool{false}), + }, + + { + info: "dbname null", + inputs: []FunctionTestInput{ + NewFunctionTestInput(types.T_varchar.ToType(), + []string{""}, []bool{true}), + NewFunctionTestInput(types.T_varchar.ToType(), + []string{""}, []bool{false}), + NewFunctionTestInput(types.T_int32.ToType(), + []int32{2}, []bool{false}), + NewFunctionTestInput(types.T_json.ToType(), + []string{""}, []bool{false}), + }, + expect: NewFunctionTestResult(types.T_int64.ToType(), true, + []int64{0}, []bool{false}), + }, + + { + info: "table name null", + inputs: []FunctionTestInput{ + NewFunctionTestInput(types.T_varchar.ToType(), + []string{""}, []bool{false}), + NewFunctionTestInput(types.T_varchar.ToType(), + []string{""}, []bool{true}), + NewFunctionTestInput(types.T_int32.ToType(), + []int32{2}, []bool{false}), + NewFunctionTestInput(types.T_json.ToType(), + []string{""}, []bool{false}), + }, + expect: NewFunctionTestResult(types.T_int64.ToType(), true, + []int64{0}, []bool{false}), + }, + + { + info: "dimension null", + inputs: []FunctionTestInput{ + NewFunctionTestInput(types.T_varchar.ToType(), + []string{""}, []bool{false}), + NewFunctionTestInput(types.T_varchar.ToType(), + []string{""}, []bool{false}), + NewFunctionTestInput(types.T_int32.ToType(), + []int32{0}, []bool{true}), + NewFunctionTestInput(types.T_json.ToType(), + []string{""}, []bool{false}), + }, + expect: NewFunctionTestResult(types.T_int64.ToType(), true, + []int64{0}, []bool{false}), + }, + + { + info: "cdc json null", + inputs: []FunctionTestInput{ + NewFunctionTestInput(types.T_varchar.ToType(), + []string{""}, []bool{false}), + NewFunctionTestInput(types.T_varchar.ToType(), + []string{""}, []bool{false}), + NewFunctionTestInput(types.T_int32.ToType(), + []int32{2}, []bool{false}), + NewFunctionTestInput(types.T_json.ToType(), + []string{""}, []bool{true}), + }, + expect: NewFunctionTestResult(types.T_int64.ToType(), true, + []int64{0}, []bool{false}), + }, + + { + info: "cdc json invalid", + inputs: []FunctionTestInput{ + NewFunctionTestInput(types.T_varchar.ToType(), + []string{""}, []bool{false}), + NewFunctionTestInput(types.T_varchar.ToType(), + []string{""}, []bool{false}), + NewFunctionTestInput(types.T_int32.ToType(), + []int32{2}, []bool{false}), + NewFunctionTestInput(types.T_json.ToType(), + []string{"{..."}, []bool{false}), + }, + expect: NewFunctionTestResult(types.T_int64.ToType(), true, + []int64{0}, []bool{false}), + }, + } + + proc := testutil.NewProcess() + for _, tc := range tcs { + fcTC := NewFunctionTestCase(proc, + tc.inputs, tc.expect, hnswCdcUpdate) + s, info := fcTC.Run() + require.True(t, s, info, tc.info) + } +} From b381acdc8573c29767303ddfcc21ec36603774e3 Mon Sep 17 00:00:00 2001 From: cpegeric Date: Mon, 9 Jun 2025 10:53:08 +0100 Subject: [PATCH 091/223] add license --- pkg/sql/plan/function/func_hnsw_test.go | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/pkg/sql/plan/function/func_hnsw_test.go b/pkg/sql/plan/function/func_hnsw_test.go index e6f1030c43726..ca65212d6ffe3 100644 --- a/pkg/sql/plan/function/func_hnsw_test.go +++ b/pkg/sql/plan/function/func_hnsw_test.go @@ -1,3 +1,17 @@ +// Copyright 2021 - 2022 Matrix Origin +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + package function import ( From 644fbfa6cf144dea4e36bcef924369b9c4c988d8 Mon Sep 17 00:00:00 2001 From: cpegeric Date: Mon, 9 Jun 2025 17:46:09 +0100 Subject: [PATCH 092/223] performance --- pkg/vectorindex/hnsw/model.go | 20 ++ pkg/vectorindex/hnsw/sync.go | 335 +++++++++++++++++++++++++--------- 2 files changed, 269 insertions(+), 86 deletions(-) diff --git a/pkg/vectorindex/hnsw/model.go b/pkg/vectorindex/hnsw/model.go index c892239588ea2..d2b7cf77ec128 100644 --- a/pkg/vectorindex/hnsw/model.go +++ b/pkg/vectorindex/hnsw/model.go @@ -75,6 +75,11 @@ func NewHnswModelForBuild(id string, cfg vectorindex.IndexConfig, nthread int, m if err != nil { return nil, err } + + err = idx.Index.ChangeThreadsSearch(uint(nthread)) + if err != nil { + return nil, err + } return idx, nil } @@ -291,6 +296,16 @@ func (idx *HnswModel) Add(key int64, vec []float32) error { return idx.Index.Add(uint64(key), vec) } +// add vector without increment the counter. concurrency add will increment the counter before Add +func (idx *HnswModel) AddWithoutIncr(key int64, vec []float32) error { + if idx.Index == nil { + return moerr.NewInternalErrorNoCtx("usearch index is nil") + } + idx.Dirty.Store(true) + //idx.Len.Add(1) + return idx.Index.Add(uint64(key), vec) +} + // remove key func (idx *HnswModel) Remove(key int64) error { if idx.Index == nil { @@ -431,6 +446,11 @@ func (idx *HnswModel) LoadIndex(proc *process.Process, idxcfg vectorindex.IndexC return err } + err = usearchidx.ChangeThreadsAdd(uint(nthread)) + if err != nil { + return err + } + if view { err = usearchidx.Load(idx.Path) idx.View = true diff --git a/pkg/vectorindex/hnsw/sync.go b/pkg/vectorindex/hnsw/sync.go index 343c09be77c99..81bfd2155ef9a 100644 --- a/pkg/vectorindex/hnsw/sync.go +++ b/pkg/vectorindex/hnsw/sync.go @@ -20,6 +20,8 @@ import ( "os" "strconv" "strings" + "sync" + "sync/atomic" "time" "github.com/matrixorigin/matrixone/pkg/catalog" @@ -76,7 +78,7 @@ func CdcSync(proc *process.Process, db string, tbl string, dimension int32, cdc if err != nil { return err } - idxtblcfg.ThreadsBuild = val.(int64) + idxtblcfg.ThreadsBuild = vectorindex.GetConcurrencyForBuild(val.(int64)) idxcap, err := proc.GetResolveVariableFunc()("hnsw_max_index_capacity", true, false) if err != nil { @@ -85,7 +87,7 @@ func CdcSync(proc *process.Process, db string, tbl string, dimension int32, cdc idxtblcfg.IndexCapacity = idxcap.(int64) } else { - idxtblcfg.ThreadsBuild = 0 + idxtblcfg.ThreadsBuild = vectorindex.GetConcurrencyForBuild(0) idxtblcfg.IndexCapacity = 1000000 } @@ -194,6 +196,11 @@ type HnswSync struct { cdc *vectorindex.VectorIndexCdc[float32] uid string ts int64 + ninsert atomic.Int32 + ndelete atomic.Int32 + nupdate atomic.Int32 + current *HnswModel + last *HnswModel } func (s *HnswSync) destroy() { @@ -203,14 +210,15 @@ func (s *HnswSync) destroy() { s.indexes = nil } -func (s *HnswSync) run(proc *process.Process) error { - var err error +func (s *HnswSync) checkContains(proc *process.Process) (maxcap uint, midx []int, err error) { + err_chan := make(chan error, s.tblcfg.ThreadsBuild) - maxcap := uint(s.tblcfg.IndexCapacity) + maxcap = uint(s.tblcfg.IndexCapacity) // try to find index cap cdclen := len(s.cdc.Data) - midx := make([]int, cdclen) + + midx = make([]int, cdclen) // reset idx to -1 for i := range midx { midx[i] = -1 @@ -220,34 +228,126 @@ func (s *HnswSync) run(proc *process.Process) error { for i, m := range s.indexes { err = m.LoadIndex(proc, s.idxcfg, s.tblcfg, s.tblcfg.ThreadsBuild, false) if err != nil { - return err + return 0, nil, err } if maxcap < m.MaxCapacity { maxcap = m.MaxCapacity } - for j, row := range s.cdc.Data { - switch row.Type { - case vectorindex.CDC_UPSERT, vectorindex.CDC_DELETE: - if midx[j] == -1 { - found, err := m.Contains(row.PKey) - if err != nil { - return err + var wg sync.WaitGroup + + nthread := int(s.tblcfg.ThreadsBuild) + for k := 0; k < nthread; k++ { + wg.Add(1) + go func() { + defer wg.Done() + for j, row := range s.cdc.Data { + + if j%nthread != k { + continue } - if found { - //os.Stderr.WriteString(fmt.Sprintf("searching... found model %d row %d\n", i, j)) - midx[j] = i + + switch row.Type { + case vectorindex.CDC_UPSERT, vectorindex.CDC_DELETE: + if midx[j] == -1 { + found, err := m.Contains(row.PKey) + if err != nil { + err_chan <- err + return + } + if found { + //os.Stderr.WriteString(fmt.Sprintf("searching... found model %d row %d\n", i, j)) + midx[j] = i + + if row.Type == vectorindex.CDC_UPSERT { + s.nupdate.Add(1) + } else { + s.ndelete.Add(1) + } + } + } } + } - } + }() + } + + wg.Wait() + if len(err_chan) > 0 { + return 0, nil, <-err_chan } m.Unload() } - current := (*HnswModel)(nil) - last := (*HnswModel)(nil) + return maxcap, midx, nil +} + +func (s *HnswSync) insertAll(proc *process.Process, maxcap uint) error { + var mu sync.Mutex + var wg sync.WaitGroup + err_chan := make(chan error, s.tblcfg.ThreadsBuild) + + nthread := int(s.tblcfg.ThreadsBuild) + for i := 0; i < nthread; i++ { + wg.Add(1) + go func() { + defer wg.Done() + + for j, row := range s.cdc.Data { + + if j%nthread != i { + continue + } + + // make sure last model won't unload when full and return full + // so that we can unload outside the mutex + last, full, err := func() (*HnswModel, bool, error) { + mu.Lock() + defer mu.Unlock() + last, err2 := s.getLastModel(proc, maxcap, false) + if err2 != nil { + return nil, false, err2 + } + // increment counter here to occupy last model and + last.Len.Add(1) + return last, last.Len.Load() >= int64(last.MaxCapacity), nil + }() + if err != nil { + err_chan <- err + return + } + + last.AddWithoutIncr(row.PKey, row.Vec) + if full { + last.Unload() + } + } + }() + } + + wg.Wait() + + if len(err_chan) > 0 { + return <-err_chan + } + + return nil +} + +func (s *HnswSync) run(proc *process.Process) error { + var err error + + maxcap, midx, err := s.checkContains(proc) + if err != nil { + return err + } + + s.ninsert.Store(int32(len(s.cdc.Data)) - s.nupdate.Load() - s.ndelete.Load()) + + s.current = (*HnswModel)(nil) + s.last = (*HnswModel)(nil) if len(s.indexes) == 0 { // create a new model and do insert id := s.getModelId() @@ -256,12 +356,12 @@ func (s *HnswSync) run(proc *process.Process) error { return err } s.indexes = append(s.indexes, newmodel) - last = newmodel + s.last = newmodel } else { - last = s.indexes[len(s.indexes)-1] + s.last = s.indexes[len(s.indexes)-1] // last model not load yet so check the last.Len instead of Full() - idxlen := uint(last.Len.Load()) - if idxlen >= last.MaxCapacity { + idxlen := uint(s.last.Len.Load()) + if idxlen >= s.last.MaxCapacity { //os.Stderr.WriteString(fmt.Sprintf("full len %d, cap %d\n", idxlen, last.MaxCapacity)) id := s.getModelId() // model is already full, create a new model for insert @@ -270,82 +370,139 @@ func (s *HnswSync) run(proc *process.Process) error { return err } s.indexes = append(s.indexes, newmodel) - last = newmodel + s.last = newmodel } else { //os.Stderr.WriteString(fmt.Sprintf("load model with index %d\n", len(s.indexes)-1)) // load last - last.LoadIndex(proc, s.idxcfg, s.tblcfg, s.tblcfg.ThreadsBuild, false) + s.last.LoadIndex(proc, s.idxcfg, s.tblcfg, s.tblcfg.ThreadsBuild, false) } } - for i, row := range s.cdc.Data { + os.Stderr.WriteString(fmt.Sprintf("len=%d, ninsert = %d, ndelete = %d, nupdate = %d\n", len(s.cdc.Data), s.ninsert.Load(), s.ndelete.Load(), s.nupdate.Load())) + + if len(s.cdc.Data) == int(s.ninsert.Load()) { + // pure insert and insert into parallel - switch row.Type { - case vectorindex.CDC_UPSERT: - if midx[i] == -1 { - // cannot find key from existing model. simple insert - last, err = s.getLastModel(proc, last, maxcap) + err = s.insertAll(proc, maxcap) + if err != nil { + return err + } + + /* + var mu sync.Mutex + var wg sync.WaitGroup + err_chan := make(chan error, s.tblcfg.ThreadsBuild) + + nthread := int(s.tblcfg.ThreadsBuild) + for i := 0; i < nthread; i++ { + wg.Add(1) + go func() { + defer wg.Done() + var err error + + for j, row := range s.cdc.Data { + + if j%nthread != i { + continue + } + + mu.Lock() + last, err = s.getLastModel(proc, current, last, maxcap) + if err != nil { + err_chan <- err + mu.Unlock() + return + } + // increment counter here to occupy last model and + // make sure last model is not overrided by using local variable thismodel + last.Len.Add(1) + thismodel := last + mu.Unlock() + + thismodel.AddWithoutIncr(row.PKey, row.Vec) + } + }() + } + + wg.Wait() + + if len(err_chan) > 0 { + return <-err_chan + } + */ + + } else { + var last *HnswModel + + for i, row := range s.cdc.Data { + + switch row.Type { + case vectorindex.CDC_UPSERT: + if midx[i] == -1 { + // cannot find key from existing model. simple insert + last, err = s.getLastModel(proc, maxcap, true) + if err != nil { + return err + } + // insert + err = last.Add(row.PKey, row.Vec) + if err != nil { + return err + } + + break + + } + current, err := s.getCurrentModel(proc, midx[i]) if err != nil { return err } - // insert - err = last.Add(row.PKey, row.Vec) + + // update + err = current.Remove(row.PKey) if err != nil { return err } - break - - } - current, err := s.getCurrentModel(proc, current, midx[i]) - if err != nil { - return err - } - - // update - err = current.Remove(row.PKey) - if err != nil { - return err - } + err = current.Add(row.PKey, row.Vec) + if err != nil { + return err + } - err = current.Add(row.PKey, row.Vec) - if err != nil { - return err - } + case vectorindex.CDC_DELETE: + if midx[i] == -1 { + // cannot find key from existing models. ignore it + //os.Stderr.WriteString("DELETE NOT FOUND\n") + continue + } - case vectorindex.CDC_DELETE: - if midx[i] == -1 { - // cannot find key from existing models. ignore it - //os.Stderr.WriteString("DELETE NOT FOUND\n") - continue - } + current, err := s.getCurrentModel(proc, midx[i]) + if err != nil { + return err + } - current, err := s.getCurrentModel(proc, current, midx[i]) - if err != nil { - return err - } + // delete + err = current.Remove(row.PKey) + if err != nil { + return err + } - // delete - err = current.Remove(row.PKey) - if err != nil { - return err - } + case vectorindex.CDC_INSERT: + last, err = s.getLastModel(proc, maxcap, true) + if err != nil { + return err + } - case vectorindex.CDC_INSERT: - last, err = s.getLastModel(proc, last, maxcap) - if err != nil { - return err + // insert + err = last.Add(row.PKey, row.Vec) + if err != nil { + return err + } } - // insert - err = last.Add(row.PKey, row.Vec) - if err != nil { - return err - } } - } // save to files and then save to database @@ -391,26 +548,32 @@ func (s *HnswSync) getModelId() string { return id } -func (s *HnswSync) getCurrentModel(proc *process.Process, current *HnswModel, idx int) (*HnswModel, error) { +func (s *HnswSync) getCurrentModel(proc *process.Process, idx int) (*HnswModel, error) { m := s.indexes[idx] - if current != m { - if current != nil { - current.Unload() + if s.current != m { + // check current == last, if not, safe to unload + if s.current != nil && s.current != s.last { + s.current.Unload() } m.LoadIndex(proc, s.idxcfg, s.tblcfg, s.tblcfg.ThreadsBuild, false) - current = m + s.current = m } - return current, nil + return s.current, nil } -func (s *HnswSync) getLastModel(proc *process.Process, last *HnswModel, maxcap uint) (*HnswModel, error) { +func (s *HnswSync) getLastModel(proc *process.Process, maxcap uint, unloadWhenFull bool) (*HnswModel, error) { - full, err := last.Full() + full, err := s.last.Full() if err != nil { return nil, err } if full { + // check current == last, if not, safe to unload + if unloadWhenFull && s.current != s.last { + s.last.Unload() + } + id := s.getModelId() // model is already full, create a new model for insert newmodel, err := NewHnswModelForBuild(id, s.idxcfg, int(s.tblcfg.ThreadsBuild), maxcap) @@ -418,11 +581,11 @@ func (s *HnswSync) getLastModel(proc *process.Process, last *HnswModel, maxcap u return nil, err } s.indexes = append(s.indexes, newmodel) - last = newmodel + s.last = newmodel } //os.Stderr.WriteString(fmt.Sprintf("getlast model full %v id = %s\n", full, last.Id)) - return last, nil + return s.last, nil } // generate SQL to update the secondary index tables From 1f7654cb4d41687680e867db199dca07e6674b66 Mon Sep 17 00:00:00 2001 From: cpegeric Date: Mon, 9 Jun 2025 17:48:46 +0100 Subject: [PATCH 093/223] update --- pkg/vectorindex/hnsw/sync.go | 43 ------------------------------------ 1 file changed, 43 deletions(-) diff --git a/pkg/vectorindex/hnsw/sync.go b/pkg/vectorindex/hnsw/sync.go index 81bfd2155ef9a..93c30ec418046 100644 --- a/pkg/vectorindex/hnsw/sync.go +++ b/pkg/vectorindex/hnsw/sync.go @@ -390,49 +390,6 @@ func (s *HnswSync) run(proc *process.Process) error { return err } - /* - var mu sync.Mutex - var wg sync.WaitGroup - err_chan := make(chan error, s.tblcfg.ThreadsBuild) - - nthread := int(s.tblcfg.ThreadsBuild) - for i := 0; i < nthread; i++ { - wg.Add(1) - go func() { - defer wg.Done() - var err error - - for j, row := range s.cdc.Data { - - if j%nthread != i { - continue - } - - mu.Lock() - last, err = s.getLastModel(proc, current, last, maxcap) - if err != nil { - err_chan <- err - mu.Unlock() - return - } - // increment counter here to occupy last model and - // make sure last model is not overrided by using local variable thismodel - last.Len.Add(1) - thismodel := last - mu.Unlock() - - thismodel.AddWithoutIncr(row.PKey, row.Vec) - } - }() - } - - wg.Wait() - - if len(err_chan) > 0 { - return <-err_chan - } - */ - } else { var last *HnswModel From 8b6975cc28e24060c3e699a4d6f6f5bba9ef34e3 Mon Sep 17 00:00:00 2001 From: cpegeric Date: Mon, 9 Jun 2025 17:49:53 +0100 Subject: [PATCH 094/223] update --- pkg/cdc/hnsw_sinker.go | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/pkg/cdc/hnsw_sinker.go b/pkg/cdc/hnsw_sinker.go index 779cfbb57f529..7ba2ce8ec484b 100644 --- a/pkg/cdc/hnsw_sinker.go +++ b/pkg/cdc/hnsw_sinker.go @@ -344,13 +344,7 @@ func (s *hnswSyncSinker[T]) Sink(ctx context.Context, data *DecoderOutput) { if data.noMoreData { - os.Stderr.WriteString("no more data\n") - if data.checkpointBat != nil { - os.Stderr.WriteString(fmt.Sprintf("no more data sinkSnapshot batlen %d\n", batchRowCount(data.checkpointBat))) - } - if data.insertAtmBatch != nil { - os.Stderr.WriteString(fmt.Sprintf("no more data sinkTail insertBat %d, deletBat = %d\n", data.insertAtmBatch.RowCount(), data.deleteAtmBatch.RowCount())) - } + //os.Stderr.WriteString("no more data\n") // complete sql statement err := s.sendSql() if err != nil { From b8c3c15e9ad67c3b2d34b98d663c94dc1ddff610 Mon Sep 17 00:00:00 2001 From: cpegeric Date: Tue, 10 Jun 2025 09:45:08 +0100 Subject: [PATCH 095/223] fix thread safe --- pkg/vectorindex/hnsw/sync.go | 52 +++++++++++++++++++++++++----------- 1 file changed, 37 insertions(+), 15 deletions(-) diff --git a/pkg/vectorindex/hnsw/sync.go b/pkg/vectorindex/hnsw/sync.go index 93c30ec418046..a19b239a0b25b 100644 --- a/pkg/vectorindex/hnsw/sync.go +++ b/pkg/vectorindex/hnsw/sync.go @@ -301,24 +301,20 @@ func (s *HnswSync) insertAll(proc *process.Process, maxcap uint) error { continue } + // skip delete with key not found in model + if row.Type == vectorindex.CDC_DELETE { + continue + } + // make sure last model won't unload when full and return full // so that we can unload outside the mutex - last, full, err := func() (*HnswModel, bool, error) { - mu.Lock() - defer mu.Unlock() - last, err2 := s.getLastModel(proc, maxcap, false) - if err2 != nil { - return nil, false, err2 - } - // increment counter here to occupy last model and - last.Len.Add(1) - return last, last.Len.Load() >= int64(last.MaxCapacity), nil - }() + last, full, err := s.getLastModelAndIncrForSync(proc, maxcap, &mu) if err != nil { err_chan <- err return } + // Len counter already incremented. Just add to last model last.AddWithoutIncr(row.PKey, row.Vec) if full { last.Unload() @@ -399,7 +395,7 @@ func (s *HnswSync) run(proc *process.Process) error { case vectorindex.CDC_UPSERT: if midx[i] == -1 { // cannot find key from existing model. simple insert - last, err = s.getLastModel(proc, maxcap, true) + last, err = s.getLastModel(proc, maxcap) if err != nil { return err } @@ -447,7 +443,7 @@ func (s *HnswSync) run(proc *process.Process) error { } case vectorindex.CDC_INSERT: - last, err = s.getLastModel(proc, maxcap, true) + last, err = s.getLastModel(proc, maxcap) if err != nil { return err } @@ -518,7 +514,7 @@ func (s *HnswSync) getCurrentModel(proc *process.Process, idx int) (*HnswModel, return s.current, nil } -func (s *HnswSync) getLastModel(proc *process.Process, maxcap uint, unloadWhenFull bool) (*HnswModel, error) { +func (s *HnswSync) getLastModel(proc *process.Process, maxcap uint) (*HnswModel, error) { full, err := s.last.Full() if err != nil { @@ -527,7 +523,7 @@ func (s *HnswSync) getLastModel(proc *process.Process, maxcap uint, unloadWhenFu if full { // check current == last, if not, safe to unload - if unloadWhenFull && s.current != s.last { + if s.current != s.last { s.last.Unload() } @@ -545,6 +541,32 @@ func (s *HnswSync) getLastModel(proc *process.Process, maxcap uint, unloadWhenFu return s.last, nil } +func (s *HnswSync) getLastModelAndIncrForSync(proc *process.Process, maxcap uint, mu *sync.Mutex) (*HnswModel, bool, error) { + + mu.Lock() + defer mu.Unlock() + + full := (s.last.Len.Load() >= int64(s.last.MaxCapacity)) + if full { + id := s.getModelId() + // model is already full, create a new model for insert + newmodel, err := NewHnswModelForBuild(id, s.idxcfg, int(s.tblcfg.ThreadsBuild), maxcap) + if err != nil { + return nil, false, err + } + s.indexes = append(s.indexes, newmodel) + s.last = newmodel + + } + //os.Stderr.WriteString(fmt.Sprintf("getlast model full %v id = %s\n", full, last.Id)) + + // pre-occupy this model by increment a Len counter and do Add() outside the mutex + // make sure only one call can get full = true + idxlen := s.last.Len.Add(1) + full = (idxlen >= int64(s.last.MaxCapacity)) + return s.last, full, nil +} + // generate SQL to update the secondary index tables // 1. sync the metadata table // 2. sync the index file to index table From a964de2cf677ff1723105d9b72b3eee26126f2f0 Mon Sep 17 00:00:00 2001 From: cpegeric Date: Tue, 10 Jun 2025 13:55:33 +0100 Subject: [PATCH 096/223] cleanup --- pkg/cdc/hnsw_sinker.go | 16 ++++++---------- pkg/sql/plan/function/func_hnsw.go | 6 +++--- pkg/vectorindex/hnsw/model.go | 4 +++- pkg/vectorindex/hnsw/sync.go | 5 ++++- 4 files changed, 16 insertions(+), 15 deletions(-) diff --git a/pkg/cdc/hnsw_sinker.go b/pkg/cdc/hnsw_sinker.go index 7ba2ce8ec484b..1cf045d5d2666 100644 --- a/pkg/cdc/hnsw_sinker.go +++ b/pkg/cdc/hnsw_sinker.go @@ -67,7 +67,7 @@ func _sqlExecutorFactory(cnUUID string) (executor.SQLExecutor, error) { // sql executor v, ok := runtime.ServiceRuntime(cnUUID).GetGlobalVariables(runtime.InternalSQLExecutor) if !ok { - os.Stderr.WriteString(fmt.Sprintf("sql executor create failed. cnUUID = %s\n", cnUUID)) + //os.Stderr.WriteString(fmt.Sprintf("sql executor create failed. cnUUID = %s\n", cnUUID)) return nil, moerr.NewNotSupportedNoCtx("no implement sqlExecutor") } exec := v.(executor.SQLExecutor) @@ -230,17 +230,16 @@ func (s *hnswSyncSinker[T]) Run(ctx context.Context, ar *ActiveRoutine) { if bytes.Equal(sqlBuf, begin) { txnbegin = true } else if bytes.Equal(sqlBuf, commit) { - os.Stderr.WriteString("Run: wait for begin but commit\n") + // pass } else if bytes.Equal(sqlBuf, rollback) { - os.Stderr.WriteString("Run: wait for begin but rollback\n") + // pass } else if bytes.Equal(sqlBuf, dummy) { // pass } else { func() { newctx, cancel := context.WithTimeout(context.Background(), 12*time.Hour) defer cancel() - //os.Stderr.WriteString(fmt.Sprintf("Wait for BEGIN.... %s\n", string(sqlBuf))) - os.Stderr.WriteString("Wait for BEGIN but sql. execute anyway\n") + //os.Stderr.WriteString("Wait for BEGIN but sql. execute anyway\n") opts := executor.Options{} res, err := s.exec.Exec(newctx, string(sqlBuf), opts) if err != nil { @@ -300,7 +299,6 @@ func (s *hnswSyncSinker[T]) Run(ctx context.Context, ar *ActiveRoutine) { opts) if err != nil { moe, ok := err.(*moerr.Error) - //os.Stderr.WriteString(fmt.Sprintf("error from txn %v, ok %v\n", err, ok)) if ok { if moe.ErrorCode() == moerr.ErrQueryInterrupted { // skip rollback error @@ -334,7 +332,6 @@ func (s *hnswSyncSinker[T]) Run(ctx context.Context, ar *ActiveRoutine) { func (s *hnswSyncSinker[T]) Sink(ctx context.Context, data *DecoderOutput) { watermark := s.watermarkUpdater.GetFromMem(s.dbTblInfo.SourceDbName, s.dbTblInfo.SourceTblName) if data.toTs.LE(&watermark) { - os.Stderr.WriteString("unexpected watermark\n") logutil.Errorf("cdc hnswSyncSinker(%v): unexpected watermark: %s, current watermark: %s", s.dbTblInfo, data.toTs.ToString(), watermark.ToString()) return @@ -344,7 +341,6 @@ func (s *hnswSyncSinker[T]) Sink(ctx context.Context, data *DecoderOutput) { if data.noMoreData { - //os.Stderr.WriteString("no more data\n") // complete sql statement err := s.sendSql() if err != nil { @@ -359,10 +355,10 @@ func (s *hnswSyncSinker[T]) Sink(ctx context.Context, data *DecoderOutput) { }() if data.outputTyp == OutputTypeSnapshot { - os.Stderr.WriteString(fmt.Sprintf("sinkSnapshot batlen %d\n", batchRowCount(data.checkpointBat))) + //os.Stderr.WriteString(fmt.Sprintf("sinkSnapshot batlen %d\n", batchRowCount(data.checkpointBat))) s.sinkSnapshot(ctx, data.checkpointBat) } else if data.outputTyp == OutputTypeTail { - os.Stderr.WriteString(fmt.Sprintf("sinkTail insertBat %d, deletBat = %d\n", data.insertAtmBatch.RowCount(), data.deleteAtmBatch.RowCount())) + //os.Stderr.WriteString(fmt.Sprintf("sinkTail insertBat %d, deletBat = %d\n", data.insertAtmBatch.RowCount(), data.deleteAtmBatch.RowCount())) s.sinkTail(ctx, data.insertAtmBatch, data.deleteAtmBatch) } else { s.SetError(moerr.NewInternalError(ctx, fmt.Sprintf("cdc hnswSyncSinker unexpected output type: %v", data.outputTyp))) diff --git a/pkg/sql/plan/function/func_hnsw.go b/pkg/sql/plan/function/func_hnsw.go index 494fed0004851..0956936b3d29a 100644 --- a/pkg/sql/plan/function/func_hnsw.go +++ b/pkg/sql/plan/function/func_hnsw.go @@ -16,10 +16,10 @@ package function import ( "encoding/json" - "os" "github.com/matrixorigin/matrixone/pkg/common/moerr" "github.com/matrixorigin/matrixone/pkg/container/vector" + "github.com/matrixorigin/matrixone/pkg/logutil" "github.com/matrixorigin/matrixone/pkg/vectorindex" "github.com/matrixorigin/matrixone/pkg/vectorindex/hnsw" "github.com/matrixorigin/matrixone/pkg/vm/process" @@ -31,7 +31,6 @@ func hnswCdcUpdate(ivecs []*vector.Vector, result vector.FunctionResultWrapper, return moerr.NewInvalidInput(proc.Ctx, "number of arguments != 4") } - os.Stderr.WriteString("hnsCdcUpdate START\n") dbVec := vector.GenerateFunctionStrParameter(ivecs[0]) tblVec := vector.GenerateFunctionStrParameter(ivecs[1]) dimVec := vector.GenerateFunctionFixedTypeParameter[int32](ivecs[2]) @@ -64,14 +63,15 @@ func hnswCdcUpdate(ivecs []*vector.Vector, result vector.FunctionResultWrapper, if err != nil { return moerr.NewInvalidInput(proc.Ctx, "cdc is not json object") } + logutil.Infof("hnsw_cdc_update: START db=%s, table=%s\n", dbname, tblname) // hnsw sync //os.Stderr.WriteString(fmt.Sprintf("db=%s, table=%s, dim=%d, json=%s\n", dbname, tblname, dim, cdcstr)) err = hnsw.CdcSync(proc, string(dbname), string(tblname), dim, &cdc) if err != nil { return err } + logutil.Infof("hnsw_cdc_update: END db=%s, table=%s\n", dbname, tblname) } - os.Stderr.WriteString("hnsCdcUpdate END\n") return nil } diff --git a/pkg/vectorindex/hnsw/model.go b/pkg/vectorindex/hnsw/model.go index d2b7cf77ec128..340b6cdcda506 100644 --- a/pkg/vectorindex/hnsw/model.go +++ b/pkg/vectorindex/hnsw/model.go @@ -26,6 +26,7 @@ import ( "github.com/matrixorigin/matrixone/pkg/catalog" "github.com/matrixorigin/matrixone/pkg/common/moerr" "github.com/matrixorigin/matrixone/pkg/container/vector" + "github.com/matrixorigin/matrixone/pkg/logutil" "github.com/matrixorigin/matrixone/pkg/util/executor" "github.com/matrixorigin/matrixone/pkg/vectorindex" "github.com/matrixorigin/matrixone/pkg/vm/process" @@ -168,7 +169,8 @@ func (idx *HnswModel) SaveToFile() error { if err != nil { return err } - os.Stderr.WriteString(fmt.Sprintf("hnsw save to idx %s, len = %d\n", idx.Id, idxlen)) + logutil.Infof("hnsw save to idx %s, len = %d\n", idx.Id, idxlen) + // free memory err = idx.Index.Destroy() if err != nil { diff --git a/pkg/vectorindex/hnsw/sync.go b/pkg/vectorindex/hnsw/sync.go index a19b239a0b25b..03517c8291728 100644 --- a/pkg/vectorindex/hnsw/sync.go +++ b/pkg/vectorindex/hnsw/sync.go @@ -26,6 +26,7 @@ import ( "github.com/matrixorigin/matrixone/pkg/catalog" "github.com/matrixorigin/matrixone/pkg/common/moerr" + "github.com/matrixorigin/matrixone/pkg/logutil" "github.com/matrixorigin/matrixone/pkg/util/executor" "github.com/matrixorigin/matrixone/pkg/vectorindex" veccache "github.com/matrixorigin/matrixone/pkg/vectorindex/cache" @@ -376,7 +377,9 @@ func (s *HnswSync) run(proc *process.Process) error { } } - os.Stderr.WriteString(fmt.Sprintf("len=%d, ninsert = %d, ndelete = %d, nupdate = %d\n", len(s.cdc.Data), s.ninsert.Load(), s.ndelete.Load(), s.nupdate.Load())) + logutil.Infof("hnsw_cdc_update: db=%s, table=%s, cdc: len=%d, ninsert = %d, ndelete = %d, nupdate = %d\n", + s.tblcfg.DbName, s.tblcfg.SrcTable, + len(s.cdc.Data), s.ninsert.Load(), s.ndelete.Load(), s.nupdate.Load()) if len(s.cdc.Data) == int(s.ninsert.Load()) { // pure insert and insert into parallel From 8b962d022d2c9906ce2e0ab92412a80aa255848a Mon Sep 17 00:00:00 2001 From: cpegeric Date: Tue, 10 Jun 2025 15:03:02 +0100 Subject: [PATCH 097/223] never unload when insertAll --- pkg/vectorindex/hnsw/sync.go | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/pkg/vectorindex/hnsw/sync.go b/pkg/vectorindex/hnsw/sync.go index 03517c8291728..388d931c2731e 100644 --- a/pkg/vectorindex/hnsw/sync.go +++ b/pkg/vectorindex/hnsw/sync.go @@ -308,8 +308,9 @@ func (s *HnswSync) insertAll(proc *process.Process, maxcap uint) error { } // make sure last model won't unload when full and return full - // so that we can unload outside the mutex - last, full, err := s.getLastModelAndIncrForSync(proc, maxcap, &mu) + // don't unload any model here. Quite dangerous and There is no harm not to unload because + // cdc size max is 8192. Model will eventually unload when save. + last, _, err := s.getLastModelAndIncrForSync(proc, maxcap, &mu) if err != nil { err_chan <- err return @@ -317,9 +318,6 @@ func (s *HnswSync) insertAll(proc *process.Process, maxcap uint) error { // Len counter already incremented. Just add to last model last.AddWithoutIncr(row.PKey, row.Vec) - if full { - last.Unload() - } } }() } From 3d7be051e692fc297f0985fd8496bd0ed06a031b Mon Sep 17 00:00:00 2001 From: cpegeric Date: Wed, 11 Jun 2025 13:30:52 +0100 Subject: [PATCH 098/223] better message --- pkg/vectorindex/hnsw/model.go | 18 +++++++++++------- pkg/vectorindex/hnsw/sync_test.go | 30 ++++++++++++++++++++++++++++++ 2 files changed, 41 insertions(+), 7 deletions(-) diff --git a/pkg/vectorindex/hnsw/model.go b/pkg/vectorindex/hnsw/model.go index 340b6cdcda506..010a5fa9a3825 100644 --- a/pkg/vectorindex/hnsw/model.go +++ b/pkg/vectorindex/hnsw/model.go @@ -165,12 +165,6 @@ func (idx *HnswModel) SaveToFile() error { } idx.Checksum = chksum - idxlen, err := idx.Index.Len() - if err != nil { - return err - } - logutil.Infof("hnsw save to idx %s, len = %d\n", idx.Id, idxlen) - // free memory err = idx.Index.Destroy() if err != nil { @@ -212,6 +206,8 @@ func (idx *HnswModel) ToSql(cfg vectorindex.IndexTableConfig) ([]string, error) return []string{}, nil } + logutil.Infof("HnswModel.ToSql idx %s, len = %d\n", idx.Id, idx.Len.Load()) + sqls := make([]string, 0, 5) sql := fmt.Sprintf("INSERT INTO `%s`.`%s` VALUES ", cfg.DbName, cfg.IndexTable) @@ -472,6 +468,8 @@ func (idx *HnswModel) LoadIndex(proc *process.Process, idxcfg vectorindex.IndexC } idx.Len.Store(int64(idxLen)) + logutil.Debugf("HnswModel.LoadIndex idx %s, len = %d\n", idx.Id, idxLen) + idx.MaxCapacity, err = idx.Index.Capacity() if err != nil { return err @@ -493,8 +491,14 @@ func (idx *HnswModel) Unload() error { return moerr.NewInternalErrorNoCtx("usearch index is nil") } + idxLen, err := idx.Index.Len() + if err != nil { + return err + } + logutil.Debugf("HnswModel.Unload idx %s, len = %d\n", idx.Id, idxLen) + // SaveToFile will check Dirty bit. If dirty is true, save to file before unload - err := idx.SaveToFile() + err = idx.SaveToFile() if err != nil { return err } diff --git a/pkg/vectorindex/hnsw/sync_test.go b/pkg/vectorindex/hnsw/sync_test.go index f50197d397301..26d614d7d7935 100644 --- a/pkg/vectorindex/hnsw/sync_test.go +++ b/pkg/vectorindex/hnsw/sync_test.go @@ -338,3 +338,33 @@ func TestSyncUpdateShuffle2Files(t *testing.T) { err := CdcSync(proc, "db", "src", 3, &cdc) require.Nil(t, err) } + +// should update and insert items +func TestSyncUpdateInsertShuffle2Files(t *testing.T) { + + m := mpool.MustNewZero() + proc := testutil.NewProcessWithMPool("", m) + + runSql = mock_runSql_2files + runSql_streaming = mock_runSql_streaming_2files + runCatalogSql = mock_runCatalogSql + runTxn = mock_runTxn + + cdc := vectorindex.VectorIndexCdc[float32]{Data: make([]vectorindex.VectorIndexCdcEntry[float32], 0, 100)} + + key := int64(0) + v := []float32{0.1, 0.2, 0.3} + + // 0 - 199 key exists, 200 - 399 new insert + for i := 0; i < 400; i++ { + e := vectorindex.VectorIndexCdcEntry[float32]{Type: vectorindex.CDC_UPSERT, PKey: key, Vec: v} + cdc.Data = append(cdc.Data, e) + key += 1 + } + + rand.Seed(uint64(time.Now().UnixNano())) + rand.Shuffle(len(cdc.Data), func(i, j int) { cdc.Data[i], cdc.Data[j] = cdc.Data[j], cdc.Data[i] }) + + err := CdcSync(proc, "db", "src", 3, &cdc) + require.Nil(t, err) +} From 652783c1d37bcf61a8bf9b82b5e22351574cc054 Mon Sep 17 00:00:00 2001 From: cpegeric Date: Thu, 12 Jun 2025 13:46:43 +0100 Subject: [PATCH 099/223] fix bvt -- drop pitr --- .../cases/vector/vector_hnsw_sync.result | 36 +++++++-------- .../cases/vector/vector_hnsw_sync.sql | 45 ++++++++++--------- 2 files changed, 41 insertions(+), 40 deletions(-) diff --git a/test/distributed/cases/vector/vector_hnsw_sync.result b/test/distributed/cases/vector/vector_hnsw_sync.result index 109417901abe0..758d48275e82b 100644 --- a/test/distributed/cases/vector/vector_hnsw_sync.result +++ b/test/distributed/cases/vector/vector_hnsw_sync.result @@ -2,34 +2,34 @@ SET experimental_hnsw_index = 1; drop database if exists hnsw_cdc; create database if not exists hnsw_cdc; use hnsw_cdc; -create table vector_index_01(a bigint primary key, b vecf32(3),c int,key c_k(c)); -create index idx01 using hnsw on vector_index_01(b) op_type "vector_l2_ops" M 48 EF_CONSTRUCTION 64 EF_SEARCH 64; -drop pitr if exists `__mo_table_pitr_hnsw`; -create pitr `__mo_table_pitr_hnsw` for table hnsw_cdc vector_index_01 range 2 'h'; -create cdc `__mo_cdc_hnsw_idx01` 'mysql://root:111@127.0.0.1:6001' 'hnswsync' 'mysql://root:111@127.0.0.1:6001' 'hnsw_cdc.vector_index_01' {'Level'='table'}; -insert into vector_index_01 values (0, "[1,2,3]", 1); -UPDATE vector_index_01 set b = '[4,5,6]' where a = 0; -insert into vector_index_01 values (1, "[2,3,4]", 1); -DELETE FROM vector_index_01 WHERE a=1; +create table t1(a bigint primary key, b vecf32(3),c int,key c_k(c)); +create index idx01 using hnsw on t1(b) op_type "vector_l2_ops" M 48 EF_CONSTRUCTION 64 EF_SEARCH 64; +drop pitr if exists `__mo_table_pitr_t1`; +create pitr `__mo_table_pitr_t1` for table hnsw_cdc t1 range 2 'h'; +create cdc `__mo_cdc_t1_idx01` 'mysql://root:111@127.0.0.1:6001' 'hnswsync' 'mysql://root:111@127.0.0.1:6001' 'hnsw_cdc.t1' {'Level'='table'}; +insert into t1 values (0, "[1,2,3]", 1); +UPDATE t1 set b = '[4,5,6]' where a = 0; +insert into t1 values (1, "[2,3,4]", 1); +DELETE FROM t1 WHERE a=1; select sleep(30); sleep(30) 0 -select * from vector_index_01 order by L2_DISTANCE(b,"[1,2,3]") ASC LIMIT 10; +select * from t1 order by L2_DISTANCE(b,"[1,2,3]") ASC LIMIT 10; a b c 0 [4, 5, 6] 1 -select * from vector_index_01 order by L2_DISTANCE(b,"[4,5,6]") ASC LIMIT 10; +select * from t1 order by L2_DISTANCE(b,"[4,5,6]") ASC LIMIT 10; a b c 0 [4, 5, 6] 1 -select * from vector_index_01 order by L2_DISTANCE(b,"[2,3,4]") ASC LIMIT 10; +select * from t1 order by L2_DISTANCE(b,"[2,3,4]") ASC LIMIT 10; a b c 0 [4, 5, 6] 1 -drop cdc task `__mo_cdc_hnsw_idx01`; -drop pitr if exists `__mo_table_pitr_hnsw`; -drop table vector_index_01; +drop cdc task `__mo_cdc_t1_idx01`; +drop pitr if exists `__mo_table_pitr_t1`; +drop table t1; create table t2(a bigint primary key, b vecf32(128)); create index idx2 using hnsw on t2(b) op_type "vector_l2_ops" M 48 EF_CONSTRUCTION 64 EF_SEARCH 64; -drop pitr if exists `__mo_table_pitr_hnsw_cdc_t2`; -create pitr `__mo_table_pitr_hnsw` for table hnsw_cdc t2 range 2 'h'; +drop pitr if exists `__mo_table_pitr_t2`; +create pitr `__mo_table_pitr_t2` for table hnsw_cdc t2 range 2 'h'; create cdc `__mo_cdc_hnsw_cdc_t2_idx2` 'mysql://root:111@127.0.0.1:6001' 'hnswsync' 'mysql://root:111@127.0.0.1:6001' 'hnsw_cdc.t2' {'Level'='table'}; load data infile {'filepath'='$resources/vector/sift128_base_10k.csv.gz', 'compression'='gzip'} into table t2 fields terminated by ':' parallel 'true'; select count(*) from t2; @@ -45,7 +45,7 @@ select * from t2 order by L2_DISTANCE(b, "[0, 16, 35, 5, 32, 31, 14, 10, 11, 78, a b 0 [0, 16, 35, 5, 32, 31, 14, 10, 11, 78, 55, 10, 45, 83, 11, 6, 14, 57, 102, 75, 20, 8, 3, 5, 67, 17, 19, 26, 5, 0, 1, 22, 60, 26, 7, 1, 18, 22, 84, 53, 85, 119, 119, 4, 24, 18, 7, 7, 1, 81, 106, 102, 72, 30, 6, 0, 9, 1, 9, 119, 72, 1, 4, 33, 119, 29, 6, 1, 0, 1, 14, 52, 119, 30, 3, 0, 0, 55, 92, 111, 2, 5, 4, 9, 22, 89, 96, 14, 1, 0, 1, 82, 59, 16, 20, 5, 25, 14, 11, 4, 0, 0, 1, 26, 47, 23, 4, 0, 0, 4, 38, 83, 30, 14, 9, 4, 9, 17, 23, 41, 0, 0, 2, 8, 19, 25, 23, 1] drop cdc task `__mo_cdc_hnsw_cdc_t2_idx2`; -drop pitr if exists `__mo_table_pitr_hnsw_cdc_t2`; +drop pitr if exists `__mo_table_pitr_t2`; drop table t2; create table t3(a bigint primary key, b vecf32(128)); load data infile {'filepath'='$resources/vector/sift128_base_10k.csv.gz', 'compression'='gzip'} into table t3 fields terminated by ':' parallel 'true'; diff --git a/test/distributed/cases/vector/vector_hnsw_sync.sql b/test/distributed/cases/vector/vector_hnsw_sync.sql index 149c3e51dd1a4..b816c2cc49e2f 100644 --- a/test/distributed/cases/vector/vector_hnsw_sync.sql +++ b/test/distributed/cases/vector/vector_hnsw_sync.sql @@ -5,50 +5,50 @@ drop database if exists hnsw_cdc; create database if not exists hnsw_cdc; use hnsw_cdc; -create table vector_index_01(a bigint primary key, b vecf32(3),c int,key c_k(c)); +create table t1(a bigint primary key, b vecf32(3),c int,key c_k(c)); -- empty data -create index idx01 using hnsw on vector_index_01(b) op_type "vector_l2_ops" M 48 EF_CONSTRUCTION 64 EF_SEARCH 64; -drop pitr if exists `__mo_table_pitr_hnsw`; -create pitr `__mo_table_pitr_hnsw` for table hnsw_cdc vector_index_01 range 2 'h'; -create cdc `__mo_cdc_hnsw_idx01` 'mysql://root:111@127.0.0.1:6001' 'hnswsync' 'mysql://root:111@127.0.0.1:6001' 'hnsw_cdc.vector_index_01' {'Level'='table'}; +create index idx01 using hnsw on t1(b) op_type "vector_l2_ops" M 48 EF_CONSTRUCTION 64 EF_SEARCH 64; +drop pitr if exists `__mo_table_pitr_t1`; +create pitr `__mo_table_pitr_t1` for table hnsw_cdc t1 range 2 'h'; +create cdc `__mo_cdc_t1_idx01` 'mysql://root:111@127.0.0.1:6001' 'hnswsync' 'mysql://root:111@127.0.0.1:6001' 'hnsw_cdc.t1' {'Level'='table'}; -- show cdc all; -- select sleep(30); -insert into vector_index_01 values (0, "[1,2,3]", 1); --- select hnsw_cdc_update('hnsw_cdc', 'vector_index_01', 3, '{"start":"", "end":"", "cdc":[{"t":"U", "pk":0, "v":[1,2,3]}]}'); +insert into t1 values (0, "[1,2,3]", 1); +-- select hnsw_cdc_update('hnsw_cdc', 't1', 3, '{"start":"", "end":"", "cdc":[{"t":"U", "pk":0, "v":[1,2,3]}]}'); -UPDATE vector_index_01 set b = '[4,5,6]' where a = 0; --- select hnsw_cdc_update('hnsw_cdc', 'vector_index_01', 3, '{"start":"", "end":"", "cdc":[{"t":"U", "pk":0, "v":[4,5,6]}]}'); +UPDATE t1 set b = '[4,5,6]' where a = 0; +-- select hnsw_cdc_update('hnsw_cdc', 't1', 3, '{"start":"", "end":"", "cdc":[{"t":"U", "pk":0, "v":[4,5,6]}]}'); -insert into vector_index_01 values (1, "[2,3,4]", 1); --- select hnsw_cdc_update('hnsw_cdc', 'vector_index_01', 3, '{"start":"", "end":"", "cdc":[{"t":"I", "pk":1, "v":[2,3,4]}]}'); +insert into t1 values (1, "[2,3,4]", 1); +-- select hnsw_cdc_update('hnsw_cdc', 't1', 3, '{"start":"", "end":"", "cdc":[{"t":"I", "pk":1, "v":[2,3,4]}]}'); -DELETE FROM vector_index_01 WHERE a=1; --- select hnsw_cdc_update('hnsw_cdc', 'vector_index_01', 3, '{"start":"", "end":"", "cdc":[{"t":"D", "pk":0}]}'); +DELETE FROM t1 WHERE a=1; +-- select hnsw_cdc_update('hnsw_cdc', 't1', 3, '{"start":"", "end":"", "cdc":[{"t":"D", "pk":0}]}'); select sleep(30); -- test with multi-cn is tricky. since model is cached in memory, model may not be updated after CDC sync'd. The only way to test is to all INSERT/DELETE/UPDATE before SELECT. -- already update to [4,5,6], result is [4,5,6] -select * from vector_index_01 order by L2_DISTANCE(b,"[1,2,3]") ASC LIMIT 10; +select * from t1 order by L2_DISTANCE(b,"[1,2,3]") ASC LIMIT 10; -- should return a=0 -select * from vector_index_01 order by L2_DISTANCE(b,"[4,5,6]") ASC LIMIT 10; +select * from t1 order by L2_DISTANCE(b,"[4,5,6]") ASC LIMIT 10; -- a=1 deleted. result is [4,5,6] -select * from vector_index_01 order by L2_DISTANCE(b,"[2,3,4]") ASC LIMIT 10; +select * from t1 order by L2_DISTANCE(b,"[2,3,4]") ASC LIMIT 10; -drop cdc task `__mo_cdc_hnsw_idx01`; -drop pitr if exists `__mo_table_pitr_hnsw`; -drop table vector_index_01; +drop cdc task `__mo_cdc_t1_idx01`; +drop pitr if exists `__mo_table_pitr_t1`; +drop table t1; -- t2 create table t2(a bigint primary key, b vecf32(128)); create index idx2 using hnsw on t2(b) op_type "vector_l2_ops" M 48 EF_CONSTRUCTION 64 EF_SEARCH 64; -drop pitr if exists `__mo_table_pitr_hnsw_cdc_t2`; -create pitr `__mo_table_pitr_hnsw` for table hnsw_cdc t2 range 2 'h'; +drop pitr if exists `__mo_table_pitr_t2`; +create pitr `__mo_table_pitr_t2` for table hnsw_cdc t2 range 2 'h'; create cdc `__mo_cdc_hnsw_cdc_t2_idx2` 'mysql://root:111@127.0.0.1:6001' 'hnswsync' 'mysql://root:111@127.0.0.1:6001' 'hnsw_cdc.t2' {'Level'='table'}; -- select sleep(30); @@ -69,7 +69,7 @@ select * from t2 order by L2_DISTANCE(b, "[0, 16, 35, 5, 32, 31, 14, 10, 11, 78, drop cdc task `__mo_cdc_hnsw_cdc_t2_idx2`; -drop pitr if exists `__mo_table_pitr_hnsw_cdc_t2`; +drop pitr if exists `__mo_table_pitr_t2`; drop table t2; -- end t2 @@ -111,3 +111,4 @@ drop table t3; -- end t3 drop database hnsw_cdc; + From c0f162bda72bdd4b117c636c781911c4d0de1027 Mon Sep 17 00:00:00 2001 From: cpegeric Date: Thu, 12 Jun 2025 17:23:13 +0100 Subject: [PATCH 100/223] cleanup --- pkg/vectorindex/hnsw/sync.go | 167 +++++++++++++++++++---------------- 1 file changed, 93 insertions(+), 74 deletions(-) diff --git a/pkg/vectorindex/hnsw/sync.go b/pkg/vectorindex/hnsw/sync.go index 388d931c2731e..ffc99dc181548 100644 --- a/pkg/vectorindex/hnsw/sync.go +++ b/pkg/vectorindex/hnsw/sync.go @@ -285,7 +285,7 @@ func (s *HnswSync) checkContains(proc *process.Process) (maxcap uint, midx []int return maxcap, midx, nil } -func (s *HnswSync) insertAll(proc *process.Process, maxcap uint) error { +func (s *HnswSync) insertAllInParallel(proc *process.Process, maxcap uint) error { var mu sync.Mutex var wg sync.WaitGroup err_chan := make(chan error, s.tblcfg.ThreadsBuild) @@ -331,15 +331,7 @@ func (s *HnswSync) insertAll(proc *process.Process, maxcap uint) error { return nil } -func (s *HnswSync) run(proc *process.Process) error { - var err error - - maxcap, midx, err := s.checkContains(proc) - if err != nil { - return err - } - - s.ninsert.Store(int32(len(s.cdc.Data)) - s.nupdate.Load() - s.ndelete.Load()) +func (s *HnswSync) setupModel(proc *process.Process, maxcap uint) error { s.current = (*HnswModel)(nil) s.last = (*HnswModel)(nil) @@ -375,87 +367,114 @@ func (s *HnswSync) run(proc *process.Process) error { } } - logutil.Infof("hnsw_cdc_update: db=%s, table=%s, cdc: len=%d, ninsert = %d, ndelete = %d, nupdate = %d\n", - s.tblcfg.DbName, s.tblcfg.SrcTable, - len(s.cdc.Data), s.ninsert.Load(), s.ndelete.Load(), s.nupdate.Load()) - - if len(s.cdc.Data) == int(s.ninsert.Load()) { - // pure insert and insert into parallel - - err = s.insertAll(proc, maxcap) - if err != nil { - return err - } - - } else { - var last *HnswModel - - for i, row := range s.cdc.Data { + return nil +} - switch row.Type { - case vectorindex.CDC_UPSERT: - if midx[i] == -1 { - // cannot find key from existing model. simple insert - last, err = s.getLastModel(proc, maxcap) - if err != nil { - return err - } - // insert - err = last.Add(row.PKey, row.Vec) - if err != nil { - return err - } +func (s *HnswSync) sequentialUpdate(proc *process.Process, maxcap uint, midx []int) error { - break + for i, row := range s.cdc.Data { - } - current, err := s.getCurrentModel(proc, midx[i]) + switch row.Type { + case vectorindex.CDC_UPSERT: + if midx[i] == -1 { + // cannot find key from existing model. simple insert + last, err := s.getLastModel(proc, maxcap) if err != nil { return err } - - // update - err = current.Remove(row.PKey) + // insert + err = last.Add(row.PKey, row.Vec) if err != nil { return err } - err = current.Add(row.PKey, row.Vec) - if err != nil { - return err - } + break - case vectorindex.CDC_DELETE: - if midx[i] == -1 { - // cannot find key from existing models. ignore it - //os.Stderr.WriteString("DELETE NOT FOUND\n") - continue - } + } + current, err := s.getCurrentModel(proc, midx[i]) + if err != nil { + return err + } - current, err := s.getCurrentModel(proc, midx[i]) - if err != nil { - return err - } + // update + err = current.Remove(row.PKey) + if err != nil { + return err + } - // delete - err = current.Remove(row.PKey) - if err != nil { - return err - } + err = current.Add(row.PKey, row.Vec) + if err != nil { + return err + } - case vectorindex.CDC_INSERT: - last, err = s.getLastModel(proc, maxcap) - if err != nil { - return err - } + case vectorindex.CDC_DELETE: + if midx[i] == -1 { + // cannot find key from existing models. ignore it + //os.Stderr.WriteString("DELETE NOT FOUND\n") + continue + } - // insert - err = last.Add(row.PKey, row.Vec) - if err != nil { - return err - } + current, err := s.getCurrentModel(proc, midx[i]) + if err != nil { + return err } + // delete + err = current.Remove(row.PKey) + if err != nil { + return err + } + + case vectorindex.CDC_INSERT: + last, err := s.getLastModel(proc, maxcap) + if err != nil { + return err + } + + // insert + err = last.Add(row.PKey, row.Vec) + if err != nil { + return err + } + } + + } + return nil +} + +func (s *HnswSync) run(proc *process.Process) error { + var err error + + // check contains and find the correspoding index id + maxcap, midx, err := s.checkContains(proc) + if err != nil { + return err + } + + s.ninsert.Store(int32(len(s.cdc.Data)) - s.nupdate.Load() - s.ndelete.Load()) + + // setup s.last and s.current model. s.late will point to the last model in metadata and s.current is nil + err = s.setupModel(proc, maxcap) + if err != nil { + return err + } + + logutil.Infof("hnsw_cdc_update: db=%s, table=%s, cdc: len=%d, ninsert = %d, ndelete = %d, nupdate = %d\n", + s.tblcfg.DbName, s.tblcfg.SrcTable, + len(s.cdc.Data), s.ninsert.Load(), s.ndelete.Load(), s.nupdate.Load()) + + if len(s.cdc.Data) == int(s.ninsert.Load()) { + // pure insert and insert into parallel + err = s.insertAllInParallel(proc, maxcap) + if err != nil { + return err + } + + } else { + // perform sequential update in single thread + err = s.sequentialUpdate(proc, maxcap, midx) + if err != nil { + return err } } From 4ce4a5d1de4f1fb4692aaad597ed220af4c2fa10 Mon Sep 17 00:00:00 2001 From: cpegeric Date: Fri, 13 Jun 2025 11:02:53 +0100 Subject: [PATCH 101/223] take timing --- pkg/vectorindex/hnsw/sync.go | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/pkg/vectorindex/hnsw/sync.go b/pkg/vectorindex/hnsw/sync.go index ffc99dc181548..a321c0811cc65 100644 --- a/pkg/vectorindex/hnsw/sync.go +++ b/pkg/vectorindex/hnsw/sync.go @@ -445,12 +445,18 @@ func (s *HnswSync) sequentialUpdate(proc *process.Process, maxcap uint, midx []i func (s *HnswSync) run(proc *process.Process) error { var err error + start := time.Now() + // check contains and find the correspoding index id maxcap, midx, err := s.checkContains(proc) if err != nil { return err } + t := time.Now() + + checkidxElapsed := t.Sub(start) + s.ninsert.Store(int32(len(s.cdc.Data)) - s.nupdate.Load() - s.ndelete.Load()) // setup s.last and s.current model. s.late will point to the last model in metadata and s.current is nil @@ -478,6 +484,9 @@ func (s *HnswSync) run(proc *process.Process) error { } } + t2 := time.Now() + updateElapsed := t2.Sub(t) + // save to files and then save to database sqls, err := s.ToSql(s.ts) if err != nil { @@ -488,7 +497,17 @@ func (s *HnswSync) run(proc *process.Process) error { return nil } - return s.runSqls(proc, sqls) + err = s.runSqls(proc, sqls) + if err != nil { + return err + } + + t3 := time.Now() + saveElapsed := t3.Sub(t2) + + logutil.Debugf("hnsw_cdc_update: time elapsed: checkidx %d ms, update %d ms, save %d ms", + checkidxElapsed.Milliseconds(), updateElapsed.Milliseconds(), saveElapsed.Milliseconds()) + return nil } func (s *HnswSync) runSqls(proc *process.Process, sqls []string) error { From ba61a0f8ee8186b42fb5e3e5496bd792c45dd028 Mon Sep 17 00:00:00 2001 From: cpegeric Date: Thu, 19 Jun 2025 11:47:04 +0100 Subject: [PATCH 102/223] support values as input --- pkg/sql/plan/fulltext.go | 58 +++++++++++++++++++++++++++++++--------- 1 file changed, 46 insertions(+), 12 deletions(-) diff --git a/pkg/sql/plan/fulltext.go b/pkg/sql/plan/fulltext.go index db4e9eea80497..0309b25b67b79 100644 --- a/pkg/sql/plan/fulltext.go +++ b/pkg/sql/plan/fulltext.go @@ -156,8 +156,16 @@ func (builder *QueryBuilder) getFullTextSql(fn *tree.FuncExpr, params string) (s return fulltext.PatternToSql(ps, mode, idxtbl, param.Parser, scoreAlgo) } -// select * from index_table, fulltext_index_tokenize(doc_id, concat(body, ' ', title)) -// arg list [params, doc_id, content] +// for table scan, primary key type is passed from TableDef +// select f.* from index_table CROSS APPLY fulltext_index_tokenize('param', doc_id, body, title) as f +// arg list [params, doc_id, part1, part2,...] + +// for values scan, primary key type is passed from second argument +// +// select f.* from (select cast(column_0 as bigint) as id, column_1 as body, column_2 as title from (values row(1, 'body content', 'title content'))) as src +// cross apply fulltext_index_tokenize('{"parser":"ngram"}', 23, id, body, title) as f; +// +// arg list [params, pktype, doc_id, part1, part2,...] func (builder *QueryBuilder) buildFullTextIndexTokenize(tbl *tree.TableFunction, ctx *BindContext, exprs []*plan.Expr, children []int32) (int32, error) { if len(exprs) < 3 { @@ -171,18 +179,31 @@ func (builder *QueryBuilder) buildFullTextIndexTokenize(tbl *tree.TableFunction, } scanNode := builder.qry.Nodes[children[0]] - if scanNode.NodeType != plan.Node_TABLE_SCAN { - return 0, moerr.NewNoConfig(builder.GetContext(), "child node is not a TABLE SCAN") - } - - pkPos := scanNode.TableDef.Name2ColIndex[scanNode.TableDef.Pkey.PkeyColName] - pkType := scanNode.TableDef.Cols[pkPos].Typ + if scanNode.NodeType == plan.Node_TABLE_SCAN { + if len(exprs) < 3 { + return 0, moerr.NewInvalidInput(builder.GetContext(), "Invalid number of arguments (NARGS < 3).") + } + pkPos := scanNode.TableDef.Name2ColIndex[scanNode.TableDef.Pkey.PkeyColName] + pkType := scanNode.TableDef.Cols[pkPos].Typ + // set type to source table primary key + colDefs[0].Typ = pkType + // remove the first argment and put the first argument to Param + exprs = exprs[1:] + } else { + // VALUES. First argument is Params and second argument is pkType + if len(exprs) < 4 { + return 0, moerr.NewInvalidInput(builder.GetContext(), "Invalid number of arguments (NARGS < 4).") + } + pkType, err := builder.getFullTextPkeyType(tbl.Func) + if err != nil { + return 0, err + } - // set type to source table primary key - colDefs[0].Typ = pkType + colDefs[0].Typ = pkType + // remove the first two argments and put the first argument to Param + exprs = exprs[2:] - // remove the first argment and put the first argument to Param - exprs = exprs[1:] + } node := &plan.Node{ NodeType: plan.Node_FUNCTION_SCAN, @@ -209,3 +230,16 @@ func (builder *QueryBuilder) getFullTextParams(fn *tree.FuncExpr) (string, error } return "", moerr.NewNoConfig(builder.GetContext(), "first parameter must be string") } + +func (builder *QueryBuilder) getFullTextPkeyType(fn *tree.FuncExpr) (plan.Type, error) { + if v, ok := fn.Exprs[1].(*tree.NumVal); ok { + if t64, ok2 := v.Int64(); ok2 { + return plan.Type{ + Id: int32(t64), + NotNullable: false, + }, nil + } + return plan.Type{}, moerr.NewNoConfig(builder.GetContext(), "second parameter must be int32") + } + return plan.Type{}, moerr.NewNoConfig(builder.GetContext(), "second parameter must be int32") +} From 67feed97adedfcba7c55ac89e8a5c31c831c4e2a Mon Sep 17 00:00:00 2001 From: cpegeric Date: Thu, 19 Jun 2025 11:58:05 +0100 Subject: [PATCH 103/223] Comment on composite primary key --- pkg/sql/plan/fulltext.go | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/pkg/sql/plan/fulltext.go b/pkg/sql/plan/fulltext.go index 0309b25b67b79..7dde41f27c563 100644 --- a/pkg/sql/plan/fulltext.go +++ b/pkg/sql/plan/fulltext.go @@ -159,13 +159,18 @@ func (builder *QueryBuilder) getFullTextSql(fn *tree.FuncExpr, params string) (s // for table scan, primary key type is passed from TableDef // select f.* from index_table CROSS APPLY fulltext_index_tokenize('param', doc_id, body, title) as f // arg list [params, doc_id, part1, part2,...] - +// // for values scan, primary key type is passed from second argument +// arg list [params, pktype, doc_id, part1, part2,...] // // select f.* from (select cast(column_0 as bigint) as id, column_1 as body, column_2 as title from (values row(1, 'body content', 'title content'))) as src // cross apply fulltext_index_tokenize('{"parser":"ngram"}', 23, id, body, title) as f; // -// arg list [params, pktype, doc_id, part1, part2,...] +// for composite primary key, +// +// select f.* from (select serial(cast(column_0 as bigint), cast(column_1 as bigint)) as id, column_2 as body, column_3 as title from +// (values row(1, 2, 'body', 'title'), row(2, 3, 'body is heavy', 'I do not know'))) as src +// cross apply fulltext_index_tokenize('{"parser":"ngram"}', 61, id, body, title) as f; func (builder *QueryBuilder) buildFullTextIndexTokenize(tbl *tree.TableFunction, ctx *BindContext, exprs []*plan.Expr, children []int32) (int32, error) { if len(exprs) < 3 { From 1b8735b9f178d755cd51309c97b9b374c7b81a3f Mon Sep 17 00:00:00 2001 From: cpegeric Date: Thu, 19 Jun 2025 14:13:52 +0100 Subject: [PATCH 104/223] comments --- pkg/sql/plan/fulltext.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/pkg/sql/plan/fulltext.go b/pkg/sql/plan/fulltext.go index 7dde41f27c563..48f2fa0f43c40 100644 --- a/pkg/sql/plan/fulltext.go +++ b/pkg/sql/plan/fulltext.go @@ -171,6 +171,9 @@ func (builder *QueryBuilder) getFullTextSql(fn *tree.FuncExpr, params string) (s // select f.* from (select serial(cast(column_0 as bigint), cast(column_1 as bigint)) as id, column_2 as body, column_3 as title from // (values row(1, 2, 'body', 'title'), row(2, 3, 'body is heavy', 'I do not know'))) as src // cross apply fulltext_index_tokenize('{"parser":"ngram"}', 61, id, body, title) as f; +// +// for composite key, use hex string X'abcd' as input of primary key and skip serial() +// select unhex(hex(serial(cast(0 as smallint), cast(1 as int)))); func (builder *QueryBuilder) buildFullTextIndexTokenize(tbl *tree.TableFunction, ctx *BindContext, exprs []*plan.Expr, children []int32) (int32, error) { if len(exprs) < 3 { From a12d40dfaa6761d4f5056a4fe789f3b53466df2b Mon Sep 17 00:00:00 2001 From: cpegeric Date: Thu, 19 Jun 2025 16:56:54 +0100 Subject: [PATCH 105/223] add sql writer --- pkg/cdc/index_sqlwriter.go | 205 +++++++++++++++++++++++++++++++++++++ 1 file changed, 205 insertions(+) create mode 100644 pkg/cdc/index_sqlwriter.go diff --git a/pkg/cdc/index_sqlwriter.go b/pkg/cdc/index_sqlwriter.go new file mode 100644 index 0000000000000..89a36830ef17c --- /dev/null +++ b/pkg/cdc/index_sqlwriter.go @@ -0,0 +1,205 @@ +package cdc + +import ( + "context" + "fmt" + "strings" + + "github.com/matrixorigin/matrixone/pkg/common/moerr" + "github.com/matrixorigin/matrixone/pkg/container/types" + "github.com/matrixorigin/matrixone/pkg/pb/plan" + "github.com/matrixorigin/matrixone/pkg/vectorindex" +) + +type IndexSqlWriter struct { + param string + tabledef *plan.TableDef + algo string + pkPos int + pkType *plan.Type + partsPos []int + partsType []*plan.Type + srcPos []int + lastCdcOp string + buf []byte + vbuf []byte +} + +func NewIndexSqlWriter(algo string, tabledef *plan.TableDef, param string) *IndexSqlWriter { + return &IndexSqlWriter{algo: algo, tabledef: tabledef, param: param, vbuf: make([]byte, 0, 1024)} + w.srcPos[0] = w.pkPos + for i := range w.partsType { + w.srcPos[i+1] = w.partsPos[i] + } +} + +// return true when last op is empty or last op == current op +func (w *IndexSqlWriter) checkLastOp(op string) bool { + return len(w.lastCdcOp) == 0 || w.lastCdcOp == op +} + +func (w *IndexSqlWriter) writeRow(ctx context.Context, row []any) error { + + w.vbuf = appendString(w.vbuf, "ROW(") + + // pk + w.vbuf, err = convertColIntoSql(ctx, row[w.pkPos], w.pkTyp, w.vbuf) + if err != nil { + return err + } + + for i, t := range w.partsType { + w.vbuf = appendString(w.vbuf, ",") + pos := w.partsPos[i] + w.vbuf, err = convertColIntoSql(ctx, row[pos], t, w.vbuf) + if err != nil { + return err + } + } + + w.vbuf = appendString(w.vbuf, ")") +} + +func (w *IndexSqlWriter) Upsert(ctx context.Context, row []any) error { + + if len(w.lastCdcOp) == 0 { + // init + w.lastCdcOp = vectorindex.CDC_UPSERT + return w.writeRow(ctx, row) + + } + + if w.lastCdcOp != vectorindex.CDC_UPSERT { + // different from previous operation and generate SQL before append new UPSERT + return moerr.NewInternalErrorNoCtx("IndexSqlWriter.Upsert: append different op") + } + + // same as previous operation and append to VALUES ROW(), ROW(),... + w.vbuf = appendString(w.vbuf, ",") + return w.writeRow(ctx, row) +} + +func (w *IndexSqlWriter) Insert(ctx context.Context, row []any) error { + + if len(w.lastCdcOp) == 0 { + // init + w.lastCdcOp = vectorindex.CDC_INSERT + return w.writeRow(ctx, row) + + } + + if w.lastCdcOp != vectorindex.CDC_INSERT { + // different from previous operation and generate SQL before append new UPSERT + return moerr.NewInternalErrorNoCtx("IndexSqlWriter.Insert: append different op") + } + + // same as previous operation and append to VALUES ROW(), ROW(),... + w.vbuf = appendString(w.vbuf, ",") + return w.writeRow(ctx, row) + + return nil +} + +func (w *IndexSqlWriter) Delete(ctx context.Context, row []any) error { + + if len(w.lastCdcOp) == 0 { + // init + w.lastCdcOp = vectorindex.CDC_DELETE + w.vbuf, err = convertColIntoSql(ctx, row[w.pkPos], w.pkTyp, w.vbuf) + if err != nil { + return err + } + + } + + if w.lastCdcOp != vectorindex.CDC_DELETE { + // different from previous operation and generate SQL before append new UPSERT + return moerr.NewInternalErrorNoCtx("IndexSqlWriter.Delete: append different op") + } + + // same as previous operation and append to IN () + w.vbuf = appendString(w.vbuf, ",") + w.vbuf, err = convertColIntoSql(ctx, row[w.pkPos], w.pkTyp, w.vbuf) + if err != nil { + return err + } + + return nil +} + +// with src as (select cast(serial(cast(column_0 as bigint), cast(column_1 as bigint)) as varchar) as id, column_2 as body, column_3 as title from +// (values row(1, 2, 'body', 'title'), row(2, 3, 'body is heavy', 'I do not know'))) select f.* from src +// cross apply fulltext_index_tokenize('{"parser":"ngram"}', 61, id, body, title) as f; +func (w *IndexSqlWriter) ToFullTextSql() ([]byte, error) { + + if len(w.lastCdcOp) == 0 { + return nil, nil + } + + switch w.lastCdcOp { + case vectorindex.CDC_DELETE: + case vectorindex.CDC_UPSERT: + case vectorindex.CDC_INSERT: + default: + return moerr.NewInternalErrorNoCtx("IndexSqlWriter: invalid CDC type") + } + + return nil, nil +} + +func (w *IndexSqlWriter) ToIvfflatUpsert() ([]byte, error) { + + var sql string + + coldefs := make([]string, 0, len(w.srcPos)) + cnames := make([]string, 0, len(w.srcPos)) + for i, pos := range w.srcPos { + typ := w.tabledef.Cols[pos].Typ + newtype := types.New(types.T(typ.Id), typ.Width, typ.Scale) + typstr := t.DescString() + coldefs := append(coldef, fmt.Sprintf("CAST(column_%d as %s) as %d", i, typstr, w.tabledef.Cols[pos].Name)) + cnames := append(cnames, w.tabledef.Cols[pos].Name) + } + + cols := strings.Join(coldefs, ", ") + cnames_str := strings.Join(cnames, ", ") + + sql += fmt.Sprintf("REPLACE INTO %s ", tablename) + sql += fmt.Sprintf("WITH src as (SELECT %s FROM (VALUES %s))", cols, string(w.vbuf)) + sql += fmt.Sprintf(" SELECT f.* FROM src CROSS APPLY fulltext_index_tokenize('%s', %d, %s) as f", param, w.pkType.Id, cnames_str) +} + +// REPLACE INTO __mo_index_secondary_0197786c-285f-70cb-9337-e484a3ff92c4(__mo_index_centroid_fk_version, __mo_index_centroid_fk_id, __mo_index_pri_col, __mo_index_centroid_fk_entry) +// with centroid as (select * from __mo_index_secondary_0197786c-285f-70bb-b277-2cef56da590a where __mo_index_centroid_version = 0), +// src as (select column_0 as id, cast(column_1 as vecf32(3)) as embed from (values row(2005,'[0.4532634, 0.7297859, 0.48885703]'), row(2009, '[0.68150306, 0.6950923, 0.16590895] '))) +// select __mo_index_centroid_version, __mo_index_centroid_id, id, embed from src centroidx('vector_l2_ops') join centroid using (__mo_index_centroid, embed); +func (w *IndexSqlWriter) ToIvfflatSql() ([]byte, error) { + if len(w.lastCdcOp) == 0 { + return nil, nil + } + + switch w.lastCdcOp { + case vectorindex.CDC_DELETE: + case vectorindex.CDC_UPSERT: + case vectorindex.CDC_INSERT: + default: + return moerr.NewInternalErrorNoCtx("IndexSqlWriter: invalid CDC type") + } + + return nil, nil +} + +func (w *IndexSqlWriter) ToSql() ([]byte, error) { + w.lastCdcOp = "" + switch w.algo { + case "fulltext": + return w.ToFullTextSql() + case "ivfflat": + return w.ToIvfflatSql() + default: + return nil, moerr.NewInternalErrorNoCtx("invalid algorithm type.") + + } + + return nil, nil +} From acb438778429dc74608edc9f79bee00728c290ff Mon Sep 17 00:00:00 2001 From: cpegeric Date: Fri, 20 Jun 2025 11:22:23 +0100 Subject: [PATCH 106/223] update --- pkg/cdc/fulltext_sinker_test.go | 49 +++++++++++++ pkg/cdc/index_sqlwriter.go | 122 +++++++++++++++++++++++--------- 2 files changed, 138 insertions(+), 33 deletions(-) create mode 100644 pkg/cdc/fulltext_sinker_test.go diff --git a/pkg/cdc/fulltext_sinker_test.go b/pkg/cdc/fulltext_sinker_test.go new file mode 100644 index 0000000000000..bbc70d14eb5b7 --- /dev/null +++ b/pkg/cdc/fulltext_sinker_test.go @@ -0,0 +1,49 @@ +package cdc + +import ( + "testing" + + "github.com/matrixorigin/matrixone/pkg/catalog" + "github.com/matrixorigin/matrixone/pkg/container/types" + "github.com/matrixorigin/matrixone/pkg/pb/plan" + "github.com/stretchr/testify/require" +) + +func newTestFulltextTableDef(pkName string, pkType types.T, vecColName string, vecType types.T, vecWidth int32) *plan.TableDef { + return &plan.TableDef{ + Name: "test_orig_tbl", + Name2ColIndex: map[string]int32{ + pkName: 0, + vecColName: 1, + "dummy": 2, // Add another col to make sure pk/vec col indices are used + }, + Cols: []*plan.ColDef{ + {Name: pkName, Typ: plan.Type{Id: int32(pkType)}}, + {Name: vecColName, Typ: plan.Type{Id: int32(vecType), Width: vecWidth}}, + {Name: "dummy", Typ: plan.Type{Id: int32(types.T_int32)}}, + }, + Pkey: &plan.PrimaryKeyDef{ + Names: []string{pkName}, + PkeyColName: pkName, + }, + Indexes: []*plan.IndexDef{ + { + IndexName: "fulltext_idx", + TableExist: true, + IndexAlgo: catalog.MOIndexFullTextAlgo.ToString(), + IndexAlgoTableType: "", + IndexTableName: "fulltext_tbl", + Parts: []string{vecColName}, + IndexAlgoParams: `{"parser":"ngram"}`, + }, + }, + } +} + +func TestNewFulltextSqlWriter(t *testing.T) { + tabledef := newTestFulltextTableDef("id", types.T_int64, "body", types.T_varchar, 256) + + _, err := NewIndexSqlWriter("fulltext", tabledef, tabledef.Indexes) + require.Nil(t, err) + +} diff --git a/pkg/cdc/index_sqlwriter.go b/pkg/cdc/index_sqlwriter.go index 89a36830ef17c..bc3fea7683365 100644 --- a/pkg/cdc/index_sqlwriter.go +++ b/pkg/cdc/index_sqlwriter.go @@ -11,39 +11,93 @@ import ( "github.com/matrixorigin/matrixone/pkg/vectorindex" ) -type IndexSqlWriter struct { +type IndexSqlWriter interface { + CheckLastOp(op string) bool + Upsert(ctx context.Context, row []any) error + Insert(ctx context.Context, row []any) error + Delete(ctx context.Context, row []any) error + Full() bool + ToSql() ([]byte, error) +} + +type FulltextSqlWriter struct { param string tabledef *plan.TableDef + indexdef []*plan.IndexDef algo string - pkPos int - pkType *plan.Type - partsPos []int - partsType []*plan.Type - srcPos []int + pkPos int32 + pkType *types.Type + partsPos []int32 + partsType []*types.Type + srcPos []int32 + srcType []*types.Type lastCdcOp string buf []byte vbuf []byte } -func NewIndexSqlWriter(algo string, tabledef *plan.TableDef, param string) *IndexSqlWriter { - return &IndexSqlWriter{algo: algo, tabledef: tabledef, param: param, vbuf: make([]byte, 0, 1024)} +// check FulltextSqlWriter is the interface of IndexSqlWriter +var _ IndexSqlWriter = new(FulltextSqlWriter) + +// check algo type to return the correct sql writer +func NewIndexSqlWriter(algo string, tabledef *plan.TableDef, indexdef []*plan.IndexDef) (IndexSqlWriter, error) { + switch algo { + case "fulltext": + return NewFulltextSqlWriter(algo, tabledef, indexdef) + case "ivfflat": + default: + return IndexSqlWriter(nil), moerr.NewInternalErrorNoCtx("IndexSqlWriter: invalid algo type") + + } + return IndexSqlWriter(nil), moerr.NewInternalErrorNoCtx("IndexSqlWriter: invalid algo type") +} + +func NewFulltextSqlWriter(algo string, tabledef *plan.TableDef, indexdef []*plan.IndexDef) (IndexSqlWriter, error) { + w := &FulltextSqlWriter{algo: algo, tabledef: tabledef, indexdef: indexdef, vbuf: make([]byte, 0, 1024)} + + w.pkPos = tabledef.Name2ColIndex[tabledef.Pkey.PkeyColName] + typ := tabledef.Cols[w.pkPos].Typ + w.pkType = &types.Type{Oid: types.T(typ.Id), Width: typ.Width, Scale: typ.Scale} + + nparts := len(w.indexdef[0].Parts) + w.partsPos = make([]int32, nparts) + w.partsType = make([]*types.Type, nparts) + + for i, part := range w.indexdef[0].Parts { + w.partsPos[i] = tabledef.Name2ColIndex[part] + typ = tabledef.Cols[w.partsPos[i]].Typ + w.partsType[i] = &types.Type{Oid: types.T(typ.Id), Width: typ.Width, Scale: typ.Scale} + } + + w.srcPos = make([]int32, nparts+1) + w.srcType = make([]*types.Type, nparts+1) + w.srcPos[0] = w.pkPos + w.srcType[0] = w.pkType for i := range w.partsType { w.srcPos[i+1] = w.partsPos[i] + w.srcType[i+1] = w.partsType[i] } + + return w, nil +} + +func (w *FulltextSqlWriter) Full() bool { + return false } // return true when last op is empty or last op == current op -func (w *IndexSqlWriter) checkLastOp(op string) bool { +func (w *FulltextSqlWriter) CheckLastOp(op string) bool { return len(w.lastCdcOp) == 0 || w.lastCdcOp == op } -func (w *IndexSqlWriter) writeRow(ctx context.Context, row []any) error { +func (w *FulltextSqlWriter) writeRow(ctx context.Context, row []any) error { + var err error w.vbuf = appendString(w.vbuf, "ROW(") // pk - w.vbuf, err = convertColIntoSql(ctx, row[w.pkPos], w.pkTyp, w.vbuf) + w.vbuf, err = convertColIntoSql(ctx, row[w.pkPos], w.pkType, w.vbuf) if err != nil { return err } @@ -58,9 +112,10 @@ func (w *IndexSqlWriter) writeRow(ctx context.Context, row []any) error { } w.vbuf = appendString(w.vbuf, ")") + return nil } -func (w *IndexSqlWriter) Upsert(ctx context.Context, row []any) error { +func (w *FulltextSqlWriter) Upsert(ctx context.Context, row []any) error { if len(w.lastCdcOp) == 0 { // init @@ -71,7 +126,7 @@ func (w *IndexSqlWriter) Upsert(ctx context.Context, row []any) error { if w.lastCdcOp != vectorindex.CDC_UPSERT { // different from previous operation and generate SQL before append new UPSERT - return moerr.NewInternalErrorNoCtx("IndexSqlWriter.Upsert: append different op") + return moerr.NewInternalErrorNoCtx("FulltextSqlWriter.Upsert: append different op") } // same as previous operation and append to VALUES ROW(), ROW(),... @@ -79,7 +134,7 @@ func (w *IndexSqlWriter) Upsert(ctx context.Context, row []any) error { return w.writeRow(ctx, row) } -func (w *IndexSqlWriter) Insert(ctx context.Context, row []any) error { +func (w *FulltextSqlWriter) Insert(ctx context.Context, row []any) error { if len(w.lastCdcOp) == 0 { // init @@ -90,7 +145,7 @@ func (w *IndexSqlWriter) Insert(ctx context.Context, row []any) error { if w.lastCdcOp != vectorindex.CDC_INSERT { // different from previous operation and generate SQL before append new UPSERT - return moerr.NewInternalErrorNoCtx("IndexSqlWriter.Insert: append different op") + return moerr.NewInternalErrorNoCtx("FulltextSqlWriter.Insert: append different op") } // same as previous operation and append to VALUES ROW(), ROW(),... @@ -100,12 +155,13 @@ func (w *IndexSqlWriter) Insert(ctx context.Context, row []any) error { return nil } -func (w *IndexSqlWriter) Delete(ctx context.Context, row []any) error { +func (w *FulltextSqlWriter) Delete(ctx context.Context, row []any) error { + var err error if len(w.lastCdcOp) == 0 { // init w.lastCdcOp = vectorindex.CDC_DELETE - w.vbuf, err = convertColIntoSql(ctx, row[w.pkPos], w.pkTyp, w.vbuf) + w.vbuf, err = convertColIntoSql(ctx, row[w.pkPos], w.pkType, w.vbuf) if err != nil { return err } @@ -114,12 +170,12 @@ func (w *IndexSqlWriter) Delete(ctx context.Context, row []any) error { if w.lastCdcOp != vectorindex.CDC_DELETE { // different from previous operation and generate SQL before append new UPSERT - return moerr.NewInternalErrorNoCtx("IndexSqlWriter.Delete: append different op") + return moerr.NewInternalErrorNoCtx("FulltextSqlWriter.Delete: append different op") } // same as previous operation and append to IN () w.vbuf = appendString(w.vbuf, ",") - w.vbuf, err = convertColIntoSql(ctx, row[w.pkPos], w.pkTyp, w.vbuf) + w.vbuf, err = convertColIntoSql(ctx, row[w.pkPos], w.pkType, w.vbuf) if err != nil { return err } @@ -130,7 +186,7 @@ func (w *IndexSqlWriter) Delete(ctx context.Context, row []any) error { // with src as (select cast(serial(cast(column_0 as bigint), cast(column_1 as bigint)) as varchar) as id, column_2 as body, column_3 as title from // (values row(1, 2, 'body', 'title'), row(2, 3, 'body is heavy', 'I do not know'))) select f.* from src // cross apply fulltext_index_tokenize('{"parser":"ngram"}', 61, id, body, title) as f; -func (w *IndexSqlWriter) ToFullTextSql() ([]byte, error) { +func (w *FulltextSqlWriter) ToFullTextSql() ([]byte, error) { if len(w.lastCdcOp) == 0 { return nil, nil @@ -141,39 +197,39 @@ func (w *IndexSqlWriter) ToFullTextSql() ([]byte, error) { case vectorindex.CDC_UPSERT: case vectorindex.CDC_INSERT: default: - return moerr.NewInternalErrorNoCtx("IndexSqlWriter: invalid CDC type") + return nil, moerr.NewInternalErrorNoCtx("FulltextSqlWriter: invalid CDC type") } return nil, nil } -func (w *IndexSqlWriter) ToIvfflatUpsert() ([]byte, error) { +func (w *FulltextSqlWriter) ToIvfflatUpsert() ([]byte, error) { var sql string coldefs := make([]string, 0, len(w.srcPos)) cnames := make([]string, 0, len(w.srcPos)) for i, pos := range w.srcPos { - typ := w.tabledef.Cols[pos].Typ - newtype := types.New(types.T(typ.Id), typ.Width, typ.Scale) - typstr := t.DescString() - coldefs := append(coldef, fmt.Sprintf("CAST(column_%d as %s) as %d", i, typstr, w.tabledef.Cols[pos].Name)) - cnames := append(cnames, w.tabledef.Cols[pos].Name) + typstr := w.srcType[i].DescString() + coldefs = append(coldefs, fmt.Sprintf("CAST(column_%d as %s) as %s", i, typstr, w.tabledef.Cols[pos].Name)) + cnames = append(cnames, w.tabledef.Cols[pos].Name) } cols := strings.Join(coldefs, ", ") cnames_str := strings.Join(cnames, ", ") - sql += fmt.Sprintf("REPLACE INTO %s ", tablename) - sql += fmt.Sprintf("WITH src as (SELECT %s FROM (VALUES %s))", cols, string(w.vbuf)) - sql += fmt.Sprintf(" SELECT f.* FROM src CROSS APPLY fulltext_index_tokenize('%s', %d, %s) as f", param, w.pkType.Id, cnames_str) + //sql += fmt.Sprintf("REPLACE INTO %s ", tablename) + sql += fmt.Sprintf("WITH src as (SELECT %s FROM (VALUES %s)) ", cols, string(w.vbuf)) + sql += fmt.Sprintf("SELECT f.* FROM src CROSS APPLY fulltext_index_tokenize('%s', %d, %s) as f", w.param, w.pkType.Oid, cnames_str) + + return nil, nil } // REPLACE INTO __mo_index_secondary_0197786c-285f-70cb-9337-e484a3ff92c4(__mo_index_centroid_fk_version, __mo_index_centroid_fk_id, __mo_index_pri_col, __mo_index_centroid_fk_entry) // with centroid as (select * from __mo_index_secondary_0197786c-285f-70bb-b277-2cef56da590a where __mo_index_centroid_version = 0), // src as (select column_0 as id, cast(column_1 as vecf32(3)) as embed from (values row(2005,'[0.4532634, 0.7297859, 0.48885703]'), row(2009, '[0.68150306, 0.6950923, 0.16590895] '))) // select __mo_index_centroid_version, __mo_index_centroid_id, id, embed from src centroidx('vector_l2_ops') join centroid using (__mo_index_centroid, embed); -func (w *IndexSqlWriter) ToIvfflatSql() ([]byte, error) { +func (w *FulltextSqlWriter) ToIvfflatSql() ([]byte, error) { if len(w.lastCdcOp) == 0 { return nil, nil } @@ -183,13 +239,13 @@ func (w *IndexSqlWriter) ToIvfflatSql() ([]byte, error) { case vectorindex.CDC_UPSERT: case vectorindex.CDC_INSERT: default: - return moerr.NewInternalErrorNoCtx("IndexSqlWriter: invalid CDC type") + return nil, moerr.NewInternalErrorNoCtx("FulltextSqlWriter: invalid CDC type") } return nil, nil } -func (w *IndexSqlWriter) ToSql() ([]byte, error) { +func (w *FulltextSqlWriter) ToSql() ([]byte, error) { w.lastCdcOp = "" switch w.algo { case "fulltext": From edc33bb42d889903901b12a93dfb8da3fefe201a Mon Sep 17 00:00:00 2001 From: cpegeric Date: Fri, 20 Jun 2025 11:36:06 +0100 Subject: [PATCH 107/223] update --- pkg/cdc/fulltext_sinker_test.go | 18 +++++++++++++++++- pkg/cdc/index_sqlwriter.go | 14 +++++++++----- 2 files changed, 26 insertions(+), 6 deletions(-) diff --git a/pkg/cdc/fulltext_sinker_test.go b/pkg/cdc/fulltext_sinker_test.go index bbc70d14eb5b7..1c55c0e3a9c10 100644 --- a/pkg/cdc/fulltext_sinker_test.go +++ b/pkg/cdc/fulltext_sinker_test.go @@ -1,6 +1,8 @@ package cdc import ( + "context" + "fmt" "testing" "github.com/matrixorigin/matrixone/pkg/catalog" @@ -41,9 +43,23 @@ func newTestFulltextTableDef(pkName string, pkType types.T, vecColName string, v } func TestNewFulltextSqlWriter(t *testing.T) { + var ctx context.Context + tabledef := newTestFulltextTableDef("id", types.T_int64, "body", types.T_varchar, 256) - _, err := NewIndexSqlWriter("fulltext", tabledef, tabledef.Indexes) + writer, err := NewIndexSqlWriter("fulltext", tabledef, tabledef.Indexes) + require.Nil(t, err) + + row := []any{any(int64(1000)), any([]uint8("hello world")), any(nil)} + err = writer.Upsert(ctx, row) + require.Nil(t, err) + + row = []any{any(int64(2000)), any([]uint8("hello world")), any(nil)} + err = writer.Upsert(ctx, row) + require.Nil(t, err) + + bytes, err := writer.ToSql() require.Nil(t, err) + fmt.Println(string(bytes)) } diff --git a/pkg/cdc/index_sqlwriter.go b/pkg/cdc/index_sqlwriter.go index bc3fea7683365..6b96024ffdd7d 100644 --- a/pkg/cdc/index_sqlwriter.go +++ b/pkg/cdc/index_sqlwriter.go @@ -186,7 +186,7 @@ func (w *FulltextSqlWriter) Delete(ctx context.Context, row []any) error { // with src as (select cast(serial(cast(column_0 as bigint), cast(column_1 as bigint)) as varchar) as id, column_2 as body, column_3 as title from // (values row(1, 2, 'body', 'title'), row(2, 3, 'body is heavy', 'I do not know'))) select f.* from src // cross apply fulltext_index_tokenize('{"parser":"ngram"}', 61, id, body, title) as f; -func (w *FulltextSqlWriter) ToFullTextSql() ([]byte, error) { +func (w *FulltextSqlWriter) ToFulltextSql() ([]byte, error) { if len(w.lastCdcOp) == 0 { return nil, nil @@ -195,6 +195,7 @@ func (w *FulltextSqlWriter) ToFullTextSql() ([]byte, error) { switch w.lastCdcOp { case vectorindex.CDC_DELETE: case vectorindex.CDC_UPSERT: + return w.ToFulltextUpsert() case vectorindex.CDC_INSERT: default: return nil, moerr.NewInternalErrorNoCtx("FulltextSqlWriter: invalid CDC type") @@ -203,7 +204,7 @@ func (w *FulltextSqlWriter) ToFullTextSql() ([]byte, error) { return nil, nil } -func (w *FulltextSqlWriter) ToIvfflatUpsert() ([]byte, error) { +func (w *FulltextSqlWriter) ToFulltextUpsert() ([]byte, error) { var sql string @@ -222,7 +223,8 @@ func (w *FulltextSqlWriter) ToIvfflatUpsert() ([]byte, error) { sql += fmt.Sprintf("WITH src as (SELECT %s FROM (VALUES %s)) ", cols, string(w.vbuf)) sql += fmt.Sprintf("SELECT f.* FROM src CROSS APPLY fulltext_index_tokenize('%s', %d, %s) as f", w.param, w.pkType.Oid, cnames_str) - return nil, nil + fmt.Printf("SQL :%s\n", sql) + return []byte(sql), nil } // REPLACE INTO __mo_index_secondary_0197786c-285f-70cb-9337-e484a3ff92c4(__mo_index_centroid_fk_version, __mo_index_centroid_fk_id, __mo_index_pri_col, __mo_index_centroid_fk_entry) @@ -246,10 +248,12 @@ func (w *FulltextSqlWriter) ToIvfflatSql() ([]byte, error) { } func (w *FulltextSqlWriter) ToSql() ([]byte, error) { - w.lastCdcOp = "" + defer func() { + w.lastCdcOp = "" + }() switch w.algo { case "fulltext": - return w.ToFullTextSql() + return w.ToFulltextSql() case "ivfflat": return w.ToIvfflatSql() default: From 0a1f61cca1249d2d55683ae0fb16034755e1faf9 Mon Sep 17 00:00:00 2001 From: cpegeric Date: Fri, 20 Jun 2025 11:43:24 +0100 Subject: [PATCH 108/223] update --- pkg/cdc/fulltext_sinker_test.go | 26 ++++++++++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) diff --git a/pkg/cdc/fulltext_sinker_test.go b/pkg/cdc/fulltext_sinker_test.go index 1c55c0e3a9c10..253587ea217df 100644 --- a/pkg/cdc/fulltext_sinker_test.go +++ b/pkg/cdc/fulltext_sinker_test.go @@ -50,11 +50,33 @@ func TestNewFulltextSqlWriter(t *testing.T) { writer, err := NewIndexSqlWriter("fulltext", tabledef, tabledef.Indexes) require.Nil(t, err) - row := []any{any(int64(1000)), any([]uint8("hello world")), any(nil)} + row := []any{int64(1000), []uint8("hello world"), nil} err = writer.Upsert(ctx, row) require.Nil(t, err) - row = []any{any(int64(2000)), any([]uint8("hello world")), any(nil)} + row = []any{int64(2000), []uint8("hello world"), nil} + err = writer.Upsert(ctx, row) + require.Nil(t, err) + + bytes, err := writer.ToSql() + require.Nil(t, err) + fmt.Println(string(bytes)) + +} + +func TestNewFulltextSqlWriterCPkey(t *testing.T) { + var ctx context.Context + + tabledef := newTestFulltextTableDef("id", types.T_varbinary, "body", types.T_varchar, 256) + + writer, err := NewIndexSqlWriter("fulltext", tabledef, tabledef.Indexes) + require.Nil(t, err) + + row := []any{[]uint8("abcdef12"), []uint8("hello world"), nil} + err = writer.Upsert(ctx, row) + require.Nil(t, err) + + row = []any{[]uint8("abc"), []uint8("hello world"), nil} err = writer.Upsert(ctx, row) require.Nil(t, err) From c393b7ca5c00a8d12da8de963403ff6a83fea610 Mon Sep 17 00:00:00 2001 From: cpegeric Date: Fri, 20 Jun 2025 11:56:53 +0100 Subject: [PATCH 109/223] update --- pkg/cdc/fulltext_sinker_test.go | 39 ++++++++++++++++++++++++++++++--- 1 file changed, 36 insertions(+), 3 deletions(-) diff --git a/pkg/cdc/fulltext_sinker_test.go b/pkg/cdc/fulltext_sinker_test.go index 253587ea217df..9d373a558f7de 100644 --- a/pkg/cdc/fulltext_sinker_test.go +++ b/pkg/cdc/fulltext_sinker_test.go @@ -42,6 +42,39 @@ func newTestFulltextTableDef(pkName string, pkType types.T, vecColName string, v } } +func newTestFulltextTableDef2Parts(pkName string, pkType types.T, vecColName string, vecColName2 string, vecType types.T, vecWidth int32) *plan.TableDef { + return &plan.TableDef{ + Name: "test_orig_tbl", + Name2ColIndex: map[string]int32{ + pkName: 0, + vecColName: 1, + vecColName2: 2, + "dummy": 3, // Add another col to make sure pk/vec col indices are used + }, + Cols: []*plan.ColDef{ + {Name: pkName, Typ: plan.Type{Id: int32(pkType)}}, + {Name: vecColName, Typ: plan.Type{Id: int32(vecType), Width: vecWidth}}, + {Name: vecColName2, Typ: plan.Type{Id: int32(vecType), Width: vecWidth}}, + {Name: "dummy", Typ: plan.Type{Id: int32(types.T_int32)}}, + }, + Pkey: &plan.PrimaryKeyDef{ + Names: []string{pkName}, + PkeyColName: pkName, + }, + Indexes: []*plan.IndexDef{ + { + IndexName: "fulltext_idx", + TableExist: true, + IndexAlgo: catalog.MOIndexFullTextAlgo.ToString(), + IndexAlgoTableType: "", + IndexTableName: "fulltext_tbl", + Parts: []string{vecColName, vecColName2}, + IndexAlgoParams: `{"parser":"ngram"}`, + }, + }, + } +} + func TestNewFulltextSqlWriter(t *testing.T) { var ctx context.Context @@ -67,16 +100,16 @@ func TestNewFulltextSqlWriter(t *testing.T) { func TestNewFulltextSqlWriterCPkey(t *testing.T) { var ctx context.Context - tabledef := newTestFulltextTableDef("id", types.T_varbinary, "body", types.T_varchar, 256) + tabledef := newTestFulltextTableDef2Parts("__mo_cpkey", types.T_varbinary, "body", "title", types.T_varchar, 256) writer, err := NewIndexSqlWriter("fulltext", tabledef, tabledef.Indexes) require.Nil(t, err) - row := []any{[]uint8("abcdef12"), []uint8("hello world"), nil} + row := []any{[]uint8("abcdef12"), []uint8("hello world"), []uint8("one title"), nil} err = writer.Upsert(ctx, row) require.Nil(t, err) - row = []any{[]uint8("abc"), []uint8("hello world"), nil} + row = []any{[]uint8("abc"), []uint8("hello world"), []uint8("two title"), nil} err = writer.Upsert(ctx, row) require.Nil(t, err) From dabe24b9638e7c22d6e06c149b9d92129b13b520 Mon Sep 17 00:00:00 2001 From: cpegeric Date: Fri, 20 Jun 2025 12:22:00 +0100 Subject: [PATCH 110/223] update --- pkg/cdc/index_sqlwriter.go | 39 ++++++++++++++++++++++++-------------- 1 file changed, 25 insertions(+), 14 deletions(-) diff --git a/pkg/cdc/index_sqlwriter.go b/pkg/cdc/index_sqlwriter.go index 6b96024ffdd7d..00b7e67c75049 100644 --- a/pkg/cdc/index_sqlwriter.go +++ b/pkg/cdc/index_sqlwriter.go @@ -20,7 +20,9 @@ type IndexSqlWriter interface { ToSql() ([]byte, error) } -type FulltextSqlWriter struct { +type BaseIndexSqlWriter struct { + lastCdcOp string + vbuf []byte param string tabledef *plan.TableDef indexdef []*plan.IndexDef @@ -31,9 +33,10 @@ type FulltextSqlWriter struct { partsType []*types.Type srcPos []int32 srcType []*types.Type - lastCdcOp string - buf []byte - vbuf []byte +} + +type FulltextSqlWriter struct { + BaseIndexSqlWriter } // check FulltextSqlWriter is the interface of IndexSqlWriter @@ -53,7 +56,7 @@ func NewIndexSqlWriter(algo string, tabledef *plan.TableDef, indexdef []*plan.In } func NewFulltextSqlWriter(algo string, tabledef *plan.TableDef, indexdef []*plan.IndexDef) (IndexSqlWriter, error) { - w := &FulltextSqlWriter{algo: algo, tabledef: tabledef, indexdef: indexdef, vbuf: make([]byte, 0, 1024)} + w := &FulltextSqlWriter{BaseIndexSqlWriter: BaseIndexSqlWriter{algo: algo, tabledef: tabledef, indexdef: indexdef, vbuf: make([]byte, 0, 1024)}} w.pkPos = tabledef.Name2ColIndex[tabledef.Pkey.PkeyColName] typ := tabledef.Cols[w.pkPos].Typ @@ -82,16 +85,16 @@ func NewFulltextSqlWriter(algo string, tabledef *plan.TableDef, indexdef []*plan return w, nil } -func (w *FulltextSqlWriter) Full() bool { +func (w *BaseIndexSqlWriter) Full() bool { return false } // return true when last op is empty or last op == current op -func (w *FulltextSqlWriter) CheckLastOp(op string) bool { +func (w *BaseIndexSqlWriter) CheckLastOp(op string) bool { return len(w.lastCdcOp) == 0 || w.lastCdcOp == op } -func (w *FulltextSqlWriter) writeRow(ctx context.Context, row []any) error { +func (w *BaseIndexSqlWriter) writeRow(ctx context.Context, row []any) error { var err error w.vbuf = appendString(w.vbuf, "ROW(") @@ -115,7 +118,7 @@ func (w *FulltextSqlWriter) writeRow(ctx context.Context, row []any) error { return nil } -func (w *FulltextSqlWriter) Upsert(ctx context.Context, row []any) error { +func (w *BaseIndexSqlWriter) Upsert(ctx context.Context, row []any) error { if len(w.lastCdcOp) == 0 { // init @@ -134,7 +137,7 @@ func (w *FulltextSqlWriter) Upsert(ctx context.Context, row []any) error { return w.writeRow(ctx, row) } -func (w *FulltextSqlWriter) Insert(ctx context.Context, row []any) error { +func (w *BaseIndexSqlWriter) Insert(ctx context.Context, row []any) error { if len(w.lastCdcOp) == 0 { // init @@ -155,7 +158,7 @@ func (w *FulltextSqlWriter) Insert(ctx context.Context, row []any) error { return nil } -func (w *FulltextSqlWriter) Delete(ctx context.Context, row []any) error { +func (w *BaseIndexSqlWriter) Delete(ctx context.Context, row []any) error { var err error if len(w.lastCdcOp) == 0 { @@ -195,8 +198,9 @@ func (w *FulltextSqlWriter) ToFulltextSql() ([]byte, error) { switch w.lastCdcOp { case vectorindex.CDC_DELETE: case vectorindex.CDC_UPSERT: - return w.ToFulltextUpsert() + return w.ToFulltextUpsert(true) case vectorindex.CDC_INSERT: + return w.ToFulltextUpsert(false) default: return nil, moerr.NewInternalErrorNoCtx("FulltextSqlWriter: invalid CDC type") } @@ -204,7 +208,7 @@ func (w *FulltextSqlWriter) ToFulltextSql() ([]byte, error) { return nil, nil } -func (w *FulltextSqlWriter) ToFulltextUpsert() ([]byte, error) { +func (w *FulltextSqlWriter) ToFulltextUpsert(upsert bool) ([]byte, error) { var sql string @@ -219,7 +223,14 @@ func (w *FulltextSqlWriter) ToFulltextUpsert() ([]byte, error) { cols := strings.Join(coldefs, ", ") cnames_str := strings.Join(cnames, ", ") - //sql += fmt.Sprintf("REPLACE INTO %s ", tablename) + /* + if upsert { + sql += fmt.Sprintf("REPLACE INTO %s ", tablename) + } else { + sql += fmt.Sprintf("INSERT INTO %s ", tablename) + } + */ + sql += fmt.Sprintf("WITH src as (SELECT %s FROM (VALUES %s)) ", cols, string(w.vbuf)) sql += fmt.Sprintf("SELECT f.* FROM src CROSS APPLY fulltext_index_tokenize('%s', %d, %s) as f", w.param, w.pkType.Oid, cnames_str) From 56bc1df2cfe6494e54f13d9b6279c0a9288ba9d2 Mon Sep 17 00:00:00 2001 From: cpegeric Date: Fri, 20 Jun 2025 12:25:19 +0100 Subject: [PATCH 111/223] update ivfflat --- pkg/cdc/index_sqlwriter.go | 32 +++++++++++++------------------- 1 file changed, 13 insertions(+), 19 deletions(-) diff --git a/pkg/cdc/index_sqlwriter.go b/pkg/cdc/index_sqlwriter.go index 00b7e67c75049..44f8d7f4cbbc8 100644 --- a/pkg/cdc/index_sqlwriter.go +++ b/pkg/cdc/index_sqlwriter.go @@ -39,8 +39,13 @@ type FulltextSqlWriter struct { BaseIndexSqlWriter } +type IvfflatSqlWriter struct { + BaseIndexSqlWriter +} + // check FulltextSqlWriter is the interface of IndexSqlWriter var _ IndexSqlWriter = new(FulltextSqlWriter) +var _ IndexSqlWriter = new(IvfflatSqlWriter) // check algo type to return the correct sql writer func NewIndexSqlWriter(algo string, tabledef *plan.TableDef, indexdef []*plan.IndexDef) (IndexSqlWriter, error) { @@ -189,7 +194,10 @@ func (w *BaseIndexSqlWriter) Delete(ctx context.Context, row []any) error { // with src as (select cast(serial(cast(column_0 as bigint), cast(column_1 as bigint)) as varchar) as id, column_2 as body, column_3 as title from // (values row(1, 2, 'body', 'title'), row(2, 3, 'body is heavy', 'I do not know'))) select f.* from src // cross apply fulltext_index_tokenize('{"parser":"ngram"}', 61, id, body, title) as f; -func (w *FulltextSqlWriter) ToFulltextSql() ([]byte, error) { +func (w *FulltextSqlWriter) ToSql() ([]byte, error) { + defer func() { + w.lastCdcOp = "" + }() if len(w.lastCdcOp) == 0 { return nil, nil @@ -242,7 +250,10 @@ func (w *FulltextSqlWriter) ToFulltextUpsert(upsert bool) ([]byte, error) { // with centroid as (select * from __mo_index_secondary_0197786c-285f-70bb-b277-2cef56da590a where __mo_index_centroid_version = 0), // src as (select column_0 as id, cast(column_1 as vecf32(3)) as embed from (values row(2005,'[0.4532634, 0.7297859, 0.48885703]'), row(2009, '[0.68150306, 0.6950923, 0.16590895] '))) // select __mo_index_centroid_version, __mo_index_centroid_id, id, embed from src centroidx('vector_l2_ops') join centroid using (__mo_index_centroid, embed); -func (w *FulltextSqlWriter) ToIvfflatSql() ([]byte, error) { +func (w *IvfflatSqlWriter) ToSql() ([]byte, error) { + defer func() { + w.lastCdcOp = "" + }() if len(w.lastCdcOp) == 0 { return nil, nil } @@ -257,20 +268,3 @@ func (w *FulltextSqlWriter) ToIvfflatSql() ([]byte, error) { return nil, nil } - -func (w *FulltextSqlWriter) ToSql() ([]byte, error) { - defer func() { - w.lastCdcOp = "" - }() - switch w.algo { - case "fulltext": - return w.ToFulltextSql() - case "ivfflat": - return w.ToIvfflatSql() - default: - return nil, moerr.NewInternalErrorNoCtx("invalid algorithm type.") - - } - - return nil, nil -} From 5e0a2bdee95559b218bee5fa481b82935a956247 Mon Sep 17 00:00:00 2001 From: cpegeric Date: Fri, 20 Jun 2025 12:26:37 +0100 Subject: [PATCH 112/223] update ivfflat --- pkg/cdc/index_sqlwriter.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkg/cdc/index_sqlwriter.go b/pkg/cdc/index_sqlwriter.go index 44f8d7f4cbbc8..70957de8a5907 100644 --- a/pkg/cdc/index_sqlwriter.go +++ b/pkg/cdc/index_sqlwriter.go @@ -206,9 +206,9 @@ func (w *FulltextSqlWriter) ToSql() ([]byte, error) { switch w.lastCdcOp { case vectorindex.CDC_DELETE: case vectorindex.CDC_UPSERT: - return w.ToFulltextUpsert(true) + return w.toFulltextUpsert(true) case vectorindex.CDC_INSERT: - return w.ToFulltextUpsert(false) + return w.toFulltextUpsert(false) default: return nil, moerr.NewInternalErrorNoCtx("FulltextSqlWriter: invalid CDC type") } @@ -216,7 +216,7 @@ func (w *FulltextSqlWriter) ToSql() ([]byte, error) { return nil, nil } -func (w *FulltextSqlWriter) ToFulltextUpsert(upsert bool) ([]byte, error) { +func (w *FulltextSqlWriter) toFulltextUpsert(upsert bool) ([]byte, error) { var sql string From 56b6a28ce44b5cf20ded5bbdd2ed03620c1a74e1 Mon Sep 17 00:00:00 2001 From: cpegeric Date: Fri, 20 Jun 2025 13:03:47 +0100 Subject: [PATCH 113/223] update --- pkg/cdc/index_sqlwriter.go | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/pkg/cdc/index_sqlwriter.go b/pkg/cdc/index_sqlwriter.go index 70957de8a5907..35ceb1cacbd4a 100644 --- a/pkg/cdc/index_sqlwriter.go +++ b/pkg/cdc/index_sqlwriter.go @@ -33,10 +33,12 @@ type BaseIndexSqlWriter struct { partsType []*types.Type srcPos []int32 srcType []*types.Type + dbName string } type FulltextSqlWriter struct { BaseIndexSqlWriter + indexTableName string } type IvfflatSqlWriter struct { @@ -87,6 +89,9 @@ func NewFulltextSqlWriter(algo string, tabledef *plan.TableDef, indexdef []*plan w.srcType[i+1] = w.partsType[i] } + w.indexTableName = w.indexdef[0].IndexTableName + w.dbName = tabledef.DbName + return w, nil } @@ -224,20 +229,18 @@ func (w *FulltextSqlWriter) toFulltextUpsert(upsert bool) ([]byte, error) { cnames := make([]string, 0, len(w.srcPos)) for i, pos := range w.srcPos { typstr := w.srcType[i].DescString() - coldefs = append(coldefs, fmt.Sprintf("CAST(column_%d as %s) as %s", i, typstr, w.tabledef.Cols[pos].Name)) + coldefs = append(coldefs, fmt.Sprintf("CAST(column_%d as %s) as `%s`", i, typstr, w.tabledef.Cols[pos].Name)) cnames = append(cnames, w.tabledef.Cols[pos].Name) } cols := strings.Join(coldefs, ", ") cnames_str := strings.Join(cnames, ", ") - /* - if upsert { - sql += fmt.Sprintf("REPLACE INTO %s ", tablename) - } else { - sql += fmt.Sprintf("INSERT INTO %s ", tablename) - } - */ + if upsert { + sql += fmt.Sprintf("REPLACE INTO `%s`.`%s` ", w.dbName, w.indexTableName) + } else { + sql += fmt.Sprintf("INSERT INTO `%s`.`%s` ", w.dbName, w.indexTableName) + } sql += fmt.Sprintf("WITH src as (SELECT %s FROM (VALUES %s)) ", cols, string(w.vbuf)) sql += fmt.Sprintf("SELECT f.* FROM src CROSS APPLY fulltext_index_tokenize('%s', %d, %s) as f", w.param, w.pkType.Oid, cnames_str) From 04097a4cfaa011937fc48346ef78f24fbd7f0e4b Mon Sep 17 00:00:00 2001 From: cpegeric Date: Fri, 20 Jun 2025 13:05:32 +0100 Subject: [PATCH 114/223] add db --- pkg/cdc/fulltext_sinker_test.go | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pkg/cdc/fulltext_sinker_test.go b/pkg/cdc/fulltext_sinker_test.go index 9d373a558f7de..254d7392eea4e 100644 --- a/pkg/cdc/fulltext_sinker_test.go +++ b/pkg/cdc/fulltext_sinker_test.go @@ -39,6 +39,7 @@ func newTestFulltextTableDef(pkName string, pkType types.T, vecColName string, v IndexAlgoParams: `{"parser":"ngram"}`, }, }, + DbName: "mydb", } } @@ -72,6 +73,7 @@ func newTestFulltextTableDef2Parts(pkName string, pkType types.T, vecColName str IndexAlgoParams: `{"parser":"ngram"}`, }, }, + DbName: "mydb", } } From 9210d80d084a56a3f6011c3ff260681449e48dd9 Mon Sep 17 00:00:00 2001 From: cpegeric Date: Fri, 20 Jun 2025 13:20:12 +0100 Subject: [PATCH 115/223] reset --- pkg/cdc/index_sqlwriter.go | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/pkg/cdc/index_sqlwriter.go b/pkg/cdc/index_sqlwriter.go index 35ceb1cacbd4a..bdf728790831d 100644 --- a/pkg/cdc/index_sqlwriter.go +++ b/pkg/cdc/index_sqlwriter.go @@ -18,6 +18,7 @@ type IndexSqlWriter interface { Delete(ctx context.Context, row []any) error Full() bool ToSql() ([]byte, error) + Reset() } type BaseIndexSqlWriter struct { @@ -196,13 +197,16 @@ func (w *BaseIndexSqlWriter) Delete(ctx context.Context, row []any) error { return nil } +func (w *BaseIndexSqlWriter) Reset() { + w.lastCdcOp = "" + w.vbuf = w.vbuf[0:] +} + // with src as (select cast(serial(cast(column_0 as bigint), cast(column_1 as bigint)) as varchar) as id, column_2 as body, column_3 as title from // (values row(1, 2, 'body', 'title'), row(2, 3, 'body is heavy', 'I do not know'))) select f.* from src // cross apply fulltext_index_tokenize('{"parser":"ngram"}', 61, id, body, title) as f; func (w *FulltextSqlWriter) ToSql() ([]byte, error) { - defer func() { - w.lastCdcOp = "" - }() + defer w.Reset() if len(w.lastCdcOp) == 0 { return nil, nil @@ -254,9 +258,8 @@ func (w *FulltextSqlWriter) toFulltextUpsert(upsert bool) ([]byte, error) { // src as (select column_0 as id, cast(column_1 as vecf32(3)) as embed from (values row(2005,'[0.4532634, 0.7297859, 0.48885703]'), row(2009, '[0.68150306, 0.6950923, 0.16590895] '))) // select __mo_index_centroid_version, __mo_index_centroid_id, id, embed from src centroidx('vector_l2_ops') join centroid using (__mo_index_centroid, embed); func (w *IvfflatSqlWriter) ToSql() ([]byte, error) { - defer func() { - w.lastCdcOp = "" - }() + defer w.Reset() + if len(w.lastCdcOp) == 0 { return nil, nil } From 5aa47129401583df683f00de80fbcd98659cb609 Mon Sep 17 00:00:00 2001 From: cpegeric Date: Fri, 20 Jun 2025 13:23:40 +0100 Subject: [PATCH 116/223] empty --- pkg/cdc/index_sqlwriter.go | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/pkg/cdc/index_sqlwriter.go b/pkg/cdc/index_sqlwriter.go index bdf728790831d..7839d1539aee5 100644 --- a/pkg/cdc/index_sqlwriter.go +++ b/pkg/cdc/index_sqlwriter.go @@ -19,6 +19,7 @@ type IndexSqlWriter interface { Full() bool ToSql() ([]byte, error) Reset() + Empty() bool } type BaseIndexSqlWriter struct { @@ -202,6 +203,10 @@ func (w *BaseIndexSqlWriter) Reset() { w.vbuf = w.vbuf[0:] } +func (w *BaseIndexSqlWriter) Empty() bool { + return len(w.vbuf) == 0 +} + // with src as (select cast(serial(cast(column_0 as bigint), cast(column_1 as bigint)) as varchar) as id, column_2 as body, column_3 as title from // (values row(1, 2, 'body', 'title'), row(2, 3, 'body is heavy', 'I do not know'))) select f.* from src // cross apply fulltext_index_tokenize('{"parser":"ngram"}', 61, id, body, title) as f; From 09de3b1eb3e63cb7e1dd0eeae9ddab869a3ab89c Mon Sep 17 00:00:00 2001 From: cpegeric Date: Fri, 20 Jun 2025 13:38:07 +0100 Subject: [PATCH 117/223] hnsw sql writer --- pkg/cdc/index_sqlwriter.go | 45 +++++++++++++++++++++++++++++++++++++- 1 file changed, 44 insertions(+), 1 deletion(-) diff --git a/pkg/cdc/index_sqlwriter.go b/pkg/cdc/index_sqlwriter.go index 7839d1539aee5..17167c3ea099a 100644 --- a/pkg/cdc/index_sqlwriter.go +++ b/pkg/cdc/index_sqlwriter.go @@ -47,9 +47,15 @@ type IvfflatSqlWriter struct { BaseIndexSqlWriter } +type HnswSqlWriter struct { + cdc *vectorindex.VectorIndexCdc[float32] + meta vectorindex.HnswCdcParam +} + // check FulltextSqlWriter is the interface of IndexSqlWriter var _ IndexSqlWriter = new(FulltextSqlWriter) var _ IndexSqlWriter = new(IvfflatSqlWriter) +var _ IndexSqlWriter = new(HnswSqlWriter) // check algo type to return the correct sql writer func NewIndexSqlWriter(algo string, tabledef *plan.TableDef, indexdef []*plan.IndexDef) (IndexSqlWriter, error) { @@ -200,7 +206,7 @@ func (w *BaseIndexSqlWriter) Delete(ctx context.Context, row []any) error { func (w *BaseIndexSqlWriter) Reset() { w.lastCdcOp = "" - w.vbuf = w.vbuf[0:] + w.vbuf = w.vbuf[:0] } func (w *BaseIndexSqlWriter) Empty() bool { @@ -279,3 +285,40 @@ func (w *IvfflatSqlWriter) ToSql() ([]byte, error) { return nil, nil } + +func NewHnswSqlWriter(algo string, tabledef *plan.TableDef, indexdef []*plan.IndexDef) (IndexSqlWriter, error) { + return &HnswSqlWriter{cdc: vectorindex.NewVectorIndexCdc[float32]()}, nil +} + +func (w *HnswSqlWriter) Reset() { + w.cdc.Data = w.cdc.Data[:0] +} + +func (w *HnswSqlWriter) Full() bool { + return len(w.cdc.Data) >= cap(w.cdc.Data) +} + +func (w *HnswSqlWriter) Empty() bool { + return len(w.cdc.Data) == 0 +} + +func (w *HnswSqlWriter) CheckLastOp(op string) bool { + return true +} + +func (w *HnswSqlWriter) Insert(ctx context.Context, row []any) error { + return nil +} + +func (w *HnswSqlWriter) Upsert(ctx context.Context, row []any) error { + return nil +} + +func (w *HnswSqlWriter) Delete(ctx context.Context, row []any) error { + return nil +} + +func (w *HnswSqlWriter) ToSql() ([]byte, error) { + + return nil, nil +} From 5a664e62d0aaab4d4d9bbe2588d0bfb3e968cc37 Mon Sep 17 00:00:00 2001 From: cpegeric Date: Fri, 20 Jun 2025 14:29:17 +0100 Subject: [PATCH 118/223] update hnsw --- pkg/cdc/index_sqlwriter.go | 48 +++++++++++++++++++++++++++++++++++--- 1 file changed, 45 insertions(+), 3 deletions(-) diff --git a/pkg/cdc/index_sqlwriter.go b/pkg/cdc/index_sqlwriter.go index 17167c3ea099a..d4500964f4907 100644 --- a/pkg/cdc/index_sqlwriter.go +++ b/pkg/cdc/index_sqlwriter.go @@ -48,8 +48,17 @@ type IvfflatSqlWriter struct { } type HnswSqlWriter struct { - cdc *vectorindex.VectorIndexCdc[float32] - meta vectorindex.HnswCdcParam + cdc *vectorindex.VectorIndexCdc[float32] + meta vectorindex.HnswCdcParam + tabledef *plan.TableDef + indexdef []*plan.IndexDef + pkPos int32 + pkType *types.Type + partsPos []int32 + partsType []*types.Type + srcPos []int32 + srcType []*types.Type + dbName string } // check FulltextSqlWriter is the interface of IndexSqlWriter @@ -307,18 +316,51 @@ func (w *HnswSqlWriter) CheckLastOp(op string) bool { } func (w *HnswSqlWriter) Insert(ctx context.Context, row []any) error { + key, ok := row[w.pkPos].(int64) + if !ok { + return moerr.NewInternalError(ctx, "invalid key type. not int64") + } + v, ok := row[w.partsPos[0]].([]float32) + if !ok { + return moerr.NewInternalError(ctx, "invalid vector type. not []float32") + } + + w.cdc.Insert(key, v) return nil } func (w *HnswSqlWriter) Upsert(ctx context.Context, row []any) error { + key, ok := row[w.pkPos].(int64) + if !ok { + return moerr.NewInternalError(ctx, "invalid key type. not int64") + } + v, ok := row[w.partsPos[0]].([]float32) + if !ok { + return moerr.NewInternalError(ctx, "invalid vector type. not []float32") + } + + w.cdc.Upsert(key, v) return nil } func (w *HnswSqlWriter) Delete(ctx context.Context, row []any) error { + key, ok := row[w.pkPos].(int64) + if !ok { + return moerr.NewInternalError(ctx, "invalid key type. not int64") + } + w.cdc.Delete(key) return nil } func (w *HnswSqlWriter) ToSql() ([]byte, error) { - return nil, nil + // generate sql from cdc + js, err := w.cdc.ToJson() + if err != nil { + return nil, err + } + // pad extra space at the front and send SQL + sql := fmt.Sprintf("SELECT hnsw_cdc_update('%s', '%s', %d, '%s');", w.meta.DbName, w.meta.Table, w.meta.Dimension, js) + + return []byte(sql), nil } From 77037ae5d32eedaaebf2faa0d1ea227dba32d49a Mon Sep 17 00:00:00 2001 From: cpegeric Date: Fri, 20 Jun 2025 14:42:40 +0100 Subject: [PATCH 119/223] template --- pkg/cdc/index_sqlwriter.go | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/pkg/cdc/index_sqlwriter.go b/pkg/cdc/index_sqlwriter.go index d4500964f4907..a2c7408cbadf7 100644 --- a/pkg/cdc/index_sqlwriter.go +++ b/pkg/cdc/index_sqlwriter.go @@ -47,8 +47,8 @@ type IvfflatSqlWriter struct { BaseIndexSqlWriter } -type HnswSqlWriter struct { - cdc *vectorindex.VectorIndexCdc[float32] +type HnswSqlWriter[T types.RealNumbers] struct { + cdc *vectorindex.VectorIndexCdc[T] meta vectorindex.HnswCdcParam tabledef *plan.TableDef indexdef []*plan.IndexDef @@ -64,7 +64,7 @@ type HnswSqlWriter struct { // check FulltextSqlWriter is the interface of IndexSqlWriter var _ IndexSqlWriter = new(FulltextSqlWriter) var _ IndexSqlWriter = new(IvfflatSqlWriter) -var _ IndexSqlWriter = new(HnswSqlWriter) +var _ IndexSqlWriter = new(HnswSqlWriter[float32]) // check algo type to return the correct sql writer func NewIndexSqlWriter(algo string, tabledef *plan.TableDef, indexdef []*plan.IndexDef) (IndexSqlWriter, error) { @@ -296,31 +296,31 @@ func (w *IvfflatSqlWriter) ToSql() ([]byte, error) { } func NewHnswSqlWriter(algo string, tabledef *plan.TableDef, indexdef []*plan.IndexDef) (IndexSqlWriter, error) { - return &HnswSqlWriter{cdc: vectorindex.NewVectorIndexCdc[float32]()}, nil + return &HnswSqlWriter[float32]{cdc: vectorindex.NewVectorIndexCdc[float32]()}, nil } -func (w *HnswSqlWriter) Reset() { +func (w *HnswSqlWriter[T]) Reset() { w.cdc.Data = w.cdc.Data[:0] } -func (w *HnswSqlWriter) Full() bool { +func (w *HnswSqlWriter[T]) Full() bool { return len(w.cdc.Data) >= cap(w.cdc.Data) } -func (w *HnswSqlWriter) Empty() bool { +func (w *HnswSqlWriter[T]) Empty() bool { return len(w.cdc.Data) == 0 } -func (w *HnswSqlWriter) CheckLastOp(op string) bool { +func (w *HnswSqlWriter[T]) CheckLastOp(op string) bool { return true } -func (w *HnswSqlWriter) Insert(ctx context.Context, row []any) error { +func (w *HnswSqlWriter[T]) Insert(ctx context.Context, row []any) error { key, ok := row[w.pkPos].(int64) if !ok { return moerr.NewInternalError(ctx, "invalid key type. not int64") } - v, ok := row[w.partsPos[0]].([]float32) + v, ok := row[w.partsPos[0]].([]T) if !ok { return moerr.NewInternalError(ctx, "invalid vector type. not []float32") } @@ -329,12 +329,12 @@ func (w *HnswSqlWriter) Insert(ctx context.Context, row []any) error { return nil } -func (w *HnswSqlWriter) Upsert(ctx context.Context, row []any) error { +func (w *HnswSqlWriter[T]) Upsert(ctx context.Context, row []any) error { key, ok := row[w.pkPos].(int64) if !ok { return moerr.NewInternalError(ctx, "invalid key type. not int64") } - v, ok := row[w.partsPos[0]].([]float32) + v, ok := row[w.partsPos[0]].([]T) if !ok { return moerr.NewInternalError(ctx, "invalid vector type. not []float32") } @@ -343,7 +343,7 @@ func (w *HnswSqlWriter) Upsert(ctx context.Context, row []any) error { return nil } -func (w *HnswSqlWriter) Delete(ctx context.Context, row []any) error { +func (w *HnswSqlWriter[T]) Delete(ctx context.Context, row []any) error { key, ok := row[w.pkPos].(int64) if !ok { return moerr.NewInternalError(ctx, "invalid key type. not int64") @@ -352,7 +352,7 @@ func (w *HnswSqlWriter) Delete(ctx context.Context, row []any) error { return nil } -func (w *HnswSqlWriter) ToSql() ([]byte, error) { +func (w *HnswSqlWriter[T]) ToSql() ([]byte, error) { // generate sql from cdc js, err := w.cdc.ToJson() From 5200881e05be151a5903db6c01183814e43dbcae Mon Sep 17 00:00:00 2001 From: cpegeric Date: Fri, 20 Jun 2025 15:08:27 +0100 Subject: [PATCH 120/223] update --- pkg/cdc/fulltext_sinker_test.go | 6 ++- pkg/cdc/index_sqlwriter.go | 90 ++++++++++++++++++++++++++++++--- 2 files changed, 88 insertions(+), 8 deletions(-) diff --git a/pkg/cdc/fulltext_sinker_test.go b/pkg/cdc/fulltext_sinker_test.go index 254d7392eea4e..a29d072f94fa0 100644 --- a/pkg/cdc/fulltext_sinker_test.go +++ b/pkg/cdc/fulltext_sinker_test.go @@ -81,8 +81,9 @@ func TestNewFulltextSqlWriter(t *testing.T) { var ctx context.Context tabledef := newTestFulltextTableDef("id", types.T_int64, "body", types.T_varchar, 256) + dbTableInfo := newTestDbTableInfo() - writer, err := NewIndexSqlWriter("fulltext", tabledef, tabledef.Indexes) + writer, err := NewIndexSqlWriter("fulltext", dbTableInfo, tabledef, tabledef.Indexes) require.Nil(t, err) row := []any{int64(1000), []uint8("hello world"), nil} @@ -103,8 +104,9 @@ func TestNewFulltextSqlWriterCPkey(t *testing.T) { var ctx context.Context tabledef := newTestFulltextTableDef2Parts("__mo_cpkey", types.T_varbinary, "body", "title", types.T_varchar, 256) + dbTableInfo := newTestDbTableInfo() - writer, err := NewIndexSqlWriter("fulltext", tabledef, tabledef.Indexes) + writer, err := NewIndexSqlWriter("fulltext", dbTableInfo, tabledef, tabledef.Indexes) require.Nil(t, err) row := []any{[]uint8("abcdef12"), []uint8("hello world"), []uint8("one title"), nil} diff --git a/pkg/cdc/index_sqlwriter.go b/pkg/cdc/index_sqlwriter.go index a2c7408cbadf7..ee43878659754 100644 --- a/pkg/cdc/index_sqlwriter.go +++ b/pkg/cdc/index_sqlwriter.go @@ -2,9 +2,11 @@ package cdc import ( "context" + "encoding/json" "fmt" "strings" + "github.com/matrixorigin/matrixone/pkg/catalog" "github.com/matrixorigin/matrixone/pkg/common/moerr" "github.com/matrixorigin/matrixone/pkg/container/types" "github.com/matrixorigin/matrixone/pkg/pb/plan" @@ -28,6 +30,7 @@ type BaseIndexSqlWriter struct { param string tabledef *plan.TableDef indexdef []*plan.IndexDef + dbTblInfo *DbTableInfo algo string pkPos int32 pkType *types.Type @@ -52,6 +55,7 @@ type HnswSqlWriter[T types.RealNumbers] struct { meta vectorindex.HnswCdcParam tabledef *plan.TableDef indexdef []*plan.IndexDef + dbTblInfo *DbTableInfo pkPos int32 pkType *types.Type partsPos []int32 @@ -67,10 +71,10 @@ var _ IndexSqlWriter = new(IvfflatSqlWriter) var _ IndexSqlWriter = new(HnswSqlWriter[float32]) // check algo type to return the correct sql writer -func NewIndexSqlWriter(algo string, tabledef *plan.TableDef, indexdef []*plan.IndexDef) (IndexSqlWriter, error) { +func NewIndexSqlWriter(algo string, dbTblInfo *DbTableInfo, tabledef *plan.TableDef, indexdef []*plan.IndexDef) (IndexSqlWriter, error) { switch algo { case "fulltext": - return NewFulltextSqlWriter(algo, tabledef, indexdef) + return NewFulltextSqlWriter(algo, dbTblInfo, tabledef, indexdef) case "ivfflat": default: return IndexSqlWriter(nil), moerr.NewInternalErrorNoCtx("IndexSqlWriter: invalid algo type") @@ -79,8 +83,8 @@ func NewIndexSqlWriter(algo string, tabledef *plan.TableDef, indexdef []*plan.In return IndexSqlWriter(nil), moerr.NewInternalErrorNoCtx("IndexSqlWriter: invalid algo type") } -func NewFulltextSqlWriter(algo string, tabledef *plan.TableDef, indexdef []*plan.IndexDef) (IndexSqlWriter, error) { - w := &FulltextSqlWriter{BaseIndexSqlWriter: BaseIndexSqlWriter{algo: algo, tabledef: tabledef, indexdef: indexdef, vbuf: make([]byte, 0, 1024)}} +func NewFulltextSqlWriter(algo string, dbTblInfo *DbTableInfo, tabledef *plan.TableDef, indexdef []*plan.IndexDef) (IndexSqlWriter, error) { + w := &FulltextSqlWriter{BaseIndexSqlWriter: BaseIndexSqlWriter{algo: algo, tabledef: tabledef, indexdef: indexdef, dbTblInfo: dbTblInfo, vbuf: make([]byte, 0, 1024)}} w.pkPos = tabledef.Name2ColIndex[tabledef.Pkey.PkeyColName] typ := tabledef.Cols[w.pkPos].Typ @@ -295,8 +299,82 @@ func (w *IvfflatSqlWriter) ToSql() ([]byte, error) { return nil, nil } -func NewHnswSqlWriter(algo string, tabledef *plan.TableDef, indexdef []*plan.IndexDef) (IndexSqlWriter, error) { - return &HnswSqlWriter[float32]{cdc: vectorindex.NewVectorIndexCdc[float32]()}, nil +func NewHnswSqlWriter(algo string, dbTblInfo *DbTableInfo, tabledef *plan.TableDef, indexdef []*plan.IndexDef) (IndexSqlWriter, error) { + w := &HnswSqlWriter[float32]{tabledef: tabledef, indexdef: indexdef, dbTblInfo: dbTblInfo, cdc: vectorindex.NewVectorIndexCdc[float32]()} + + // check the tabledef and indexdef + if len(tabledef.Pkey.Names) != 1 { + return nil, moerr.NewInternalErrorNoCtx("hnsw index table only have one primary key") + } + + if len(indexdef) != 2 { + return nil, moerr.NewInternalErrorNoCtx("hnsw index table must have 2 secondary tables") + } + + idxdef := indexdef[0] + if len(idxdef.Parts) != 1 { + return nil, moerr.NewInternalErrorNoCtx("hnsw index table only have one vector part") + } + + paramstr := idxdef.IndexAlgoParams + var meta, storage string + for _, idx := range indexdef { + if idx.IndexAlgoTableType == catalog.Hnsw_TblType_Metadata { + meta = idx.IndexTableName + } + if idx.IndexAlgoTableType == catalog.Hnsw_TblType_Storage { + storage = idx.IndexTableName + } + } + + if len(meta) == 0 || len(storage) == 0 { + return nil, moerr.NewInternalErrorNoCtx("hnsw index table either meta or storage hidden index table not exist") + } + + var hnswparam vectorindex.HnswParam + if len(paramstr) > 0 { + err := json.Unmarshal([]byte(paramstr), &hnswparam) + if err != nil { + return nil, moerr.NewInternalErrorNoCtx("hnsw sync sinker. failed to convert hnsw param json") + } + } + + w.pkPos = tabledef.Name2ColIndex[tabledef.Pkey.PkeyColName] + typ := tabledef.Cols[w.pkPos].Typ + w.pkType = &types.Type{Oid: types.T(typ.Id), Width: typ.Width, Scale: typ.Scale} + + nparts := len(idxdef.Parts) + w.partsPos = make([]int32, nparts) + w.partsType = make([]*types.Type, nparts) + + for i, part := range idxdef.Parts { + w.partsPos[i] = tabledef.Name2ColIndex[part] + typ = tabledef.Cols[w.partsPos[i]].Typ + w.partsType[i] = &types.Type{Oid: types.T(typ.Id), Width: typ.Width, Scale: typ.Scale} + } + + w.srcPos = make([]int32, nparts+1) + w.srcType = make([]*types.Type, nparts+1) + + w.srcPos[0] = w.pkPos + w.srcType[0] = w.pkType + for i := range w.partsType { + w.srcPos[i+1] = w.partsPos[i] + w.srcType[i+1] = w.partsType[i] + } + + w.dbName = tabledef.DbName + + w.meta = vectorindex.HnswCdcParam{ + MetaTbl: meta, + IndexTbl: storage, + DbName: dbTblInfo.SinkDbName, + Table: dbTblInfo.SinkTblName, + Params: hnswparam, + Dimension: tabledef.Cols[w.partsPos[0]].Typ.Width, + } + + return w, nil } func (w *HnswSqlWriter[T]) Reset() { From fa5023232a081a1f1cc7f9d62a12e542c1f51bfa Mon Sep 17 00:00:00 2001 From: cpegeric Date: Fri, 20 Jun 2025 15:14:25 +0100 Subject: [PATCH 121/223] add test --- pkg/cdc/fulltext_sinker_test.go | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/pkg/cdc/fulltext_sinker_test.go b/pkg/cdc/fulltext_sinker_test.go index a29d072f94fa0..248942080b50f 100644 --- a/pkg/cdc/fulltext_sinker_test.go +++ b/pkg/cdc/fulltext_sinker_test.go @@ -122,3 +122,24 @@ func TestNewFulltextSqlWriterCPkey(t *testing.T) { fmt.Println(string(bytes)) } + +func TestNewHnswSqlWriter(t *testing.T) { + var ctx context.Context + + tabledef := newTestTableDef("pk", types.T_int64, "vec", types.T_array_float32, 3) + dbTableInfo := newTestDbTableInfo() + + writer, err := NewHnswSqlWriter("fulltext", dbTableInfo, tabledef, tabledef.Indexes) + require.Nil(t, err) + row := []any{int64(1000), []float32{1, 2, 3}, nil} + err = writer.Upsert(ctx, row) + require.Nil(t, err) + + row = []any{int64(2000), []float32{5, 6, 7}, nil} + err = writer.Upsert(ctx, row) + require.Nil(t, err) + + bytes, err := writer.ToSql() + require.Nil(t, err) + fmt.Println(string(bytes)) +} From cfe6a0bbf2d359e06b95e34cfbf00f9134fd5e59 Mon Sep 17 00:00:00 2001 From: cpegeric Date: Fri, 20 Jun 2025 15:20:13 +0100 Subject: [PATCH 122/223] update test --- pkg/cdc/fulltext_sinker_test.go | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/pkg/cdc/fulltext_sinker_test.go b/pkg/cdc/fulltext_sinker_test.go index 248942080b50f..0e4946737c9c5 100644 --- a/pkg/cdc/fulltext_sinker_test.go +++ b/pkg/cdc/fulltext_sinker_test.go @@ -136,7 +136,11 @@ func TestNewHnswSqlWriter(t *testing.T) { require.Nil(t, err) row = []any{int64(2000), []float32{5, 6, 7}, nil} - err = writer.Upsert(ctx, row) + err = writer.Insert(ctx, row) + require.Nil(t, err) + + row = []any{int64(3000), []float32{5, 6, 7}, nil} + err = writer.Delete(ctx, row) require.Nil(t, err) bytes, err := writer.ToSql() From 0b04c8fdee447120b841cfcc23c3e1b754003a8a Mon Sep 17 00:00:00 2001 From: cpegeric Date: Fri, 20 Jun 2025 16:18:34 +0100 Subject: [PATCH 123/223] ivf --- pkg/cdc/fulltext_sinker_test.go | 75 +++++++++++++++ pkg/cdc/index_sqlwriter.go | 156 +++++++++++++++++++++++++++----- 2 files changed, 209 insertions(+), 22 deletions(-) diff --git a/pkg/cdc/fulltext_sinker_test.go b/pkg/cdc/fulltext_sinker_test.go index 0e4946737c9c5..7141a2f258ad2 100644 --- a/pkg/cdc/fulltext_sinker_test.go +++ b/pkg/cdc/fulltext_sinker_test.go @@ -11,6 +11,56 @@ import ( "github.com/stretchr/testify/require" ) +func newTestIvfflatTableDef(pkName string, pkType types.T, vecColName string, vecType types.T, vecWidth int32) *plan.TableDef { + return &plan.TableDef{ + Name: "test_orig_tbl", + Name2ColIndex: map[string]int32{ + pkName: 0, + vecColName: 1, + "dummy": 2, // Add another col to make sure pk/vec col indices are used + }, + Cols: []*plan.ColDef{ + {Name: pkName, Typ: plan.Type{Id: int32(pkType)}}, + {Name: vecColName, Typ: plan.Type{Id: int32(vecType), Width: vecWidth}}, + {Name: "dummy", Typ: plan.Type{Id: int32(types.T_int32)}}, + }, + Pkey: &plan.PrimaryKeyDef{ + Names: []string{pkName}, + PkeyColName: pkName, + }, + Indexes: []*plan.IndexDef{ + { + IndexName: "ivfidx", + TableExist: true, + IndexAlgo: catalog.MoIndexIvfFlatAlgo.ToString(), + IndexAlgoTableType: catalog.SystemSI_IVFFLAT_TblType_Metadata, + IndexTableName: "meta_tbl", + Parts: []string{vecColName}, + IndexAlgoParams: `{"lists":"16","op_type":"vector_l2_ops"}`, + }, + { + IndexName: "ivfidx", + TableExist: true, + IndexAlgo: catalog.MoIndexIvfFlatAlgo.ToString(), + IndexAlgoTableType: catalog.SystemSI_IVFFLAT_TblType_Centroids, + IndexTableName: "centroids_tbl", + Parts: []string{vecColName}, + IndexAlgoParams: `{"lists":"16","op_type":"vector_l2_ops"}`, + }, + { + IndexName: "ivfidx", + TableExist: true, + IndexAlgo: catalog.MoIndexIvfFlatAlgo.ToString(), + IndexAlgoTableType: catalog.SystemSI_IVFFLAT_TblType_Entries, + IndexTableName: "entries_tbl", + Parts: []string{vecColName}, + IndexAlgoParams: `{"lists":"16","op_type":"vector_l2_ops"}`, + }, + }, + DbName: "mydb", + } +} + func newTestFulltextTableDef(pkName string, pkType types.T, vecColName string, vecType types.T, vecWidth int32) *plan.TableDef { return &plan.TableDef{ Name: "test_orig_tbl", @@ -147,3 +197,28 @@ func TestNewHnswSqlWriter(t *testing.T) { require.Nil(t, err) fmt.Println(string(bytes)) } + +func TestNewIvfflatSqlWriter(t *testing.T) { + var ctx context.Context + + tabledef := newTestIvfflatTableDef("pk", types.T_int64, "vec", types.T_array_float32, 3) + dbTableInfo := newTestDbTableInfo() + + writer, err := NewIvfflatSqlWriter("ivfflat", dbTableInfo, tabledef, tabledef.Indexes) + require.Nil(t, err) + row := []any{int64(1000), []float32{1, 2, 3}, nil} + err = writer.Insert(ctx, row) + require.Nil(t, err) + + row = []any{int64(2000), []float32{5, 6, 7}, nil} + err = writer.Insert(ctx, row) + require.Nil(t, err) + + row = []any{int64(3000), []float32{5, 6, 7}, nil} + err = writer.Insert(ctx, row) + require.Nil(t, err) + + bytes, err := writer.ToSql() + require.Nil(t, err) + fmt.Println(string(bytes)) +} diff --git a/pkg/cdc/index_sqlwriter.go b/pkg/cdc/index_sqlwriter.go index ee43878659754..e172938d6450f 100644 --- a/pkg/cdc/index_sqlwriter.go +++ b/pkg/cdc/index_sqlwriter.go @@ -48,6 +48,10 @@ type FulltextSqlWriter struct { type IvfflatSqlWriter struct { BaseIndexSqlWriter + centroids_tbl string + entries_tbl string + meta_tbl string + ivfparam vectorindex.IvfParam } type HnswSqlWriter[T types.RealNumbers] struct { @@ -277,28 +281,6 @@ func (w *FulltextSqlWriter) toFulltextUpsert(upsert bool) ([]byte, error) { return []byte(sql), nil } -// REPLACE INTO __mo_index_secondary_0197786c-285f-70cb-9337-e484a3ff92c4(__mo_index_centroid_fk_version, __mo_index_centroid_fk_id, __mo_index_pri_col, __mo_index_centroid_fk_entry) -// with centroid as (select * from __mo_index_secondary_0197786c-285f-70bb-b277-2cef56da590a where __mo_index_centroid_version = 0), -// src as (select column_0 as id, cast(column_1 as vecf32(3)) as embed from (values row(2005,'[0.4532634, 0.7297859, 0.48885703]'), row(2009, '[0.68150306, 0.6950923, 0.16590895] '))) -// select __mo_index_centroid_version, __mo_index_centroid_id, id, embed from src centroidx('vector_l2_ops') join centroid using (__mo_index_centroid, embed); -func (w *IvfflatSqlWriter) ToSql() ([]byte, error) { - defer w.Reset() - - if len(w.lastCdcOp) == 0 { - return nil, nil - } - - switch w.lastCdcOp { - case vectorindex.CDC_DELETE: - case vectorindex.CDC_UPSERT: - case vectorindex.CDC_INSERT: - default: - return nil, moerr.NewInternalErrorNoCtx("FulltextSqlWriter: invalid CDC type") - } - - return nil, nil -} - func NewHnswSqlWriter(algo string, dbTblInfo *DbTableInfo, tabledef *plan.TableDef, indexdef []*plan.IndexDef) (IndexSqlWriter, error) { w := &HnswSqlWriter[float32]{tabledef: tabledef, indexdef: indexdef, dbTblInfo: dbTblInfo, cdc: vectorindex.NewVectorIndexCdc[float32]()} @@ -442,3 +424,133 @@ func (w *HnswSqlWriter[T]) ToSql() ([]byte, error) { return []byte(sql), nil } + +func NewIvfflatSqlWriter(algo string, dbTblInfo *DbTableInfo, tabledef *plan.TableDef, indexdef []*plan.IndexDef) (IndexSqlWriter, error) { + w := &IvfflatSqlWriter{BaseIndexSqlWriter: BaseIndexSqlWriter{algo: algo, tabledef: tabledef, indexdef: indexdef, dbTblInfo: dbTblInfo, vbuf: make([]byte, 0, 1024)}} + + if len(indexdef) != 3 { + return nil, moerr.NewInternalErrorNoCtx("hnsw index table must have 3 secondary tables") + } + + idxdef := indexdef[0] + if len(idxdef.Parts) != 1 { + return nil, moerr.NewInternalErrorNoCtx("hnsw index table only have one vector part") + } + + paramstr := idxdef.IndexAlgoParams + var centroids_tbl, entries_tbl, meta_tbl string + for _, idx := range indexdef { + if idx.IndexAlgoTableType == catalog.SystemSI_IVFFLAT_TblType_Metadata { + meta_tbl = idx.IndexTableName + } + if idx.IndexAlgoTableType == catalog.SystemSI_IVFFLAT_TblType_Centroids { + centroids_tbl = idx.IndexTableName + } + if idx.IndexAlgoTableType == catalog.SystemSI_IVFFLAT_TblType_Entries { + entries_tbl = idx.IndexTableName + } + } + + if len(centroids_tbl) == 0 || len(entries_tbl) == 0 || len(meta_tbl) == 0 { + return nil, moerr.NewInternalErrorNoCtx("hnsw index table either meta or centroids or entries hidden index table not exist") + } + + var ivfparam vectorindex.IvfParam + if len(paramstr) > 0 { + err := json.Unmarshal([]byte(paramstr), &ivfparam) + if err != nil { + return nil, moerr.NewInternalErrorNoCtx("hnsw sync sinker. failed to convert hnsw param json") + } + } + + w.ivfparam = ivfparam + + w.pkPos = tabledef.Name2ColIndex[tabledef.Pkey.PkeyColName] + typ := tabledef.Cols[w.pkPos].Typ + w.pkType = &types.Type{Oid: types.T(typ.Id), Width: typ.Width, Scale: typ.Scale} + + nparts := len(w.indexdef[0].Parts) + w.partsPos = make([]int32, nparts) + w.partsType = make([]*types.Type, nparts) + + for i, part := range w.indexdef[0].Parts { + w.partsPos[i] = tabledef.Name2ColIndex[part] + typ = tabledef.Cols[w.partsPos[i]].Typ + w.partsType[i] = &types.Type{Oid: types.T(typ.Id), Width: typ.Width, Scale: typ.Scale} + } + + w.srcPos = make([]int32, nparts+1) + w.srcType = make([]*types.Type, nparts+1) + + w.srcPos[0] = w.pkPos + w.srcType[0] = w.pkType + for i := range w.partsType { + w.srcPos[i+1] = w.partsPos[i] + w.srcType[i+1] = w.partsType[i] + } + + w.centroids_tbl = centroids_tbl + w.entries_tbl = entries_tbl + w.meta_tbl = meta_tbl + + return w, nil +} + +// REPLACE INTO __mo_index_secondary_0197786c-285f-70cb-9337-e484a3ff92c4(__mo_index_centroid_fk_version, __mo_index_centroid_fk_id, __mo_index_pri_col, __mo_index_centroid_fk_entry) +// with centroid as (select * from __mo_index_secondary_0197786c-285f-70bb-b277-2cef56da590a where __mo_index_centroid_version = 0), +// src as (select column_0 as id, cast(column_1 as vecf32(3)) as embed from (values row(2005,'[0.4532634, 0.7297859, 0.48885703]'), row(2009, '[0.68150306, 0.6950923, 0.16590895] '))) +// select __mo_index_centroid_version, __mo_index_centroid_id, id, embed from src centroidx('vector_l2_ops') join centroid using (__mo_index_centroid, embed); +func (w *IvfflatSqlWriter) ToSql() ([]byte, error) { + defer w.Reset() + + if len(w.lastCdcOp) == 0 { + return nil, nil + } + + switch w.lastCdcOp { + case vectorindex.CDC_DELETE: + case vectorindex.CDC_UPSERT: + return w.toIvfflatUpsert(true) + case vectorindex.CDC_INSERT: + return w.toIvfflatUpsert(false) + default: + return nil, moerr.NewInternalErrorNoCtx("IvfflatSqlWriter: invalid CDC type") + } + + return nil, nil +} + +func (w *IvfflatSqlWriter) toIvfflatUpsert(upsert bool) ([]byte, error) { + + var sql string + + coldefs := make([]string, 0, len(w.srcPos)) + cnames := make([]string, 0, len(w.srcPos)) + for i, pos := range w.srcPos { + typstr := w.srcType[i].DescString() + coldefs = append(coldefs, fmt.Sprintf("CAST(column_%d as %s) as `%s`", i, typstr, w.tabledef.Cols[pos].Name)) + cnames = append(cnames, w.tabledef.Cols[pos].Name) + } + + cols := strings.Join(coldefs, ", ") + cnames_str := strings.Join(cnames, ", ") + + if upsert { + sql += fmt.Sprintf("REPLACE INTO `%s`.`%s` ", w.dbTblInfo.SinkDbName, w.entries_tbl) + } else { + sql += fmt.Sprintf("INSERT INTO `%s`.`%s` ", w.dbTblInfo.SinkDbName, w.entries_tbl) + } + + sql += fmt.Sprintf("WITH centroid as (SELECT * FROM `%s`.`%s` WHERE `%s` = %d ), ", w.dbTblInfo.SinkDbName, w.centroids_tbl, catalog.SystemSI_IVFFLAT_TblCol_Centroids_version, 0) + sql += fmt.Sprintf("src as (SELECT %s FROM (VALUES %s)) ", cols, string(w.vbuf)) + sql += fmt.Sprintf("SELECT `%s`.`%s`, `%s`.`%s`, %s FROM src CENTROIDX('%s') JOIN centroid using (%s, %s)", + w.dbTblInfo.SinkDbName, catalog.SystemSI_IVFFLAT_TblCol_Centroids_version, + w.dbTblInfo.SinkDbName, catalog.SystemSI_IVFFLAT_TblCol_Centroids_id, + cnames_str, + w.ivfparam.OpType, + catalog.SystemSI_IVFFLAT_TblCol_Centroids_centroid, + w.tabledef.Cols[w.partsPos[0]].Name) + + fmt.Printf("SQL :%s\n", sql) + return []byte(sql), nil +} From da1d2ecf028c3a2ef4c68dd6f4c1ca18ce3c25ba Mon Sep 17 00:00:00 2001 From: cpegeric Date: Fri, 20 Jun 2025 16:24:00 +0100 Subject: [PATCH 124/223] update --- pkg/cdc/fulltext_sinker_test.go | 8 ++++---- pkg/cdc/index_sqlwriter.go | 6 +++--- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/pkg/cdc/fulltext_sinker_test.go b/pkg/cdc/fulltext_sinker_test.go index 7141a2f258ad2..ca2415deb258a 100644 --- a/pkg/cdc/fulltext_sinker_test.go +++ b/pkg/cdc/fulltext_sinker_test.go @@ -201,20 +201,20 @@ func TestNewHnswSqlWriter(t *testing.T) { func TestNewIvfflatSqlWriter(t *testing.T) { var ctx context.Context - tabledef := newTestIvfflatTableDef("pk", types.T_int64, "vec", types.T_array_float32, 3) + tabledef := newTestIvfflatTableDef("pk", types.T_int64, "vec", types.T_array_float64, 3) dbTableInfo := newTestDbTableInfo() writer, err := NewIvfflatSqlWriter("ivfflat", dbTableInfo, tabledef, tabledef.Indexes) require.Nil(t, err) - row := []any{int64(1000), []float32{1, 2, 3}, nil} + row := []any{int64(1000), []float64{1, 2, 3}, nil} err = writer.Insert(ctx, row) require.Nil(t, err) - row = []any{int64(2000), []float32{5, 6, 7}, nil} + row = []any{int64(2000), []float64{5, 6, 7}, nil} err = writer.Insert(ctx, row) require.Nil(t, err) - row = []any{int64(3000), []float32{5, 6, 7}, nil} + row = []any{int64(3000), []float64{5, 6, 7}, nil} err = writer.Insert(ctx, row) require.Nil(t, err) diff --git a/pkg/cdc/index_sqlwriter.go b/pkg/cdc/index_sqlwriter.go index e172938d6450f..e59741b01e9be 100644 --- a/pkg/cdc/index_sqlwriter.go +++ b/pkg/cdc/index_sqlwriter.go @@ -543,9 +543,9 @@ func (w *IvfflatSqlWriter) toIvfflatUpsert(upsert bool) ([]byte, error) { sql += fmt.Sprintf("WITH centroid as (SELECT * FROM `%s`.`%s` WHERE `%s` = %d ), ", w.dbTblInfo.SinkDbName, w.centroids_tbl, catalog.SystemSI_IVFFLAT_TblCol_Centroids_version, 0) sql += fmt.Sprintf("src as (SELECT %s FROM (VALUES %s)) ", cols, string(w.vbuf)) - sql += fmt.Sprintf("SELECT `%s`.`%s`, `%s`.`%s`, %s FROM src CENTROIDX('%s') JOIN centroid using (%s, %s)", - w.dbTblInfo.SinkDbName, catalog.SystemSI_IVFFLAT_TblCol_Centroids_version, - w.dbTblInfo.SinkDbName, catalog.SystemSI_IVFFLAT_TblCol_Centroids_id, + sql += fmt.Sprintf("SELECT `%s`, `%s`, %s FROM src CENTROIDX('%s') JOIN centroid using (%s, %s)", + catalog.SystemSI_IVFFLAT_TblCol_Centroids_version, + catalog.SystemSI_IVFFLAT_TblCol_Centroids_id, cnames_str, w.ivfparam.OpType, catalog.SystemSI_IVFFLAT_TblCol_Centroids_centroid, From 581a07d90b10d965ef8c27033f5f818c59002a5d Mon Sep 17 00:00:00 2001 From: cpegeric Date: Fri, 20 Jun 2025 16:31:01 +0100 Subject: [PATCH 125/223] version --- pkg/cdc/index_sqlwriter.go | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/pkg/cdc/index_sqlwriter.go b/pkg/cdc/index_sqlwriter.go index e59741b01e9be..4d7522504c89d 100644 --- a/pkg/cdc/index_sqlwriter.go +++ b/pkg/cdc/index_sqlwriter.go @@ -541,9 +541,12 @@ func (w *IvfflatSqlWriter) toIvfflatUpsert(upsert bool) ([]byte, error) { sql += fmt.Sprintf("INSERT INTO `%s`.`%s` ", w.dbTblInfo.SinkDbName, w.entries_tbl) } - sql += fmt.Sprintf("WITH centroid as (SELECT * FROM `%s`.`%s` WHERE `%s` = %d ), ", w.dbTblInfo.SinkDbName, w.centroids_tbl, catalog.SystemSI_IVFFLAT_TblCol_Centroids_version, 0) + versql := fmt.Sprintf("SELECT CAST(%s as BIGINT) FROM `%s`.`%s` WHERE `%s` = 'version'", catalog.SystemSI_IVFFLAT_TblCol_Metadata_val, + w.dbTblInfo.SinkDbName, w.meta_tbl, catalog.SystemSI_IVFFLAT_TblCol_Metadata_key) + + sql += fmt.Sprintf("WITH centroid as (SELECT * FROM `%s`.`%s` WHERE `%s` = (%s) ), ", w.dbTblInfo.SinkDbName, w.centroids_tbl, catalog.SystemSI_IVFFLAT_TblCol_Centroids_version, versql) sql += fmt.Sprintf("src as (SELECT %s FROM (VALUES %s)) ", cols, string(w.vbuf)) - sql += fmt.Sprintf("SELECT `%s`, `%s`, %s FROM src CENTROIDX('%s') JOIN centroid using (%s, %s)", + sql += fmt.Sprintf("SELECT `%s`, `%s`, %s FROM src CENTROIDX('%s') JOIN centroid using (`%s`, `%s`)", catalog.SystemSI_IVFFLAT_TblCol_Centroids_version, catalog.SystemSI_IVFFLAT_TblCol_Centroids_id, cnames_str, From 09dc52d82937d6ed26549ccecae400f97afc54dc Mon Sep 17 00:00:00 2001 From: cpegeric Date: Fri, 20 Jun 2025 16:41:44 +0100 Subject: [PATCH 126/223] update --- pkg/cdc/index_sqlwriter.go | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/pkg/cdc/index_sqlwriter.go b/pkg/cdc/index_sqlwriter.go index 4d7522504c89d..4b1cc6441c131 100644 --- a/pkg/cdc/index_sqlwriter.go +++ b/pkg/cdc/index_sqlwriter.go @@ -541,6 +541,12 @@ func (w *IvfflatSqlWriter) toIvfflatUpsert(upsert bool) ([]byte, error) { sql += fmt.Sprintf("INSERT INTO `%s`.`%s` ", w.dbTblInfo.SinkDbName, w.entries_tbl) } + sql += fmt.Sprintf("(`%s`, `%s`, `%s`, `%s`) ", + catalog.SystemSI_IVFFLAT_TblCol_Entries_version, + catalog.SystemSI_IVFFLAT_TblCol_Entries_id, + catalog.SystemSI_IVFFLAT_TblCol_Entries_pk, + catalog.SystemSI_IVFFLAT_TblCol_Entries_entry) + versql := fmt.Sprintf("SELECT CAST(%s as BIGINT) FROM `%s`.`%s` WHERE `%s` = 'version'", catalog.SystemSI_IVFFLAT_TblCol_Metadata_val, w.dbTblInfo.SinkDbName, w.meta_tbl, catalog.SystemSI_IVFFLAT_TblCol_Metadata_key) From e04b63ce19a2f9cbd6d4941b2bad73e61fd3280a Mon Sep 17 00:00:00 2001 From: cpegeric Date: Fri, 20 Jun 2025 16:45:57 +0100 Subject: [PATCH 127/223] update --- pkg/cdc/index_sqlwriter.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/pkg/cdc/index_sqlwriter.go b/pkg/cdc/index_sqlwriter.go index 4b1cc6441c131..d5cd909c8da26 100644 --- a/pkg/cdc/index_sqlwriter.go +++ b/pkg/cdc/index_sqlwriter.go @@ -429,12 +429,12 @@ func NewIvfflatSqlWriter(algo string, dbTblInfo *DbTableInfo, tabledef *plan.Tab w := &IvfflatSqlWriter{BaseIndexSqlWriter: BaseIndexSqlWriter{algo: algo, tabledef: tabledef, indexdef: indexdef, dbTblInfo: dbTblInfo, vbuf: make([]byte, 0, 1024)}} if len(indexdef) != 3 { - return nil, moerr.NewInternalErrorNoCtx("hnsw index table must have 3 secondary tables") + return nil, moerr.NewInternalErrorNoCtx("ivf index table must have 3 secondary tables") } idxdef := indexdef[0] if len(idxdef.Parts) != 1 { - return nil, moerr.NewInternalErrorNoCtx("hnsw index table only have one vector part") + return nil, moerr.NewInternalErrorNoCtx("ivf index table only have one vector part") } paramstr := idxdef.IndexAlgoParams @@ -452,14 +452,14 @@ func NewIvfflatSqlWriter(algo string, dbTblInfo *DbTableInfo, tabledef *plan.Tab } if len(centroids_tbl) == 0 || len(entries_tbl) == 0 || len(meta_tbl) == 0 { - return nil, moerr.NewInternalErrorNoCtx("hnsw index table either meta or centroids or entries hidden index table not exist") + return nil, moerr.NewInternalErrorNoCtx("ivf index table either meta or centroids or entries hidden index table not exist") } var ivfparam vectorindex.IvfParam if len(paramstr) > 0 { err := json.Unmarshal([]byte(paramstr), &ivfparam) if err != nil { - return nil, moerr.NewInternalErrorNoCtx("hnsw sync sinker. failed to convert hnsw param json") + return nil, moerr.NewInternalErrorNoCtx("ivf sync sinker. failed to convert ivf param json") } } From 17057d78e149a335610bcee8d4cad5e0f45e7851 Mon Sep 17 00:00:00 2001 From: cpegeric Date: Fri, 20 Jun 2025 17:07:40 +0100 Subject: [PATCH 128/223] bug fix --- pkg/cdc/index_sqlwriter.go | 2 -- 1 file changed, 2 deletions(-) diff --git a/pkg/cdc/index_sqlwriter.go b/pkg/cdc/index_sqlwriter.go index d5cd909c8da26..afb1893e536e6 100644 --- a/pkg/cdc/index_sqlwriter.go +++ b/pkg/cdc/index_sqlwriter.go @@ -189,8 +189,6 @@ func (w *BaseIndexSqlWriter) Insert(ctx context.Context, row []any) error { // same as previous operation and append to VALUES ROW(), ROW(),... w.vbuf = appendString(w.vbuf, ",") return w.writeRow(ctx, row) - - return nil } func (w *BaseIndexSqlWriter) Delete(ctx context.Context, row []any) error { From d437339df0d29f160c2710d97c40381d72a5178d Mon Sep 17 00:00:00 2001 From: cpegeric Date: Mon, 23 Jun 2025 10:54:33 +0100 Subject: [PATCH 129/223] index sinker with IndexSqlWriter --- pkg/cdc/hnsw_sinker.go | 297 +++++++++++++++++------------------ pkg/cdc/hnsw_sinker_test.go | 122 +++++++------- pkg/cdc/index_sqlwriter.go | 11 ++ pkg/container/types/types.go | 4 + pkg/vectorindex/types.go | 6 +- 5 files changed, 231 insertions(+), 209 deletions(-) diff --git a/pkg/cdc/hnsw_sinker.go b/pkg/cdc/hnsw_sinker.go index 1cf045d5d2666..6be77ae5eca93 100644 --- a/pkg/cdc/hnsw_sinker.go +++ b/pkg/cdc/hnsw_sinker.go @@ -23,10 +23,8 @@ package cdc import ( "bytes" "context" - "encoding/json" "fmt" "os" - "strings" "sync/atomic" "time" @@ -34,8 +32,6 @@ import ( "github.com/matrixorigin/matrixone/pkg/common/moerr" "github.com/matrixorigin/matrixone/pkg/common/runtime" "github.com/matrixorigin/matrixone/pkg/container/batch" - "github.com/matrixorigin/matrixone/pkg/container/types" - "github.com/matrixorigin/matrixone/pkg/container/vector" "github.com/matrixorigin/matrixone/pkg/logutil" "github.com/matrixorigin/matrixone/pkg/pb/plan" "github.com/matrixorigin/matrixone/pkg/util/executor" @@ -43,24 +39,21 @@ import ( "github.com/matrixorigin/matrixone/pkg/vectorindex" ) -var _ Sinker = &hnswSyncSinker[float32]{} +var _ Sinker = &hnswSyncSinker{} var sqlExecutorFactory = _sqlExecutorFactory -type hnswSyncSinker[T types.RealNumbers] struct { +type hnswSyncSinker struct { cnUUID string dbTblInfo *DbTableInfo watermarkUpdater IWatermarkUpdater ar *ActiveRoutine tableDef *plan.TableDef - cdc *vectorindex.VectorIndexCdc[T] - param vectorindex.HnswCdcParam err atomic.Value - - sqlBufSendCh chan []byte - pkcol int32 - veccol int32 - exec executor.SQLExecutor + sqlWriters []IndexSqlWriter + sqlBufSendCh chan []byte + exec executor.SQLExecutor + rowdata []any } func _sqlExecutorFactory(cnUUID string) (executor.SQLExecutor, error) { @@ -98,8 +91,6 @@ var NewHnswSyncSinker = func( return nil, moerr.NewInternalErrorNoCtx("hnsw index table only have one primary key") } - pkColName := tableDef.Pkey.PkeyColName - hnswindexes := make([]*plan.IndexDef, 0, 2) for _, idx := range tableDef.Indexes { @@ -119,94 +110,76 @@ var NewHnswSyncSinker = func( return nil, moerr.NewInternalErrorNoCtx("hnsw index table only have one vector part") } - pkcol := tableDef.Name2ColIndex[pkColName] - veccol := tableDef.Name2ColIndex[indexdef.Parts[0]] + /* + pkcol := tableDef.Name2ColIndex[pkColName] + veccol := tableDef.Name2ColIndex[indexdef.Parts[0]] - if tableDef.Cols[pkcol].Typ.Id != int32(types.T_int64) { - return nil, moerr.NewInternalErrorNoCtx("hnsw index table primary key is not int64") + if tableDef.Cols[pkcol].Typ.Id != int32(types.T_int64) { + return nil, moerr.NewInternalErrorNoCtx("hnsw index table primary key is not int64") - } + } - // get param and index table name - paramstr := indexdef.IndexAlgoParams - var meta, storage string - for _, idx := range hnswindexes { - if idx.IndexAlgoTableType == catalog.Hnsw_TblType_Metadata { - meta = idx.IndexTableName + // get param and index table name + paramstr := indexdef.IndexAlgoParams + var meta, storage string + for _, idx := range hnswindexes { + if idx.IndexAlgoTableType == catalog.Hnsw_TblType_Metadata { + meta = idx.IndexTableName + } + if idx.IndexAlgoTableType == catalog.Hnsw_TblType_Storage { + storage = idx.IndexTableName + } } - if idx.IndexAlgoTableType == catalog.Hnsw_TblType_Storage { - storage = idx.IndexTableName + + if len(meta) == 0 || len(storage) == 0 { + return nil, moerr.NewInternalErrorNoCtx("hnsw index table either meta or storage hidden index table not exist") } - } - if len(meta) == 0 || len(storage) == 0 { - return nil, moerr.NewInternalErrorNoCtx("hnsw index table either meta or storage hidden index table not exist") - } + var hnswparam vectorindex.HnswParam + if len(paramstr) > 0 { + err := json.Unmarshal([]byte(paramstr), &hnswparam) + if err != nil { + return nil, moerr.NewInternalErrorNoCtx("hnsw sync sinker. failed to convert hnsw param json") + } + } - var hnswparam vectorindex.HnswParam - if len(paramstr) > 0 { - err := json.Unmarshal([]byte(paramstr), &hnswparam) - if err != nil { - return nil, moerr.NewInternalErrorNoCtx("hnsw sync sinker. failed to convert hnsw param json") + param := vectorindex.HnswCdcParam{ + MetaTbl: meta, + IndexTbl: storage, + DbName: dbTblInfo.SinkDbName, + Table: dbTblInfo.SinkTblName, + Params: hnswparam, + Dimension: tableDef.Cols[veccol].Typ.Width, } - } + */ - param := vectorindex.HnswCdcParam{ - MetaTbl: meta, - IndexTbl: storage, - DbName: dbTblInfo.SinkDbName, - Table: dbTblInfo.SinkTblName, - Params: hnswparam, - Dimension: tableDef.Cols[veccol].Typ.Width, + sqlwriter, err := NewIndexSqlWriter("hnsw", dbTblInfo, tableDef, hnswindexes) + if err != nil { + return nil, err } // create sinker var maxAllowedPacket uint64 maxAllowedPacket = min(maxAllowedPacket, maxSqlLength) - if tableDef.Cols[veccol].Typ.Id == int32(types.T_array_float32) { - s := &hnswSyncSinker[float32]{ - cnUUID: cnUUID, - dbTblInfo: dbTblInfo, - watermarkUpdater: watermarkUpdater, - ar: ar, - tableDef: tableDef, - cdc: vectorindex.NewVectorIndexCdc[float32](), - sqlBufSendCh: make(chan []byte), - pkcol: pkcol, - veccol: veccol, - err: atomic.Value{}, - param: param, - exec: exec, - } - logutil.Infof("cdc hnswSyncSinker(%v) maxAllowedPacket = %d", s.dbTblInfo, maxAllowedPacket) - return s, nil - - } else if tableDef.Cols[veccol].Typ.Id == int32(types.T_array_float64) { - s := &hnswSyncSinker[float64]{ - cnUUID: cnUUID, - dbTblInfo: dbTblInfo, - watermarkUpdater: watermarkUpdater, - ar: ar, - tableDef: tableDef, - cdc: vectorindex.NewVectorIndexCdc[float64](), - sqlBufSendCh: make(chan []byte), - pkcol: pkcol, - veccol: veccol, - err: atomic.Value{}, - param: param, - exec: exec, - } - logutil.Infof("cdc hnswSyncSinker(%v) maxAllowedPacket = %d", s.dbTblInfo, maxAllowedPacket) - return s, nil - - } else { - return nil, moerr.NewInternalErrorNoCtx("hnsw index table part is not []float32 or []float64") + s := &hnswSyncSinker{ + cnUUID: cnUUID, + dbTblInfo: dbTblInfo, + watermarkUpdater: watermarkUpdater, + ar: ar, + tableDef: tableDef, + sqlBufSendCh: make(chan []byte), + err: atomic.Value{}, + exec: exec, + sqlWriters: []IndexSqlWriter{sqlwriter}, + rowdata: make([]any, len(tableDef.Cols)), } + logutil.Infof("cdc hnswSyncSinker(%v) maxAllowedPacket = %d", s.dbTblInfo, maxAllowedPacket) + return s, nil } -func (s *hnswSyncSinker[T]) Run(ctx context.Context, ar *ActiveRoutine) { +func (s *hnswSyncSinker) Run(ctx context.Context, ar *ActiveRoutine) { logutil.Infof("cdc hnswSyncSinker(%v).Run: start", s.dbTblInfo) defer func() { logutil.Infof("cdc hnswSyncSinker(%v).Run: end", s.dbTblInfo) @@ -329,20 +302,17 @@ func (s *hnswSyncSinker[T]) Run(ctx context.Context, ar *ActiveRoutine) { } } -func (s *hnswSyncSinker[T]) Sink(ctx context.Context, data *DecoderOutput) { +func (s *hnswSyncSinker) Sink(ctx context.Context, data *DecoderOutput) { watermark := s.watermarkUpdater.GetFromMem(s.dbTblInfo.SourceDbName, s.dbTblInfo.SourceTblName) if data.toTs.LE(&watermark) { logutil.Errorf("cdc hnswSyncSinker(%v): unexpected watermark: %s, current watermark: %s", s.dbTblInfo, data.toTs.ToString(), watermark.ToString()) return } - s.cdc.Start = data.fromTs.ToString() - s.cdc.End = data.toTs.ToString() if data.noMoreData { - // complete sql statement - err := s.sendSql() + err := s.flushCdc() if err != nil { s.SetError(err) } @@ -365,23 +335,23 @@ func (s *hnswSyncSinker[T]) Sink(ctx context.Context, data *DecoderOutput) { } } -func (s *hnswSyncSinker[T]) SendBegin() { +func (s *hnswSyncSinker) SendBegin() { s.sqlBufSendCh <- begin } -func (s *hnswSyncSinker[T]) SendCommit() { +func (s *hnswSyncSinker) SendCommit() { s.sqlBufSendCh <- commit } -func (s *hnswSyncSinker[T]) SendRollback() { +func (s *hnswSyncSinker) SendRollback() { s.sqlBufSendCh <- rollback } -func (s *hnswSyncSinker[T]) SendDummy() { +func (s *hnswSyncSinker) SendDummy() { s.sqlBufSendCh <- dummy } -func (s *hnswSyncSinker[T]) Error() error { +func (s *hnswSyncSinker) Error() error { if ptr := s.err.Load(); ptr != nil { errPtr := ptr.(*error) if errPtr != nil { @@ -398,56 +368,57 @@ func (s *hnswSyncSinker[T]) Error() error { return nil } -func (s *hnswSyncSinker[T]) SetError(err error) { +func (s *hnswSyncSinker) SetError(err error) { s.err.Store(&err) } -func (s *hnswSyncSinker[T]) ClearError() { +func (s *hnswSyncSinker) ClearError() { var err *moerr.Error s.SetError(err) } -func (s *hnswSyncSinker[T]) Reset() { - s.cdc.Reset() +func (s *hnswSyncSinker) Reset() { + for _, writer := range s.sqlWriters { + writer.Reset() + } s.err = atomic.Value{} } -func (s *hnswSyncSinker[T]) Close() { +func (s *hnswSyncSinker) Close() { // stop Run goroutine close(s.sqlBufSendCh) } -func (s *hnswSyncSinker[T]) sinkSnapshot(ctx context.Context, bat *batch.Batch) { - pkvec := bat.Vecs[s.pkcol] - vecvec := bat.Vecs[s.veccol] - for i := 0; i < batchRowCount(bat); i++ { - pk := vector.GetFixedAtWithTypeCheck[int64](pkvec, i) - - // check null - if vecvec.IsNull(uint64(i)) { - // nil vector means delete - s.cdc.Delete(pk) - } else { - v := vector.GetArrayAt[T](vecvec, i) +func (s *hnswSyncSinker) sinkSnapshot(ctx context.Context, bat *batch.Batch) { + var err error - s.cdc.Upsert(pk, v) + for i := 0; i < batchRowCount(bat); i++ { + if err = extractRowFromEveryVector(ctx, bat, i, s.rowdata); err != nil { + s.SetError(err) + return } - // check full - if s.cdc.Full() { - // send sql - err := s.sendSql() + for _, writer := range s.sqlWriters { + err = writer.Upsert(ctx, s.rowdata) if err != nil { s.SetError(err) return } + + if writer.Full() { + err = s.sendSql(writer) + if err != nil { + s.SetError(err) + return + } + } } } } // upsertBatch and deleteBatch is sorted by ts // for the same ts, delete first, then upsert -func (s *hnswSyncSinker[T]) sinkTail(ctx context.Context, upsertBatch, deleteBatch *AtomicBatch) { +func (s *hnswSyncSinker) sinkTail(ctx context.Context, upsertBatch, deleteBatch *AtomicBatch) { var err error upsertIter := upsertBatch.GetRowIterator().(*atomicBatchRowIter) @@ -501,73 +472,95 @@ func (s *hnswSyncSinker[T]) sinkTail(ctx context.Context, upsertBatch, deleteBat s.flushCdc() } -func (s *hnswSyncSinker[T]) sinkUpsert(ctx context.Context, upsertIter *atomicBatchRowIter) (err error) { +func (s *hnswSyncSinker) sinkUpsert(ctx context.Context, upsertIter *atomicBatchRowIter) (err error) { // get row from the batch - row := upsertIter.Item() - bat := row.Src + if err = upsertIter.Row(ctx, s.rowdata); err != nil { + return err + } - pkvec := bat.Vecs[s.pkcol] - vecvec := bat.Vecs[s.veccol] - pk := vector.GetFixedAtWithTypeCheck[int64](pkvec, row.Offset) + for _, writer := range s.sqlWriters { + if !writer.CheckLastOp(vectorindex.CDC_UPSERT) { + // last op is not UPSERT, sendSql first + // send SQL + err = s.sendSql(writer) + if err != nil { + return err + } - // check null - if vecvec.IsNull(uint64(row.Offset)) { - // nil vector means delete - s.cdc.Delete(pk) - } else { - v := vector.GetArrayAt[T](vecvec, row.Offset) + } - s.cdc.Upsert(pk, v) - } + writer.Upsert(ctx, s.rowdata) - if s.cdc.Full() { - // send SQL - return s.sendSql() + if writer.Full() { + // send SQL + err = s.sendSql(writer) + if err != nil { + return err + } + } } return nil } -func (s *hnswSyncSinker[T]) sinkDelete(ctx context.Context, deleteIter *atomicBatchRowIter) (err error) { +func (s *hnswSyncSinker) sinkDelete(ctx context.Context, deleteIter *atomicBatchRowIter) (err error) { // get row from the batch - row := deleteIter.Item() - bat := row.Src + if err = deleteIter.Row(ctx, s.rowdata); err != nil { + return err + } + + for _, writer := range s.sqlWriters { + if !writer.CheckLastOp(vectorindex.CDC_DELETE) { + // last op is not DELETE, sendSql first + // send SQL + err = s.sendSql(writer) + if err != nil { + return err + } + + } - pkvec := bat.Vecs[s.pkcol] - pk := vector.GetFixedAtWithTypeCheck[int64](pkvec, row.Offset) + writer.Delete(ctx, s.rowdata) - s.cdc.Delete(pk) - if s.cdc.Full() { - return s.sendSql() + if writer.Full() { + // send SQL + err = s.sendSql(writer) + if err != nil { + return err + } + } } return nil } -func (s *hnswSyncSinker[T]) flushCdc() (err error) { - return s.sendSql() +func (s *hnswSyncSinker) flushCdc() (err error) { + for _, writer := range s.sqlWriters { + err = s.sendSql(writer) + if err != nil { + return err + } + } + return nil } -func (s *hnswSyncSinker[T]) sendSql() error { - if s.cdc.Empty() { +func (s *hnswSyncSinker) sendSql(writer IndexSqlWriter) error { + if writer.Empty() { return nil } // generate sql from cdc - js, err := s.cdc.ToJson() + sql, err := writer.ToSql() if err != nil { return err } - // pad extra space at the front and send SQL - padding := strings.Repeat(" ", sqlBufReserved) - sql := fmt.Sprintf("%s SELECT hnsw_cdc_update('%s', '%s', %d, '%s');", padding, s.param.DbName, s.param.Table, s.param.Dimension, js) - s.sqlBufSendCh <- []byte(sql) + s.sqlBufSendCh <- sql // reset - s.cdc.Reset() + writer.Reset() return nil } diff --git a/pkg/cdc/hnsw_sinker_test.go b/pkg/cdc/hnsw_sinker_test.go index a90e8797f0343..e267dfc736704 100644 --- a/pkg/cdc/hnsw_sinker_test.go +++ b/pkg/cdc/hnsw_sinker_test.go @@ -32,7 +32,6 @@ import ( "github.com/matrixorigin/matrixone/pkg/testutil" "github.com/matrixorigin/matrixone/pkg/txn/client" "github.com/matrixorigin/matrixone/pkg/util/executor" - "github.com/matrixorigin/matrixone/pkg/vectorindex" "github.com/prashantv/gostub" "github.com/stretchr/testify/require" "github.com/tidwall/btree" @@ -238,18 +237,18 @@ func TestNewHnswSyncSinker(t *testing.T) { sinker, err := NewHnswSyncSinker("test-uuid", UriInfo{}, dbTblInfo, watermarkUpdater, tblDef, 3, time.Second, ar, 1024, "10s") require.NoError(t, err) require.NotNil(t, sinker) - require.Equal(t, int32(0), sinker.(*hnswSyncSinker[float32]).pkcol) - require.Equal(t, int32(1), sinker.(*hnswSyncSinker[float32]).veccol) sinker.Close() }) - t.Run("success float64", func(t *testing.T) { - tblDef := newTestTableDef("pk", types.T_int64, "vec", types.T_array_float64, 128) - sinker, err := NewHnswSyncSinker("test-uuid", UriInfo{}, dbTblInfo, watermarkUpdater, tblDef, 3, time.Second, ar, 1024, "10s") - require.NoError(t, err) - require.NotNil(t, sinker) - sinker.Close() - }) + /* + t.Run("success float64", func(t *testing.T) { + tblDef := newTestTableDef("pk", types.T_int64, "vec", types.T_array_float64, 128) + sinker, err := NewHnswSyncSinker("test-uuid", UriInfo{}, dbTblInfo, watermarkUpdater, tblDef, 3, time.Second, ar, 1024, "10s") + require.NoError(t, err) + require.NotNil(t, sinker) + sinker.Close() + }) + */ t.Run("invalid pkey count", func(t *testing.T) { tblDef := newTestTableDef("pk", types.T_int64, "vec", types.T_array_float32, 128) @@ -316,7 +315,7 @@ func TestHnswSyncSinker_Run(t *testing.T) { require.NoError(t, err) defer sinker.Close() - s := sinker.(*hnswSyncSinker[float32]) + s := sinker.(*hnswSyncSinker) ctx, cancel := context.WithCancel(context.Background()) defer cancel() @@ -357,7 +356,7 @@ func TestHnswSyncSinker_RunError(t *testing.T) { require.NoError(t, err) defer sinker.Close() - s := sinker.(*hnswSyncSinker[float32]) + s := sinker.(*hnswSyncSinker) ctx, cancel := context.WithCancel(context.Background()) defer cancel() @@ -432,7 +431,7 @@ func TestHnswSyncSinker_Sink(t *testing.T) { require.NoError(t, err) defer sinker.Close() - s := sinker.(*hnswSyncSinker[float32]) + s := sinker.(*hnswSyncSinker) ctx := context.Background() t.Run("snapshot", func(t *testing.T) { @@ -458,15 +457,16 @@ func TestHnswSyncSinker_Sink(t *testing.T) { } s.Sink(ctx, output) require.NoError(t, s.Error()) - js, err := s.cdc.ToJson() + sql, err := s.sqlWriters[0].ToSql() require.NoError(t, err) - require.Equal(t, string(js), `{"start":"1-0","end":"2-0","cdc":[{"t":"U","pk":1,"v":[0.1,0.2]},{"t":"U","pk":2,"v":[0.3,0.4]}]}`) + require.Equal(t, string(sql), `SELECT hnsw_cdc_update('sink_db', 'sink_tbl', 2, '{"cdc":[{"t":"U","pk":1,"v":[0.1,0.2]},{"t":"U","pk":2,"v":[0.3,0.4]}]}');`) }) t.Run("noMoreData", func(t *testing.T) { + rowdata := []any{int64(100), []float32{1.0, 2.0}} s.Reset() - s.cdc.Upsert(int64(100), []float32{1.0, 2.0}) // Add some data - require.False(t, s.cdc.Empty()) + s.sqlWriters[0].Upsert(ctx, rowdata) // Add some data + require.False(t, s.sqlWriters[0].Empty()) var sqlSent bool doneCh := make(chan struct{}) @@ -495,30 +495,41 @@ func TestHnswSyncSinker_Sink(t *testing.T) { t.Fatal("timed out waiting for SQL to be sent on noMoreData") } require.True(t, sqlSent) - require.True(t, s.cdc.Empty(), "CDC should be reset after noMoreData flush") + require.True(t, s.sqlWriters[0].Empty(), "CDC should be reset after noMoreData flush") }) } func TestHnswSyncSinker_SendSql(t *testing.T) { + dbTblInfo := newTestDbTableInfo() sqlexecstub := gostub.Stub(&sqlExecutorFactory, mockSqlExecutorFactory) defer sqlexecstub.Reset() + ctx, cancel := context.WithCancel(context.Background()) + defer cancel() watermarkUpdater := &WatermarkUpdater{ watermarkMap: &sync.Map{}, } tblDef := newTestTableDef("pk", types.T_int64, "vec", types.T_array_float32, 2) sinker, _ := NewHnswSyncSinker("test-uuid", UriInfo{}, newTestDbTableInfo(), watermarkUpdater, tblDef, 0, 0, newTestActiveRoutine(), 1024, "1s") - s := sinker.(*hnswSyncSinker[float32]) + s := sinker.(*hnswSyncSinker) defer s.Close() // Closes sqlBufSendCh t.Run("send sql happy path", func(t *testing.T) { + var err error + row1 := []any{int64(1), []float32{0.1, 0.2}} + row2 := []any{int64(2), []float32{0.3, 0.4}} + s.Reset() - s.cdc.Upsert(int64(1), []float32{0.1, 0.2}) - s.cdc.Delete(int64(2)) - s.cdc.Start = "ts1" - s.cdc.End = "ts2" + err = s.sqlWriters[0].Upsert(ctx, row1) + require.NoError(t, err) + err = s.sqlWriters[0].Delete(ctx, row2) + require.NoError(t, err) + /* + s.cdc.Start = "ts1" + s.cdc.End = "ts2" + */ var receivedSql []byte var wg sync.WaitGroup @@ -528,7 +539,7 @@ func TestHnswSyncSinker_SendSql(t *testing.T) { receivedSql = <-s.sqlBufSendCh }() - err := s.sendSql() + err = s.sendSql(s.sqlWriters[0]) require.NoError(t, err) wg.Wait() // Wait for the goroutine to receive the SQL @@ -548,23 +559,22 @@ func TestHnswSyncSinker_SendSql(t *testing.T) { // The cdc.Start and cdc.End are part of the ToJson output, but sendSql resets cdc *after* ToJson // So we need to capture the state of cdc *before* it's reset for the expected JSON. // Let's reconstruct the expected JSON more carefully. - cdcForJson := vectorindex.NewVectorIndexCdc[float32]() - cdcForJson.Upsert(int64(1), []float32{0.1, 0.2}) - cdcForJson.Delete(int64(2)) - cdcForJson.Start = "ts1" - cdcForJson.End = "ts2" - expectedJsonBytes, _ := cdcForJson.ToJson() - - expectedSql := fmt.Sprintf("%s SELECT hnsw_cdc_update('%s', '%s', %d, '%s');", - strings.Repeat(" ", sqlBufReserved), - s.param.DbName, s.param.Table, s.param.Dimension, string(expectedJsonBytes)) - require.Equal(t, expectedSql, sqlStr) - require.True(t, s.cdc.Empty(), "CDC should be reset after sending SQL") + writer, err := NewHnswSqlWriter("hnsw", dbTblInfo, tblDef, tblDef.Indexes) + require.NoError(t, err) + writer.Upsert(ctx, row1) + writer.Delete(ctx, row2) + /* + cdcForJson.Start = "ts1" + cdcForJson.End = "ts2" + */ + expectedSqlBytes, _ := writer.ToSql() + require.Equal(t, string(expectedSqlBytes), sqlStr) + require.True(t, s.sqlWriters[0].Empty(), "CDC should be reset after sending SQL") }) t.Run("send sql empty cdc", func(t *testing.T) { s.Reset() // Ensure CDC is empty - err := s.sendSql() + err := s.sendSql(s.sqlWriters[0]) require.NoError(t, err) select { case <-s.sqlBufSendCh: @@ -579,8 +589,8 @@ func TestHnswSyncSinker_ErrorHandling(t *testing.T) { sqlexecstub := gostub.Stub(&sqlExecutorFactory, mockSqlExecutorFactory) defer sqlexecstub.Reset() - s := &hnswSyncSinker[float32]{} // Minimal struct for error testing - s.err.Store((*error)(nil)) // Initialize with nil error pointer + s := &hnswSyncSinker{} // Minimal struct for error testing + s.err.Store((*error)(nil)) // Initialize with nil error pointer require.Nil(t, s.Error()) @@ -606,6 +616,8 @@ func TestHnswSyncSinker_Sink_AtomicBatch(t *testing.T) { proc := testutil.NewProcess() + dbTblInfo := newTestDbTableInfo() + ctx := context.Background() sqlexecstub := gostub.Stub(&sqlExecutorFactory, mockSqlExecutorFactory) defer sqlexecstub.Reset() @@ -614,7 +626,7 @@ func TestHnswSyncSinker_Sink_AtomicBatch(t *testing.T) { } tblDef := newTestTableDef("pk", types.T_int64, "vec", types.T_array_float32, 2) sinker, _ := NewHnswSyncSinker("test-uuid", UriInfo{}, newTestDbTableInfo(), watermarkUpdater, tblDef, 0, 0, newTestActiveRoutine(), 1024, "1s") - s := sinker.(*hnswSyncSinker[float32]) + s := sinker.(*hnswSyncSinker) defer s.Close() // Closes sqlBufSendCh bat := testutil.NewBatchWithVectors( @@ -674,19 +686,21 @@ func TestHnswSyncSinker_Sink_AtomicBatch(t *testing.T) { wg.Wait() // Wait for the goroutine to receive the SQL sqlStr := string(receivedSql) - cdcForJson := vectorindex.NewVectorIndexCdc[float32]() - cdcForJson.Upsert(int64(1), []float32{0.1, 0.2}) - cdcForJson.Upsert(int64(2), []float32{0.3, 0.4}) - cdcForJson.Delete(int64(1)) - cdcForJson.Delete(int64(2)) - cdcForJson.Start = "1-0" - cdcForJson.End = "2-0" - expectedJsonBytes, _ := cdcForJson.ToJson() - - expectedSql := fmt.Sprintf("%s SELECT hnsw_cdc_update('%s', '%s', %d, '%s');", - strings.Repeat(" ", sqlBufReserved), - s.param.DbName, s.param.Table, s.param.Dimension, string(expectedJsonBytes)) - require.Equal(t, expectedSql, sqlStr) - require.True(t, s.cdc.Empty(), "CDC should be reset after sending SQL") + row1 := []any{int64(1), []float32{0.1, 0.2}} + row2 := []any{int64(2), []float32{0.3, 0.4}} + + writer, _ := NewHnswSqlWriter("hnsw", dbTblInfo, tblDef, tblDef.Indexes) + writer.Upsert(ctx, row1) + writer.Upsert(ctx, row2) + writer.Delete(ctx, row1) + writer.Delete(ctx, row2) + /* + cdcForJson.Start = "1-0" + cdcForJson.End = "2-0" + */ + expectedSqlBytes, _ := writer.ToSql() + + require.Equal(t, string(expectedSqlBytes), sqlStr) + require.True(t, s.sqlWriters[0].Empty(), "CDC should be reset after sending SQL") } diff --git a/pkg/cdc/index_sqlwriter.go b/pkg/cdc/index_sqlwriter.go index afb1893e536e6..8d32fb141cb62 100644 --- a/pkg/cdc/index_sqlwriter.go +++ b/pkg/cdc/index_sqlwriter.go @@ -80,6 +80,9 @@ func NewIndexSqlWriter(algo string, dbTblInfo *DbTableInfo, tabledef *plan.Table case "fulltext": return NewFulltextSqlWriter(algo, dbTblInfo, tabledef, indexdef) case "ivfflat": + return NewIvfflatSqlWriter(algo, dbTblInfo, tabledef, indexdef) + case "hnsw": + return NewHnswSqlWriter(algo, dbTblInfo, tabledef, indexdef) default: return IndexSqlWriter(nil), moerr.NewInternalErrorNoCtx("IndexSqlWriter: invalid algo type") @@ -323,6 +326,10 @@ func NewHnswSqlWriter(algo string, dbTblInfo *DbTableInfo, tabledef *plan.TableD typ := tabledef.Cols[w.pkPos].Typ w.pkType = &types.Type{Oid: types.T(typ.Id), Width: typ.Width, Scale: typ.Scale} + if w.pkType.Oid != types.T_int64 { + return nil, moerr.NewInternalErrorNoCtx("NewHnswSqlWriter: primary key is not bigint") + } + nparts := len(idxdef.Parts) w.partsPos = make([]int32, nparts) w.partsType = make([]*types.Type, nparts) @@ -333,6 +340,10 @@ func NewHnswSqlWriter(algo string, dbTblInfo *DbTableInfo, tabledef *plan.TableD w.partsType[i] = &types.Type{Oid: types.T(typ.Id), Width: typ.Width, Scale: typ.Scale} } + if w.partsType[0].Oid != types.T_array_float32 { + return nil, moerr.NewInternalErrorNoCtx("NewHnswSqlWriter: part is not vecf32") + } + w.srcPos = make([]int32, nparts+1) w.srcType = make([]*types.Type, nparts+1) diff --git a/pkg/container/types/types.go b/pkg/container/types/types.go index e4eaedd653144..275cc93cfa25a 100644 --- a/pkg/container/types/types.go +++ b/pkg/container/types/types.go @@ -557,6 +557,10 @@ func (t Type) DescString() string { return fmt.Sprintf("DECIMAL(%d,%d)", t.Width, t.Scale) case T_decimal128: return fmt.Sprintf("DECIMAL(%d,%d)", t.Width, t.Scale) + case T_array_float32: + return fmt.Sprintf("VECF32(%d)", t.Width) + case T_array_float64: + return fmt.Sprintf("VECF64(%d)", t.Width) } return t.Oid.String() } diff --git a/pkg/vectorindex/types.go b/pkg/vectorindex/types.go index 8607a8bbdbf04..b72320725c422 100644 --- a/pkg/vectorindex/types.go +++ b/pkg/vectorindex/types.go @@ -100,9 +100,9 @@ type RuntimeConfig struct { } type VectorIndexCdc[T types.RealNumbers] struct { - Start string `json:"start"` - End string `json:"end"` - Data []VectorIndexCdcEntry[T] `json:"cdc"` + // Start string `json:"start"` + // End string `json:"end"` + Data []VectorIndexCdcEntry[T] `json:"cdc"` } func NewVectorIndexCdc[T types.RealNumbers]() *VectorIndexCdc[T] { From 5c648f3c8c6f2db4c7f8b606e4353a94542612b3 Mon Sep 17 00:00:00 2001 From: cpegeric Date: Mon, 23 Jun 2025 10:58:21 +0100 Subject: [PATCH 130/223] remove comment --- pkg/cdc/hnsw_sinker.go | 43 ------------------------------------------ 1 file changed, 43 deletions(-) diff --git a/pkg/cdc/hnsw_sinker.go b/pkg/cdc/hnsw_sinker.go index 6be77ae5eca93..00eca312145eb 100644 --- a/pkg/cdc/hnsw_sinker.go +++ b/pkg/cdc/hnsw_sinker.go @@ -110,49 +110,6 @@ var NewHnswSyncSinker = func( return nil, moerr.NewInternalErrorNoCtx("hnsw index table only have one vector part") } - /* - pkcol := tableDef.Name2ColIndex[pkColName] - veccol := tableDef.Name2ColIndex[indexdef.Parts[0]] - - if tableDef.Cols[pkcol].Typ.Id != int32(types.T_int64) { - return nil, moerr.NewInternalErrorNoCtx("hnsw index table primary key is not int64") - - } - - // get param and index table name - paramstr := indexdef.IndexAlgoParams - var meta, storage string - for _, idx := range hnswindexes { - if idx.IndexAlgoTableType == catalog.Hnsw_TblType_Metadata { - meta = idx.IndexTableName - } - if idx.IndexAlgoTableType == catalog.Hnsw_TblType_Storage { - storage = idx.IndexTableName - } - } - - if len(meta) == 0 || len(storage) == 0 { - return nil, moerr.NewInternalErrorNoCtx("hnsw index table either meta or storage hidden index table not exist") - } - - var hnswparam vectorindex.HnswParam - if len(paramstr) > 0 { - err := json.Unmarshal([]byte(paramstr), &hnswparam) - if err != nil { - return nil, moerr.NewInternalErrorNoCtx("hnsw sync sinker. failed to convert hnsw param json") - } - } - - param := vectorindex.HnswCdcParam{ - MetaTbl: meta, - IndexTbl: storage, - DbName: dbTblInfo.SinkDbName, - Table: dbTblInfo.SinkTblName, - Params: hnswparam, - Dimension: tableDef.Cols[veccol].Typ.Width, - } - */ - sqlwriter, err := NewIndexSqlWriter("hnsw", dbTblInfo, tableDef, hnswindexes) if err != nil { return nil, err From 53b6438fab807dcdcabbe96434a2d4198a00a1cf Mon Sep 17 00:00:00 2001 From: cpegeric Date: Mon, 23 Jun 2025 11:05:40 +0100 Subject: [PATCH 131/223] rename hsnw to index --- pkg/cdc/hnsw_sinker.go | 60 ++++++++++++++++++------------------- pkg/cdc/hnsw_sinker_test.go | 42 +++++++++++++------------- pkg/cdc/sinker.go | 4 +-- pkg/cdc/types.go | 8 ++--- 4 files changed, 57 insertions(+), 57 deletions(-) diff --git a/pkg/cdc/hnsw_sinker.go b/pkg/cdc/hnsw_sinker.go index 00eca312145eb..6819ffdb93aa1 100644 --- a/pkg/cdc/hnsw_sinker.go +++ b/pkg/cdc/hnsw_sinker.go @@ -14,7 +14,7 @@ package cdc -// hnswSyncSinker is to update HNSW index via CDC. +// indexSyncSinker is to update HNSW index via CDC. // It will read CDC changes and create JSON as input to function hnsw_cdc_update(dbname, tablename, vector_dimenion, json) // You can refer the JSON format from vectorindex.VectorIndexCdc // Single batch will split into multiple json objects and each json has maximum 8192 records (see vectorindex.VectorIndexCdc). @@ -39,11 +39,11 @@ import ( "github.com/matrixorigin/matrixone/pkg/vectorindex" ) -var _ Sinker = &hnswSyncSinker{} +var _ Sinker = &indexSyncSinker{} var sqlExecutorFactory = _sqlExecutorFactory -type hnswSyncSinker struct { +type indexSyncSinker struct { cnUUID string dbTblInfo *DbTableInfo watermarkUpdater IWatermarkUpdater @@ -67,7 +67,7 @@ func _sqlExecutorFactory(cnUUID string) (executor.SQLExecutor, error) { return exec, nil } -var NewHnswSyncSinker = func( +var NewIndexSyncSinker = func( cnUUID string, sinkUri UriInfo, dbTblInfo *DbTableInfo, @@ -119,7 +119,7 @@ var NewHnswSyncSinker = func( var maxAllowedPacket uint64 maxAllowedPacket = min(maxAllowedPacket, maxSqlLength) - s := &hnswSyncSinker{ + s := &indexSyncSinker{ cnUUID: cnUUID, dbTblInfo: dbTblInfo, watermarkUpdater: watermarkUpdater, @@ -131,15 +131,15 @@ var NewHnswSyncSinker = func( sqlWriters: []IndexSqlWriter{sqlwriter}, rowdata: make([]any, len(tableDef.Cols)), } - logutil.Infof("cdc hnswSyncSinker(%v) maxAllowedPacket = %d", s.dbTblInfo, maxAllowedPacket) + logutil.Infof("cdc indexSyncSinker(%v) maxAllowedPacket = %d", s.dbTblInfo, maxAllowedPacket) return s, nil } -func (s *hnswSyncSinker) Run(ctx context.Context, ar *ActiveRoutine) { - logutil.Infof("cdc hnswSyncSinker(%v).Run: start", s.dbTblInfo) +func (s *indexSyncSinker) Run(ctx context.Context, ar *ActiveRoutine) { + logutil.Infof("cdc indexSyncSinker(%v).Run: start", s.dbTblInfo) defer func() { - logutil.Infof("cdc hnswSyncSinker(%v).Run: end", s.dbTblInfo) + logutil.Infof("cdc indexSyncSinker(%v).Run: end", s.dbTblInfo) }() closed := false @@ -173,7 +173,7 @@ func (s *hnswSyncSinker) Run(ctx context.Context, ar *ActiveRoutine) { opts := executor.Options{} res, err := s.exec.Exec(newctx, string(sqlBuf), opts) if err != nil { - logutil.Errorf("cdc hnswSyncSinker(%v) send sql failed, err: %v, sql: %s", s.dbTblInfo, err, sqlBuf[sqlBufReserved:]) + logutil.Errorf("cdc indexSyncSinker(%v) send sql failed, err: %v, sql: %s", s.dbTblInfo, err, sqlBuf[sqlBufReserved:]) os.Stderr.WriteString(fmt.Sprintf("sql executor run failed. %s\n", string(sqlBuf))) os.Stderr.WriteString(fmt.Sprintf("err :%v\n", err)) s.SetError(err) @@ -215,7 +215,7 @@ func (s *hnswSyncSinker) Run(ctx context.Context, ar *ActiveRoutine) { } else { res, err := exec.Exec(string(sqlBuf), opts.StatementOption()) if err != nil { - logutil.Errorf("cdc hnswSyncSinker(%v) send sql failed, err: %v, sql: %s", s.dbTblInfo, err, sqlBuf[sqlBufReserved:]) + logutil.Errorf("cdc indexSyncSinker(%v) send sql failed, err: %v, sql: %s", s.dbTblInfo, err, sqlBuf[sqlBufReserved:]) os.Stderr.WriteString(fmt.Sprintf("sql executor run failed. %s\n", string(sqlBuf))) os.Stderr.WriteString(fmt.Sprintf("err :%v\n", err)) return err @@ -233,7 +233,7 @@ func (s *hnswSyncSinker) Run(ctx context.Context, ar *ActiveRoutine) { if moe.ErrorCode() == moerr.ErrQueryInterrupted { // skip rollback error //os.Stderr.WriteString("error QueryInterrupted....rollback\n") - logutil.Errorf("cdc hnswSyncSinker(%v) parent rollback", s.dbTblInfo) + logutil.Errorf("cdc indexSyncSinker(%v) parent rollback", s.dbTblInfo) } else { s.SetError(err) } @@ -259,10 +259,10 @@ func (s *hnswSyncSinker) Run(ctx context.Context, ar *ActiveRoutine) { } } -func (s *hnswSyncSinker) Sink(ctx context.Context, data *DecoderOutput) { +func (s *indexSyncSinker) Sink(ctx context.Context, data *DecoderOutput) { watermark := s.watermarkUpdater.GetFromMem(s.dbTblInfo.SourceDbName, s.dbTblInfo.SourceTblName) if data.toTs.LE(&watermark) { - logutil.Errorf("cdc hnswSyncSinker(%v): unexpected watermark: %s, current watermark: %s", + logutil.Errorf("cdc indexSyncSinker(%v): unexpected watermark: %s, current watermark: %s", s.dbTblInfo, data.toTs.ToString(), watermark.ToString()) return } @@ -288,27 +288,27 @@ func (s *hnswSyncSinker) Sink(ctx context.Context, data *DecoderOutput) { //os.Stderr.WriteString(fmt.Sprintf("sinkTail insertBat %d, deletBat = %d\n", data.insertAtmBatch.RowCount(), data.deleteAtmBatch.RowCount())) s.sinkTail(ctx, data.insertAtmBatch, data.deleteAtmBatch) } else { - s.SetError(moerr.NewInternalError(ctx, fmt.Sprintf("cdc hnswSyncSinker unexpected output type: %v", data.outputTyp))) + s.SetError(moerr.NewInternalError(ctx, fmt.Sprintf("cdc indexSyncSinker unexpected output type: %v", data.outputTyp))) } } -func (s *hnswSyncSinker) SendBegin() { +func (s *indexSyncSinker) SendBegin() { s.sqlBufSendCh <- begin } -func (s *hnswSyncSinker) SendCommit() { +func (s *indexSyncSinker) SendCommit() { s.sqlBufSendCh <- commit } -func (s *hnswSyncSinker) SendRollback() { +func (s *indexSyncSinker) SendRollback() { s.sqlBufSendCh <- rollback } -func (s *hnswSyncSinker) SendDummy() { +func (s *indexSyncSinker) SendDummy() { s.sqlBufSendCh <- dummy } -func (s *hnswSyncSinker) Error() error { +func (s *indexSyncSinker) Error() error { if ptr := s.err.Load(); ptr != nil { errPtr := ptr.(*error) if errPtr != nil { @@ -325,28 +325,28 @@ func (s *hnswSyncSinker) Error() error { return nil } -func (s *hnswSyncSinker) SetError(err error) { +func (s *indexSyncSinker) SetError(err error) { s.err.Store(&err) } -func (s *hnswSyncSinker) ClearError() { +func (s *indexSyncSinker) ClearError() { var err *moerr.Error s.SetError(err) } -func (s *hnswSyncSinker) Reset() { +func (s *indexSyncSinker) Reset() { for _, writer := range s.sqlWriters { writer.Reset() } s.err = atomic.Value{} } -func (s *hnswSyncSinker) Close() { +func (s *indexSyncSinker) Close() { // stop Run goroutine close(s.sqlBufSendCh) } -func (s *hnswSyncSinker) sinkSnapshot(ctx context.Context, bat *batch.Batch) { +func (s *indexSyncSinker) sinkSnapshot(ctx context.Context, bat *batch.Batch) { var err error for i := 0; i < batchRowCount(bat); i++ { @@ -375,7 +375,7 @@ func (s *hnswSyncSinker) sinkSnapshot(ctx context.Context, bat *batch.Batch) { // upsertBatch and deleteBatch is sorted by ts // for the same ts, delete first, then upsert -func (s *hnswSyncSinker) sinkTail(ctx context.Context, upsertBatch, deleteBatch *AtomicBatch) { +func (s *indexSyncSinker) sinkTail(ctx context.Context, upsertBatch, deleteBatch *AtomicBatch) { var err error upsertIter := upsertBatch.GetRowIterator().(*atomicBatchRowIter) @@ -429,7 +429,7 @@ func (s *hnswSyncSinker) sinkTail(ctx context.Context, upsertBatch, deleteBatch s.flushCdc() } -func (s *hnswSyncSinker) sinkUpsert(ctx context.Context, upsertIter *atomicBatchRowIter) (err error) { +func (s *indexSyncSinker) sinkUpsert(ctx context.Context, upsertIter *atomicBatchRowIter) (err error) { // get row from the batch if err = upsertIter.Row(ctx, s.rowdata); err != nil { @@ -461,7 +461,7 @@ func (s *hnswSyncSinker) sinkUpsert(ctx context.Context, upsertIter *atomicBatch return nil } -func (s *hnswSyncSinker) sinkDelete(ctx context.Context, deleteIter *atomicBatchRowIter) (err error) { +func (s *indexSyncSinker) sinkDelete(ctx context.Context, deleteIter *atomicBatchRowIter) (err error) { // get row from the batch if err = deleteIter.Row(ctx, s.rowdata); err != nil { @@ -493,7 +493,7 @@ func (s *hnswSyncSinker) sinkDelete(ctx context.Context, deleteIter *atomicBatch return nil } -func (s *hnswSyncSinker) flushCdc() (err error) { +func (s *indexSyncSinker) flushCdc() (err error) { for _, writer := range s.sqlWriters { err = s.sendSql(writer) if err != nil { @@ -503,7 +503,7 @@ func (s *hnswSyncSinker) flushCdc() (err error) { return nil } -func (s *hnswSyncSinker) sendSql(writer IndexSqlWriter) error { +func (s *indexSyncSinker) sendSql(writer IndexSqlWriter) error { if writer.Empty() { return nil } diff --git a/pkg/cdc/hnsw_sinker_test.go b/pkg/cdc/hnsw_sinker_test.go index e267dfc736704..06207d903dc41 100644 --- a/pkg/cdc/hnsw_sinker_test.go +++ b/pkg/cdc/hnsw_sinker_test.go @@ -221,7 +221,7 @@ var ( // --- Test Cases --- -func TestNewHnswSyncSinker(t *testing.T) { +func TestNewIndexSyncSinker(t *testing.T) { dbTblInfo := newTestDbTableInfo() ar := newTestActiveRoutine() @@ -234,7 +234,7 @@ func TestNewHnswSyncSinker(t *testing.T) { t.Run("success float32", func(t *testing.T) { tblDef := newTestTableDef("pk", types.T_int64, "vec", types.T_array_float32, 128) - sinker, err := NewHnswSyncSinker("test-uuid", UriInfo{}, dbTblInfo, watermarkUpdater, tblDef, 3, time.Second, ar, 1024, "10s") + sinker, err := NewIndexSyncSinker("test-uuid", UriInfo{}, dbTblInfo, watermarkUpdater, tblDef, 3, time.Second, ar, 1024, "10s") require.NoError(t, err) require.NotNil(t, sinker) sinker.Close() @@ -243,7 +243,7 @@ func TestNewHnswSyncSinker(t *testing.T) { /* t.Run("success float64", func(t *testing.T) { tblDef := newTestTableDef("pk", types.T_int64, "vec", types.T_array_float64, 128) - sinker, err := NewHnswSyncSinker("test-uuid", UriInfo{}, dbTblInfo, watermarkUpdater, tblDef, 3, time.Second, ar, 1024, "10s") + sinker, err := NewIndexSyncSinker("test-uuid", UriInfo{}, dbTblInfo, watermarkUpdater, tblDef, 3, time.Second, ar, 1024, "10s") require.NoError(t, err) require.NotNil(t, sinker) sinker.Close() @@ -253,7 +253,7 @@ func TestNewHnswSyncSinker(t *testing.T) { t.Run("invalid pkey count", func(t *testing.T) { tblDef := newTestTableDef("pk", types.T_int64, "vec", types.T_array_float32, 128) tblDef.Pkey.Names = []string{"pk1", "pk2"} - _, err := NewHnswSyncSinker("test-uuid", UriInfo{}, dbTblInfo, watermarkUpdater, tblDef, 3, time.Second, ar, 1024, "10s") + _, err := NewIndexSyncSinker("test-uuid", UriInfo{}, dbTblInfo, watermarkUpdater, tblDef, 3, time.Second, ar, 1024, "10s") require.Error(t, err) require.True(t, moerr.IsMoErrCode(err, moerr.ErrInternal)) }) @@ -261,7 +261,7 @@ func TestNewHnswSyncSinker(t *testing.T) { t.Run("invalid hnsw index count", func(t *testing.T) { tblDef := newTestTableDef("pk", types.T_int64, "vec", types.T_array_float32, 128) tblDef.Indexes = []*plan.IndexDef{tblDef.Indexes[0]} // Only one index - _, err := NewHnswSyncSinker("test-uuid", UriInfo{}, dbTblInfo, watermarkUpdater, tblDef, 3, time.Second, ar, 1024, "10s") + _, err := NewIndexSyncSinker("test-uuid", UriInfo{}, dbTblInfo, watermarkUpdater, tblDef, 3, time.Second, ar, 1024, "10s") require.Error(t, err) require.True(t, moerr.IsMoErrCode(err, moerr.ErrInternal)) }) @@ -269,14 +269,14 @@ func TestNewHnswSyncSinker(t *testing.T) { t.Run("invalid index parts count", func(t *testing.T) { tblDef := newTestTableDef("pk", types.T_int64, "vec", types.T_array_float32, 128) tblDef.Indexes[0].Parts = []string{"vec1", "vec2"} - _, err := NewHnswSyncSinker("test-uuid", UriInfo{}, dbTblInfo, watermarkUpdater, tblDef, 3, time.Second, ar, 1024, "10s") + _, err := NewIndexSyncSinker("test-uuid", UriInfo{}, dbTblInfo, watermarkUpdater, tblDef, 3, time.Second, ar, 1024, "10s") require.Error(t, err) require.True(t, moerr.IsMoErrCode(err, moerr.ErrInternal)) }) t.Run("invalid pkey type", func(t *testing.T) { tblDef := newTestTableDef("pk", types.T_int32, "vec", types.T_array_float32, 128) // PK is int32 - _, err := NewHnswSyncSinker("test-uuid", UriInfo{}, dbTblInfo, watermarkUpdater, tblDef, 3, time.Second, ar, 1024, "10s") + _, err := NewIndexSyncSinker("test-uuid", UriInfo{}, dbTblInfo, watermarkUpdater, tblDef, 3, time.Second, ar, 1024, "10s") require.Error(t, err) require.True(t, moerr.IsMoErrCode(err, moerr.ErrInternal)) }) @@ -284,7 +284,7 @@ func TestNewHnswSyncSinker(t *testing.T) { t.Run("missing meta index", func(t *testing.T) { tblDef := newTestTableDef("pk", types.T_int64, "vec", types.T_array_float32, 128) tblDef.Indexes[0].IndexAlgoTableType = "invalid" // Corrupt meta index type - _, err := NewHnswSyncSinker("test-uuid", UriInfo{}, dbTblInfo, watermarkUpdater, tblDef, 3, time.Second, ar, 1024, "10s") + _, err := NewIndexSyncSinker("test-uuid", UriInfo{}, dbTblInfo, watermarkUpdater, tblDef, 3, time.Second, ar, 1024, "10s") require.Error(t, err) require.True(t, moerr.IsMoErrCode(err, moerr.ErrInternal)) }) @@ -292,14 +292,14 @@ func TestNewHnswSyncSinker(t *testing.T) { t.Run("invalid hnsw params json", func(t *testing.T) { tblDef := newTestTableDef("pk", types.T_int64, "vec", types.T_array_float32, 128) tblDef.Indexes[0].IndexAlgoParams = `{"M":16, efConstruction":200 ...` // Invalid JSON - _, err := NewHnswSyncSinker("test-uuid", UriInfo{}, dbTblInfo, watermarkUpdater, tblDef, 3, time.Second, ar, 1024, "10s") + _, err := NewIndexSyncSinker("test-uuid", UriInfo{}, dbTblInfo, watermarkUpdater, tblDef, 3, time.Second, ar, 1024, "10s") require.Error(t, err) require.True(t, moerr.IsMoErrCode(err, moerr.ErrInternal)) }) t.Run("unsupported vector type", func(t *testing.T) { tblDef := newTestTableDef("pk", types.T_int64, "vec", types.T_int32, 128) // Vector is int32 - _, err := NewHnswSyncSinker("test-uuid", UriInfo{}, dbTblInfo, watermarkUpdater, tblDef, 3, time.Second, ar, 1024, "10s") + _, err := NewIndexSyncSinker("test-uuid", UriInfo{}, dbTblInfo, watermarkUpdater, tblDef, 3, time.Second, ar, 1024, "10s") require.Error(t, err) require.True(t, moerr.IsMoErrCode(err, moerr.ErrInternal)) }) @@ -311,11 +311,11 @@ func TestHnswSyncSinker_Run(t *testing.T) { watermarkUpdater := NewMockWatermarkUpdater() tblDef := newTestTableDef("pk", types.T_int64, "vec", types.T_array_float32, 4) - sinker, err := NewHnswSyncSinker("test-uuid", UriInfo{}, newTestDbTableInfo(), watermarkUpdater, tblDef, 0, 0, newTestActiveRoutine(), 1024, "1s") + sinker, err := NewIndexSyncSinker("test-uuid", UriInfo{}, newTestDbTableInfo(), watermarkUpdater, tblDef, 0, 0, newTestActiveRoutine(), 1024, "1s") require.NoError(t, err) defer sinker.Close() - s := sinker.(*hnswSyncSinker) + s := sinker.(*indexSyncSinker) ctx, cancel := context.WithCancel(context.Background()) defer cancel() @@ -352,11 +352,11 @@ func TestHnswSyncSinker_RunError(t *testing.T) { watermarkUpdater := NewMockWatermarkUpdater() tblDef := newTestTableDef("pk", types.T_int64, "vec", types.T_array_float32, 4) - sinker, err := NewHnswSyncSinker("test-uuid", UriInfo{}, newTestDbTableInfo(), watermarkUpdater, tblDef, 0, 0, newTestActiveRoutine(), 1024, "1s") + sinker, err := NewIndexSyncSinker("test-uuid", UriInfo{}, newTestDbTableInfo(), watermarkUpdater, tblDef, 0, 0, newTestActiveRoutine(), 1024, "1s") require.NoError(t, err) defer sinker.Close() - s := sinker.(*hnswSyncSinker) + s := sinker.(*indexSyncSinker) ctx, cancel := context.WithCancel(context.Background()) defer cancel() @@ -427,11 +427,11 @@ func TestHnswSyncSinker_Sink(t *testing.T) { tblDef := newTestTableDef("pk", types.T_int64, "vec", types.T_array_float32, 2) watermarkUpdater := NewMockWatermarkUpdater() - sinker, err := NewHnswSyncSinker("test-uuid", UriInfo{}, newTestDbTableInfo(), watermarkUpdater, tblDef, 0, 0, newTestActiveRoutine(), 1024, "1s") + sinker, err := NewIndexSyncSinker("test-uuid", UriInfo{}, newTestDbTableInfo(), watermarkUpdater, tblDef, 0, 0, newTestActiveRoutine(), 1024, "1s") require.NoError(t, err) defer sinker.Close() - s := sinker.(*hnswSyncSinker) + s := sinker.(*indexSyncSinker) ctx := context.Background() t.Run("snapshot", func(t *testing.T) { @@ -512,8 +512,8 @@ func TestHnswSyncSinker_SendSql(t *testing.T) { watermarkMap: &sync.Map{}, } tblDef := newTestTableDef("pk", types.T_int64, "vec", types.T_array_float32, 2) - sinker, _ := NewHnswSyncSinker("test-uuid", UriInfo{}, newTestDbTableInfo(), watermarkUpdater, tblDef, 0, 0, newTestActiveRoutine(), 1024, "1s") - s := sinker.(*hnswSyncSinker) + sinker, _ := NewIndexSyncSinker("test-uuid", UriInfo{}, newTestDbTableInfo(), watermarkUpdater, tblDef, 0, 0, newTestActiveRoutine(), 1024, "1s") + s := sinker.(*indexSyncSinker) defer s.Close() // Closes sqlBufSendCh t.Run("send sql happy path", func(t *testing.T) { @@ -589,7 +589,7 @@ func TestHnswSyncSinker_ErrorHandling(t *testing.T) { sqlexecstub := gostub.Stub(&sqlExecutorFactory, mockSqlExecutorFactory) defer sqlexecstub.Reset() - s := &hnswSyncSinker{} // Minimal struct for error testing + s := &indexSyncSinker{} // Minimal struct for error testing s.err.Store((*error)(nil)) // Initialize with nil error pointer require.Nil(t, s.Error()) @@ -625,8 +625,8 @@ func TestHnswSyncSinker_Sink_AtomicBatch(t *testing.T) { watermarkMap: &sync.Map{}, } tblDef := newTestTableDef("pk", types.T_int64, "vec", types.T_array_float32, 2) - sinker, _ := NewHnswSyncSinker("test-uuid", UriInfo{}, newTestDbTableInfo(), watermarkUpdater, tblDef, 0, 0, newTestActiveRoutine(), 1024, "1s") - s := sinker.(*hnswSyncSinker) + sinker, _ := NewIndexSyncSinker("test-uuid", UriInfo{}, newTestDbTableInfo(), watermarkUpdater, tblDef, 0, 0, newTestActiveRoutine(), 1024, "1s") + s := sinker.(*indexSyncSinker) defer s.Close() // Closes sqlBufSendCh bat := testutil.NewBatchWithVectors( diff --git a/pkg/cdc/sinker.go b/pkg/cdc/sinker.go index 8099bf97d2f79..ea9e3503ba7ca 100644 --- a/pkg/cdc/sinker.go +++ b/pkg/cdc/sinker.go @@ -70,8 +70,8 @@ var NewSinker = func( return NewConsoleSinker(dbTblInfo, watermarkUpdater), nil } - if sinkUri.SinkTyp == CDCSinkType_HnswSync { - return NewHnswSyncSinker(cnUUID, sinkUri, dbTblInfo, watermarkUpdater, tableDef, retryTimes, retryDuration, ar, maxSqlLength, sendSqlTimeout) + if sinkUri.SinkTyp == CDCSinkType_IndexSync { + return NewIndexSyncSinker(cnUUID, sinkUri, dbTblInfo, watermarkUpdater, tableDef, retryTimes, retryDuration, ar, maxSqlLength, sendSqlTimeout) } var ( diff --git a/pkg/cdc/types.go b/pkg/cdc/types.go index 30f50decf6182..5de7f4c0ad6b8 100644 --- a/pkg/cdc/types.go +++ b/pkg/cdc/types.go @@ -52,10 +52,10 @@ const ( ) const ( - CDCSinkType_MySQL = "mysql" - CDCSinkType_MO = "matrixone" - CDCSinkType_Console = "console" - CDCSinkType_HnswSync = "hnswsync" + CDCSinkType_MySQL = "mysql" + CDCSinkType_MO = "matrixone" + CDCSinkType_Console = "console" + CDCSinkType_IndexSync = "indexsync" ) const ( From 8069eb0d7f9ce14745cec6a8e8a6a10bff88a02a Mon Sep 17 00:00:00 2001 From: cpegeric Date: Mon, 23 Jun 2025 11:08:12 +0100 Subject: [PATCH 132/223] delete if vector is nil --- pkg/cdc/index_sqlwriter.go | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/pkg/cdc/index_sqlwriter.go b/pkg/cdc/index_sqlwriter.go index 8d32fb141cb62..5688f80ac92bd 100644 --- a/pkg/cdc/index_sqlwriter.go +++ b/pkg/cdc/index_sqlwriter.go @@ -394,6 +394,12 @@ func (w *HnswSqlWriter[T]) Insert(ctx context.Context, row []any) error { return moerr.NewInternalError(ctx, "invalid vector type. not []float32") } + if v == nil { + // vector is nil, do Delete + w.cdc.Delete(key) + return nil + } + w.cdc.Insert(key, v) return nil } @@ -408,6 +414,12 @@ func (w *HnswSqlWriter[T]) Upsert(ctx context.Context, row []any) error { return moerr.NewInternalError(ctx, "invalid vector type. not []float32") } + if v == nil { + // vector is nil, do Delete + w.cdc.Delete(key) + return nil + } + w.cdc.Upsert(key, v) return nil } From 4afbe230aca70514ec1faa84c36d5ee41cb95c16 Mon Sep 17 00:00:00 2001 From: cpegeric Date: Mon, 23 Jun 2025 11:10:18 +0100 Subject: [PATCH 133/223] rename file --- pkg/cdc/{hnsw_sinker.go => index_sinker.go} | 0 pkg/cdc/{hnsw_sinker_test.go => index_sinker_test.go} | 0 2 files changed, 0 insertions(+), 0 deletions(-) rename pkg/cdc/{hnsw_sinker.go => index_sinker.go} (100%) rename pkg/cdc/{hnsw_sinker_test.go => index_sinker_test.go} (100%) diff --git a/pkg/cdc/hnsw_sinker.go b/pkg/cdc/index_sinker.go similarity index 100% rename from pkg/cdc/hnsw_sinker.go rename to pkg/cdc/index_sinker.go diff --git a/pkg/cdc/hnsw_sinker_test.go b/pkg/cdc/index_sinker_test.go similarity index 100% rename from pkg/cdc/hnsw_sinker_test.go rename to pkg/cdc/index_sinker_test.go From 4772c2f4ceda38a0db1a3e923a64c5be08930b91 Mon Sep 17 00:00:00 2001 From: cpegeric Date: Mon, 23 Jun 2025 11:49:49 +0100 Subject: [PATCH 134/223] support multi-indexes --- pkg/cdc/index_sinker.go | 52 +++++++++++++++++------------------- pkg/cdc/index_sinker_test.go | 4 +-- 2 files changed, 27 insertions(+), 29 deletions(-) diff --git a/pkg/cdc/index_sinker.go b/pkg/cdc/index_sinker.go index 6819ffdb93aa1..6d0a45ed7a9d8 100644 --- a/pkg/cdc/index_sinker.go +++ b/pkg/cdc/index_sinker.go @@ -56,6 +56,11 @@ type indexSyncSinker struct { rowdata []any } +type IndexEntry struct { + algo string + indexes []*plan.IndexDef +} + func _sqlExecutorFactory(cnUUID string) (executor.SQLExecutor, error) { // sql executor v, ok := runtime.ServiceRuntime(cnUUID).GetGlobalVariables(runtime.InternalSQLExecutor) @@ -86,39 +91,33 @@ var NewIndexSyncSinker = func( return nil, err } - // check the tabledef and indexdef - if len(tableDef.Pkey.Names) != 1 { - return nil, moerr.NewInternalErrorNoCtx("hnsw index table only have one primary key") - } - - hnswindexes := make([]*plan.IndexDef, 0, 2) + sqlwriters := make([]IndexSqlWriter, 0, 5) + indexmap := make(map[string]*IndexEntry) for _, idx := range tableDef.Indexes { - if idx.TableExist && catalog.IsHnswIndexAlgo(idx.IndexAlgo) { - hnswindexes = append(hnswindexes, idx) + if idx.TableExist && (catalog.IsHnswIndexAlgo(idx.IndexAlgo) || catalog.IsIvfIndexAlgo(idx.IndexAlgo) || catalog.IsFullTextIndexAlgo(idx.IndexAlgo)) { + fmt.Printf("idx %v\n", idx) + key := idx.IndexName + sidx, ok := indexmap[key] + if ok { + sidx.indexes = append(sidx.indexes, idx) + } else { + ie := &IndexEntry{algo: idx.IndexAlgo, indexes: make([]*plan.IndexDef, 0, 3)} + ie.indexes = append(ie.indexes, idx) + indexmap[key] = ie + } } } - if len(hnswindexes) != 2 { - return nil, moerr.NewInternalErrorNoCtx("hnsw index table without index definition") - } - - indexdef := hnswindexes[0] - - if len(indexdef.Parts) != 1 { - return nil, moerr.NewInternalErrorNoCtx("hnsw index table only have one vector part") - } - - sqlwriter, err := NewIndexSqlWriter("hnsw", dbTblInfo, tableDef, hnswindexes) - if err != nil { - return nil, err + for key, ie := range indexmap { + sqlwriter, err := NewIndexSqlWriter(ie.algo, dbTblInfo, tableDef, ie.indexes) + if err != nil { + return nil, err + } + sqlwriters = append(sqlwriters, sqlwriter) } - // create sinker - var maxAllowedPacket uint64 - maxAllowedPacket = min(maxAllowedPacket, maxSqlLength) - s := &indexSyncSinker{ cnUUID: cnUUID, dbTblInfo: dbTblInfo, @@ -128,10 +127,9 @@ var NewIndexSyncSinker = func( sqlBufSendCh: make(chan []byte), err: atomic.Value{}, exec: exec, - sqlWriters: []IndexSqlWriter{sqlwriter}, + sqlWriters: sqlwriters, rowdata: make([]any, len(tableDef.Cols)), } - logutil.Infof("cdc indexSyncSinker(%v) maxAllowedPacket = %d", s.dbTblInfo, maxAllowedPacket) return s, nil } diff --git a/pkg/cdc/index_sinker_test.go b/pkg/cdc/index_sinker_test.go index 06207d903dc41..b4d51a6041126 100644 --- a/pkg/cdc/index_sinker_test.go +++ b/pkg/cdc/index_sinker_test.go @@ -56,7 +56,7 @@ func newTestTableDef(pkName string, pkType types.T, vecColName string, vecType t }, Indexes: []*plan.IndexDef{ { - IndexName: "hnsw_meta_idx", + IndexName: "hnsw_idx", TableExist: true, IndexAlgo: catalog.MoIndexHnswAlgo.ToString(), IndexAlgoTableType: catalog.Hnsw_TblType_Metadata, @@ -65,7 +65,7 @@ func newTestTableDef(pkName string, pkType types.T, vecColName string, vecType t IndexAlgoParams: `{"m":"16","ef_construction":"200","ef_search":"100","op_type":"vector_l2_ops"}`, }, { - IndexName: "hnsw_storage_idx", + IndexName: "hnsw_idx", TableExist: true, IndexAlgo: catalog.MoIndexHnswAlgo.ToString(), IndexAlgoTableType: catalog.Hnsw_TblType_Storage, From 12429c22565a3a61f5dea9daf18091b31f7cd146 Mon Sep 17 00:00:00 2001 From: cpegeric Date: Mon, 23 Jun 2025 11:51:38 +0100 Subject: [PATCH 135/223] cleanup --- pkg/cdc/index_sinker.go | 1 - 1 file changed, 1 deletion(-) diff --git a/pkg/cdc/index_sinker.go b/pkg/cdc/index_sinker.go index 6d0a45ed7a9d8..eec42a6e2daab 100644 --- a/pkg/cdc/index_sinker.go +++ b/pkg/cdc/index_sinker.go @@ -96,7 +96,6 @@ var NewIndexSyncSinker = func( for _, idx := range tableDef.Indexes { if idx.TableExist && (catalog.IsHnswIndexAlgo(idx.IndexAlgo) || catalog.IsIvfIndexAlgo(idx.IndexAlgo) || catalog.IsFullTextIndexAlgo(idx.IndexAlgo)) { - fmt.Printf("idx %v\n", idx) key := idx.IndexName sidx, ok := indexmap[key] if ok { From b32d84603b8d079e4db52849e33d506e6cade4b4 Mon Sep 17 00:00:00 2001 From: cpegeric Date: Mon, 23 Jun 2025 11:52:20 +0100 Subject: [PATCH 136/223] cleanup --- pkg/cdc/index_sinker.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/cdc/index_sinker.go b/pkg/cdc/index_sinker.go index eec42a6e2daab..373b9aef7e54d 100644 --- a/pkg/cdc/index_sinker.go +++ b/pkg/cdc/index_sinker.go @@ -109,7 +109,7 @@ var NewIndexSyncSinker = func( } - for key, ie := range indexmap { + for _, ie := range indexmap { sqlwriter, err := NewIndexSqlWriter(ie.algo, dbTblInfo, tableDef, ie.indexes) if err != nil { return nil, err From dd93d28ecfcfb2550ed7d9e5eeaac70fc21606d0 Mon Sep 17 00:00:00 2001 From: cpegeric Date: Mon, 23 Jun 2025 12:02:25 +0100 Subject: [PATCH 137/223] use constant --- pkg/cdc/index_sqlwriter.go | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/pkg/cdc/index_sqlwriter.go b/pkg/cdc/index_sqlwriter.go index 5688f80ac92bd..2c0afbe92150a 100644 --- a/pkg/cdc/index_sqlwriter.go +++ b/pkg/cdc/index_sqlwriter.go @@ -76,12 +76,13 @@ var _ IndexSqlWriter = new(HnswSqlWriter[float32]) // check algo type to return the correct sql writer func NewIndexSqlWriter(algo string, dbTblInfo *DbTableInfo, tabledef *plan.TableDef, indexdef []*plan.IndexDef) (IndexSqlWriter, error) { + algo = catalog.ToLower(algo) switch algo { - case "fulltext": + case catalog.MOIndexFullTextAlgo.ToString(): return NewFulltextSqlWriter(algo, dbTblInfo, tabledef, indexdef) - case "ivfflat": + case catalog.MoIndexIvfFlatAlgo.ToString(): return NewIvfflatSqlWriter(algo, dbTblInfo, tabledef, indexdef) - case "hnsw": + case catalog.MoIndexHnswAlgo.ToString(): return NewHnswSqlWriter(algo, dbTblInfo, tabledef, indexdef) default: return IndexSqlWriter(nil), moerr.NewInternalErrorNoCtx("IndexSqlWriter: invalid algo type") From 173589aff59fa4c5b48277cfe152fafc3c691ebd Mon Sep 17 00:00:00 2001 From: cpegeric Date: Mon, 23 Jun 2025 12:09:58 +0100 Subject: [PATCH 138/223] rename file --- pkg/cdc/{fulltext_sinker_test.go => index_sqlwriter_test.go} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename pkg/cdc/{fulltext_sinker_test.go => index_sqlwriter_test.go} (100%) diff --git a/pkg/cdc/fulltext_sinker_test.go b/pkg/cdc/index_sqlwriter_test.go similarity index 100% rename from pkg/cdc/fulltext_sinker_test.go rename to pkg/cdc/index_sqlwriter_test.go From a44aacf7178a7e397038442e71c89dcdc1ab9d63 Mon Sep 17 00:00:00 2001 From: cpegeric Date: Mon, 23 Jun 2025 12:28:54 +0100 Subject: [PATCH 139/223] todo --- pkg/cdc/index_sinker.go | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pkg/cdc/index_sinker.go b/pkg/cdc/index_sinker.go index 373b9aef7e54d..37ab949b0526b 100644 --- a/pkg/cdc/index_sinker.go +++ b/pkg/cdc/index_sinker.go @@ -257,6 +257,8 @@ func (s *indexSyncSinker) Run(ctx context.Context, ar *ActiveRoutine) { } func (s *indexSyncSinker) Sink(ctx context.Context, data *DecoderOutput) { + // TODO: IMPORTANT: check the indexdef here so that Add/Drop index can be reflected here + watermark := s.watermarkUpdater.GetFromMem(s.dbTblInfo.SourceDbName, s.dbTblInfo.SourceTblName) if data.toTs.LE(&watermark) { logutil.Errorf("cdc indexSyncSinker(%v): unexpected watermark: %s, current watermark: %s", From 9aa078c1cfdcf0881e0c8866a842b996d9615665 Mon Sep 17 00:00:00 2001 From: cpegeric Date: Mon, 23 Jun 2025 13:11:21 +0100 Subject: [PATCH 140/223] bvt test --- pkg/frontend/cdc_options.go | 2 +- test/distributed/cases/vector/vector_hnsw_sync.result | 6 +++--- test/distributed/cases/vector/vector_hnsw_sync.sql | 6 +++--- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/pkg/frontend/cdc_options.go b/pkg/frontend/cdc_options.go index 1b3c52b16137c..01173fdb20409 100644 --- a/pkg/frontend/cdc_options.go +++ b/pkg/frontend/cdc_options.go @@ -123,7 +123,7 @@ func (opts *CDCCreateTaskOptions) ValidateAndFill( if cdc.EnableConsoleSink && opts.SinkType == cdc.CDCSinkType_Console { opts.UseConsole = true } - if !opts.UseConsole && opts.SinkType != cdc.CDCSinkType_MySQL && opts.SinkType != cdc.CDCSinkType_MO && opts.SinkType != cdc.CDCSinkType_HnswSync { + if !opts.UseConsole && opts.SinkType != cdc.CDCSinkType_MySQL && opts.SinkType != cdc.CDCSinkType_MO && opts.SinkType != cdc.CDCSinkType_IndexSync { err = moerr.NewInternalErrorf(ctx, "unsupported sink type: %s", req.SinkType) return } diff --git a/test/distributed/cases/vector/vector_hnsw_sync.result b/test/distributed/cases/vector/vector_hnsw_sync.result index 758d48275e82b..aa9c5e350ae2e 100644 --- a/test/distributed/cases/vector/vector_hnsw_sync.result +++ b/test/distributed/cases/vector/vector_hnsw_sync.result @@ -6,7 +6,7 @@ create table t1(a bigint primary key, b vecf32(3),c int,key c_k(c)); create index idx01 using hnsw on t1(b) op_type "vector_l2_ops" M 48 EF_CONSTRUCTION 64 EF_SEARCH 64; drop pitr if exists `__mo_table_pitr_t1`; create pitr `__mo_table_pitr_t1` for table hnsw_cdc t1 range 2 'h'; -create cdc `__mo_cdc_t1_idx01` 'mysql://root:111@127.0.0.1:6001' 'hnswsync' 'mysql://root:111@127.0.0.1:6001' 'hnsw_cdc.t1' {'Level'='table'}; +create cdc `__mo_cdc_t1_idx01` 'mysql://root:111@127.0.0.1:6001' 'indexsync' 'mysql://root:111@127.0.0.1:6001' 'hnsw_cdc.t1' {'Level'='table'}; insert into t1 values (0, "[1,2,3]", 1); UPDATE t1 set b = '[4,5,6]' where a = 0; insert into t1 values (1, "[2,3,4]", 1); @@ -30,7 +30,7 @@ create table t2(a bigint primary key, b vecf32(128)); create index idx2 using hnsw on t2(b) op_type "vector_l2_ops" M 48 EF_CONSTRUCTION 64 EF_SEARCH 64; drop pitr if exists `__mo_table_pitr_t2`; create pitr `__mo_table_pitr_t2` for table hnsw_cdc t2 range 2 'h'; -create cdc `__mo_cdc_hnsw_cdc_t2_idx2` 'mysql://root:111@127.0.0.1:6001' 'hnswsync' 'mysql://root:111@127.0.0.1:6001' 'hnsw_cdc.t2' {'Level'='table'}; +create cdc `__mo_cdc_hnsw_cdc_t2_idx2` 'mysql://root:111@127.0.0.1:6001' 'indexsync' 'mysql://root:111@127.0.0.1:6001' 'hnsw_cdc.t2' {'Level'='table'}; load data infile {'filepath'='$resources/vector/sift128_base_10k.csv.gz', 'compression'='gzip'} into table t2 fields terminated by ':' parallel 'true'; select count(*) from t2; count(*) @@ -55,7 +55,7 @@ count(*) create index idx3 using hnsw on t3(b) op_type "vector_l2_ops" M 48 EF_CONSTRUCTION 64 EF_SEARCH 64; drop pitr if exists `__mo_table_pitr_hnsw_cdc_t3`; create pitr `__mo_table_pitr_hnsw_cdc_t3` for table hnsw_cdc t3 range 2 'h'; -create cdc `__mo_cdc_hnsw_cdc_t3_idx3` 'mysql://root:111@127.0.0.1:6001' 'hnswsync' 'mysql://root:111@127.0.0.1:6001' 'hnsw_cdc.t3' {'Level'='table'}; +create cdc `__mo_cdc_hnsw_cdc_t3_idx3` 'mysql://root:111@127.0.0.1:6001' 'indexsync' 'mysql://root:111@127.0.0.1:6001' 'hnsw_cdc.t3' {'Level'='table'}; load data infile {'filepath'='$resources/vector/sift128_base_10k_2.csv.gz', 'compression'='gzip'} into table t3 fields terminated by ':' parallel 'true'; select count(*) from t3; count(*) diff --git a/test/distributed/cases/vector/vector_hnsw_sync.sql b/test/distributed/cases/vector/vector_hnsw_sync.sql index b816c2cc49e2f..d5dd43f65648d 100644 --- a/test/distributed/cases/vector/vector_hnsw_sync.sql +++ b/test/distributed/cases/vector/vector_hnsw_sync.sql @@ -11,7 +11,7 @@ create table t1(a bigint primary key, b vecf32(3),c int,key c_k(c)); create index idx01 using hnsw on t1(b) op_type "vector_l2_ops" M 48 EF_CONSTRUCTION 64 EF_SEARCH 64; drop pitr if exists `__mo_table_pitr_t1`; create pitr `__mo_table_pitr_t1` for table hnsw_cdc t1 range 2 'h'; -create cdc `__mo_cdc_t1_idx01` 'mysql://root:111@127.0.0.1:6001' 'hnswsync' 'mysql://root:111@127.0.0.1:6001' 'hnsw_cdc.t1' {'Level'='table'}; +create cdc `__mo_cdc_t1_idx01` 'mysql://root:111@127.0.0.1:6001' 'indexsync' 'mysql://root:111@127.0.0.1:6001' 'hnsw_cdc.t1' {'Level'='table'}; -- show cdc all; -- select sleep(30); @@ -49,7 +49,7 @@ create table t2(a bigint primary key, b vecf32(128)); create index idx2 using hnsw on t2(b) op_type "vector_l2_ops" M 48 EF_CONSTRUCTION 64 EF_SEARCH 64; drop pitr if exists `__mo_table_pitr_t2`; create pitr `__mo_table_pitr_t2` for table hnsw_cdc t2 range 2 'h'; -create cdc `__mo_cdc_hnsw_cdc_t2_idx2` 'mysql://root:111@127.0.0.1:6001' 'hnswsync' 'mysql://root:111@127.0.0.1:6001' 'hnsw_cdc.t2' {'Level'='table'}; +create cdc `__mo_cdc_hnsw_cdc_t2_idx2` 'mysql://root:111@127.0.0.1:6001' 'indexsync' 'mysql://root:111@127.0.0.1:6001' 'hnsw_cdc.t2' {'Level'='table'}; -- select sleep(30); load data infile {'filepath'='$resources/vector/sift128_base_10k.csv.gz', 'compression'='gzip'} into table t2 fields terminated by ':' parallel 'true'; @@ -85,7 +85,7 @@ create index idx3 using hnsw on t3(b) op_type "vector_l2_ops" M 48 EF_CONSTRUCTI drop pitr if exists `__mo_table_pitr_hnsw_cdc_t3`; create pitr `__mo_table_pitr_hnsw_cdc_t3` for table hnsw_cdc t3 range 2 'h'; -create cdc `__mo_cdc_hnsw_cdc_t3_idx3` 'mysql://root:111@127.0.0.1:6001' 'hnswsync' 'mysql://root:111@127.0.0.1:6001' 'hnsw_cdc.t3' {'Level'='table'}; +create cdc `__mo_cdc_hnsw_cdc_t3_idx3` 'mysql://root:111@127.0.0.1:6001' 'indexsync' 'mysql://root:111@127.0.0.1:6001' 'hnsw_cdc.t3' {'Level'='table'}; -- select sleep(30); From 01fc88d2128fd35f13c6bb2c4cd7545961a08b3e Mon Sep 17 00:00:00 2001 From: cpegeric Date: Mon, 23 Jun 2025 13:23:29 +0100 Subject: [PATCH 141/223] cleanup --- pkg/cdc/index_sinker.go | 3 +- pkg/cdc/index_sqlwriter.go | 75 +++++++++++++++++++++----------------- 2 files changed, 44 insertions(+), 34 deletions(-) diff --git a/pkg/cdc/index_sinker.go b/pkg/cdc/index_sinker.go index 37ab949b0526b..4490088962ecf 100644 --- a/pkg/cdc/index_sinker.go +++ b/pkg/cdc/index_sinker.go @@ -95,7 +95,8 @@ var NewIndexSyncSinker = func( indexmap := make(map[string]*IndexEntry) for _, idx := range tableDef.Indexes { - if idx.TableExist && (catalog.IsHnswIndexAlgo(idx.IndexAlgo) || catalog.IsIvfIndexAlgo(idx.IndexAlgo) || catalog.IsFullTextIndexAlgo(idx.IndexAlgo)) { + // if idx.TableExist && (catalog.IsHnswIndexAlgo(idx.IndexAlgo) || catalog.IsIvfIndexAlgo(idx.IndexAlgo) || catalog.IsFullTextIndexAlgo(idx.IndexAlgo)) { + if idx.TableExist && catalog.IsHnswIndexAlgo(idx.IndexAlgo) { key := idx.IndexName sidx, ok := indexmap[key] if ok { diff --git a/pkg/cdc/index_sqlwriter.go b/pkg/cdc/index_sqlwriter.go index 2c0afbe92150a..6e2d61147bd01 100644 --- a/pkg/cdc/index_sqlwriter.go +++ b/pkg/cdc/index_sqlwriter.go @@ -13,6 +13,7 @@ import ( "github.com/matrixorigin/matrixone/pkg/vectorindex" ) +// IndexSqlWriter interface type IndexSqlWriter interface { CheckLastOp(op string) bool Upsert(ctx context.Context, row []any) error @@ -24,6 +25,7 @@ type IndexSqlWriter interface { Empty() bool } +// Base implementation of IVFFLAT and FULLTEXT. Their implementation are simliar. type BaseIndexSqlWriter struct { lastCdcOp string vbuf []byte @@ -41,11 +43,13 @@ type BaseIndexSqlWriter struct { dbName string } +// Fulltext Sql Writer. Only one hidden secondary index table type FulltextSqlWriter struct { BaseIndexSqlWriter indexTableName string } +// Ivfflat Sql writer. Three hidden secondary index tables type IvfflatSqlWriter struct { BaseIndexSqlWriter centroids_tbl string @@ -54,6 +58,7 @@ type IvfflatSqlWriter struct { ivfparam vectorindex.IvfParam } +// Hnsw Sql Writer. Use the vectorindex.VectorIndeXCdc JSON format type HnswSqlWriter[T types.RealNumbers] struct { cdc *vectorindex.VectorIndexCdc[T] meta vectorindex.HnswCdcParam @@ -91,39 +96,7 @@ func NewIndexSqlWriter(algo string, dbTblInfo *DbTableInfo, tabledef *plan.Table return IndexSqlWriter(nil), moerr.NewInternalErrorNoCtx("IndexSqlWriter: invalid algo type") } -func NewFulltextSqlWriter(algo string, dbTblInfo *DbTableInfo, tabledef *plan.TableDef, indexdef []*plan.IndexDef) (IndexSqlWriter, error) { - w := &FulltextSqlWriter{BaseIndexSqlWriter: BaseIndexSqlWriter{algo: algo, tabledef: tabledef, indexdef: indexdef, dbTblInfo: dbTblInfo, vbuf: make([]byte, 0, 1024)}} - - w.pkPos = tabledef.Name2ColIndex[tabledef.Pkey.PkeyColName] - typ := tabledef.Cols[w.pkPos].Typ - w.pkType = &types.Type{Oid: types.T(typ.Id), Width: typ.Width, Scale: typ.Scale} - - nparts := len(w.indexdef[0].Parts) - w.partsPos = make([]int32, nparts) - w.partsType = make([]*types.Type, nparts) - - for i, part := range w.indexdef[0].Parts { - w.partsPos[i] = tabledef.Name2ColIndex[part] - typ = tabledef.Cols[w.partsPos[i]].Typ - w.partsType[i] = &types.Type{Oid: types.T(typ.Id), Width: typ.Width, Scale: typ.Scale} - } - - w.srcPos = make([]int32, nparts+1) - w.srcType = make([]*types.Type, nparts+1) - - w.srcPos[0] = w.pkPos - w.srcType[0] = w.pkType - for i := range w.partsType { - w.srcPos[i+1] = w.partsPos[i] - w.srcType[i+1] = w.partsType[i] - } - - w.indexTableName = w.indexdef[0].IndexTableName - w.dbName = tabledef.DbName - - return w, nil -} - +// Implementation of Base Index SqlWriter func (w *BaseIndexSqlWriter) Full() bool { return false } @@ -232,6 +205,40 @@ func (w *BaseIndexSqlWriter) Empty() bool { return len(w.vbuf) == 0 } +// New Fulltext Sql Writer +func NewFulltextSqlWriter(algo string, dbTblInfo *DbTableInfo, tabledef *plan.TableDef, indexdef []*plan.IndexDef) (IndexSqlWriter, error) { + w := &FulltextSqlWriter{BaseIndexSqlWriter: BaseIndexSqlWriter{algo: algo, tabledef: tabledef, indexdef: indexdef, dbTblInfo: dbTblInfo, vbuf: make([]byte, 0, 1024)}} + + w.pkPos = tabledef.Name2ColIndex[tabledef.Pkey.PkeyColName] + typ := tabledef.Cols[w.pkPos].Typ + w.pkType = &types.Type{Oid: types.T(typ.Id), Width: typ.Width, Scale: typ.Scale} + + nparts := len(w.indexdef[0].Parts) + w.partsPos = make([]int32, nparts) + w.partsType = make([]*types.Type, nparts) + + for i, part := range w.indexdef[0].Parts { + w.partsPos[i] = tabledef.Name2ColIndex[part] + typ = tabledef.Cols[w.partsPos[i]].Typ + w.partsType[i] = &types.Type{Oid: types.T(typ.Id), Width: typ.Width, Scale: typ.Scale} + } + + w.srcPos = make([]int32, nparts+1) + w.srcType = make([]*types.Type, nparts+1) + + w.srcPos[0] = w.pkPos + w.srcType[0] = w.pkType + for i := range w.partsType { + w.srcPos[i+1] = w.partsPos[i] + w.srcType[i+1] = w.partsType[i] + } + + w.indexTableName = w.indexdef[0].IndexTableName + w.dbName = tabledef.DbName + + return w, nil +} + // with src as (select cast(serial(cast(column_0 as bigint), cast(column_1 as bigint)) as varchar) as id, column_2 as body, column_3 as title from // (values row(1, 2, 'body', 'title'), row(2, 3, 'body is heavy', 'I do not know'))) select f.* from src // cross apply fulltext_index_tokenize('{"parser":"ngram"}', 61, id, body, title) as f; @@ -283,6 +290,7 @@ func (w *FulltextSqlWriter) toFulltextUpsert(upsert bool) ([]byte, error) { return []byte(sql), nil } +// Implementation of HNSW Sql writer func NewHnswSqlWriter(algo string, dbTblInfo *DbTableInfo, tabledef *plan.TableDef, indexdef []*plan.IndexDef) (IndexSqlWriter, error) { w := &HnswSqlWriter[float32]{tabledef: tabledef, indexdef: indexdef, dbTblInfo: dbTblInfo, cdc: vectorindex.NewVectorIndexCdc[float32]()} @@ -447,6 +455,7 @@ func (w *HnswSqlWriter[T]) ToSql() ([]byte, error) { return []byte(sql), nil } +// Implementation of Ivfflat Sql writer func NewIvfflatSqlWriter(algo string, dbTblInfo *DbTableInfo, tabledef *plan.TableDef, indexdef []*plan.IndexDef) (IndexSqlWriter, error) { w := &IvfflatSqlWriter{BaseIndexSqlWriter: BaseIndexSqlWriter{algo: algo, tabledef: tabledef, indexdef: indexdef, dbTblInfo: dbTblInfo, vbuf: make([]byte, 0, 1024)}} From a39fa829c73cd4c2b796d96e2ec770c5b303525b Mon Sep 17 00:00:00 2001 From: cpegeric Date: Mon, 23 Jun 2025 13:26:30 +0100 Subject: [PATCH 142/223] cleanup --- pkg/cdc/index_sqlwriter.go | 1 - 1 file changed, 1 deletion(-) diff --git a/pkg/cdc/index_sqlwriter.go b/pkg/cdc/index_sqlwriter.go index 6e2d61147bd01..8fab542d412e4 100644 --- a/pkg/cdc/index_sqlwriter.go +++ b/pkg/cdc/index_sqlwriter.go @@ -93,7 +93,6 @@ func NewIndexSqlWriter(algo string, dbTblInfo *DbTableInfo, tabledef *plan.Table return IndexSqlWriter(nil), moerr.NewInternalErrorNoCtx("IndexSqlWriter: invalid algo type") } - return IndexSqlWriter(nil), moerr.NewInternalErrorNoCtx("IndexSqlWriter: invalid algo type") } // Implementation of Base Index SqlWriter From 613544e2b5e5ad77f07bbea52f5bf068b0116aac Mon Sep 17 00:00:00 2001 From: cpegeric Date: Mon, 23 Jun 2025 13:35:59 +0100 Subject: [PATCH 143/223] sca --- pkg/cdc/index_sqlwriter.go | 2 -- 1 file changed, 2 deletions(-) diff --git a/pkg/cdc/index_sqlwriter.go b/pkg/cdc/index_sqlwriter.go index 8fab542d412e4..83e6ce34a82f0 100644 --- a/pkg/cdc/index_sqlwriter.go +++ b/pkg/cdc/index_sqlwriter.go @@ -285,7 +285,6 @@ func (w *FulltextSqlWriter) toFulltextUpsert(upsert bool) ([]byte, error) { sql += fmt.Sprintf("WITH src as (SELECT %s FROM (VALUES %s)) ", cols, string(w.vbuf)) sql += fmt.Sprintf("SELECT f.* FROM src CROSS APPLY fulltext_index_tokenize('%s', %d, %s) as f", w.param, w.pkType.Oid, cnames_str) - fmt.Printf("SQL :%s\n", sql) return []byte(sql), nil } @@ -590,6 +589,5 @@ func (w *IvfflatSqlWriter) toIvfflatUpsert(upsert bool) ([]byte, error) { catalog.SystemSI_IVFFLAT_TblCol_Centroids_centroid, w.tabledef.Cols[w.partsPos[0]].Name) - fmt.Printf("SQL :%s\n", sql) return []byte(sql), nil } From 1a38d8ba04fa1f35bbc1a58ec5262018986f8dc6 Mon Sep 17 00:00:00 2001 From: cpegeric Date: Mon, 23 Jun 2025 13:49:57 +0100 Subject: [PATCH 144/223] add license --- pkg/cdc/index_sqlwriter.go | 14 ++++++++++++++ pkg/cdc/index_sqlwriter_test.go | 14 ++++++++++++++ 2 files changed, 28 insertions(+) diff --git a/pkg/cdc/index_sqlwriter.go b/pkg/cdc/index_sqlwriter.go index 83e6ce34a82f0..80c81ae109d2b 100644 --- a/pkg/cdc/index_sqlwriter.go +++ b/pkg/cdc/index_sqlwriter.go @@ -1,3 +1,17 @@ +// Copyright 2024 Matrix Origin +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + package cdc import ( diff --git a/pkg/cdc/index_sqlwriter_test.go b/pkg/cdc/index_sqlwriter_test.go index ca2415deb258a..b43ef851fb085 100644 --- a/pkg/cdc/index_sqlwriter_test.go +++ b/pkg/cdc/index_sqlwriter_test.go @@ -1,3 +1,17 @@ +// Copyright 2024 Matrix Origin +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + package cdc import ( From be202328029c05136b7ad7b128bc3077d95b7e61 Mon Sep 17 00:00:00 2001 From: cpegeric Date: Mon, 23 Jun 2025 14:20:42 +0100 Subject: [PATCH 145/223] bug fix --- pkg/vectorindex/types_test.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/pkg/vectorindex/types_test.go b/pkg/vectorindex/types_test.go index 9c7f24261c17f..fad882167d8af 100644 --- a/pkg/vectorindex/types_test.go +++ b/pkg/vectorindex/types_test.go @@ -34,14 +34,14 @@ func TestCdc(t *testing.T) { js, err := cdc.ToJson() require.Nil(t, err) - require.Equal(t, js, `{"start":"","end":"","cdc":[{"t":"I","pk":0,"v":[0,1,2]}]}`) + require.Equal(t, js, `{"cdc":[{"t":"I","pk":0,"v":[0,1,2]}]}`) // delete cdc.Delete(key) js, err = cdc.ToJson() require.Nil(t, err) - require.Equal(t, js, `{"start":"","end":"","cdc":[{"t":"I","pk":0,"v":[0,1,2]},{"t":"D","pk":0}]}`) + require.Equal(t, js, `{"cdc":[{"t":"I","pk":0,"v":[0,1,2]},{"t":"D","pk":0}]}`) // upsert cdc.Upsert(key2, v2) @@ -49,7 +49,7 @@ func TestCdc(t *testing.T) { js, err = cdc.ToJson() require.Nil(t, err) - require.Equal(t, js, `{"start":"","end":"","cdc":[{"t":"I","pk":0,"v":[0,1,2]},{"t":"D","pk":0},{"t":"U","pk":1,"v":[1,2,3]}]}`) + require.Equal(t, js, `{"cdc":[{"t":"I","pk":0,"v":[0,1,2]},{"t":"D","pk":0},{"t":"U","pk":1,"v":[1,2,3]}]}`) require.False(t, cdc.Empty()) @@ -59,5 +59,5 @@ func TestCdc(t *testing.T) { js, err = cdc.ToJson() require.NoError(t, err) - require.Equal(t, js, `{"start":"","end":"","cdc":[]}`) + require.Equal(t, js, `{"cdc":[]}`) } From 622a8886e5f6c135c1ed71f923b582c02480a2d5 Mon Sep 17 00:00:00 2001 From: cpegeric Date: Mon, 23 Jun 2025 14:41:17 +0100 Subject: [PATCH 146/223] more comments --- pkg/sql/compile/ddl.go | 6 +++--- pkg/sql/compile/util.go | 9 ++++++--- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/pkg/sql/compile/ddl.go b/pkg/sql/compile/ddl.go index a3555e6187338..20a8b515a6106 100644 --- a/pkg/sql/compile/ddl.go +++ b/pkg/sql/compile/ddl.go @@ -2109,11 +2109,11 @@ func (s *Scope) DropIndex(c *Compile) error { return err } - // TODO: HNSWCDC delete cdc task for vector, fulltext index - // cdc task name = __mo_cdc_{qry.Database}_{qry.Table}_{qry.IndexName} + // TODO: HNSWCDC delete cdc table task for vector, fulltext index + // cdc task name = __mo_cdc_{qry.Database}_{qry.Table} // pitr name = __mo_table_pitr_{qry.Database}_{qry.Table} // DROP PITR IF EXISTS `__mo_table_pitr_${qry.Database}_${srctable}` - // DROP CDC TASK __mo_cdc_${qry.Database}_${srctable}_${qry.IndexName} + // DROP CDC TASK __mo_cdc_${qry.Database}_${srctable} return nil } diff --git a/pkg/sql/compile/util.go b/pkg/sql/compile/util.go index 1a01954e26a5a..6f9c073c60b0f 100644 --- a/pkg/sql/compile/util.go +++ b/pkg/sql/compile/util.go @@ -563,10 +563,13 @@ func genBuildHnswIndex(proc *process.Process, indexDefs map[string]*plan.IndexDe } // TODO: HNSWCDC 4. register CDC update +// CDC Task is 'Table' level. Existing CDC task may be serving other indexes and we shall drop and create CDC task so that TableDef.Indexes is up-to-date. +// If not, new index may not be updated because the old IndexSinker has to old TableDef.Indexes in memory. +// // DROP PITR IF EXISTS `__mo_table_pitr_${db}_${srctable}` -// DROP CDC IF EXISTS TASK __mo_cdc_${db}_${srctable}_${indexInfo.IndexName} NOTE: IF EXISTS is not valid SQL for DROP CDC -// CREATE PITR __mo_table_pitr_${db}_${srctable} for table ${db} ${srctable) range 2 'h'; -// CREATE CDC __mo_cdc_${db}_${srctable}_${indexInfo.IndexName} 'mysql://root:111@127.0.0.1:6001' 'hnswsync' 'mysql://root:111@127.0.0.1:6001' '${db}.${srctable}' {'Level'='table'}' +// DROP CDC IF EXISTS TASK __mo_cdc_${db}_${srctable} NOTE: IF EXISTS is not valid SQL for DROP CDC +// CREATE PITR IF NOT EXISTS __mo_table_pitr_${db}_${srctable} for table ${db} ${srctable) range 2 'h'; +// CREATE CDC IF NOT EXISTS __mo_cdc_${db}_${srctable} 'mysql://root:111@127.0.0.1:6001' 'hnswsync' 'mysql://root:111@127.0.0.1:6001' '${db}.${srctable}' {'Level'='table'}' func genCdcHnswIndex(proc *process.Process, indexDefs map[string]*plan.IndexDef, qryDatabase string, originalTableDef *plan.TableDef) ([]string, error) { idxdef_meta, ok := indexDefs[catalog.Hnsw_TblType_Metadata] From 95a9a5c6b5af07089f7ee55bd0d0fc08444fc239 Mon Sep 17 00:00:00 2001 From: cpegeric Date: Mon, 23 Jun 2025 16:57:45 +0100 Subject: [PATCH 147/223] delete sql --- pkg/cdc/index_sqlwriter.go | 29 ++++++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/pkg/cdc/index_sqlwriter.go b/pkg/cdc/index_sqlwriter.go index 80c81ae109d2b..69563a630d62a 100644 --- a/pkg/cdc/index_sqlwriter.go +++ b/pkg/cdc/index_sqlwriter.go @@ -27,6 +27,10 @@ import ( "github.com/matrixorigin/matrixone/pkg/vectorindex" ) +const ( + MAX_CDC_DATA_SIZE = 8192 +) + // IndexSqlWriter interface type IndexSqlWriter interface { CheckLastOp(op string) bool @@ -43,6 +47,7 @@ type IndexSqlWriter interface { type BaseIndexSqlWriter struct { lastCdcOp string vbuf []byte + ndata int param string tabledef *plan.TableDef indexdef []*plan.IndexDef @@ -111,7 +116,7 @@ func NewIndexSqlWriter(algo string, dbTblInfo *DbTableInfo, tabledef *plan.Table // Implementation of Base Index SqlWriter func (w *BaseIndexSqlWriter) Full() bool { - return false + return w.ndata >= MAX_CDC_DATA_SIZE } // return true when last op is empty or last op == current op @@ -140,6 +145,7 @@ func (w *BaseIndexSqlWriter) writeRow(ctx context.Context, row []any) error { } w.vbuf = appendString(w.vbuf, ")") + w.ndata += 1 return nil } @@ -191,6 +197,7 @@ func (w *BaseIndexSqlWriter) Delete(ctx context.Context, row []any) error { if err != nil { return err } + w.ndata += 1 } @@ -205,6 +212,7 @@ func (w *BaseIndexSqlWriter) Delete(ctx context.Context, row []any) error { if err != nil { return err } + w.ndata += 1 return nil } @@ -212,6 +220,7 @@ func (w *BaseIndexSqlWriter) Delete(ctx context.Context, row []any) error { func (w *BaseIndexSqlWriter) Reset() { w.lastCdcOp = "" w.vbuf = w.vbuf[:0] + w.ndata = 0 } func (w *BaseIndexSqlWriter) Empty() bool { @@ -264,6 +273,7 @@ func (w *FulltextSqlWriter) ToSql() ([]byte, error) { switch w.lastCdcOp { case vectorindex.CDC_DELETE: + return w.toFulltextDelete() case vectorindex.CDC_UPSERT: return w.toFulltextUpsert(true) case vectorindex.CDC_INSERT: @@ -275,6 +285,11 @@ func (w *FulltextSqlWriter) ToSql() ([]byte, error) { return nil, nil } +func (w *FulltextSqlWriter) toFulltextDelete() ([]byte, error) { + sql := fmt.Sprintf("DELETE FROM `%s`.`%s` WHERE `%s` IN (%s)", w.dbTblInfo.SinkDbName, w.indexTableName, catalog.FullTextIndex_TabCol_Id, string(w.vbuf)) + return []byte(sql), nil +} + func (w *FulltextSqlWriter) toFulltextUpsert(upsert bool) ([]byte, error) { var sql string @@ -552,6 +567,7 @@ func (w *IvfflatSqlWriter) ToSql() ([]byte, error) { switch w.lastCdcOp { case vectorindex.CDC_DELETE: + return w.toIvfflatDelete() case vectorindex.CDC_UPSERT: return w.toIvfflatUpsert(true) case vectorindex.CDC_INSERT: @@ -563,6 +579,17 @@ func (w *IvfflatSqlWriter) ToSql() ([]byte, error) { return nil, nil } +// catalog.SystemSI_IVFFLAT_TblCol_Entries_version +// catalog.SystemSI_IVFFLAT_TblCol_Entries_pk +// catalog.CPrimaryKeyColName +func (w *IvfflatSqlWriter) toIvfflatDelete() ([]byte, error) { + sql := fmt.Sprintf("DELETE FROM `%s`.`%s` WHERE `%s` IN (%s)", w.dbTblInfo.SinkDbName, w.entries_tbl, + catalog.SystemSI_IVFFLAT_TblCol_Entries_pk, + string(w.vbuf)) + return []byte(sql), nil + +} + func (w *IvfflatSqlWriter) toIvfflatUpsert(upsert bool) ([]byte, error) { var sql string From 4f0662965bf87a800ae1e4b98feec182929b2887 Mon Sep 17 00:00:00 2001 From: cpegeric Date: Mon, 23 Jun 2025 17:12:34 +0100 Subject: [PATCH 148/223] cleanup --- pkg/cdc/index_sqlwriter.go | 27 +++++++++++++-------------- 1 file changed, 13 insertions(+), 14 deletions(-) diff --git a/pkg/cdc/index_sqlwriter.go b/pkg/cdc/index_sqlwriter.go index 69563a630d62a..322771ef88fd1 100644 --- a/pkg/cdc/index_sqlwriter.go +++ b/pkg/cdc/index_sqlwriter.go @@ -149,6 +149,17 @@ func (w *BaseIndexSqlWriter) writeRow(ctx context.Context, row []any) error { return nil } +func (w *BaseIndexSqlWriter) writeDeleteRow(ctx context.Context, row []any) error { + var err error + + w.vbuf, err = convertColIntoSql(ctx, row[w.pkPos], w.pkType, w.vbuf) + if err != nil { + return err + } + w.ndata += 1 + return nil +} + func (w *BaseIndexSqlWriter) Upsert(ctx context.Context, row []any) error { if len(w.lastCdcOp) == 0 { @@ -188,17 +199,11 @@ func (w *BaseIndexSqlWriter) Insert(ctx context.Context, row []any) error { } func (w *BaseIndexSqlWriter) Delete(ctx context.Context, row []any) error { - var err error if len(w.lastCdcOp) == 0 { // init w.lastCdcOp = vectorindex.CDC_DELETE - w.vbuf, err = convertColIntoSql(ctx, row[w.pkPos], w.pkType, w.vbuf) - if err != nil { - return err - } - w.ndata += 1 - + return w.writeDeleteRow(ctx, row) } if w.lastCdcOp != vectorindex.CDC_DELETE { @@ -208,13 +213,7 @@ func (w *BaseIndexSqlWriter) Delete(ctx context.Context, row []any) error { // same as previous operation and append to IN () w.vbuf = appendString(w.vbuf, ",") - w.vbuf, err = convertColIntoSql(ctx, row[w.pkPos], w.pkType, w.vbuf) - if err != nil { - return err - } - w.ndata += 1 - - return nil + return w.writeDeleteRow(ctx, row) } func (w *BaseIndexSqlWriter) Reset() { From 3c34919859e4603d915b09d5d89933b9ae2b249d Mon Sep 17 00:00:00 2001 From: cpegeric Date: Mon, 23 Jun 2025 17:16:42 +0100 Subject: [PATCH 149/223] cleanup --- pkg/cdc/index_sqlwriter.go | 4 ---- 1 file changed, 4 deletions(-) diff --git a/pkg/cdc/index_sqlwriter.go b/pkg/cdc/index_sqlwriter.go index 322771ef88fd1..d6e5605dd218f 100644 --- a/pkg/cdc/index_sqlwriter.go +++ b/pkg/cdc/index_sqlwriter.go @@ -280,8 +280,6 @@ func (w *FulltextSqlWriter) ToSql() ([]byte, error) { default: return nil, moerr.NewInternalErrorNoCtx("FulltextSqlWriter: invalid CDC type") } - - return nil, nil } func (w *FulltextSqlWriter) toFulltextDelete() ([]byte, error) { @@ -574,8 +572,6 @@ func (w *IvfflatSqlWriter) ToSql() ([]byte, error) { default: return nil, moerr.NewInternalErrorNoCtx("IvfflatSqlWriter: invalid CDC type") } - - return nil, nil } // catalog.SystemSI_IVFFLAT_TblCol_Entries_version From d60145c047f489b06a3156f0fea572b9c71589a0 Mon Sep 17 00:00:00 2001 From: cpegeric Date: Tue, 24 Jun 2025 11:48:28 +0100 Subject: [PATCH 150/223] bug fix delete row only have 1 column pk --- pkg/cdc/index_sinker.go | 12 ++++++++---- pkg/cdc/index_sqlwriter.go | 5 +++-- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/pkg/cdc/index_sinker.go b/pkg/cdc/index_sinker.go index 4490088962ecf..90cbbaf56c31e 100644 --- a/pkg/cdc/index_sinker.go +++ b/pkg/cdc/index_sinker.go @@ -54,6 +54,7 @@ type indexSyncSinker struct { sqlBufSendCh chan []byte exec executor.SQLExecutor rowdata []any + rowdelete []any } type IndexEntry struct { @@ -95,8 +96,8 @@ var NewIndexSyncSinker = func( indexmap := make(map[string]*IndexEntry) for _, idx := range tableDef.Indexes { - // if idx.TableExist && (catalog.IsHnswIndexAlgo(idx.IndexAlgo) || catalog.IsIvfIndexAlgo(idx.IndexAlgo) || catalog.IsFullTextIndexAlgo(idx.IndexAlgo)) { - if idx.TableExist && catalog.IsHnswIndexAlgo(idx.IndexAlgo) { + if idx.TableExist && (catalog.IsHnswIndexAlgo(idx.IndexAlgo) || catalog.IsIvfIndexAlgo(idx.IndexAlgo) || catalog.IsFullTextIndexAlgo(idx.IndexAlgo)) { + //if idx.TableExist && catalog.IsHnswIndexAlgo(idx.IndexAlgo) { key := idx.IndexName sidx, ok := indexmap[key] if ok { @@ -129,6 +130,7 @@ var NewIndexSyncSinker = func( exec: exec, sqlWriters: sqlwriters, rowdata: make([]any, len(tableDef.Cols)), + rowdelete: make([]any, 1), // delete row only have one column pk } return s, nil @@ -464,7 +466,7 @@ func (s *indexSyncSinker) sinkUpsert(ctx context.Context, upsertIter *atomicBatc func (s *indexSyncSinker) sinkDelete(ctx context.Context, deleteIter *atomicBatchRowIter) (err error) { // get row from the batch - if err = deleteIter.Row(ctx, s.rowdata); err != nil { + if err = deleteIter.Row(ctx, s.rowdelete); err != nil { return err } @@ -479,7 +481,7 @@ func (s *indexSyncSinker) sinkDelete(ctx context.Context, deleteIter *atomicBatc } - writer.Delete(ctx, s.rowdata) + writer.Delete(ctx, s.rowdelete) if writer.Full() { // send SQL @@ -515,6 +517,8 @@ func (s *indexSyncSinker) sendSql(writer IndexSqlWriter) error { } s.sqlBufSendCh <- sql + os.Stderr.WriteString(string(sql)) + os.Stderr.WriteString("\n") // reset writer.Reset() diff --git a/pkg/cdc/index_sqlwriter.go b/pkg/cdc/index_sqlwriter.go index d6e5605dd218f..0daec9e130034 100644 --- a/pkg/cdc/index_sqlwriter.go +++ b/pkg/cdc/index_sqlwriter.go @@ -152,7 +152,7 @@ func (w *BaseIndexSqlWriter) writeRow(ctx context.Context, row []any) error { func (w *BaseIndexSqlWriter) writeDeleteRow(ctx context.Context, row []any) error { var err error - w.vbuf, err = convertColIntoSql(ctx, row[w.pkPos], w.pkType, w.vbuf) + w.vbuf, err = convertColIntoSql(ctx, row[0], w.pkType, w.vbuf) if err != nil { return err } @@ -458,7 +458,8 @@ func (w *HnswSqlWriter[T]) Upsert(ctx context.Context, row []any) error { } func (w *HnswSqlWriter[T]) Delete(ctx context.Context, row []any) error { - key, ok := row[w.pkPos].(int64) + // first column is the primary key + key, ok := row[0].(int64) if !ok { return moerr.NewInternalError(ctx, "invalid key type. not int64") } From 84d945cf23d05cf4fb70e8a837a6997f932b52d4 Mon Sep 17 00:00:00 2001 From: cpegeric Date: Tue, 24 Jun 2025 12:06:27 +0100 Subject: [PATCH 151/223] bug fix pre-defined column name --- pkg/cdc/index_sqlwriter.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/pkg/cdc/index_sqlwriter.go b/pkg/cdc/index_sqlwriter.go index 0daec9e130034..59b59bcb4948e 100644 --- a/pkg/cdc/index_sqlwriter.go +++ b/pkg/cdc/index_sqlwriter.go @@ -592,10 +592,10 @@ func (w *IvfflatSqlWriter) toIvfflatUpsert(upsert bool) ([]byte, error) { coldefs := make([]string, 0, len(w.srcPos)) cnames := make([]string, 0, len(w.srcPos)) - for i, pos := range w.srcPos { + for i := range w.srcPos { typstr := w.srcType[i].DescString() - coldefs = append(coldefs, fmt.Sprintf("CAST(column_%d as %s) as `%s`", i, typstr, w.tabledef.Cols[pos].Name)) - cnames = append(cnames, w.tabledef.Cols[pos].Name) + cnames = append(cnames, fmt.Sprintf("src%d", i)) + coldefs = append(coldefs, fmt.Sprintf("CAST(column_%d as %s) as `%s`", i, typstr, cnames[i])) } cols := strings.Join(coldefs, ", ") @@ -624,7 +624,7 @@ func (w *IvfflatSqlWriter) toIvfflatUpsert(upsert bool) ([]byte, error) { cnames_str, w.ivfparam.OpType, catalog.SystemSI_IVFFLAT_TblCol_Centroids_centroid, - w.tabledef.Cols[w.partsPos[0]].Name) + cnames[1]) return []byte(sql), nil } From 789fa58e31ec9a8019e6ce6104d9c6a58929139f Mon Sep 17 00:00:00 2001 From: cpegeric Date: Tue, 24 Jun 2025 12:33:43 +0100 Subject: [PATCH 152/223] hardcode composite primary key column to varbinary --- pkg/cdc/index_sqlwriter.go | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/pkg/cdc/index_sqlwriter.go b/pkg/cdc/index_sqlwriter.go index 59b59bcb4948e..e694763e41377 100644 --- a/pkg/cdc/index_sqlwriter.go +++ b/pkg/cdc/index_sqlwriter.go @@ -302,7 +302,7 @@ func (w *FulltextSqlWriter) toFulltextUpsert(upsert bool) ([]byte, error) { cols := strings.Join(coldefs, ", ") cnames_str := strings.Join(cnames, ", ") - if upsert { + if !upsert { sql += fmt.Sprintf("REPLACE INTO `%s`.`%s` ", w.dbName, w.indexTableName) } else { sql += fmt.Sprintf("INSERT INTO `%s`.`%s` ", w.dbName, w.indexTableName) @@ -523,7 +523,12 @@ func NewIvfflatSqlWriter(algo string, dbTblInfo *DbTableInfo, tabledef *plan.Tab w.pkPos = tabledef.Name2ColIndex[tabledef.Pkey.PkeyColName] typ := tabledef.Cols[w.pkPos].Typ - w.pkType = &types.Type{Oid: types.T(typ.Id), Width: typ.Width, Scale: typ.Scale} + if tabledef.Pkey.PkeyColName == catalog.CPrimaryKeyColName { + // hardcode __mo_cpkey_col column to varbinary + w.pkType = &types.Type{Oid: types.T_varbinary, Width: typ.Width, Scale: typ.Scale} + } else { + w.pkType = &types.Type{Oid: types.T(typ.Id), Width: typ.Width, Scale: typ.Scale} + } nparts := len(w.indexdef[0].Parts) w.partsPos = make([]int32, nparts) @@ -601,7 +606,7 @@ func (w *IvfflatSqlWriter) toIvfflatUpsert(upsert bool) ([]byte, error) { cols := strings.Join(coldefs, ", ") cnames_str := strings.Join(cnames, ", ") - if upsert { + if !upsert { sql += fmt.Sprintf("REPLACE INTO `%s`.`%s` ", w.dbTblInfo.SinkDbName, w.entries_tbl) } else { sql += fmt.Sprintf("INSERT INTO `%s`.`%s` ", w.dbTblInfo.SinkDbName, w.entries_tbl) From 504b616c8f966f15ebccce99c5657956f66939f2 Mon Sep 17 00:00:00 2001 From: cpegeric Date: Tue, 24 Jun 2025 12:54:52 +0100 Subject: [PATCH 153/223] bug fix --- pkg/cdc/index_sqlwriter.go | 43 ++++++++++++++++++++++++++------------ 1 file changed, 30 insertions(+), 13 deletions(-) diff --git a/pkg/cdc/index_sqlwriter.go b/pkg/cdc/index_sqlwriter.go index e694763e41377..7bca761cc3e8b 100644 --- a/pkg/cdc/index_sqlwriter.go +++ b/pkg/cdc/index_sqlwriter.go @@ -130,9 +130,17 @@ func (w *BaseIndexSqlWriter) writeRow(ctx context.Context, row []any) error { w.vbuf = appendString(w.vbuf, "ROW(") // pk - w.vbuf, err = convertColIntoSql(ctx, row[w.pkPos], w.pkType, w.vbuf) - if err != nil { - return err + if w.tabledef.Pkey.PkeyColName == catalog.CPrimaryKeyColName { + cpkType := &types.Type{Oid: types.T_varbinary, Width: w.pkType.Width, Scale: w.pkType.Scale} + w.vbuf, err = convertColIntoSql(ctx, row[w.pkPos], cpkType, w.vbuf) + if err != nil { + return err + } + } else { + w.vbuf, err = convertColIntoSql(ctx, row[w.pkPos], w.pkType, w.vbuf) + if err != nil { + return err + } } for i, t := range w.partsType { @@ -152,9 +160,18 @@ func (w *BaseIndexSqlWriter) writeRow(ctx context.Context, row []any) error { func (w *BaseIndexSqlWriter) writeDeleteRow(ctx context.Context, row []any) error { var err error - w.vbuf, err = convertColIntoSql(ctx, row[0], w.pkType, w.vbuf) - if err != nil { - return err + if w.tabledef.Pkey.PkeyColName == catalog.CPrimaryKeyColName { + cpkType := &types.Type{Oid: types.T_varbinary, Width: w.pkType.Width, Scale: w.pkType.Scale} + w.vbuf, err = convertColIntoSql(ctx, row[0], cpkType, w.vbuf) + if err != nil { + return err + } + } else { + w.vbuf, err = convertColIntoSql(ctx, row[0], w.pkType, w.vbuf) + if err != nil { + return err + } + } w.ndata += 1 return nil @@ -232,7 +249,12 @@ func NewFulltextSqlWriter(algo string, dbTblInfo *DbTableInfo, tabledef *plan.Ta w.pkPos = tabledef.Name2ColIndex[tabledef.Pkey.PkeyColName] typ := tabledef.Cols[w.pkPos].Typ - w.pkType = &types.Type{Oid: types.T(typ.Id), Width: typ.Width, Scale: typ.Scale} + if tabledef.Pkey.PkeyColName == catalog.CPrimaryKeyColName { + // hardcode __mo_cpkey_col column to varbinary + w.pkType = &types.Type{Oid: types.T_varbinary, Width: typ.Width, Scale: typ.Scale} + } else { + w.pkType = &types.Type{Oid: types.T(typ.Id), Width: typ.Width, Scale: typ.Scale} + } nparts := len(w.indexdef[0].Parts) w.partsPos = make([]int32, nparts) @@ -523,12 +545,7 @@ func NewIvfflatSqlWriter(algo string, dbTblInfo *DbTableInfo, tabledef *plan.Tab w.pkPos = tabledef.Name2ColIndex[tabledef.Pkey.PkeyColName] typ := tabledef.Cols[w.pkPos].Typ - if tabledef.Pkey.PkeyColName == catalog.CPrimaryKeyColName { - // hardcode __mo_cpkey_col column to varbinary - w.pkType = &types.Type{Oid: types.T_varbinary, Width: typ.Width, Scale: typ.Scale} - } else { - w.pkType = &types.Type{Oid: types.T(typ.Id), Width: typ.Width, Scale: typ.Scale} - } + w.pkType = &types.Type{Oid: types.T(typ.Id), Width: typ.Width, Scale: typ.Scale} nparts := len(w.indexdef[0].Parts) w.partsPos = make([]int32, nparts) From e97612ca04bdee662b77cf021c6297a5a4289c45 Mon Sep 17 00:00:00 2001 From: cpegeric Date: Tue, 24 Jun 2025 14:25:51 +0100 Subject: [PATCH 154/223] disable fulltext and ivfflat --- pkg/sql/plan/build_dml_util.go | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/pkg/sql/plan/build_dml_util.go b/pkg/sql/plan/build_dml_util.go index 49b11caeb28c9..973685acd96ba 100644 --- a/pkg/sql/plan/build_dml_util.go +++ b/pkg/sql/plan/build_dml_util.go @@ -872,26 +872,35 @@ func buildInsertPlansWithRelatedHiddenTable( if err != nil { return err } - } else if postdml_flag && indexdef.TableExist && catalog.IsFullTextIndexAlgo(indexdef.IndexAlgo) { + + } + /* disable fulltext + + else if postdml_flag && indexdef.TableExist && catalog.IsFullTextIndexAlgo(indexdef.IndexAlgo) { // TODO: choose either PostInsertFullTextIndex or PreInsertFullTextIndex err = buildPostInsertFullTextIndex(stmt, ctx, builder, bindCtx, objRef, tableDef, updateColLength, sourceStep, ifInsertFromUniqueColMap, indexdef, idx) if err != nil { return err } } + */ } // TODO: choose either PostInsertFullTextIndex or PreInsertFullTextIndex + /* disable fulltext if !postdml_flag && indexdef.TableExist && catalog.IsFullTextIndexAlgo(indexdef.IndexAlgo) { err = buildPreInsertFullTextIndex(stmt, ctx, builder, bindCtx, objRef, tableDef, updateColLength, sourceStep, ifInsertFromUniqueColMap, indexdef, idx) if err != nil { return err } } + */ } + /* disable IVFFLAT buildPreInsertMultiTableIndexes(ctx, builder, bindCtx, objRef, tableDef, sourceStep, multiTableIndexes) + */ ifInsertFromUnique := false if tableDef.Pkey != nil && ifInsertFromUniqueColMap != nil { @@ -4200,6 +4209,7 @@ func buildDeleteIndexPlans(ctx CompilerContext, builder *QueryBuilder, bindCtx * } } else if indexdef.TableExist && catalog.IsFullTextIndexAlgo(indexdef.IndexAlgo) { // TODO: choose either PostDeleteFullTextIndex or PreDeleteFullTextIndex + /* distable fulltext if postdml_flag { err = buildPostDeleteFullTextIndex(ctx, builder, bindCtx, delCtx, indexdef, idx, typMap, posMap) } else { @@ -4208,10 +4218,13 @@ func buildDeleteIndexPlans(ctx CompilerContext, builder *QueryBuilder, bindCtx * if err != nil { return err } + */ } } + /* disable ivfflat buildDeleteMultiTableIndexes(ctx, builder, bindCtx, delCtx, multiTableIndexes) + */ } return nil From 3e5ead44069dd895b8c15b564c19b11c57735590 Mon Sep 17 00:00:00 2001 From: cpegeric Date: Tue, 24 Jun 2025 14:33:21 +0100 Subject: [PATCH 155/223] bug fix --- pkg/cdc/index_sqlwriter.go | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/pkg/cdc/index_sqlwriter.go b/pkg/cdc/index_sqlwriter.go index 7bca761cc3e8b..57c1ce70dee07 100644 --- a/pkg/cdc/index_sqlwriter.go +++ b/pkg/cdc/index_sqlwriter.go @@ -249,12 +249,7 @@ func NewFulltextSqlWriter(algo string, dbTblInfo *DbTableInfo, tabledef *plan.Ta w.pkPos = tabledef.Name2ColIndex[tabledef.Pkey.PkeyColName] typ := tabledef.Cols[w.pkPos].Typ - if tabledef.Pkey.PkeyColName == catalog.CPrimaryKeyColName { - // hardcode __mo_cpkey_col column to varbinary - w.pkType = &types.Type{Oid: types.T_varbinary, Width: typ.Width, Scale: typ.Scale} - } else { - w.pkType = &types.Type{Oid: types.T(typ.Id), Width: typ.Width, Scale: typ.Scale} - } + w.pkType = &types.Type{Oid: types.T(typ.Id), Width: typ.Width, Scale: typ.Scale} nparts := len(w.indexdef[0].Parts) w.partsPos = make([]int32, nparts) From 2806c240b126c1e41e2889d325f4beb418506fac Mon Sep 17 00:00:00 2001 From: cpegeric Date: Tue, 24 Jun 2025 14:49:41 +0100 Subject: [PATCH 156/223] only enable hnsw --- pkg/cdc/index_sinker.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkg/cdc/index_sinker.go b/pkg/cdc/index_sinker.go index 90cbbaf56c31e..4ff5154e912b2 100644 --- a/pkg/cdc/index_sinker.go +++ b/pkg/cdc/index_sinker.go @@ -96,8 +96,8 @@ var NewIndexSyncSinker = func( indexmap := make(map[string]*IndexEntry) for _, idx := range tableDef.Indexes { - if idx.TableExist && (catalog.IsHnswIndexAlgo(idx.IndexAlgo) || catalog.IsIvfIndexAlgo(idx.IndexAlgo) || catalog.IsFullTextIndexAlgo(idx.IndexAlgo)) { - //if idx.TableExist && catalog.IsHnswIndexAlgo(idx.IndexAlgo) { + //if idx.TableExist && (catalog.IsHnswIndexAlgo(idx.IndexAlgo) || catalog.IsIvfIndexAlgo(idx.IndexAlgo) || catalog.IsFullTextIndexAlgo(idx.IndexAlgo)) { + if idx.TableExist && catalog.IsHnswIndexAlgo(idx.IndexAlgo) { key := idx.IndexName sidx, ok := indexmap[key] if ok { From 9ba390e1b986d74e61980ede2c8f3974a754a67d Mon Sep 17 00:00:00 2001 From: cpegeric Date: Wed, 25 Jun 2025 13:04:01 +0100 Subject: [PATCH 157/223] add async option --- pkg/catalog/secondary_index_utils.go | 29 +- pkg/fulltext/types.go | 1 + pkg/sql/parsers/dialect/mysql/keywords.go | 1 + pkg/sql/parsers/dialect/mysql/mysql_sql.go | 17023 ++++++++-------- pkg/sql/parsers/dialect/mysql/mysql_sql.y | 11 +- .../parsers/dialect/mysql/mysql_sql_test.go | 10 +- pkg/sql/parsers/tree/create.go | 4 + pkg/sql/plan/build_ddl.go | 8 +- pkg/sql/plan/build_show_util.go | 5 + pkg/vectorindex/types.go | 2 + 10 files changed, 8579 insertions(+), 8515 deletions(-) diff --git a/pkg/catalog/secondary_index_utils.go b/pkg/catalog/secondary_index_utils.go index 0f84dd346c8c3..63f79e89c6bd7 100644 --- a/pkg/catalog/secondary_index_utils.go +++ b/pkg/catalog/secondary_index_utils.go @@ -85,6 +85,7 @@ const ( HnswEfConstruction = "ef_construction" HnswQuantization = "quantization" HnswEfSearch = "ef_search" + Async = "async" ) /* 1. ToString Functions */ @@ -133,6 +134,12 @@ func IndexParamsToStringList(indexParams string) (string, error) { res += fmt.Sprintf(" %s '%s' ", IndexAlgoParamOpType, opType) } + if val, ok := result[Async]; ok { + if val == "true" { + res += fmt.Sprintf(" %s ", Async) + } + } + return res, nil } @@ -179,10 +186,18 @@ func fullTextIndexParamsToMap(def *tree.FullTextIndex) (map[string]string, error // fulltext index here if def.IndexOption != nil { parsername := strings.ToLower(def.IndexOption.ParserName) - if parsername != "ngram" && parsername != "default" && parsername != "json" && parsername != "json_value" { - return nil, moerr.NewInternalErrorNoCtx(fmt.Sprintf("invalid parser %s", parsername)) + if len(parsername) == 0 { + res["parser"] = "ngram" + } else { + if parsername != "ngram" && parsername != "default" && parsername != "json" && parsername != "json_value" { + return nil, moerr.NewInternalErrorNoCtx(fmt.Sprintf("invalid parser %s", parsername)) + } + res["parser"] = parsername + } + + if def.IndexOption.Async { + res[Async] = "true" } - res["parser"] = parsername } return res, nil } @@ -224,6 +239,10 @@ func indexParamsToMap(def interface{}) (map[string]string, error) { } else { res[IndexAlgoParamOpType] = metric.OpType_L2Distance // set l2 as default } + + if idx.IndexOption.Async { + res[Async] = "true" + } case tree.INDEX_TYPE_HNSW: if idx.IndexOption.HnswM < 0 { return nil, moerr.NewInternalErrorNoCtx("invalid M. hnsw.M must be > 0") @@ -265,6 +284,10 @@ func indexParamsToMap(def interface{}) (map[string]string, error) { } else { res[IndexAlgoParamOpType] = metric.OpType_L2Distance // set l2 as default } + + if idx.IndexOption.Async { + res[Async] = "true" + } default: return nil, moerr.NewInternalErrorNoCtx("invalid index alogorithm type") } diff --git a/pkg/fulltext/types.go b/pkg/fulltext/types.go index 40b7a1c9ec8ef..9c475f1f9119a 100644 --- a/pkg/fulltext/types.go +++ b/pkg/fulltext/types.go @@ -102,6 +102,7 @@ Run Eval() to get final answer and score // Parser parameters type FullTextParserParam struct { Parser string `json:"parser"` + Async string `json:"async"` } // Search accumulator is to parse the search string into list of pattern and each pattern will associate with WordAccum by pattern.Text diff --git a/pkg/sql/parsers/dialect/mysql/keywords.go b/pkg/sql/parsers/dialect/mysql/keywords.go index d2122bab73d7f..78a490fc0c4c6 100644 --- a/pkg/sql/parsers/dialect/mysql/keywords.go +++ b/pkg/sql/parsers/dialect/mysql/keywords.go @@ -36,6 +36,7 @@ func init() { "asc": ASC, "ascii": ASCII, "asensitive": UNUSED, + "async": ASYNC, "auto_increment": AUTO_INCREMENT, "autoextend_size": AUTOEXTEND_SIZE, "auto_random": AUTO_RANDOM, diff --git a/pkg/sql/parsers/dialect/mysql/mysql_sql.go b/pkg/sql/parsers/dialect/mysql/mysql_sql.go index 12a7d0d290fcd..0676e34af1e9e 100644 --- a/pkg/sql/parsers/dialect/mysql/mysql_sql.go +++ b/pkg/sql/parsers/dialect/mysql/mysql_sql.go @@ -361,304 +361,305 @@ const EF_SEARCH = 57684 const EF_CONSTRUCTION = 57685 const M = 57686 const QUANTIZATION = 57687 -const EXPIRE = 57688 -const ACCOUNT = 57689 -const ACCOUNTS = 57690 -const UNLOCK = 57691 -const DAY = 57692 -const NEVER = 57693 -const PUMP = 57694 -const MYSQL_COMPATIBILITY_MODE = 57695 -const UNIQUE_CHECK_ON_AUTOINCR = 57696 -const MODIFY = 57697 -const CHANGE = 57698 -const SECOND = 57699 -const ASCII = 57700 -const COALESCE = 57701 -const COLLATION = 57702 -const HOUR = 57703 -const MICROSECOND = 57704 -const MINUTE = 57705 -const MONTH = 57706 -const QUARTER = 57707 -const REPEAT = 57708 -const REVERSE = 57709 -const ROW_COUNT = 57710 -const WEEK = 57711 -const REVOKE = 57712 -const FUNCTION = 57713 -const PRIVILEGES = 57714 -const TABLESPACE = 57715 -const EXECUTE = 57716 -const SUPER = 57717 -const GRANT = 57718 -const OPTION = 57719 -const REFERENCES = 57720 -const REPLICATION = 57721 -const SLAVE = 57722 -const CLIENT = 57723 -const USAGE = 57724 -const RELOAD = 57725 -const FILE = 57726 -const TEMPORARY = 57727 -const ROUTINE = 57728 -const EVENT = 57729 -const SHUTDOWN = 57730 -const NULLX = 57731 -const AUTO_INCREMENT = 57732 -const APPROXNUM = 57733 -const SIGNED = 57734 -const UNSIGNED = 57735 -const ZEROFILL = 57736 -const ENGINES = 57737 -const LOW_CARDINALITY = 57738 -const AUTOEXTEND_SIZE = 57739 -const ADMIN_NAME = 57740 -const RANDOM = 57741 -const SUSPEND = 57742 -const ATTRIBUTE = 57743 -const HISTORY = 57744 -const REUSE = 57745 -const CURRENT = 57746 -const OPTIONAL = 57747 -const FAILED_LOGIN_ATTEMPTS = 57748 -const PASSWORD_LOCK_TIME = 57749 -const UNBOUNDED = 57750 -const SECONDARY = 57751 -const RESTRICTED = 57752 -const USER = 57753 -const IDENTIFIED = 57754 -const CIPHER = 57755 -const ISSUER = 57756 -const X509 = 57757 -const SUBJECT = 57758 -const SAN = 57759 -const REQUIRE = 57760 -const SSL = 57761 -const NONE = 57762 -const PASSWORD = 57763 -const SHARED = 57764 -const EXCLUSIVE = 57765 -const MAX_QUERIES_PER_HOUR = 57766 -const MAX_UPDATES_PER_HOUR = 57767 -const MAX_CONNECTIONS_PER_HOUR = 57768 -const MAX_USER_CONNECTIONS = 57769 -const FORMAT = 57770 -const VERBOSE = 57771 -const CONNECTION = 57772 -const TRIGGERS = 57773 -const PROFILES = 57774 -const LOAD = 57775 -const INLINE = 57776 -const INFILE = 57777 -const TERMINATED = 57778 -const OPTIONALLY = 57779 -const ENCLOSED = 57780 -const ESCAPED = 57781 -const STARTING = 57782 -const LINES = 57783 -const ROWS = 57784 -const IMPORT = 57785 -const DISCARD = 57786 -const JSONTYPE = 57787 -const MODUMP = 57788 -const OVER = 57789 -const PRECEDING = 57790 -const FOLLOWING = 57791 -const GROUPS = 57792 -const DATABASES = 57793 -const TABLES = 57794 -const SEQUENCES = 57795 -const EXTENDED = 57796 -const FULL = 57797 -const PROCESSLIST = 57798 -const FIELDS = 57799 -const COLUMNS = 57800 -const OPEN = 57801 -const ERRORS = 57802 -const WARNINGS = 57803 -const INDEXES = 57804 -const SCHEMAS = 57805 -const NODE = 57806 -const LOCKS = 57807 -const ROLES = 57808 -const TABLE_NUMBER = 57809 -const COLUMN_NUMBER = 57810 -const TABLE_VALUES = 57811 -const TABLE_SIZE = 57812 -const NAMES = 57813 -const GLOBAL = 57814 -const PERSIST = 57815 -const SESSION = 57816 -const ISOLATION = 57817 -const LEVEL = 57818 -const READ = 57819 -const WRITE = 57820 -const ONLY = 57821 -const REPEATABLE = 57822 -const COMMITTED = 57823 -const UNCOMMITTED = 57824 -const SERIALIZABLE = 57825 -const LOCAL = 57826 -const EVENTS = 57827 -const PLUGINS = 57828 -const CURRENT_TIMESTAMP = 57829 -const DATABASE = 57830 -const CURRENT_TIME = 57831 -const LOCALTIME = 57832 -const LOCALTIMESTAMP = 57833 -const UTC_DATE = 57834 -const UTC_TIME = 57835 -const UTC_TIMESTAMP = 57836 -const REPLACE = 57837 -const CONVERT = 57838 -const SEPARATOR = 57839 -const TIMESTAMPDIFF = 57840 -const CURRENT_DATE = 57841 -const CURRENT_USER = 57842 -const CURRENT_ROLE = 57843 -const SECOND_MICROSECOND = 57844 -const MINUTE_MICROSECOND = 57845 -const MINUTE_SECOND = 57846 -const HOUR_MICROSECOND = 57847 -const HOUR_SECOND = 57848 -const HOUR_MINUTE = 57849 -const DAY_MICROSECOND = 57850 -const DAY_SECOND = 57851 -const DAY_MINUTE = 57852 -const DAY_HOUR = 57853 -const YEAR_MONTH = 57854 -const SQL_TSI_HOUR = 57855 -const SQL_TSI_DAY = 57856 -const SQL_TSI_WEEK = 57857 -const SQL_TSI_MONTH = 57858 -const SQL_TSI_QUARTER = 57859 -const SQL_TSI_YEAR = 57860 -const SQL_TSI_SECOND = 57861 -const SQL_TSI_MINUTE = 57862 -const RECURSIVE = 57863 -const CONFIG = 57864 -const DRAINER = 57865 -const SOURCE = 57866 -const STREAM = 57867 -const HEADERS = 57868 -const CONNECTOR = 57869 -const CONNECTORS = 57870 -const DAEMON = 57871 -const PAUSE = 57872 -const CANCEL = 57873 -const TASK = 57874 -const RESUME = 57875 -const MATCH = 57876 -const AGAINST = 57877 -const BOOLEAN = 57878 -const LANGUAGE = 57879 -const WITH = 57880 -const QUERY = 57881 -const EXPANSION = 57882 -const WITHOUT = 57883 -const VALIDATION = 57884 -const UPGRADE = 57885 -const RETRY = 57886 -const ADDDATE = 57887 -const BIT_AND = 57888 -const BIT_OR = 57889 -const BIT_XOR = 57890 -const CAST = 57891 -const COUNT = 57892 -const APPROX_COUNT = 57893 -const APPROX_COUNT_DISTINCT = 57894 -const SERIAL_EXTRACT = 57895 -const APPROX_PERCENTILE = 57896 -const CURDATE = 57897 -const CURTIME = 57898 -const DATE_ADD = 57899 -const DATE_SUB = 57900 -const EXTRACT = 57901 -const GROUP_CONCAT = 57902 -const MAX = 57903 -const MID = 57904 -const MIN = 57905 -const NOW = 57906 -const POSITION = 57907 -const SESSION_USER = 57908 -const STD = 57909 -const STDDEV = 57910 -const MEDIAN = 57911 -const CLUSTER_CENTERS = 57912 -const KMEANS = 57913 -const STDDEV_POP = 57914 -const STDDEV_SAMP = 57915 -const SUBDATE = 57916 -const SUBSTR = 57917 -const SUBSTRING = 57918 -const SUM = 57919 -const SYSDATE = 57920 -const SYSTEM_USER = 57921 -const TRANSLATE = 57922 -const TRIM = 57923 -const VARIANCE = 57924 -const VAR_POP = 57925 -const VAR_SAMP = 57926 -const AVG = 57927 -const RANK = 57928 -const ROW_NUMBER = 57929 -const DENSE_RANK = 57930 -const BIT_CAST = 57931 -const BITMAP_BIT_POSITION = 57932 -const BITMAP_BUCKET_NUMBER = 57933 -const BITMAP_COUNT = 57934 -const BITMAP_CONSTRUCT_AGG = 57935 -const BITMAP_OR_AGG = 57936 -const NEXTVAL = 57937 -const SETVAL = 57938 -const CURRVAL = 57939 -const LASTVAL = 57940 -const ARROW = 57941 -const ROW = 57942 -const OUTFILE = 57943 -const HEADER = 57944 -const MAX_FILE_SIZE = 57945 -const FORCE_QUOTE = 57946 -const PARALLEL = 57947 -const STRICT = 57948 -const UNUSED = 57949 -const BINDINGS = 57950 -const DO = 57951 -const DECLARE = 57952 -const LOOP = 57953 -const WHILE = 57954 -const LEAVE = 57955 -const ITERATE = 57956 -const UNTIL = 57957 -const CALL = 57958 -const PREV = 57959 -const SLIDING = 57960 -const FILL = 57961 -const SPBEGIN = 57962 -const BACKEND = 57963 -const SERVERS = 57964 -const HANDLER = 57965 -const PERCENT = 57966 -const SAMPLE = 57967 -const MO_TS = 57968 -const PITR = 57969 -const RECOVERY_WINDOW = 57970 -const CDC = 57971 -const GROUPING = 57972 -const SETS = 57973 -const CUBE = 57974 -const ROLLUP = 57975 -const LOGSERVICE = 57976 -const REPLICAS = 57977 -const STORES = 57978 -const SETTINGS = 57979 -const KILL = 57980 -const BACKUP = 57981 -const FILESYSTEM = 57982 -const PARALLELISM = 57983 -const RESTORE = 57984 -const QUERY_RESULT = 57985 +const ASYNC = 57688 +const EXPIRE = 57689 +const ACCOUNT = 57690 +const ACCOUNTS = 57691 +const UNLOCK = 57692 +const DAY = 57693 +const NEVER = 57694 +const PUMP = 57695 +const MYSQL_COMPATIBILITY_MODE = 57696 +const UNIQUE_CHECK_ON_AUTOINCR = 57697 +const MODIFY = 57698 +const CHANGE = 57699 +const SECOND = 57700 +const ASCII = 57701 +const COALESCE = 57702 +const COLLATION = 57703 +const HOUR = 57704 +const MICROSECOND = 57705 +const MINUTE = 57706 +const MONTH = 57707 +const QUARTER = 57708 +const REPEAT = 57709 +const REVERSE = 57710 +const ROW_COUNT = 57711 +const WEEK = 57712 +const REVOKE = 57713 +const FUNCTION = 57714 +const PRIVILEGES = 57715 +const TABLESPACE = 57716 +const EXECUTE = 57717 +const SUPER = 57718 +const GRANT = 57719 +const OPTION = 57720 +const REFERENCES = 57721 +const REPLICATION = 57722 +const SLAVE = 57723 +const CLIENT = 57724 +const USAGE = 57725 +const RELOAD = 57726 +const FILE = 57727 +const TEMPORARY = 57728 +const ROUTINE = 57729 +const EVENT = 57730 +const SHUTDOWN = 57731 +const NULLX = 57732 +const AUTO_INCREMENT = 57733 +const APPROXNUM = 57734 +const SIGNED = 57735 +const UNSIGNED = 57736 +const ZEROFILL = 57737 +const ENGINES = 57738 +const LOW_CARDINALITY = 57739 +const AUTOEXTEND_SIZE = 57740 +const ADMIN_NAME = 57741 +const RANDOM = 57742 +const SUSPEND = 57743 +const ATTRIBUTE = 57744 +const HISTORY = 57745 +const REUSE = 57746 +const CURRENT = 57747 +const OPTIONAL = 57748 +const FAILED_LOGIN_ATTEMPTS = 57749 +const PASSWORD_LOCK_TIME = 57750 +const UNBOUNDED = 57751 +const SECONDARY = 57752 +const RESTRICTED = 57753 +const USER = 57754 +const IDENTIFIED = 57755 +const CIPHER = 57756 +const ISSUER = 57757 +const X509 = 57758 +const SUBJECT = 57759 +const SAN = 57760 +const REQUIRE = 57761 +const SSL = 57762 +const NONE = 57763 +const PASSWORD = 57764 +const SHARED = 57765 +const EXCLUSIVE = 57766 +const MAX_QUERIES_PER_HOUR = 57767 +const MAX_UPDATES_PER_HOUR = 57768 +const MAX_CONNECTIONS_PER_HOUR = 57769 +const MAX_USER_CONNECTIONS = 57770 +const FORMAT = 57771 +const VERBOSE = 57772 +const CONNECTION = 57773 +const TRIGGERS = 57774 +const PROFILES = 57775 +const LOAD = 57776 +const INLINE = 57777 +const INFILE = 57778 +const TERMINATED = 57779 +const OPTIONALLY = 57780 +const ENCLOSED = 57781 +const ESCAPED = 57782 +const STARTING = 57783 +const LINES = 57784 +const ROWS = 57785 +const IMPORT = 57786 +const DISCARD = 57787 +const JSONTYPE = 57788 +const MODUMP = 57789 +const OVER = 57790 +const PRECEDING = 57791 +const FOLLOWING = 57792 +const GROUPS = 57793 +const DATABASES = 57794 +const TABLES = 57795 +const SEQUENCES = 57796 +const EXTENDED = 57797 +const FULL = 57798 +const PROCESSLIST = 57799 +const FIELDS = 57800 +const COLUMNS = 57801 +const OPEN = 57802 +const ERRORS = 57803 +const WARNINGS = 57804 +const INDEXES = 57805 +const SCHEMAS = 57806 +const NODE = 57807 +const LOCKS = 57808 +const ROLES = 57809 +const TABLE_NUMBER = 57810 +const COLUMN_NUMBER = 57811 +const TABLE_VALUES = 57812 +const TABLE_SIZE = 57813 +const NAMES = 57814 +const GLOBAL = 57815 +const PERSIST = 57816 +const SESSION = 57817 +const ISOLATION = 57818 +const LEVEL = 57819 +const READ = 57820 +const WRITE = 57821 +const ONLY = 57822 +const REPEATABLE = 57823 +const COMMITTED = 57824 +const UNCOMMITTED = 57825 +const SERIALIZABLE = 57826 +const LOCAL = 57827 +const EVENTS = 57828 +const PLUGINS = 57829 +const CURRENT_TIMESTAMP = 57830 +const DATABASE = 57831 +const CURRENT_TIME = 57832 +const LOCALTIME = 57833 +const LOCALTIMESTAMP = 57834 +const UTC_DATE = 57835 +const UTC_TIME = 57836 +const UTC_TIMESTAMP = 57837 +const REPLACE = 57838 +const CONVERT = 57839 +const SEPARATOR = 57840 +const TIMESTAMPDIFF = 57841 +const CURRENT_DATE = 57842 +const CURRENT_USER = 57843 +const CURRENT_ROLE = 57844 +const SECOND_MICROSECOND = 57845 +const MINUTE_MICROSECOND = 57846 +const MINUTE_SECOND = 57847 +const HOUR_MICROSECOND = 57848 +const HOUR_SECOND = 57849 +const HOUR_MINUTE = 57850 +const DAY_MICROSECOND = 57851 +const DAY_SECOND = 57852 +const DAY_MINUTE = 57853 +const DAY_HOUR = 57854 +const YEAR_MONTH = 57855 +const SQL_TSI_HOUR = 57856 +const SQL_TSI_DAY = 57857 +const SQL_TSI_WEEK = 57858 +const SQL_TSI_MONTH = 57859 +const SQL_TSI_QUARTER = 57860 +const SQL_TSI_YEAR = 57861 +const SQL_TSI_SECOND = 57862 +const SQL_TSI_MINUTE = 57863 +const RECURSIVE = 57864 +const CONFIG = 57865 +const DRAINER = 57866 +const SOURCE = 57867 +const STREAM = 57868 +const HEADERS = 57869 +const CONNECTOR = 57870 +const CONNECTORS = 57871 +const DAEMON = 57872 +const PAUSE = 57873 +const CANCEL = 57874 +const TASK = 57875 +const RESUME = 57876 +const MATCH = 57877 +const AGAINST = 57878 +const BOOLEAN = 57879 +const LANGUAGE = 57880 +const WITH = 57881 +const QUERY = 57882 +const EXPANSION = 57883 +const WITHOUT = 57884 +const VALIDATION = 57885 +const UPGRADE = 57886 +const RETRY = 57887 +const ADDDATE = 57888 +const BIT_AND = 57889 +const BIT_OR = 57890 +const BIT_XOR = 57891 +const CAST = 57892 +const COUNT = 57893 +const APPROX_COUNT = 57894 +const APPROX_COUNT_DISTINCT = 57895 +const SERIAL_EXTRACT = 57896 +const APPROX_PERCENTILE = 57897 +const CURDATE = 57898 +const CURTIME = 57899 +const DATE_ADD = 57900 +const DATE_SUB = 57901 +const EXTRACT = 57902 +const GROUP_CONCAT = 57903 +const MAX = 57904 +const MID = 57905 +const MIN = 57906 +const NOW = 57907 +const POSITION = 57908 +const SESSION_USER = 57909 +const STD = 57910 +const STDDEV = 57911 +const MEDIAN = 57912 +const CLUSTER_CENTERS = 57913 +const KMEANS = 57914 +const STDDEV_POP = 57915 +const STDDEV_SAMP = 57916 +const SUBDATE = 57917 +const SUBSTR = 57918 +const SUBSTRING = 57919 +const SUM = 57920 +const SYSDATE = 57921 +const SYSTEM_USER = 57922 +const TRANSLATE = 57923 +const TRIM = 57924 +const VARIANCE = 57925 +const VAR_POP = 57926 +const VAR_SAMP = 57927 +const AVG = 57928 +const RANK = 57929 +const ROW_NUMBER = 57930 +const DENSE_RANK = 57931 +const BIT_CAST = 57932 +const BITMAP_BIT_POSITION = 57933 +const BITMAP_BUCKET_NUMBER = 57934 +const BITMAP_COUNT = 57935 +const BITMAP_CONSTRUCT_AGG = 57936 +const BITMAP_OR_AGG = 57937 +const NEXTVAL = 57938 +const SETVAL = 57939 +const CURRVAL = 57940 +const LASTVAL = 57941 +const ARROW = 57942 +const ROW = 57943 +const OUTFILE = 57944 +const HEADER = 57945 +const MAX_FILE_SIZE = 57946 +const FORCE_QUOTE = 57947 +const PARALLEL = 57948 +const STRICT = 57949 +const UNUSED = 57950 +const BINDINGS = 57951 +const DO = 57952 +const DECLARE = 57953 +const LOOP = 57954 +const WHILE = 57955 +const LEAVE = 57956 +const ITERATE = 57957 +const UNTIL = 57958 +const CALL = 57959 +const PREV = 57960 +const SLIDING = 57961 +const FILL = 57962 +const SPBEGIN = 57963 +const BACKEND = 57964 +const SERVERS = 57965 +const HANDLER = 57966 +const PERCENT = 57967 +const SAMPLE = 57968 +const MO_TS = 57969 +const PITR = 57970 +const RECOVERY_WINDOW = 57971 +const CDC = 57972 +const GROUPING = 57973 +const SETS = 57974 +const CUBE = 57975 +const ROLLUP = 57976 +const LOGSERVICE = 57977 +const REPLICAS = 57978 +const STORES = 57979 +const SETTINGS = 57980 +const KILL = 57981 +const BACKUP = 57982 +const FILESYSTEM = 57983 +const PARALLELISM = 57984 +const RESTORE = 57985 +const QUERY_RESULT = 57986 var yyToknames = [...]string{ "$end", @@ -1023,6 +1024,7 @@ var yyToknames = [...]string{ "EF_CONSTRUCTION", "M", "QUANTIZATION", + "ASYNC", "EXPIRE", "ACCOUNT", "ACCOUNTS", @@ -1334,7 +1336,7 @@ const yyEofCode = 1 const yyErrCode = 2 const yyInitialStackSize = 16 -//line mysql_sql.y:12975 +//line mysql_sql.y:12984 //line yacctab:1 var yyExca = [...]int{ @@ -1346,6043 +1348,6040 @@ var yyExca = [...]int{ 22, 812, -2, 805, -1, 167, - 246, 1246, + 246, 1247, 248, 1140, - -2, 1192, + -2, 1193, -1, 194, 44, 635, 248, 635, 275, 642, 276, 642, - 479, 635, + 480, 635, -2, 670, -1, 234, - 664, 2024, + 665, 2026, -2, 534, - -1, 548, - 664, 2148, + -1, 549, + 665, 2150, -2, 412, - -1, 606, - 664, 2207, - -2, 410, -1, 607, - 664, 2208, - -2, 411, + 665, 2209, + -2, 410, -1, 608, - 664, 2209, + 665, 2210, + -2, 411, + -1, 609, + 665, 2211, -2, 413, - -1, 748, + -1, 749, 327, 181, - 451, 181, 452, 181, - -2, 1921, - -1, 815, - 86, 1706, - -2, 2084, + 453, 181, + -2, 1923, -1, 816, - 86, 1725, - -2, 2055, - -1, 820, + 86, 1707, + -2, 2086, + -1, 817, 86, 1726, - -2, 2083, - -1, 854, - 86, 1633, - -2, 2287, + -2, 2057, + -1, 821, + 86, 1727, + -2, 2085, -1, 855, 86, 1634, - -2, 2286, + -2, 2289, -1, 856, 86, 1635, - -2, 2276, + -2, 2288, -1, 857, - 86, 2248, - -2, 2269, + 86, 1636, + -2, 2278, -1, 858, - 86, 2249, - -2, 2270, - -1, 859, 86, 2250, - -2, 2278, - -1, 860, + -2, 2271, + -1, 859, 86, 2251, - -2, 2258, - -1, 861, + -2, 2272, + -1, 860, 86, 2252, - -2, 2267, - -1, 862, + -2, 2280, + -1, 861, 86, 2253, - -2, 2279, - -1, 863, + -2, 2260, + -1, 862, 86, 2254, - -2, 2280, - -1, 864, + -2, 2269, + -1, 863, 86, 2255, - -2, 2285, - -1, 865, + -2, 2281, + -1, 864, 86, 2256, - -2, 2290, - -1, 866, + -2, 2282, + -1, 865, 86, 2257, - -2, 2291, + -2, 2287, + -1, 866, + 86, 2258, + -2, 2292, -1, 867, - 86, 1702, - -2, 2122, + 86, 2259, + -2, 2293, -1, 868, 86, 1703, - -2, 1905, + -2, 2124, -1, 869, 86, 1704, - -2, 2131, + -2, 1907, -1, 870, 86, 1705, - -2, 1914, - -1, 872, - 86, 1708, - -2, 1922, - -1, 874, - 86, 1710, - -2, 2155, - -1, 876, - 86, 1713, - -2, 1943, - -1, 878, - 86, 1715, - -2, 2167, + -2, 2133, + -1, 871, + 86, 1706, + -2, 1916, + -1, 873, + 86, 1709, + -2, 1924, + -1, 875, + 86, 1711, + -2, 2157, + -1, 877, + 86, 1714, + -2, 1945, -1, 879, 86, 1716, - -2, 2166, + -2, 2169, -1, 880, 86, 1717, - -2, 1990, + -2, 2168, -1, 881, 86, 1718, - -2, 2079, - -1, 884, - 86, 1721, - -2, 2178, - -1, 886, - 86, 1723, - -2, 2181, + -2, 1992, + -1, 882, + 86, 1719, + -2, 2081, + -1, 885, + 86, 1722, + -2, 2180, -1, 887, 86, 1724, -2, 2183, -1, 888, - 86, 1727, - -2, 2191, + 86, 1725, + -2, 2185, -1, 889, 86, 1728, - -2, 2064, + -2, 2193, -1, 890, 86, 1729, - -2, 2109, + -2, 2066, -1, 891, 86, 1730, - -2, 2074, + -2, 2111, -1, 892, 86, 1731, - -2, 2099, - -1, 903, - 86, 1611, - -2, 2281, + -2, 2076, + -1, 893, + 86, 1732, + -2, 2101, -1, 904, 86, 1612, - -2, 2282, + -2, 2283, -1, 905, 86, 1613, - -2, 2283, - -1, 1010, - 474, 670, + -2, 2284, + -1, 906, + 86, 1614, + -2, 2285, + -1, 1011, 475, 670, + 476, 670, -2, 636, - -1, 1061, - 128, 1905, - 139, 1905, - 159, 1905, - -2, 1879, - -1, 1182, + -1, 1062, + 128, 1907, + 139, 1907, + 159, 1907, + -2, 1880, + -1, 1183, 22, 839, -2, 788, - -1, 1292, + -1, 1293, 11, 812, 22, 812, - -2, 1488, - -1, 1376, + -2, 1489, + -1, 1377, 22, 839, -2, 788, - -1, 1735, - 86, 1778, - -2, 2081, -1, 1736, 86, 1779, - -2, 2082, - -1, 1911, + -2, 2083, + -1, 1737, + 86, 1780, + -2, 2084, + -1, 1912, 87, 1012, -2, 1018, - -1, 2366, - 111, 1184, - 155, 1184, - 195, 1184, - 198, 1184, - 288, 1184, - -2, 1177, - -1, 2531, + -1, 2367, + 111, 1185, + 155, 1185, + 195, 1185, + 198, 1185, + 288, 1185, + -2, 1178, + -1, 2532, 11, 812, 22, 812, -2, 953, - -1, 2565, - 87, 1865, - 160, 1865, - -2, 2066, -1, 2566, - 87, 1865, - 160, 1865, - -2, 2065, + 87, 1866, + 160, 1866, + -2, 2068, -1, 2567, - 87, 1841, - 160, 1841, - -2, 2052, + 87, 1866, + 160, 1866, + -2, 2067, -1, 2568, 87, 1842, 160, 1842, - -2, 2057, + -2, 2054, -1, 2569, 87, 1843, 160, 1843, - -2, 1978, + -2, 2059, -1, 2570, 87, 1844, 160, 1844, - -2, 1971, + -2, 1980, -1, 2571, 87, 1845, 160, 1845, - -2, 1895, + -2, 1973, -1, 2572, 87, 1846, 160, 1846, - -2, 2054, + -2, 1897, -1, 2573, 87, 1847, 160, 1847, - -2, 1976, + -2, 2056, -1, 2574, 87, 1848, 160, 1848, - -2, 1970, + -2, 1978, -1, 2575, 87, 1849, 160, 1849, - -2, 1958, + -2, 1972, -1, 2576, - 87, 1865, - 160, 1865, - -2, 1959, - -1, 2577, - 87, 1865, - 160, 1865, + 87, 1850, + 160, 1850, -2, 1960, - -1, 2579, - 87, 1854, - 160, 1854, - -2, 2099, + -1, 2577, + 87, 1866, + 160, 1866, + -2, 1961, + -1, 2578, + 87, 1866, + 160, 1866, + -2, 1962, -1, 2580, - 87, 1831, - 160, 1831, - -2, 2084, + 87, 1855, + 160, 1855, + -2, 2101, -1, 2581, - 87, 1863, - 160, 1863, - -2, 2055, + 87, 1832, + 160, 1832, + -2, 2086, -1, 2582, - 87, 1863, - 160, 1863, - -2, 2083, + 87, 1864, + 160, 1864, + -2, 2057, -1, 2583, - 87, 1863, - 160, 1863, - -2, 1923, + 87, 1864, + 160, 1864, + -2, 2085, -1, 2584, - 87, 1861, - 160, 1861, - -2, 2074, + 87, 1864, + 160, 1864, + -2, 1925, -1, 2585, - 87, 1858, - 160, 1858, - -2, 1948, + 87, 1862, + 160, 1862, + -2, 2076, -1, 2586, - 86, 1812, - 87, 1812, - 160, 1812, - 409, 1812, - 410, 1812, - 411, 1812, - -2, 1894, + 87, 1859, + 160, 1859, + -2, 1950, -1, 2587, 86, 1813, 87, 1813, 160, 1813, - 409, 1813, 410, 1813, 411, 1813, + 412, 1813, -2, 1896, -1, 2588, 86, 1814, 87, 1814, 160, 1814, - 409, 1814, 410, 1814, 411, 1814, - -2, 2127, + 412, 1814, + -2, 1898, -1, 2589, - 86, 1816, - 87, 1816, - 160, 1816, - 409, 1816, - 410, 1816, - 411, 1816, - -2, 2056, + 86, 1815, + 87, 1815, + 160, 1815, + 410, 1815, + 411, 1815, + 412, 1815, + -2, 2129, -1, 2590, - 86, 1818, - 87, 1818, - 160, 1818, - 409, 1818, - 410, 1818, - 411, 1818, - -2, 2034, + 86, 1817, + 87, 1817, + 160, 1817, + 410, 1817, + 411, 1817, + 412, 1817, + -2, 2058, -1, 2591, - 86, 1820, - 87, 1820, - 160, 1820, - 409, 1820, - 410, 1820, - 411, 1820, - -2, 1977, + 86, 1819, + 87, 1819, + 160, 1819, + 410, 1819, + 411, 1819, + 412, 1819, + -2, 2036, -1, 2592, - 86, 1822, - 87, 1822, - 160, 1822, - 409, 1822, - 410, 1822, - 411, 1822, - -2, 1954, + 86, 1821, + 87, 1821, + 160, 1821, + 410, 1821, + 411, 1821, + 412, 1821, + -2, 1979, -1, 2593, 86, 1823, 87, 1823, 160, 1823, - 409, 1823, 410, 1823, 411, 1823, - -2, 1955, + 412, 1823, + -2, 1956, -1, 2594, - 86, 1825, - 87, 1825, - 160, 1825, - 409, 1825, - 410, 1825, - 411, 1825, - -2, 1893, + 86, 1824, + 87, 1824, + 160, 1824, + 410, 1824, + 411, 1824, + 412, 1824, + -2, 1957, -1, 2595, - 87, 1868, - 160, 1868, - 409, 1868, - 410, 1868, - 411, 1868, - -2, 1928, + 86, 1826, + 87, 1826, + 160, 1826, + 410, 1826, + 411, 1826, + 412, 1826, + -2, 1895, -1, 2596, - 87, 1868, - 160, 1868, - 409, 1868, - 410, 1868, - 411, 1868, - -2, 1944, + 87, 1869, + 160, 1869, + 410, 1869, + 411, 1869, + 412, 1869, + -2, 1930, -1, 2597, - 87, 1871, - 160, 1871, - 409, 1871, - 410, 1871, - 411, 1871, - -2, 1924, + 87, 1869, + 160, 1869, + 410, 1869, + 411, 1869, + 412, 1869, + -2, 1946, -1, 2598, - 87, 1871, - 160, 1871, - 409, 1871, - 410, 1871, - 411, 1871, - -2, 1993, + 87, 1872, + 160, 1872, + 410, 1872, + 411, 1872, + 412, 1872, + -2, 1926, -1, 2599, - 87, 1868, - 160, 1868, - 409, 1868, - 410, 1868, - 411, 1868, - -2, 2016, - -1, 2820, - 111, 1184, - 155, 1184, - 195, 1184, - 198, 1184, - 288, 1184, - -2, 1178, - -1, 2838, - 84, 732, - 160, 732, - -2, 1362, - -1, 3269, - 198, 1184, - 312, 1451, - -2, 1423, - -1, 3458, - 111, 1184, - 155, 1184, - 195, 1184, - 198, 1184, - -2, 1302, - -1, 3460, - 111, 1184, - 155, 1184, - 195, 1184, - 198, 1184, - -2, 1302, - -1, 3472, + 87, 1872, + 160, 1872, + 410, 1872, + 411, 1872, + 412, 1872, + -2, 1995, + -1, 2600, + 87, 1869, + 160, 1869, + 410, 1869, + 411, 1869, + 412, 1869, + -2, 2018, + -1, 2821, + 111, 1185, + 155, 1185, + 195, 1185, + 198, 1185, + 288, 1185, + -2, 1179, + -1, 2839, 84, 732, 160, 732, - -2, 1362, - -1, 3493, - 198, 1184, - 312, 1451, + -2, 1363, + -1, 3270, + 198, 1185, + 312, 1452, -2, 1424, - -1, 3648, - 111, 1184, - 155, 1184, - 195, 1184, - 198, 1184, + -1, 3459, + 111, 1185, + 155, 1185, + 195, 1185, + 198, 1185, -2, 1303, - -1, 3676, - 87, 1264, - 160, 1264, - -2, 1184, - -1, 3822, - 87, 1264, - 160, 1264, - -2, 1184, - -1, 3991, - 87, 1268, - 160, 1268, - -2, 1184, - -1, 4046, + -1, 3461, + 111, 1185, + 155, 1185, + 195, 1185, + 198, 1185, + -2, 1303, + -1, 3473, + 84, 732, + 160, 732, + -2, 1363, + -1, 3494, + 198, 1185, + 312, 1452, + -2, 1425, + -1, 3649, + 111, 1185, + 155, 1185, + 195, 1185, + 198, 1185, + -2, 1304, + -1, 3677, + 87, 1265, + 160, 1265, + -2, 1185, + -1, 3823, + 87, 1265, + 160, 1265, + -2, 1185, + -1, 3993, 87, 1269, 160, 1269, - -2, 1184, + -2, 1185, + -1, 4048, + 87, 1270, + 160, 1270, + -2, 1185, } const yyPrivate = 57344 -const yyLast = 55687 +const yyLast = 55655 var yyAct = [...]int{ - 782, 758, 4100, 784, 4068, 2869, 223, 4092, 1637, 3995, - 1999, 1715, 3578, 3478, 4001, 3289, 3889, 4002, 3994, 3822, - 3255, 767, 3912, 3947, 3869, 3704, 3366, 3507, 3800, 1711, - 760, 3769, 2863, 3860, 3821, 3367, 1775, 1328, 3890, 3636, - 1481, 3738, 812, 3791, 1549, 37, 648, 1183, 2866, 1060, - 3582, 2782, 3870, 3872, 3440, 1487, 3573, 3494, 1944, 1762, - 3650, 2416, 3445, 666, 3657, 672, 672, 1177, 2841, 3645, - 3212, 672, 690, 699, 3264, 1718, 699, 3226, 3618, 3461, - 3188, 3364, 2982, 2983, 3215, 2981, 3432, 208, 2097, 2958, - 68, 2110, 2892, 3284, 1780, 3463, 756, 3273, 2978, 3266, - 2689, 3409, 711, 2207, 2133, 2094, 3051, 3011, 2059, 2561, - 3329, 2525, 2419, 1959, 2808, 2969, 1542, 696, 3193, 2563, - 3235, 3195, 2377, 1638, 1173, 2654, 3191, 707, 3190, 2321, - 2821, 3159, 141, 755, 3099, 2165, 3189, 3272, 2345, 750, - 2449, 1626, 3186, 1622, 2191, 2614, 2632, 2138, 3025, 36, - 2320, 2173, 1873, 940, 2166, 1630, 2174, 2090, 2526, 2797, - 2203, 1446, 2894, 2063, 1627, 2202, 2504, 2792, 2509, 2417, - 981, 1054, 2874, 1989, 2833, 219, 8, 1920, 2376, 1776, - 2366, 1709, 218, 7, 1413, 6, 2559, 2204, 2237, 1589, - 1527, 1121, 759, 1558, 665, 2357, 2412, 1521, 749, 648, - 1769, 1958, 2360, 2726, 768, 1749, 1199, 1700, 2169, 2172, - 27, 1641, 2154, 1659, 1596, 1714, 1615, 647, 704, 681, - 1708, 1919, 1466, 223, 1053, 223, 2533, 1112, 1113, 1916, - 23, 1526, 980, 2060, 672, 1523, 907, 1781, 1580, 24, - 1092, 713, 25, 17, 1019, 205, 1482, 10, 957, 757, - 1490, 209, 978, 16, 2505, 714, 963, 1398, 1005, 710, - 1470, 698, 15, 751, 201, 909, 1374, 1329, 3879, 3788, - 2725, 2211, 14, 910, 668, 1260, 1261, 1262, 1259, 2762, - 2762, 1452, 695, 1260, 1261, 1262, 1259, 2762, 1109, 33, - 971, 2535, 972, 1069, 1260, 1261, 1262, 1259, 3475, 3375, - 3242, 3068, 3067, 2221, 1178, 3609, 3448, 1179, 1087, 3359, - 1108, 684, 1110, 2677, 2620, 2618, 1886, 2617, 2615, 1603, - 1105, 1599, 1104, 207, 667, 691, 2319, 1456, 1393, 1525, - 3847, 952, 929, 677, 694, 1066, 2325, 702, 1367, 3169, - 673, 1449, 1450, 1451, 693, 966, 1105, 962, 1105, 1039, - 927, 2329, 1068, 1887, 1396, 3152, 3154, 1652, 3149, 3151, - 751, 692, 4080, 1504, 1178, 2754, 2752, 1880, 1389, 3571, - 3047, 1601, 3045, 2143, 3855, 206, 64, 197, 168, 3745, - 1088, 3739, 3574, 8, 3365, 2188, 3874, 1323, 2168, 908, - 7, 3128, 2160, 1103, 198, 1260, 1261, 1262, 1259, 2457, - 4106, 189, 3973, 943, 3868, 199, 4077, 3807, 3753, 2756, - 919, 1260, 1261, 1262, 1259, 1404, 3588, 4030, 1258, 3623, - 1222, 2663, 2671, 206, 140, 2208, 3619, 2367, 206, 64, - 197, 168, 928, 3462, 2368, 1636, 1777, 3866, 3775, 126, - 2707, 206, 3751, 206, 3923, 206, 2827, 1566, 202, 1403, - 926, 3808, 752, 1399, 1402, 1082, 1077, 1072, 1076, 1080, - 1401, 929, 1645, 927, 1657, 1070, 206, 1064, 206, 206, - 64, 197, 168, 709, 3126, 1065, 1405, 1438, 968, 2219, - 961, 1421, 206, 1085, 924, 1889, 2976, 1075, 2781, 965, - 964, 1650, 1642, 1668, 1654, 206, 2825, 1034, 1032, 1491, - 1033, 202, 2361, 2777, 2553, 898, 946, 897, 899, 900, - 953, 901, 902, 1649, 202, 3071, 1644, 3059, 1656, 920, - 1257, 1237, 1952, 2554, 1238, 148, 149, 3777, 150, 151, - 960, 140, 2107, 152, 3019, 3020, 153, 3153, 1083, 202, - 3150, 202, 202, 1528, 140, 1530, 2828, 1086, 1682, 970, - 1500, 3018, 1240, 1501, 959, 202, 2074, 2075, 958, 206, - 64, 197, 168, 2779, 945, 3970, 2540, 2073, 202, 2539, - 951, 2633, 2541, 1028, 1073, 1898, 1899, 1250, 2774, 206, - 64, 197, 168, 206, 64, 197, 168, 1478, 1040, 1488, - 1489, 3598, 1973, 3259, 2794, 1717, 3877, 949, 1084, 167, - 195, 204, 196, 124, 2795, 3257, 2778, 1255, 3876, 1063, - 2308, 206, 64, 197, 168, 1036, 1602, 1600, 1062, 2757, - 1420, 2775, 194, 188, 187, 3877, 3961, 1701, 3875, 70, - 1705, 3966, 202, 4005, 4006, 969, 3876, 3960, 1074, 1235, - 1950, 1503, 2658, 3949, 1191, 4072, 4073, 3368, 3975, 3976, - 3875, 3959, 202, 2793, 1704, 4029, 202, 3858, 1815, 3052, - 3368, 950, 3971, 3972, 3949, 3979, 3978, 3977, 3980, 2223, - 672, 672, 3952, 1106, 1107, 3053, 1194, 3054, 1111, 1038, - 3742, 672, 1187, 1486, 202, 1202, 1205, 1485, 1488, 1489, - 190, 191, 192, 167, 195, 204, 196, 3861, 3862, 3863, - 3864, 699, 699, 1236, 672, 1721, 1188, 2800, 2091, 3886, - 1202, 1205, 3382, 2081, 3433, 1081, 194, 2499, 2215, 1230, - 1696, 1242, 1232, 2151, 1243, 2913, 3208, 3628, 200, 3438, - 2970, 696, 696, 696, 2492, 3089, 3597, 2356, 967, 2755, - 2220, 969, 3779, 3780, 3599, 1706, 3761, 2780, 3762, 136, - 1233, 1078, 1245, 193, 1079, 137, 1037, 1392, 1609, 1608, - 1514, 2784, 2776, 3519, 3756, 3968, 1115, 1300, 3087, 1703, - 1252, 3878, 3787, 1422, 1253, 1254, 2668, 956, 193, 1069, - 1239, 1951, 3385, 3093, 2455, 1225, 3572, 1197, 922, 3046, - 2761, 1476, 2105, 2106, 2964, 4004, 1248, 1249, 1180, 2495, - 2496, 1179, 3764, 1179, 2494, 3202, 3784, 1179, 3625, 1502, - 2326, 1217, 138, 3732, 1187, 2209, 2209, 3534, 3413, 3261, - 2209, 1066, 2556, 2502, 3069, 63, 1247, 1888, 664, 1720, - 1719, 923, 3066, 3589, 3763, 3285, 3286, 1226, 1068, 1241, - 3287, 4037, 3288, 2242, 1332, 1105, 2210, 3531, 3213, 2085, - 1105, 1105, 1069, 1105, 1089, 3224, 1071, 1105, 1105, 3236, - 3806, 3974, 3905, 1228, 3900, 697, 2834, 1179, 2226, 2228, - 2229, 3812, 3804, 2222, 65, 1231, 1234, 944, 1246, 942, - 2960, 2487, 1727, 1730, 1731, 1294, 1702, 701, 700, 1204, - 1203, 2974, 2363, 1728, 1066, 1035, 695, 695, 695, 3524, - 3733, 1227, 3160, 1244, 3891, 745, 3907, 2616, 747, 146, - 203, 1068, 147, 746, 1204, 1203, 3479, 169, 908, 3752, - 1206, 3200, 61, 1604, 1395, 3913, 1397, 65, 2812, 2816, - 2817, 2818, 2813, 2815, 2814, 3761, 2753, 3762, 1409, 691, - 691, 691, 1412, 1181, 1175, 1182, 1418, 666, 694, 694, - 694, 1065, 2868, 3624, 1372, 3256, 2672, 1377, 693, 693, - 693, 1214, 1210, 1211, 1651, 169, 3214, 3778, 1216, 1400, - 169, 3206, 925, 1890, 1301, 692, 692, 692, 1229, 3486, - 981, 1488, 1489, 169, 2340, 169, 1465, 169, 139, 45, - 3291, 3764, 1196, 1488, 1489, 62, 697, 1190, 1192, 1195, - 3773, 3885, 3615, 1691, 203, 3421, 1692, 3176, 169, 2422, - 169, 169, 1296, 1297, 1298, 1299, 697, 143, 144, 2490, - 697, 145, 1477, 3763, 169, 3535, 3214, 3203, 3204, 3424, - 2799, 3695, 4095, 3813, 3805, 672, 2556, 169, 1516, 971, - 2498, 972, 672, 3205, 1193, 1484, 648, 648, 697, 3209, - 4112, 3262, 2971, 2467, 2092, 3967, 648, 648, 65, 3090, - 1553, 1553, 2466, 672, 3585, 3757, 3781, 1208, 2435, 3758, - 2864, 2865, 2806, 2868, 2415, 2438, 3684, 3690, 65, 2488, - 2489, 1538, 65, 1537, 699, 1581, 666, 2803, 2804, 1551, - 1551, 1592, 1344, 1345, 1480, 1479, 3993, 3423, 1215, 1463, - 1462, 169, 2802, 2215, 2942, 1555, 223, 3629, 3914, 1461, - 65, 3792, 1560, 3826, 3265, 648, 2227, 2082, 1186, 1174, - 2914, 169, 2915, 2916, 1697, 169, 1029, 3148, 1415, 1416, - 1729, 3201, 2437, 2458, 1425, 1426, 1427, 1428, 1429, 3464, - 1431, 1419, 1291, 2415, 3013, 3015, 1437, 3285, 3286, 3946, - 2421, 1515, 3569, 169, 3371, 2423, 1378, 3705, 3706, 3707, - 3711, 3709, 3710, 3712, 3708, 2697, 1414, 1634, 709, 1524, - 3222, 2432, 1639, 4096, 1547, 1548, 1376, 3281, 2436, 1648, - 1222, 3164, 2664, 3030, 3031, 3290, 2545, 2453, 2212, 2080, - 2057, 1411, 1430, 2425, 1165, 1161, 1162, 1163, 1164, 3320, - 2702, 3092, 2701, 2700, 2698, 1424, 1263, 2767, 1680, 2424, - 1031, 1436, 1435, 1030, 1293, 1434, 1433, 1532, 1534, 1643, - 1041, 3426, 1553, 1303, 1553, 1187, 1655, 1545, 1546, 1658, - 703, 1423, 1445, 975, 976, 977, 1892, 3697, 2911, 696, - 1448, 3410, 696, 696, 1505, 1506, 3825, 3282, 973, 1312, - 1333, 2238, 2648, 2084, 3757, 1690, 2224, 2225, 3871, 1472, - 1473, 1443, 1610, 2771, 1069, 2333, 1492, 1455, 1408, 1495, - 1221, 1069, 2699, 1901, 2341, 1464, 3101, 3100, 3992, 1902, - 1582, 1029, 1474, 2335, 2334, 941, 1605, 1624, 1625, 3607, - 1493, 1494, 1553, 1496, 1497, 3166, 1498, 2332, 970, 1900, - 1647, 1406, 1407, 3223, 1536, 930, 2479, 4093, 4094, 1187, - 1779, 1561, 931, 1675, 1676, 1458, 3691, 3692, 3014, 3658, - 1632, 1763, 1810, 1811, 1828, 1814, 1573, 1629, 2426, 1567, - 1633, 3686, 1593, 1829, 677, 3685, 4108, 934, 4114, 1613, - 3956, 1616, 1617, 1457, 1258, 1579, 1836, 3326, 1838, 2556, - 1839, 1840, 1841, 1618, 1619, 3322, 2359, 1594, 1457, 2943, - 2945, 2946, 2947, 2944, 1222, 1031, 2933, 2934, 1030, 2635, - 1737, 1738, 1739, 1740, 1741, 1742, 1743, 1744, 1745, 1746, - 1747, 1748, 3429, 934, 1713, 2431, 1760, 1761, 933, 2429, - 3372, 1187, 1184, 936, 935, 2276, 3384, 1891, 2275, 1732, - 2348, 1894, 1698, 1896, 695, 1694, 1679, 695, 695, 2217, - 1813, 1903, 1905, 1871, 1906, 1678, 1908, 1909, 2703, 2704, - 1689, 1581, 1666, 2349, 2350, 1669, 1917, 1553, 1922, 1923, - 1661, 1925, 1516, 672, 938, 1837, 2768, 1710, 672, 936, - 935, 1553, 1818, 1819, 1820, 981, 1042, 691, 1945, 1688, - 691, 691, 1684, 1687, 3283, 1834, 694, 1683, 1835, 694, - 694, 1553, 1707, 1686, 1874, 1893, 693, 1516, 1029, 693, - 693, 1258, 690, 2839, 2358, 1848, 1849, 4102, 1712, 1220, - 1827, 4090, 1685, 692, 4048, 2524, 692, 692, 2313, 2395, - 1751, 4016, 1972, 2932, 1184, 1870, 1467, 1471, 1471, 1471, - 3326, 1979, 1979, 2663, 1516, 1667, 1516, 1516, 1670, 1671, - 672, 672, 2452, 2046, 1917, 2050, 937, 3241, 1553, 2054, - 2055, 1467, 1467, 4013, 2070, 4007, 648, 2523, 1260, 1261, - 1262, 1259, 1924, 912, 913, 914, 915, 1758, 1759, 3989, - 648, 1258, 1553, 1591, 3295, 1926, 785, 795, 3293, 3940, - 4103, 1976, 1031, 3158, 4049, 1030, 786, 4049, 787, 791, - 794, 790, 788, 789, 4017, 912, 913, 914, 915, 672, - 1917, 1553, 2001, 2115, 3124, 672, 672, 672, 707, 707, - 1260, 1261, 1262, 1259, 1842, 2125, 2126, 2127, 2128, 3156, - 1877, 2524, 2134, 2840, 1219, 3033, 4014, 3939, 2252, 223, - 2048, 2108, 223, 223, 2786, 223, 1913, 1914, 1915, 2758, - 1872, 792, 3990, 2653, 1564, 3933, 2840, 1982, 1928, 1929, - 1930, 1931, 1258, 2132, 1878, 3908, 2394, 2640, 2208, 1274, - 1273, 1283, 1284, 1276, 1277, 1278, 1279, 1280, 1281, 1282, - 1275, 2086, 1921, 1373, 793, 1828, 1828, 2176, 2278, 2077, - 2251, 2079, 3896, 2100, 2101, 2524, 1937, 1828, 1828, 1912, - 2072, 1716, 2098, 2099, 2193, 2408, 2117, 2118, 2119, 3845, - 1258, 1220, 1699, 2318, 2114, 2068, 1953, 1942, 1941, 3844, - 1260, 1261, 1262, 1259, 1955, 917, 2142, 1981, 2252, 2145, - 2146, 1961, 2148, 1643, 2312, 2311, 1945, 2071, 2217, 2187, - 1553, 2206, 2093, 1947, 1948, 3839, 3838, 1983, 1984, 3837, - 3836, 1722, 1723, 1724, 1725, 1726, 2178, 917, 696, 3816, - 3815, 1960, 3790, 1962, 1963, 3897, 2250, 2422, 2425, 2283, - 3540, 3488, 3454, 2053, 3402, 1069, 1965, 1969, 1069, 2052, - 671, 671, 3846, 2047, 1956, 1957, 679, 1069, 1970, 2199, - 2058, 3398, 2381, 1767, 2200, 1978, 1980, 1771, 1772, 1773, - 1774, 1966, 1967, 2076, 2087, 2078, 2130, 1812, 1260, 1261, - 1262, 1259, 3303, 3008, 2103, 1822, 2744, 1066, 2252, 2252, - 1946, 1977, 2252, 2252, 2732, 2724, 1710, 2679, 2661, 1066, - 2183, 2113, 2217, 2217, 1068, 2252, 2120, 2121, 2056, 2112, - 1444, 2171, 1964, 2556, 3489, 3455, 1068, 3403, 2649, 2642, - 2139, 1766, 1539, 2171, 2248, 1222, 4121, 2637, 1971, 2629, - 2627, 1974, 1975, 2625, 3399, 2623, 4104, 1882, 1875, 3475, - 2380, 2314, 3037, 2842, 2156, 2290, 2666, 1100, 1101, 1102, - 2289, 2665, 2657, 1069, 932, 3304, 2524, 2422, 2425, 2381, - 2274, 2402, 2265, 2235, 2236, 2264, 1275, 1258, 1258, 2177, - 1258, 2381, 2271, 2426, 2263, 2184, 1945, 2186, 2421, 2415, - 2420, 1099, 2418, 2423, 1096, 2189, 2231, 2253, 2256, 2198, - 2197, 2638, 2643, 695, 2410, 1066, 2137, 2216, 2323, 2324, - 2638, 2327, 2630, 2628, 2330, 3437, 2624, 3246, 2624, 2195, - 1672, 2123, 1068, 2381, 2313, 2336, 2201, 3722, 1258, 679, - 1949, 750, 3538, 1258, 672, 672, 672, 2214, 1663, 2254, - 1309, 1207, 1291, 1258, 2306, 1258, 691, 2424, 1258, 672, - 672, 672, 672, 1171, 1166, 694, 1968, 1258, 2230, 2102, - 1817, 1816, 2378, 3084, 4115, 693, 1817, 1816, 2239, 4076, - 2252, 2382, 2383, 2384, 3901, 2387, 1516, 2450, 1751, 2232, - 2217, 1467, 692, 3237, 1468, 3880, 3659, 2284, 2285, 2244, - 2287, 3789, 1453, 1673, 1543, 1471, 1454, 2294, 3749, 3688, - 2615, 3687, 1516, 2426, 2196, 1544, 3673, 1471, 2421, 2415, - 2420, 1499, 2418, 2423, 3467, 1875, 939, 3465, 3902, 2444, - 1875, 1875, 3632, 3447, 2233, 2234, 1843, 1844, 1845, 1846, - 3660, 3327, 1850, 1851, 1852, 1853, 1855, 1856, 1857, 1858, - 1859, 1860, 1861, 1862, 1863, 1864, 1865, 1278, 1279, 1280, - 1281, 1282, 1275, 1541, 1093, 1094, 1095, 1098, 3468, 1097, - 3318, 3466, 2399, 3310, 3238, 1757, 2401, 2424, 2403, 2682, - 2141, 2451, 3305, 2144, 1854, 3217, 2147, 672, 1979, 2149, - 1847, 1754, 1756, 1753, 2967, 1755, 2528, 2528, 2070, 2528, - 2307, 2309, 2310, 1274, 1273, 1283, 1284, 1276, 1277, 1278, - 1279, 1280, 1281, 1282, 1275, 1469, 3357, 2966, 3239, 648, - 648, 2810, 2315, 2763, 1453, 2404, 2676, 1187, 1454, 1260, - 1261, 1262, 1259, 1553, 672, 1260, 1261, 1262, 1259, 2342, - 3360, 2641, 2547, 2686, 2181, 2192, 2619, 672, 2180, 2414, - 2179, 2413, 1440, 1187, 2600, 666, 1439, 1332, 1189, 2609, - 2140, 1592, 2551, 2070, 1770, 3038, 2605, 1540, 2607, 3958, - 1770, 223, 2245, 1597, 1907, 2140, 2716, 2456, 2407, 1259, - 2459, 2460, 2461, 2462, 2463, 2464, 2465, 2388, 1069, 2468, - 2469, 2470, 2471, 2472, 2473, 2474, 2475, 2476, 2477, 2478, - 3700, 2480, 2481, 2482, 2483, 2484, 2532, 2485, 2530, 3699, - 2534, 2645, 3055, 2542, 2903, 2543, 1262, 1259, 2536, 2901, - 2427, 2428, 2880, 2433, 1260, 1261, 1262, 1259, 2878, 2659, - 1066, 3679, 2206, 3358, 2548, 2549, 3633, 3634, 2558, 1553, - 4111, 1553, 1311, 1553, 3626, 1832, 2391, 1068, 1187, 2241, - 2746, 2397, 2747, 2246, 2398, 1310, 2678, 4086, 2610, 4085, - 1833, 2255, 4084, 1260, 1261, 1262, 1259, 2400, 4082, 4081, - 2669, 2604, 2688, 1260, 1261, 1262, 1259, 4020, 2497, 3988, - 3987, 2396, 1553, 1187, 2503, 3903, 2783, 2710, 3841, 3829, - 1532, 1534, 3819, 2537, 1260, 1261, 1262, 1259, 2262, 3809, - 2809, 3435, 2717, 2611, 3627, 4110, 2269, 1553, 3740, 3662, - 3661, 1551, 3480, 3469, 2389, 2390, 1276, 1277, 1278, 1279, - 1280, 1281, 1282, 1275, 2392, 2393, 2705, 2552, 2286, 1260, - 1261, 1262, 1259, 2291, 2292, 2293, 1551, 1597, 2296, 2297, - 2298, 2299, 2300, 2301, 2302, 2303, 2304, 2305, 3117, 2601, - 2603, 2718, 2555, 2954, 3434, 3306, 2765, 2766, 2655, 2656, - 2769, 3436, 2721, 2722, 1273, 1283, 1284, 1276, 1277, 1278, - 1279, 1280, 1281, 1282, 1275, 671, 1176, 3207, 1187, 3080, - 2694, 1535, 1187, 3050, 2952, 3049, 1185, 2937, 2936, 1553, - 2935, 2927, 1516, 1260, 1261, 1262, 1259, 2690, 2050, 2690, - 2921, 2920, 1598, 2675, 2684, 2719, 2838, 2919, 2670, 1213, - 2708, 3116, 2844, 2953, 2267, 2845, 2918, 2950, 2759, 2662, - 2667, 2939, 2660, 1266, 1267, 1268, 1269, 1270, 1271, 1272, - 1264, 2651, 2750, 2855, 1260, 1261, 1262, 1259, 1260, 1261, - 1262, 1259, 2631, 1187, 2951, 2826, 1260, 1261, 1262, 1259, - 3103, 2877, 2680, 2681, 1710, 2544, 2317, 2822, 1187, 1187, - 1187, 1979, 2706, 2159, 1187, 3998, 2887, 2888, 2889, 2890, - 1187, 2897, 2696, 2898, 2899, 2158, 2900, 2949, 2902, 2157, - 3603, 2938, 2153, 2823, 2266, 2152, 2109, 2602, 1897, 2897, - 1069, 1895, 1260, 1261, 1262, 1259, 1664, 1391, 3441, 2001, - 3446, 2528, 2856, 3194, 4107, 2807, 1471, 1260, 1261, 1262, - 1259, 1260, 1261, 1262, 1259, 2955, 3782, 3783, 2683, 2846, - 3591, 2259, 4105, 4087, 2835, 648, 3579, 2796, 1260, 1261, - 1262, 1259, 4074, 2050, 1169, 4036, 4035, 1187, 2070, 2070, - 2070, 2070, 2070, 2070, 2789, 4032, 2791, 1260, 1261, 1262, - 1259, 3964, 3963, 3770, 1187, 2070, 2858, 3944, 2528, 3888, - 1875, 2875, 1875, 1333, 3637, 2875, 2805, 3882, 2788, 3865, - 3590, 3856, 2961, 3833, 3016, 4113, 1553, 797, 142, 2871, - 2829, 1875, 1875, 142, 2837, 8, 3828, 672, 672, 2564, - 2727, 2728, 7, 1168, 2882, 2843, 2733, 1260, 1261, 1262, - 1259, 3528, 3827, 3786, 1921, 3772, 745, 3771, 3741, 747, - 2857, 3681, 2860, 1591, 746, 3641, 2873, 3630, 1260, 1261, - 1262, 1259, 2909, 2910, 2249, 2879, 3390, 2885, 1260, 1261, - 1262, 1259, 3612, 3610, 2876, 3608, 3004, 2925, 2926, 3605, - 3602, 3601, 223, 3577, 3575, 2972, 678, 223, 3120, 142, - 3548, 2917, 3545, 1260, 1261, 1262, 1259, 3542, 2247, 2929, - 2959, 3431, 2644, 2963, 2647, 3418, 3411, 3395, 3393, 1828, - 3388, 1828, 3017, 3338, 3065, 1260, 1261, 1262, 1259, 3316, - 3932, 2854, 3315, 3313, 2673, 3312, 3307, 2968, 3079, 2962, - 3301, 3300, 3218, 3119, 1553, 3181, 2965, 3086, 4062, 3180, - 2847, 3179, 1260, 1261, 1262, 1259, 3170, 3168, 3165, 2852, - 2853, 3163, 2322, 3060, 3034, 3094, 3007, 3006, 3005, 3001, - 1260, 1261, 1262, 1259, 3091, 3072, 3070, 3048, 2687, 3039, - 3023, 2693, 2948, 2940, 3043, 3024, 1260, 1261, 1262, 1259, - 1511, 3021, 2711, 2712, 2930, 2928, 2924, 1522, 2923, 2848, - 2714, 2715, 2922, 2772, 2851, 1874, 1624, 1625, 1069, 2764, - 3064, 2760, 853, 852, 2870, 2652, 2720, 2337, 1559, 2331, - 1069, 2985, 2986, 2987, 2988, 2989, 2990, 2328, 2162, 2155, - 1067, 1885, 1884, 1665, 1632, 142, 1340, 1336, 1335, 3041, - 3040, 1629, 1172, 921, 1633, 1722, 1875, 3083, 3920, 3167, - 142, 3916, 142, 3766, 3088, 3062, 3171, 3172, 3173, 3175, - 3765, 3177, 3178, 1617, 2787, 3754, 3073, 3750, 2564, 3058, - 3056, 1187, 3063, 1618, 1619, 3061, 3604, 3197, 3076, 3075, - 3074, 206, 3586, 197, 168, 3558, 3460, 3211, 3459, 3458, - 3428, 3407, 672, 3405, 3404, 3401, 3096, 3400, 3394, 3392, - 3373, 3363, 3362, 3349, 3082, 3227, 1187, 3102, 3095, 672, - 3118, 1187, 1187, 3348, 3247, 3115, 3184, 3155, 3111, 3112, - 2070, 2378, 3108, 3245, 3110, 3109, 3122, 2849, 2850, 2872, - 3113, 3105, 3104, 3157, 3098, 3032, 2785, 1260, 1261, 1262, - 1259, 2743, 2626, 2444, 2872, 2883, 2884, 2742, 2622, 2621, - 2886, 2741, 3221, 3230, 202, 3271, 2893, 3274, 3234, 3274, - 3274, 2822, 2295, 2288, 1187, 2282, 2281, 2280, 1260, 1261, - 1262, 1259, 3162, 3161, 1260, 1261, 1262, 1259, 1260, 1261, - 1262, 1259, 3296, 2240, 2279, 3254, 3292, 3183, 2277, 2273, - 1553, 1553, 2272, 3199, 3106, 3107, 1069, 2740, 1069, 3249, - 3258, 3260, 2270, 1069, 2261, 3182, 2258, 1274, 1273, 1283, - 1284, 1276, 1277, 1278, 1279, 1280, 1281, 1282, 1275, 1551, - 1551, 2257, 2161, 2984, 1260, 1261, 1262, 1259, 3243, 1868, - 1069, 3220, 1867, 1866, 3297, 3298, 2739, 672, 1066, 1831, - 2984, 3240, 1830, 3244, 3197, 1821, 206, 3820, 3229, 1565, - 1563, 4061, 3270, 3232, 3233, 1068, 4019, 1516, 3253, 3938, - 2050, 2050, 3279, 1260, 1261, 1262, 1259, 1330, 2414, 1875, - 2413, 3915, 3269, 3930, 3129, 3130, 3003, 3670, 3851, 3848, - 3131, 3132, 3133, 3134, 3835, 3135, 3136, 3137, 3138, 3139, - 3140, 3141, 3142, 3143, 3144, 3145, 3275, 3276, 3830, 3294, - 3280, 1274, 1273, 1283, 1284, 1276, 1277, 1278, 1279, 1280, - 1281, 1282, 1275, 3735, 1187, 3734, 3716, 3698, 2710, 202, - 3694, 3672, 3656, 4054, 2738, 3559, 3361, 3556, 3302, 3526, - 708, 1274, 1273, 1283, 1284, 1276, 1277, 1278, 1279, 1280, - 1281, 1282, 1275, 3525, 3522, 3277, 3521, 3487, 3042, 3484, - 3044, 1260, 1261, 1262, 1259, 2737, 3482, 3449, 3323, 3324, - 3114, 3308, 3311, 1612, 3314, 3309, 3928, 2736, 3317, 1875, - 3321, 3926, 2735, 672, 1875, 1623, 1614, 4052, 3334, 1628, - 3335, 1801, 1260, 1261, 1262, 1259, 2192, 1631, 1927, 3340, - 2734, 1620, 1447, 1932, 1260, 1261, 1262, 1259, 3342, 1260, - 1261, 1262, 1259, 2995, 2956, 2881, 3345, 3346, 3347, 1286, - 2831, 1290, 2830, 2824, 2790, 2745, 3252, 1260, 1261, 1262, - 1259, 3097, 2636, 3351, 2546, 2486, 2379, 1287, 1289, 1285, - 2351, 1288, 1274, 1273, 1283, 1284, 1276, 1277, 1278, 1279, - 1280, 1281, 1282, 1275, 2316, 1752, 2134, 3415, 202, 3121, - 3417, 2731, 2122, 1911, 3419, 3248, 1881, 1695, 1646, 3425, - 3250, 3251, 3377, 2730, 3380, 1985, 1986, 3381, 3677, 2729, - 1621, 1390, 1375, 1371, 3396, 3374, 1370, 1369, 1260, 1261, - 1262, 1259, 1368, 1367, 3386, 1366, 1365, 3376, 1364, 1363, - 1260, 1261, 1262, 1259, 672, 2050, 1260, 1261, 1262, 1259, - 1362, 1361, 1360, 2690, 1359, 3453, 3420, 2872, 3422, 2723, - 1358, 3427, 1357, 142, 142, 142, 1067, 1356, 3430, 1355, - 1354, 2528, 2070, 3472, 2111, 1353, 1352, 1351, 1350, 1349, - 2111, 2111, 2111, 3408, 1348, 1347, 1260, 1261, 1262, 1259, - 1346, 1343, 2872, 3412, 1342, 1341, 3490, 2872, 2872, 1187, - 3414, 1339, 1338, 1337, 1797, 1334, 1069, 1327, 3271, 1326, - 1324, 1794, 1187, 1069, 1323, 1796, 1793, 1795, 1799, 1800, - 1322, 1321, 1320, 1798, 1187, 1319, 3537, 1318, 1317, 1316, - 1553, 1315, 1314, 1313, 1308, 3442, 1307, 3523, 2713, 1292, - 3325, 2386, 2709, 3444, 3474, 1306, 1305, 4003, 2685, 1304, - 2872, 672, 1224, 2050, 1170, 3330, 3331, 1187, 2365, 1551, - 3513, 3520, 3341, 1212, 3278, 1260, 1261, 1262, 1259, 1260, - 1261, 1262, 1259, 3333, 3539, 1260, 1261, 1262, 1259, 3477, - 3471, 2811, 3470, 2557, 3481, 2164, 3483, 1223, 3339, 223, - 1765, 3336, 3450, 3451, 3452, 2998, 2993, 3002, 3456, 3457, - 2999, 2991, 1187, 3552, 3549, 3527, 3532, 2992, 125, 2996, - 3529, 3957, 3867, 3563, 2997, 2650, 3536, 1260, 1261, 1262, - 1259, 3561, 67, 66, 3541, 3000, 3544, 2518, 2519, 3562, - 2639, 3543, 3547, 1441, 1939, 1940, 3216, 3267, 3551, 3268, - 3553, 3078, 3550, 2454, 3606, 2905, 3554, 3546, 1934, 1935, - 1936, 3533, 2906, 2907, 2908, 3614, 3352, 3378, 3379, 2039, - 1187, 1606, 2634, 3584, 2655, 2656, 2338, 1804, 1805, 1806, - 1807, 1808, 1809, 1802, 1803, 2674, 3570, 674, 1660, 3560, - 1187, 1553, 1553, 1640, 3580, 2124, 3227, 1218, 1379, 3581, - 3192, 675, 676, 3185, 2859, 2832, 2406, 2374, 1943, 3649, - 2564, 3649, 1910, 3611, 4065, 3613, 1817, 1816, 3832, 3565, - 1551, 1763, 3299, 1187, 3666, 1187, 3638, 3643, 3644, 1386, - 1387, 1384, 1385, 2500, 3669, 3639, 3671, 1382, 1383, 1380, - 1381, 2493, 1553, 2051, 3646, 1508, 1507, 1251, 3620, 3622, - 3621, 3640, 2182, 3631, 3344, 3026, 2339, 2194, 1460, 1459, - 672, 3600, 1187, 1187, 1432, 1483, 1187, 1187, 4026, 4024, - 3654, 1763, 3981, 3642, 3954, 3653, 3953, 3951, 3892, 3852, - 2178, 3474, 3665, 3730, 3718, 3729, 3617, 3667, 3576, 1069, - 3713, 3678, 3397, 3370, 3513, 3520, 3369, 1945, 3702, 3703, - 3727, 3682, 3714, 3715, 3675, 3355, 2439, 2409, 1662, 3354, - 3389, 3473, 3736, 3737, 3036, 1457, 3416, 3391, 4056, 4055, - 3476, 3081, 2770, 2506, 3674, 1553, 2367, 2260, 1394, 2352, - 2353, 2354, 1209, 3724, 3680, 4055, 4056, 3696, 3350, 1184, - 210, 3, 1475, 75, 2369, 2370, 2371, 2372, 3767, 3406, - 3723, 2, 4078, 1562, 1551, 3725, 4079, 678, 3760, 1, - 2513, 2517, 2518, 2519, 2514, 2522, 2515, 2520, 3719, 3748, - 2516, 2751, 2521, 1879, 1388, 916, 911, 1529, 3743, 3747, - 912, 913, 914, 915, 2538, 1184, 2104, 1557, 1883, 3755, - 3759, 918, 981, 142, 3009, 3010, 3343, 3801, 3012, 3795, - 2773, 2213, 2973, 3592, 2491, 3593, 2355, 3774, 3210, 1442, - 974, 1823, 1677, 1187, 1201, 3720, 1674, 1200, 1198, 3721, - 1768, 799, 2167, 2957, 3818, 2931, 3785, 3824, 3726, 4064, - 4099, 4018, 4067, 3793, 1693, 783, 3945, 3857, 3798, 4022, - 3796, 3859, 3746, 3584, 3797, 3491, 2218, 1256, 3057, 1001, - 840, 3810, 810, 1325, 1653, 3127, 3814, 1187, 3530, 3125, - 809, 142, 1553, 3439, 2801, 3731, 3029, 3803, 142, 1002, - 2893, 2150, 1522, 3854, 3744, 1607, 1611, 2405, 1069, 3831, - 3811, 142, 3911, 3676, 142, 142, 3263, 2867, 1635, 3906, - 3485, 1551, 3596, 3840, 3594, 3668, 3595, 142, 715, 2083, - 646, 1051, 3717, 2984, 1875, 2163, 3842, 716, 2385, 3969, - 3834, 954, 2364, 955, 947, 2820, 3884, 2819, 3873, 1559, - 1875, 1733, 1265, 3555, 1750, 3853, 3557, 3146, 3147, 1302, - 754, 2243, 2111, 2798, 3508, 3022, 74, 73, 3663, 3664, - 72, 71, 231, 801, 230, 3893, 3768, 3564, 2984, 1274, - 1273, 1283, 1284, 1276, 1277, 1278, 1279, 1280, 1281, 1282, - 1275, 3123, 3635, 3941, 4069, 3881, 780, 779, 3887, 778, - 777, 776, 775, 3910, 2511, 2512, 1187, 3895, 2510, 2508, - 2507, 2065, 2064, 3035, 1553, 3353, 2129, 3935, 2131, 3225, - 2896, 3904, 3942, 3925, 3927, 3929, 3931, 3909, 3849, 3850, - 2891, 1990, 1988, 3843, 1520, 3943, 2872, 2434, 2441, 3918, - 1987, 4000, 3924, 1551, 3387, 1274, 1273, 1283, 1284, 1276, - 1277, 1278, 1279, 1280, 1281, 1282, 1275, 3587, 3934, 3921, - 3922, 3693, 2941, 3950, 3948, 1553, 3583, 1933, 3801, 1274, - 1273, 1283, 1284, 1276, 1277, 1278, 1279, 1280, 1281, 1282, - 1275, 3962, 2430, 2007, 3991, 2912, 2004, 2003, 2904, 1716, - 3999, 1716, 3689, 3683, 1551, 3982, 3984, 2035, 3799, 3985, - 3986, 3648, 3492, 3493, 3499, 2373, 1120, 3894, 1116, 3983, - 1118, 1119, 3898, 3899, 1117, 2695, 3319, 4015, 2411, 3187, - 2347, 2346, 4008, 2344, 4009, 2343, 4010, 1417, 4011, 3883, - 3965, 4012, 3616, 2562, 4025, 2560, 4027, 4028, 1167, 3332, - 3328, 2175, 4023, 3919, 4021, 3337, 2994, 2190, 3077, 2066, - 3873, 2062, 1187, 4031, 1283, 1284, 1276, 1277, 1278, 1279, - 1280, 1281, 1282, 1275, 1801, 2061, 1091, 1090, 1588, 2975, - 2501, 3776, 3824, 4044, 1938, 948, 2362, 109, 41, 122, - 108, 4046, 4047, 4045, 4050, 185, 59, 4053, 4063, 4051, - 4071, 184, 58, 4070, 120, 4057, 4058, 4059, 4060, 182, - 2513, 2517, 2518, 2519, 2514, 2522, 2515, 2520, 4083, 4075, - 2516, 57, 2521, 103, 1187, 102, 119, 180, 56, 215, - 214, 2836, 217, 216, 213, 4088, 2612, 3910, 4089, 4091, - 2613, 212, 1595, 211, 4097, 3955, 3652, 4101, 3937, 906, - 4098, 2069, 44, 43, 186, 42, 110, 60, 40, 39, - 38, 34, 13, 1509, 1510, 12, 1512, 1513, 35, 1517, - 1518, 1519, 22, 21, 1681, 4109, 20, 26, 32, 31, - 135, 134, 30, 133, 4071, 4117, 132, 4070, 4116, 1716, - 131, 4033, 4034, 130, 129, 128, 4101, 4118, 4038, 4039, - 4040, 4041, 4122, 1568, 1569, 1570, 1571, 1572, 127, 1574, - 1575, 1576, 1577, 1578, 29, 19, 51, 1584, 1585, 1586, - 1587, 50, 49, 48, 47, 46, 142, 9, 123, 142, - 142, 118, 142, 116, 28, 117, 114, 206, 64, 197, - 168, 115, 113, 112, 111, 106, 104, 1797, 86, 85, - 84, 99, 98, 97, 1794, 96, 198, 3497, 1796, 1793, - 1795, 1799, 1800, 189, 95, 94, 1798, 199, 92, 93, - 1000, 83, 1067, 82, 81, 142, 80, 79, 101, 107, - 105, 90, 100, 91, 1067, 89, 140, 88, 87, 78, - 77, 76, 166, 165, 164, 163, 162, 1312, 3509, 160, - 142, 126, 161, 159, 158, 157, 156, 155, 154, 52, - 202, 3500, 3027, 3028, 53, 54, 55, 176, 175, 177, - 179, 181, 3495, 178, 183, 173, 171, 3517, 3518, 174, - 172, 170, 69, 3496, 11, 121, 18, 4, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 727, 726, 733, 723, 0, 989, 0, 0, - 0, 0, 0, 3917, 0, 730, 731, 0, 732, 736, - 3501, 0, 717, 0, 0, 0, 0, 0, 0, 0, - 1292, 0, 741, 0, 0, 0, 0, 148, 149, 0, - 150, 151, 0, 0, 0, 152, 0, 0, 153, 1782, - 1783, 1784, 1785, 1786, 1787, 1788, 1789, 1790, 1791, 1792, - 1804, 1805, 1806, 1807, 1808, 1809, 1802, 1803, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 745, 985, - 986, 747, 0, 0, 0, 0, 746, 0, 0, 0, - 1029, 0, 0, 0, 0, 0, 0, 0, 3996, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 167, 195, 204, 196, 124, 0, 0, 3516, 0, - 2420, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 194, 188, 187, 0, 0, 0, - 0, 70, 0, 0, 0, 3505, 0, 0, 4042, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 3502, 3506, 3504, - 3503, 0, 0, 0, 1031, 0, 3996, 1030, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 190, 191, 192, 0, 0, 3511, 3512, 0, - 1716, 0, 0, 0, 0, 0, 1015, 3219, 0, 0, - 0, 0, 0, 0, 0, 990, 718, 720, 719, 0, - 0, 0, 3996, 0, 3231, 0, 0, 725, 0, 0, - 200, 0, 0, 0, 0, 0, 0, 0, 0, 729, - 0, 0, 992, 0, 0, 0, 744, 0, 0, 0, - 3519, 136, 0, 722, 0, 193, 0, 137, 0, 0, - 0, 0, 3498, 0, 0, 0, 0, 0, 3510, 0, - 727, 726, 733, 723, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 730, 731, 0, 732, 736, 4120, 0, - 717, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 741, 2036, 0, 0, 0, 0, 1997, 1014, 1012, 0, - 0, 0, 0, 0, 138, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, - 0, 0, 0, 0, 1011, 2531, 0, 2039, 2006, 0, - 0, 0, 0, 0, 2116, 0, 984, 2040, 2041, 0, - 0, 0, 2111, 0, 0, 0, 0, 991, 1024, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 724, 728, 734, 2005, 735, 737, 65, 0, 738, 739, - 740, 1020, 0, 742, 743, 0, 0, 0, 0, 0, - 0, 2013, 0, 0, 0, 0, 0, 0, 3515, 0, - 2069, 0, 0, 0, 0, 0, 0, 0, 142, 0, - 0, 146, 203, 0, 147, 0, 0, 1021, 1025, 169, - 0, 0, 0, 0, 61, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1008, 0, 1006, - 1010, 1028, 0, 0, 0, 1007, 1004, 1003, 0, 1009, - 994, 995, 993, 996, 997, 998, 999, 0, 1026, 2029, - 1027, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1022, 1023, 0, 3514, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 3383, 0, - 139, 45, 0, 0, 718, 720, 719, 62, 0, 0, - 0, 5, 0, 0, 0, 725, 0, 0, 1018, 0, - 0, 0, 0, 0, 1017, 0, 0, 729, 0, 143, - 144, 0, 0, 145, 744, 0, 0, 0, 0, 1013, - 0, 722, 0, 1996, 1998, 1995, 0, 0, 1992, 721, - 0, 0, 0, 2017, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 2023, 0, 2036, 0, 0, 0, - 0, 1997, 2008, 0, 1991, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 2011, 2045, 0, 0, 2012, 2014, - 2016, 0, 2018, 2019, 2020, 2024, 2025, 2026, 2028, 2031, - 2032, 2033, 2039, 2006, 0, 0, 0, 0, 0, 2021, - 2030, 2022, 2040, 2041, 0, 0, 0, 1016, 0, 2111, - 0, 2000, 0, 987, 988, 982, 0, 0, 0, 0, - 983, 0, 0, 0, 0, 0, 0, 0, 2005, 0, - 0, 0, 0, 0, 0, 2037, 0, 142, 0, 0, - 0, 0, 0, 0, 0, 0, 2013, 142, 724, 728, - 734, 0, 735, 737, 0, 0, 738, 739, 740, 0, - 0, 742, 743, 0, 0, 0, 0, 1993, 1994, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 2034, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 2010, 0, 0, 0, 0, 0, 0, 2009, - 0, 0, 0, 0, 2029, 0, 2111, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 2027, 0, 0, 0, 0, 0, 0, - 0, 0, 2015, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 2043, 2042, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 2069, 2069, 2069, 2069, 2069, - 2069, 0, 0, 0, 0, 0, 0, 0, 1996, 2862, - 1995, 0, 2069, 2861, 0, 0, 0, 0, 2017, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 2002, 2023, - 0, 0, 0, 0, 0, 0, 0, 721, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 2011, - 2045, 0, 0, 2012, 2014, 2016, 0, 2018, 2019, 2020, - 2024, 2025, 2026, 2028, 2031, 2032, 2033, 0, 0, 0, - 2038, 0, 0, 2044, 2021, 2030, 2022, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 2000, 1139, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 142, - 0, 0, 0, 0, 142, 0, 0, 0, 0, 0, - 2037, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 142, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 3701, 0, 142, 0, 0, - 0, 0, 1993, 1994, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 2034, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 2010, 0, 0, - 0, 0, 0, 0, 2009, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1139, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 2027, 0, - 0, 1124, 0, 0, 0, 0, 0, 2015, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 2043, 2042, 1147, 1151, 1153, 1155, 1157, 1158, 1160, 0, - 1165, 1161, 1162, 1163, 1164, 0, 1142, 1143, 1144, 1145, - 1122, 1123, 1148, 0, 1125, 0, 1127, 1128, 1129, 1130, - 1126, 1131, 1132, 1133, 1134, 1135, 1138, 1140, 1136, 1137, - 1146, 0, 0, 0, 0, 0, 0, 0, 1150, 1152, - 1154, 1156, 1159, 2002, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 2036, 0, 0, 0, 0, 0, 0, 206, 0, - 0, 0, 0, 1067, 0, 142, 0, 0, 1141, 1124, - 142, 1139, 0, 1114, 0, 2038, 0, 2069, 2044, 0, - 0, 3647, 0, 0, 0, 0, 0, 2039, 0, 0, - 1147, 1151, 1153, 1155, 1157, 1158, 1160, 142, 1165, 1161, - 1162, 1163, 1164, 0, 1142, 1143, 1144, 1145, 1122, 1123, - 1148, 0, 1125, 2036, 1127, 1128, 1129, 1130, 1126, 1131, - 1132, 1133, 1134, 1135, 1138, 1140, 1136, 1137, 1146, 0, - 0, 202, 0, 0, 0, 0, 1150, 1152, 1154, 1156, - 1159, 2013, 0, 0, 0, 0, 0, 0, 0, 2039, - 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, 1141, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 3823, 0, 1124, 0, 0, 0, 0, - 0, 0, 0, 2013, 0, 0, 0, 0, 0, 2029, - 0, 0, 0, 0, 2691, 2692, 1147, 1151, 1153, 1155, - 1157, 1158, 1160, 0, 1165, 1161, 1162, 1163, 1164, 0, - 1142, 1143, 1144, 1145, 1122, 1123, 1148, 0, 1125, 0, - 1127, 1128, 1129, 1130, 1126, 1131, 1132, 1133, 1134, 1135, - 1138, 1140, 1136, 1137, 1146, 0, 0, 0, 0, 0, - 0, 0, 1150, 1152, 1154, 1156, 1159, 0, 0, 0, - 0, 2029, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 2017, 0, 0, 0, 0, 0, 0, - 0, 0, 1141, 0, 2023, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 2011, 2045, 0, 0, 2012, 2014, - 2016, 0, 2018, 2019, 2020, 2024, 2025, 2026, 2028, 2031, - 2032, 2033, 0, 0, 0, 0, 0, 0, 0, 2021, - 2030, 2022, 0, 0, 0, 2017, 0, 0, 1149, 0, - 0, 0, 0, 0, 0, 0, 2023, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 2037, 2011, 2045, 0, 0, - 2012, 2014, 2016, 0, 2018, 2019, 2020, 2024, 2025, 2026, - 2028, 2031, 2032, 2033, 0, 0, 0, 0, 0, 0, - 0, 2021, 2030, 2022, 0, 0, 0, 0, 0, 0, + 783, 759, 4102, 785, 4070, 2870, 223, 4094, 1638, 2000, + 3997, 1716, 3479, 3579, 4003, 3290, 3996, 4004, 3913, 3823, + 3890, 3256, 768, 3870, 3948, 3705, 3367, 3508, 3801, 1712, + 761, 3770, 2864, 3861, 1482, 3368, 1776, 1329, 3822, 3891, + 3637, 1550, 813, 2783, 3739, 2867, 649, 1184, 3583, 1061, + 3792, 3441, 3871, 3873, 3574, 3446, 1945, 3495, 1488, 1763, + 3651, 2417, 3265, 667, 1457, 673, 673, 3658, 2842, 3646, + 3213, 673, 691, 700, 1719, 3619, 700, 3227, 3189, 3365, + 3462, 2983, 2984, 2982, 3216, 2959, 3433, 208, 37, 2095, + 1781, 757, 2893, 3285, 68, 1178, 3267, 2564, 2098, 2111, + 3274, 3464, 2060, 2979, 2526, 2134, 3410, 2690, 3052, 2208, + 2562, 2166, 3012, 3330, 2420, 1543, 2809, 3194, 1960, 3273, + 2655, 3196, 3190, 1174, 3236, 3192, 3191, 708, 2970, 141, + 712, 2378, 36, 2322, 1627, 3187, 3160, 2321, 2822, 751, + 1616, 2346, 2192, 2615, 2061, 2633, 2175, 2174, 2139, 3100, + 1623, 3026, 1874, 941, 2167, 2204, 2203, 2091, 2793, 2895, + 697, 2798, 2505, 2064, 2875, 1990, 2527, 2418, 756, 1491, + 982, 1628, 2834, 1631, 1447, 2510, 219, 8, 2377, 218, + 7, 6, 1921, 2367, 1414, 2238, 2560, 2205, 1590, 1777, + 1710, 760, 1559, 1522, 1122, 666, 1528, 1492, 2358, 649, + 750, 2413, 1959, 1770, 2727, 769, 1750, 1701, 2361, 1200, + 2173, 15, 1660, 2170, 1642, 2155, 1597, 705, 1917, 1709, + 1920, 2534, 2506, 223, 1054, 223, 685, 1113, 1114, 1467, + 1581, 1471, 981, 682, 673, 1524, 1527, 908, 1715, 715, + 205, 209, 24, 1782, 1020, 25, 27, 714, 17, 758, + 1093, 1483, 979, 16, 10, 964, 1399, 699, 958, 1006, + 711, 201, 1639, 3880, 1110, 1375, 2212, 1330, 3789, 2763, + 910, 911, 3376, 669, 23, 2763, 1261, 1262, 1263, 1260, + 1088, 2763, 2536, 695, 14, 3476, 2726, 3243, 3069, 3068, + 33, 1261, 1262, 1263, 1260, 2222, 1179, 1070, 1055, 1261, + 1262, 1263, 1260, 3610, 3449, 1180, 3360, 2678, 2618, 2621, + 1109, 2619, 1111, 1887, 2616, 1600, 1604, 1453, 696, 1105, + 1106, 207, 668, 2320, 1394, 692, 1450, 1451, 1452, 1526, + 678, 3848, 1067, 703, 1368, 1069, 1040, 1106, 2326, 674, + 930, 928, 1888, 3170, 648, 1106, 1653, 2330, 1397, 3155, + 3152, 4082, 1089, 1505, 3153, 1179, 694, 3150, 1881, 2755, + 2753, 1390, 693, 1602, 3572, 1261, 1262, 1263, 1260, 3048, + 3046, 1778, 2144, 3856, 206, 64, 197, 168, 1261, 1262, + 1263, 1260, 3746, 3740, 8, 3575, 3366, 7, 2189, 1104, + 3875, 1324, 2169, 198, 909, 3129, 2161, 2458, 4108, 3869, + 189, 3808, 752, 2757, 199, 920, 4079, 3754, 4032, 206, + 206, 3620, 1259, 3589, 1223, 1405, 3624, 3463, 2664, 2369, + 2209, 2672, 1637, 140, 3867, 206, 3776, 1083, 1078, 1073, + 1077, 1081, 206, 3974, 2708, 3924, 1567, 1404, 126, 206, + 929, 927, 3752, 2368, 1646, 3809, 1400, 202, 206, 1403, + 1402, 1658, 753, 930, 928, 1086, 1071, 206, 3072, 1076, + 710, 3127, 2828, 2220, 206, 1422, 1439, 206, 64, 197, + 168, 2977, 1065, 1066, 1643, 1890, 1406, 2362, 1953, 2554, + 1651, 1655, 202, 202, 1035, 1033, 1258, 1034, 206, 64, + 197, 168, 206, 64, 197, 168, 2555, 140, 1645, 752, + 2108, 2541, 1650, 3019, 2540, 1657, 3060, 2542, 3020, 3021, + 1084, 2074, 2826, 140, 921, 2634, 3778, 925, 2782, 1087, + 2778, 202, 1029, 1702, 148, 149, 1706, 150, 151, 3260, + 202, 972, 152, 973, 1974, 153, 3154, 202, 1479, 3151, + 202, 1529, 899, 1531, 898, 900, 901, 1074, 902, 903, + 1705, 1718, 206, 64, 197, 168, 2795, 1195, 2075, 2076, + 1501, 202, 2829, 1502, 3599, 202, 2796, 1683, 1899, 1900, + 1256, 1085, 953, 1238, 1487, 1041, 1239, 1064, 1486, 1489, + 1490, 1251, 206, 64, 197, 168, 967, 1063, 963, 206, + 64, 197, 168, 2780, 3258, 2775, 3971, 1951, 167, 195, + 204, 196, 124, 1037, 1241, 1421, 1489, 1490, 1603, 1601, + 3878, 1075, 3877, 2758, 3876, 2794, 2309, 1669, 4007, 4008, + 4031, 194, 188, 187, 3967, 202, 3878, 3962, 70, 3877, + 3961, 3876, 3960, 4074, 4075, 3434, 3950, 2779, 3859, 2776, + 1722, 3369, 1707, 2659, 944, 3950, 3369, 1192, 3053, 3953, + 1189, 1504, 3054, 3743, 3055, 202, 1203, 1206, 2450, 2224, + 3887, 3383, 202, 2801, 2092, 2082, 1704, 1039, 1697, 2914, + 2216, 673, 673, 1107, 1108, 3629, 1203, 1206, 1112, 3976, + 3977, 3209, 673, 1188, 3862, 3863, 3864, 3865, 1082, 190, + 191, 192, 1236, 3972, 3973, 1198, 3980, 3979, 3978, 3981, + 3982, 3439, 700, 700, 2493, 673, 2971, 2357, 2785, 2500, + 3598, 3520, 167, 195, 204, 196, 3780, 3781, 3600, 969, + 970, 962, 2669, 2152, 1079, 2221, 3090, 1080, 200, 3969, + 966, 965, 1610, 1609, 2756, 194, 193, 3207, 1952, 1254, + 1255, 3088, 1477, 1253, 1038, 1116, 2456, 947, 1515, 136, + 1226, 954, 3573, 193, 1393, 137, 1237, 3203, 1423, 3047, + 2965, 2106, 2107, 2496, 2497, 1721, 1720, 3879, 1301, 2495, + 3785, 961, 3788, 3386, 3626, 697, 697, 697, 2781, 3094, + 2777, 4006, 3414, 1703, 1070, 2762, 2503, 3214, 2557, 1180, + 971, 1180, 1248, 3204, 3205, 960, 665, 3535, 1181, 959, + 1180, 1249, 1250, 4039, 3288, 946, 3289, 3225, 3733, 3206, + 2210, 952, 138, 2327, 2210, 1188, 2210, 1889, 3262, 1067, + 1503, 923, 1069, 3532, 3813, 63, 3070, 1090, 3237, 1072, + 2086, 3590, 3805, 1240, 3906, 2227, 2229, 2230, 3901, 950, + 1218, 3067, 2211, 1106, 2835, 1333, 1106, 2961, 1106, 2243, + 1106, 2488, 1106, 3286, 3287, 3807, 1106, 1070, 702, 1180, + 701, 1205, 1204, 2975, 2364, 924, 2223, 3525, 3161, 3892, + 3908, 3480, 3914, 3201, 65, 3257, 2869, 970, 2617, 3487, + 2341, 1205, 1204, 1036, 2865, 2866, 746, 2869, 1466, 748, + 3536, 1605, 1067, 3975, 747, 1069, 3774, 3734, 695, 695, + 695, 1197, 3292, 951, 3616, 698, 3215, 3422, 3177, 146, + 203, 2491, 147, 1191, 1193, 1196, 3886, 169, 1489, 1490, + 3753, 3696, 61, 909, 4114, 1396, 1194, 1398, 4097, 3425, + 698, 2754, 2557, 696, 696, 696, 2468, 2807, 2467, 1410, + 692, 692, 692, 1413, 1176, 1183, 1215, 1419, 667, 1182, + 1066, 3625, 169, 169, 1652, 1373, 2673, 3779, 1378, 1211, + 1212, 3586, 1209, 1401, 1891, 1207, 1539, 65, 169, 2423, + 1217, 694, 694, 694, 1478, 169, 1302, 693, 693, 693, + 968, 982, 169, 1489, 1490, 1538, 3814, 2800, 139, 45, + 698, 169, 65, 3215, 3806, 62, 2436, 3424, 3691, 5, + 169, 1231, 2416, 2439, 1233, 3210, 926, 169, 2489, 2490, + 169, 2093, 1216, 1297, 1298, 1299, 1300, 143, 144, 957, + 698, 145, 3685, 1692, 203, 1295, 1693, 698, 1464, 2972, + 3915, 169, 1234, 2499, 1463, 169, 673, 1481, 1480, 1517, + 1485, 3782, 1462, 673, 2804, 2805, 3827, 649, 649, 3968, + 3263, 3091, 65, 1459, 1187, 3793, 3630, 649, 649, 2803, + 2438, 1554, 1554, 3266, 673, 2915, 3465, 2916, 2917, 4098, + 2083, 1243, 1175, 1698, 1244, 3762, 3995, 3763, 1030, 3031, + 3032, 3149, 65, 2228, 3202, 700, 1582, 667, 2459, 65, + 1552, 1552, 1593, 1345, 1346, 169, 2216, 3291, 2416, 3762, + 3570, 3763, 1246, 1556, 1292, 3372, 2437, 223, 1431, 3947, + 2422, 3014, 3016, 1561, 1415, 2424, 649, 3757, 710, 945, + 1227, 943, 3223, 3286, 3287, 169, 972, 1525, 973, 1416, + 1417, 3765, 169, 3282, 3165, 1426, 1427, 1428, 1429, 1430, + 2665, 1432, 2546, 1420, 1223, 2454, 1229, 1438, 2213, 1728, + 1731, 1732, 1379, 2081, 2058, 3765, 1412, 1516, 1232, 1235, + 1729, 935, 1032, 3764, 2768, 1031, 2426, 1893, 1635, 2425, + 2342, 3321, 2433, 1640, 1548, 1549, 1377, 3093, 1437, 3826, + 1649, 1436, 1435, 1434, 1228, 1042, 1334, 3764, 704, 3427, + 1242, 2225, 2226, 3283, 3698, 1468, 1472, 1472, 1472, 976, + 977, 978, 2912, 4095, 4096, 1425, 3411, 1264, 2649, 1681, + 3102, 3101, 939, 2239, 1444, 1294, 1902, 937, 936, 1030, + 1468, 1468, 974, 1554, 1304, 1554, 1188, 2934, 2935, 1247, + 1659, 1473, 1474, 1446, 1222, 2085, 2772, 3692, 3693, 2334, + 1449, 3706, 3707, 3708, 3712, 3710, 3711, 3713, 3709, 1409, + 1313, 1903, 1506, 1507, 1245, 3224, 1611, 935, 3994, 2336, + 2335, 1230, 942, 1644, 1614, 3608, 1617, 1618, 1493, 1070, + 1656, 1496, 1901, 2943, 1407, 1408, 1070, 3687, 1619, 1620, + 3167, 3686, 1583, 697, 2333, 3015, 697, 697, 931, 1537, + 2480, 932, 3659, 1554, 938, 1625, 1626, 2349, 1185, 1691, + 1648, 2427, 2277, 1032, 1456, 2276, 1031, 1562, 934, 4116, + 1188, 1780, 1465, 937, 936, 2524, 1458, 1699, 1424, 1475, + 2350, 2351, 1764, 1811, 1812, 1829, 1815, 1494, 1495, 1568, + 1497, 1498, 678, 1499, 1830, 1630, 1458, 1574, 1634, 1633, + 3242, 3373, 1580, 1594, 2840, 1533, 1535, 1837, 1595, 1839, + 3957, 1840, 1841, 1842, 2933, 1546, 1547, 2813, 2817, 2818, + 2819, 2814, 2816, 2815, 4110, 4104, 1738, 1739, 1740, 1741, + 1742, 1743, 1744, 1745, 1746, 1747, 1748, 1749, 1259, 2133, + 1714, 4092, 1761, 1762, 1185, 971, 2432, 4050, 1676, 1677, + 2430, 2360, 1188, 2769, 1221, 3758, 1894, 1730, 1892, 3872, + 3284, 4018, 1895, 4015, 1897, 1695, 695, 1814, 1872, 695, + 695, 4009, 1904, 1906, 1606, 1907, 2841, 1909, 1910, 3758, + 1043, 1668, 1582, 3759, 1671, 1672, 1259, 1918, 1554, 1923, + 1924, 1838, 1926, 1517, 673, 1733, 1662, 2218, 4105, 673, + 3991, 696, 1554, 2525, 696, 696, 982, 1259, 692, 1946, + 1030, 692, 692, 1689, 4051, 2396, 1685, 1690, 2525, 1688, + 4051, 1711, 1554, 1713, 1687, 1684, 2252, 1667, 1517, 1708, + 1670, 1828, 3941, 691, 4019, 1875, 4016, 3940, 3327, 694, + 1220, 1680, 694, 694, 2253, 693, 3327, 2841, 693, 693, + 1679, 2557, 1752, 1973, 2453, 1686, 1261, 1262, 1263, 1260, + 3323, 1223, 1980, 1980, 2636, 1517, 3430, 1517, 1517, 2359, + 3385, 673, 673, 3992, 2047, 1918, 2051, 2314, 1947, 1554, + 2055, 2056, 2131, 2664, 3296, 2071, 3294, 649, 2944, 2946, + 2947, 2948, 2945, 1374, 1032, 3159, 3157, 1031, 1759, 1760, + 1965, 649, 2251, 1554, 1592, 1259, 1261, 1262, 1263, 1260, + 1259, 1927, 786, 796, 2525, 1977, 1972, 1221, 3034, 1975, + 1976, 1925, 787, 3934, 788, 792, 795, 791, 789, 790, + 673, 1918, 1554, 2002, 2116, 2787, 673, 673, 673, 708, + 708, 2759, 1819, 1820, 1821, 2654, 2126, 2127, 2128, 2129, + 1878, 1843, 2395, 2135, 3909, 1835, 2109, 1717, 1836, 2049, + 223, 1700, 2641, 223, 223, 2209, 223, 1914, 1915, 1916, + 3897, 3846, 1873, 2073, 2409, 1849, 1850, 793, 2319, 1929, + 1930, 1931, 1932, 1983, 2313, 2312, 1261, 1262, 1263, 1260, + 1879, 913, 914, 915, 916, 1871, 2253, 4123, 2101, 2102, + 2284, 1961, 2200, 1963, 1964, 3845, 1829, 1829, 2177, 2078, + 794, 2080, 1913, 1261, 1262, 1263, 1260, 1970, 1829, 1829, + 1468, 3840, 2099, 2100, 2104, 2194, 1922, 2218, 3839, 3838, + 2087, 1802, 3125, 2057, 1472, 2118, 2119, 2120, 1943, 1942, + 1938, 2423, 2426, 3898, 3847, 1445, 1472, 2143, 1982, 1767, + 2146, 2147, 1956, 2149, 2188, 1540, 4106, 1946, 2094, 2249, + 1954, 1554, 2207, 2115, 1948, 1949, 1962, 3837, 1966, 1984, + 1985, 3817, 1723, 1724, 1725, 1726, 1727, 3438, 2382, 3476, + 1971, 3816, 3791, 3038, 1979, 1981, 913, 914, 915, 916, + 3541, 2843, 3489, 2048, 2253, 3455, 3403, 1644, 3399, 2053, + 1070, 2253, 2253, 1070, 1223, 2179, 2059, 3304, 3009, 2667, + 2666, 2658, 1070, 2201, 1768, 2745, 2403, 2054, 1772, 1773, + 1774, 1775, 697, 1883, 2733, 2088, 2725, 2184, 1813, 2077, + 2680, 2079, 2272, 2662, 2650, 1067, 1823, 2257, 1069, 3247, + 2253, 1957, 1958, 918, 2218, 2199, 2138, 1067, 2643, 2113, + 1069, 2114, 2172, 2638, 2218, 2253, 2121, 2122, 1967, 1968, + 2630, 2628, 3723, 2557, 2172, 3490, 2626, 1565, 3456, 3404, + 1711, 3400, 2124, 2140, 2624, 2381, 1664, 2427, 1978, 3539, + 3305, 2525, 2422, 2416, 2421, 2072, 2419, 2424, 2382, 1876, + 2315, 2291, 2290, 1310, 1208, 2275, 2266, 1259, 2157, 1259, + 1172, 2265, 1276, 1259, 1167, 1798, 2382, 2639, 1070, 2236, + 2237, 1292, 1795, 2264, 2103, 2254, 1797, 1794, 1796, 1800, + 1801, 2644, 2217, 2178, 1799, 1673, 2639, 1946, 933, 2187, + 3085, 2185, 1500, 2631, 2629, 2190, 1454, 1469, 918, 2625, + 1455, 2425, 2616, 1067, 2198, 695, 1069, 2625, 2382, 2324, + 2325, 1544, 2328, 2423, 2426, 2331, 3358, 4117, 4078, 3238, + 2197, 3902, 1545, 2314, 1259, 1259, 2337, 2202, 1259, 1259, + 2451, 1950, 751, 2255, 1259, 673, 673, 673, 3881, 3790, + 696, 3660, 3468, 2307, 2215, 3750, 1259, 692, 2253, 3689, + 673, 673, 673, 673, 3688, 2218, 1542, 1969, 1674, 2698, + 2231, 1818, 1817, 2379, 2196, 3903, 2240, 2687, 1101, 1102, + 1103, 3674, 2383, 2384, 2385, 3466, 2388, 1517, 694, 3633, + 1752, 2233, 1818, 1817, 693, 3661, 3469, 2610, 1166, 1162, + 1163, 1164, 1165, 2245, 2703, 1454, 2702, 2701, 2699, 1455, + 3239, 2141, 1100, 1517, 3448, 1097, 1284, 1285, 1277, 1278, + 1279, 1280, 1281, 1282, 1283, 1276, 1876, 3328, 1470, 3467, + 2445, 1876, 1876, 3319, 3311, 2234, 2235, 3306, 1805, 1806, + 1807, 1808, 1809, 1810, 1803, 1804, 2232, 3218, 2968, 2967, + 940, 2811, 2390, 2391, 3240, 2764, 2677, 2642, 2548, 2427, + 2182, 2181, 2393, 2394, 2422, 2416, 2421, 2180, 2419, 2424, + 1541, 1441, 798, 142, 1440, 1190, 2700, 1771, 142, 2246, + 2411, 2142, 2452, 1771, 2145, 1855, 3039, 2148, 673, 1980, + 2150, 1279, 1280, 1281, 1282, 1283, 1276, 2529, 2529, 2071, + 2529, 2400, 2308, 2310, 2311, 2402, 1848, 2404, 1275, 1274, + 1284, 1285, 1277, 1278, 1279, 1280, 1281, 1282, 1283, 1276, + 649, 649, 2316, 2425, 1598, 1908, 2141, 2279, 1188, 1263, + 1260, 2405, 3959, 1260, 1554, 673, 3701, 2285, 2286, 3700, + 2288, 679, 2343, 3056, 142, 2904, 2193, 2295, 673, 2415, + 2414, 2902, 2881, 2879, 1188, 2601, 667, 3680, 1333, 3634, + 3635, 3627, 1593, 2552, 2071, 4088, 2392, 2606, 2747, 2608, + 2748, 2398, 223, 4113, 2399, 1094, 1095, 1096, 1099, 1758, + 1098, 1277, 1278, 1279, 1280, 1281, 1282, 1283, 1276, 2389, + 1312, 3436, 2408, 1070, 2810, 1755, 1757, 1754, 2543, 1756, + 2544, 2533, 2531, 1311, 2535, 1472, 1261, 1262, 1263, 1260, + 4087, 4086, 2646, 1261, 1262, 1263, 1260, 3361, 2537, 2549, + 2550, 3628, 3359, 2704, 2705, 2603, 2428, 2429, 1067, 2434, + 2660, 1069, 4084, 2207, 1261, 1262, 1263, 1260, 4112, 2401, + 1554, 1833, 1554, 4083, 1554, 2620, 4022, 2559, 3990, 1188, + 2242, 3437, 3989, 3904, 2247, 3442, 1834, 2679, 2784, 2611, + 3842, 2955, 2256, 3118, 3830, 3820, 2605, 1261, 1262, 1263, + 1260, 2670, 3810, 3741, 3663, 1068, 2689, 3447, 3662, 3481, + 142, 2504, 2498, 1554, 1188, 3470, 3435, 3307, 2711, 1261, + 1262, 1263, 1260, 3208, 3081, 142, 3051, 142, 2612, 2263, + 2538, 3195, 3050, 2718, 2938, 2717, 3104, 2270, 1554, 2937, + 2936, 2268, 1552, 1261, 1262, 1263, 1260, 2953, 2397, 2656, + 2657, 2954, 1599, 2928, 2706, 4109, 3117, 2553, 2922, 2287, + 1261, 1262, 1263, 1260, 2292, 2293, 2294, 1552, 1598, 2297, + 2298, 2299, 2300, 2301, 2302, 2303, 2304, 2305, 2306, 2719, + 2604, 2602, 2556, 1261, 1262, 1263, 1260, 2766, 2767, 2921, + 2920, 2770, 2069, 2722, 2723, 1274, 1284, 1285, 1277, 1278, + 1279, 1280, 1281, 1282, 1283, 1276, 2691, 2952, 2691, 1188, + 2919, 2267, 2951, 1188, 1261, 1262, 1263, 1260, 2695, 2760, + 1554, 2676, 2632, 1517, 2545, 1261, 1262, 1263, 1260, 2051, + 2671, 2720, 1261, 1262, 1263, 1260, 2709, 2839, 1261, 1262, + 1263, 1260, 2318, 2845, 2160, 2159, 2846, 2158, 1533, 1535, + 2663, 2940, 2661, 4107, 2154, 2153, 4000, 672, 672, 2110, + 2668, 2652, 1898, 680, 2856, 1261, 1262, 1263, 1260, 1896, + 2685, 4089, 2950, 2751, 1188, 1665, 1392, 3783, 3784, 2250, + 2681, 2682, 2878, 1261, 1262, 1263, 1260, 3580, 2823, 1188, + 1188, 1188, 1980, 4076, 4038, 1188, 4037, 2888, 2889, 2890, + 2891, 1188, 2898, 2707, 2899, 2900, 2697, 2901, 1711, 2903, + 3604, 2939, 2824, 746, 4034, 3592, 748, 2849, 1170, 2827, + 2898, 747, 2852, 3591, 3965, 1070, 3964, 3771, 4115, 1334, + 2002, 3945, 2529, 2836, 3889, 1536, 3638, 1261, 1262, 1263, + 1260, 2808, 1261, 1262, 1263, 1260, 2956, 3883, 3866, 2684, + 1261, 1262, 1263, 1260, 3529, 2565, 649, 1261, 1262, 1263, + 1260, 2857, 3857, 3834, 2051, 2859, 3829, 3828, 1188, 2071, + 2071, 2071, 2071, 2071, 2071, 3787, 3773, 1169, 2847, 3772, + 3742, 1261, 1262, 1263, 1260, 1188, 2071, 3682, 2790, 2529, + 2792, 1876, 3642, 1876, 2876, 2962, 2872, 3631, 2876, 2789, + 3391, 3613, 2806, 3611, 3609, 3017, 3606, 1554, 3603, 2260, + 3602, 2883, 1876, 1876, 2830, 2838, 3578, 8, 673, 673, + 7, 3576, 2844, 3549, 3546, 3543, 680, 1261, 1262, 1263, + 1260, 2855, 3121, 2960, 3432, 2861, 3419, 2728, 2729, 2858, + 3120, 3412, 3396, 2734, 1592, 2874, 3394, 3119, 2880, 3389, + 2674, 3339, 3933, 2744, 2886, 3317, 3316, 3314, 1922, 1261, + 1262, 1263, 1260, 3313, 3308, 2877, 3005, 1261, 1262, 1263, + 1260, 3302, 3301, 223, 1261, 1262, 1263, 1260, 223, 2918, + 1261, 1262, 1263, 1260, 4064, 3219, 3182, 3018, 3181, 2973, + 3180, 2248, 3171, 2645, 3169, 2648, 3166, 3164, 2930, 2323, + 1829, 3095, 1829, 3092, 3071, 3066, 1261, 1262, 1263, 1260, + 3049, 2963, 3024, 2986, 2987, 2988, 2989, 2990, 2991, 3080, + 2969, 2949, 2941, 3035, 2931, 1554, 2457, 2929, 3087, 2460, + 2461, 2462, 2463, 2464, 2465, 2466, 2925, 2924, 2469, 2470, + 2471, 2472, 2473, 2474, 2475, 2476, 2477, 2478, 2479, 3006, + 2481, 2482, 2483, 2484, 2485, 3008, 2486, 3002, 2923, 2688, + 3040, 3007, 2694, 3022, 2773, 3044, 3025, 2848, 1618, 1261, + 1262, 1263, 1260, 2712, 2713, 2765, 2853, 2854, 1619, 1620, + 2788, 2715, 2716, 2761, 2565, 2653, 2743, 3061, 2338, 142, + 142, 142, 1068, 1070, 1625, 1626, 1875, 2721, 2332, 3073, + 2329, 3065, 854, 853, 3931, 1070, 2163, 2156, 1886, 1885, + 1666, 1341, 3063, 1261, 1262, 1263, 1260, 1337, 3042, 1336, + 1173, 922, 3041, 3074, 3921, 3917, 1723, 1876, 3767, 1630, + 3168, 3766, 1634, 1633, 3755, 3751, 3605, 3172, 3173, 3174, + 3176, 3089, 3178, 3179, 3587, 2873, 3062, 3559, 3461, 3064, + 3059, 3057, 1188, 3460, 2966, 1816, 3084, 3077, 3198, 3076, + 2873, 2884, 2885, 3459, 3075, 1293, 2887, 3429, 3212, 3408, + 3406, 3405, 2894, 673, 3402, 206, 3096, 197, 168, 3401, + 3083, 3395, 3393, 3374, 3364, 3363, 3228, 1188, 3350, 3349, + 673, 3116, 1188, 1188, 3248, 3185, 3109, 3156, 3111, 3107, + 3108, 2071, 2379, 3103, 3246, 3123, 3114, 3106, 2850, 2851, + 3158, 3105, 3097, 3110, 3112, 3113, 1267, 1268, 1269, 1270, + 1271, 1272, 1273, 1265, 2445, 2742, 3099, 3033, 2786, 2627, + 2623, 2622, 2296, 3222, 2289, 2283, 3272, 2282, 3275, 2985, + 3275, 3275, 2823, 2281, 2280, 1188, 3184, 2278, 202, 3929, + 2274, 2273, 1261, 1262, 1263, 1260, 2985, 3163, 2271, 3162, + 2262, 2259, 2258, 3297, 2741, 2162, 1869, 3293, 2740, 1868, + 1867, 1554, 1554, 3249, 1832, 1831, 1822, 3231, 3251, 3252, + 1566, 1070, 3235, 1070, 3259, 3261, 1564, 3200, 1070, 3183, + 2871, 1261, 1262, 1263, 1260, 1261, 1262, 1263, 1260, 4063, + 1552, 1552, 4021, 3244, 3939, 1331, 3916, 3852, 3250, 3255, + 3849, 3836, 3298, 3299, 1380, 1070, 1067, 2739, 673, 1069, + 3221, 3241, 3230, 206, 2738, 3198, 3831, 3233, 3234, 3736, + 3735, 3270, 3717, 3245, 3699, 3695, 3271, 3673, 1517, 3657, + 3280, 2051, 2051, 3254, 1261, 1262, 1263, 1260, 2415, 2414, + 1876, 1261, 1262, 1263, 1260, 3560, 3557, 3527, 3526, 3276, + 3277, 3523, 3522, 672, 1177, 3488, 3485, 3281, 3483, 3450, + 3115, 3130, 3131, 2737, 1186, 3295, 2797, 3132, 3133, 3134, + 3135, 1613, 3136, 3137, 3138, 3139, 3140, 3141, 3142, 3143, + 3144, 3145, 3146, 2736, 1624, 1188, 202, 1214, 1615, 2711, + 1261, 1262, 1263, 1260, 4056, 2735, 1629, 3362, 3326, 2732, + 1632, 709, 1621, 1448, 2996, 2957, 2882, 3303, 2832, 2831, + 1261, 1262, 1263, 1260, 2825, 2791, 3278, 2746, 2637, 3043, + 3342, 3045, 1261, 1262, 1263, 1260, 1261, 1262, 1263, 1260, + 2547, 3309, 3312, 2487, 3324, 3325, 3310, 2731, 2380, 2352, + 1876, 3318, 2730, 2317, 673, 1876, 3322, 1753, 3315, 202, + 2123, 1912, 3335, 1882, 3336, 2724, 1696, 2193, 1647, 1563, + 2714, 2910, 2911, 679, 1261, 1262, 1263, 1260, 1622, 1261, + 1262, 1263, 1260, 1391, 3343, 1376, 2926, 2927, 2710, 3346, + 3347, 3348, 1261, 1262, 1263, 1260, 1372, 1261, 1262, 1263, + 1260, 1371, 3098, 1370, 1369, 3352, 1368, 1367, 1366, 142, + 1365, 1364, 2964, 1363, 1362, 1261, 1262, 1263, 1260, 2686, + 1361, 1360, 1359, 2873, 1358, 1357, 1356, 2135, 3416, 1355, + 3122, 3418, 3375, 3253, 1354, 3420, 1353, 4054, 1766, 1352, + 3426, 1351, 1350, 1349, 3377, 3378, 1261, 1262, 1263, 1260, + 1348, 1347, 1344, 1343, 3382, 3397, 1342, 1340, 2873, 1339, + 1338, 1335, 2691, 2873, 2873, 1261, 1262, 1263, 1260, 1328, + 1327, 1325, 3387, 3381, 1324, 673, 2051, 142, 1323, 3421, + 1322, 3423, 1321, 1320, 142, 1319, 3454, 1318, 1317, 1316, + 1315, 1314, 1309, 1308, 1307, 1306, 1305, 142, 1225, 1171, + 142, 142, 2529, 2071, 3473, 3331, 3332, 3927, 3524, 2387, + 3409, 2366, 1213, 142, 4005, 3334, 2873, 2812, 2558, 2165, + 1224, 3004, 2994, 2999, 3341, 3340, 2997, 3491, 3000, 3413, + 1188, 2998, 3415, 2993, 3001, 3428, 2519, 2520, 3562, 3272, + 3337, 1070, 3431, 1188, 3003, 2992, 3563, 3958, 1070, 125, + 67, 3868, 66, 3678, 2651, 1188, 2640, 3538, 1442, 1940, + 1941, 1554, 1935, 1936, 1937, 3217, 3268, 3079, 3269, 3474, + 3379, 3380, 2455, 3534, 3443, 3475, 3353, 2040, 3477, 3445, + 1607, 2635, 673, 2675, 2051, 2656, 2657, 2339, 1188, 1661, + 1552, 3514, 3521, 1641, 2125, 3279, 3561, 1219, 3193, 3186, + 2906, 2860, 3540, 2833, 2407, 3472, 3471, 2907, 2908, 2909, + 3482, 2375, 3484, 1944, 1911, 4067, 3478, 3833, 675, 676, + 223, 677, 1818, 1817, 1387, 1388, 1385, 1386, 1512, 1383, + 1384, 3300, 3550, 1188, 3553, 1523, 2501, 3533, 3530, 3528, + 2494, 3821, 1381, 1382, 3564, 2052, 1509, 3537, 1508, 1252, + 2183, 3542, 3345, 3027, 2340, 2195, 1560, 3545, 3544, 1461, + 1460, 1433, 3547, 3548, 1484, 4028, 2565, 3552, 4026, 3983, + 3554, 3955, 3954, 3952, 3893, 3607, 3853, 3731, 3730, 3668, + 3577, 3551, 3398, 3371, 3370, 3356, 3615, 3555, 2440, 2410, + 1663, 1188, 3355, 3037, 3585, 1275, 1274, 1284, 1285, 1277, + 1278, 1279, 1280, 1281, 1282, 1283, 1276, 3571, 1458, 4058, + 4057, 1188, 1554, 1554, 3581, 3417, 3082, 3228, 3582, 2771, + 2368, 2261, 1395, 1210, 4057, 4058, 3612, 3697, 3614, 3650, + 3351, 3650, 913, 914, 915, 916, 1185, 1185, 210, 3, + 1476, 1552, 1764, 75, 1188, 3667, 1188, 3639, 3644, 3645, + 2, 4080, 4081, 3640, 1, 3670, 2752, 3672, 1880, 1389, + 917, 912, 1530, 1554, 2539, 2105, 1558, 3623, 1884, 3622, + 3621, 919, 3641, 3010, 3632, 3011, 3344, 3013, 2774, 2214, + 2974, 673, 2492, 1188, 1188, 3618, 2356, 1188, 1188, 3211, + 1443, 3655, 1764, 975, 3643, 3654, 3664, 3665, 3671, 1824, + 1678, 1202, 3475, 1675, 1201, 3719, 3666, 1199, 3647, 1769, + 800, 3714, 3679, 3676, 1070, 3514, 3521, 2168, 1946, 3703, + 3704, 3728, 3683, 3715, 3716, 2958, 2932, 2070, 3727, 2179, + 4066, 3390, 4101, 3737, 3738, 4020, 4069, 1694, 3392, 784, + 3675, 3946, 3858, 4024, 3860, 3747, 1554, 2219, 3725, 1257, + 3681, 2507, 1275, 1274, 1284, 1285, 1277, 1278, 1279, 1280, + 1281, 1282, 1283, 1276, 3724, 3058, 1002, 841, 811, 3768, + 3407, 1326, 1654, 3128, 3726, 1552, 3126, 810, 3440, 3566, + 3761, 2802, 3732, 3030, 3720, 3804, 1003, 3749, 2514, 2518, + 2519, 2520, 2515, 2523, 2516, 2521, 2151, 3744, 2517, 3855, + 2522, 3492, 142, 3748, 3745, 142, 142, 1608, 142, 1612, + 3756, 3760, 2406, 982, 3531, 3812, 3912, 3677, 3802, 3796, + 3775, 3601, 3264, 2868, 1636, 3907, 2894, 3486, 3597, 3595, + 3669, 3596, 716, 2084, 1188, 647, 1052, 3718, 2164, 717, + 3593, 2386, 3594, 3970, 3786, 3819, 3835, 3825, 1068, 955, + 2365, 142, 956, 948, 2821, 2820, 1734, 1266, 1751, 2985, + 1068, 3797, 3147, 3798, 3585, 3148, 3799, 1303, 755, 2244, + 2799, 3509, 3811, 3023, 3815, 74, 142, 73, 1188, 72, + 71, 231, 802, 1554, 1275, 1274, 1284, 1285, 1277, 1278, + 1279, 1280, 1281, 1282, 1283, 1276, 230, 3794, 3769, 3636, + 3832, 3942, 4071, 1070, 2985, 781, 780, 779, 778, 777, + 776, 2512, 1552, 2513, 3841, 2511, 2509, 2508, 2066, 2065, + 3036, 3354, 2130, 2132, 3843, 1876, 1928, 3226, 2897, 2892, + 1991, 1933, 1989, 1521, 2435, 2442, 1988, 3885, 4002, 3388, + 3874, 1876, 3588, 3922, 3556, 3923, 3694, 3558, 2942, 3854, + 3584, 1934, 2431, 2008, 2913, 2005, 1293, 2004, 2905, 3690, + 3684, 2036, 2873, 3800, 3649, 3894, 3493, 3494, 3565, 2514, + 2518, 2519, 2520, 2515, 2523, 2516, 2521, 3500, 3882, 2517, + 2374, 2522, 1121, 1117, 1119, 1120, 1118, 2696, 3320, 2412, + 3888, 3188, 2348, 3911, 2347, 2345, 2344, 1188, 1418, 3896, + 3884, 3966, 3617, 1986, 1987, 1554, 3905, 2563, 3936, 2561, + 1168, 3333, 3329, 3943, 2176, 1717, 3338, 1717, 3926, 3928, + 3930, 3932, 3910, 2995, 2191, 3078, 2067, 3944, 2063, 2062, + 3919, 1092, 1091, 3925, 1552, 1589, 2976, 2502, 3777, 1939, + 949, 3451, 3452, 3453, 2363, 109, 3935, 3457, 3458, 41, + 122, 108, 185, 59, 3951, 3949, 1554, 184, 58, 3802, + 120, 182, 2112, 57, 103, 102, 119, 180, 2112, 2112, + 2112, 56, 3963, 215, 214, 3993, 217, 216, 213, 2613, + 2614, 4001, 212, 1596, 211, 1552, 3984, 3986, 3956, 3653, + 3987, 3988, 3124, 3938, 907, 44, 43, 3985, 186, 42, + 110, 60, 40, 39, 38, 34, 13, 12, 4017, 35, + 22, 21, 1682, 4010, 20, 4011, 26, 4012, 32, 4013, + 31, 135, 4014, 134, 30, 133, 4027, 132, 4029, 4030, + 131, 130, 129, 128, 4025, 4023, 127, 29, 19, 51, + 50, 49, 3874, 4033, 1188, 48, 1275, 1274, 1284, 1285, + 1277, 1278, 1279, 1280, 1281, 1282, 1283, 1276, 3850, 3851, + 47, 46, 9, 3825, 123, 118, 4046, 116, 28, 117, + 114, 4047, 4049, 4048, 115, 113, 4052, 112, 111, 4055, + 4065, 4053, 4073, 106, 104, 4072, 86, 85, 84, 99, + 98, 4059, 4060, 4061, 4062, 97, 96, 95, 94, 92, + 4085, 93, 4077, 1001, 83, 1717, 1188, 82, 81, 2683, + 80, 79, 101, 107, 105, 90, 100, 4090, 3911, 4091, + 91, 89, 4093, 88, 87, 78, 4099, 77, 76, 4103, + 166, 165, 4100, 1275, 1274, 1284, 1285, 1277, 1278, 1279, + 1280, 1281, 1282, 1283, 1276, 1510, 1511, 164, 1513, 1514, + 163, 1518, 1519, 1520, 162, 160, 161, 4111, 159, 158, + 157, 156, 155, 154, 52, 53, 4073, 4119, 54, 4072, + 4118, 2532, 55, 176, 175, 177, 179, 181, 4103, 4120, + 178, 183, 173, 171, 4124, 1569, 1570, 1571, 1572, 1573, + 174, 1575, 1576, 1577, 1578, 1579, 172, 170, 69, 1585, + 1586, 1587, 1588, 11, 1844, 1845, 1846, 1847, 121, 18, + 1851, 1852, 1853, 1854, 1856, 1857, 1858, 1859, 1860, 1861, + 1862, 1863, 1864, 1865, 1866, 4, 0, 206, 64, 197, + 168, 0, 0, 0, 0, 0, 2070, 0, 0, 0, + 0, 1287, 0, 1291, 142, 0, 198, 0, 0, 0, + 0, 0, 0, 189, 3721, 2241, 0, 199, 3722, 1288, + 1290, 1286, 0, 1289, 1275, 1274, 1284, 1285, 1277, 1278, + 1279, 1280, 1281, 1282, 1283, 1276, 140, 3498, 1313, 1275, + 1274, 1284, 1285, 1277, 1278, 1279, 1280, 1281, 1282, 1283, + 1276, 126, 0, 0, 0, 0, 0, 0, 0, 0, + 202, 0, 0, 0, 0, 0, 0, 2353, 2354, 2355, + 0, 0, 0, 0, 0, 0, 0, 0, 3510, 0, + 0, 0, 2370, 2371, 2372, 2373, 0, 0, 0, 0, + 0, 3501, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 3496, 0, 3918, 0, 0, 3518, 3519, 0, + 0, 0, 0, 3497, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 990, 1275, 1274, 1284, 1285, 1277, + 1278, 1279, 1280, 1281, 1282, 1283, 1276, 148, 149, 0, + 150, 151, 0, 0, 0, 152, 0, 0, 153, 0, + 3502, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 728, 727, 734, 724, 0, 4044, 0, 0, 0, 0, + 0, 0, 0, 731, 732, 0, 733, 737, 0, 3998, + 718, 0, 0, 0, 0, 0, 986, 987, 0, 0, + 742, 0, 3844, 0, 0, 0, 0, 1030, 0, 0, + 1523, 167, 195, 204, 196, 124, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 142, 194, 188, 187, 1717, 0, 0, + 0, 70, 0, 142, 0, 0, 746, 0, 3517, 748, + 2421, 0, 0, 0, 747, 0, 0, 1560, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 3998, 0, + 2112, 0, 0, 0, 0, 3506, 3895, 0, 0, 0, + 0, 3899, 3900, 0, 0, 0, 0, 0, 0, 0, + 0, 1032, 0, 0, 1031, 0, 0, 3503, 3507, 3505, + 3504, 0, 190, 191, 192, 0, 0, 0, 0, 0, + 0, 0, 3920, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 3998, 0, 0, 0, 0, 0, + 0, 0, 0, 1016, 0, 0, 0, 3512, 3513, 0, + 0, 200, 991, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 136, 0, 0, 0, 193, 0, 137, 993, + 0, 2070, 2070, 2070, 2070, 2070, 2070, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 2070, 0, + 4122, 3520, 0, 0, 719, 721, 720, 0, 0, 0, + 0, 0, 0, 3499, 0, 726, 0, 0, 0, 3511, + 0, 0, 0, 0, 0, 0, 0, 730, 0, 0, + 0, 0, 0, 0, 745, 138, 0, 0, 0, 0, + 0, 723, 0, 0, 1015, 1013, 0, 0, 63, 0, + 0, 0, 0, 0, 0, 0, 2117, 0, 0, 0, + 4035, 4036, 0, 0, 0, 0, 0, 4040, 4041, 4042, + 4043, 0, 1012, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 985, 142, 0, 0, 0, 0, + 142, 0, 0, 0, 0, 992, 1025, 65, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 142, 0, 0, 0, 0, 0, 0, 0, 1021, 0, 0, 0, 142, 0, 0, 0, 0, 0, 0, - 142, 0, 0, 0, 0, 2034, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 2037, 0, 0, - 0, 0, 2010, 0, 0, 0, 0, 0, 0, 2009, - 0, 0, 0, 0, 0, 0, 1149, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 2069, - 0, 0, 0, 2027, 0, 0, 0, 0, 0, 0, - 0, 0, 2015, 0, 0, 0, 0, 2034, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 2010, 0, 0, 0, 0, 0, - 0, 2009, 0, 0, 0, 0, 817, 0, 0, 0, - 0, 0, 0, 0, 0, 401, 0, 0, 532, 565, - 554, 638, 520, 0, 0, 2027, 0, 0, 0, 769, - 0, 0, 0, 336, 2015, 0, 369, 569, 551, 561, - 552, 537, 538, 539, 546, 348, 540, 541, 542, 512, - 543, 513, 544, 545, 808, 568, 519, 434, 385, 586, - 585, 0, 0, 877, 885, 0, 0, 0, 0, 0, - 0, 0, 1149, 873, 0, 0, 142, 0, 761, 0, - 3651, 798, 853, 852, 785, 795, 0, 0, 309, 229, - 514, 634, 516, 515, 786, 0, 787, 791, 794, 790, - 788, 789, 0, 868, 0, 0, 0, 0, 0, 0, - 753, 765, 0, 770, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 762, 763, 0, - 0, 0, 3655, 818, 0, 764, 0, 0, 813, 792, - 796, 0, 0, 0, 0, 299, 441, 460, 310, 429, - 473, 315, 437, 452, 305, 400, 426, 0, 0, 301, - 458, 436, 382, 359, 360, 300, 142, 420, 334, 350, - 331, 398, 793, 816, 820, 330, 891, 814, 468, 303, - 0, 467, 397, 454, 459, 383, 376, 0, 302, 456, - 381, 375, 363, 340, 892, 364, 365, 354, 409, 373, - 410, 355, 387, 386, 388, 0, 0, 0, 0, 0, - 496, 497, 0, 0, 645, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 627, 811, 0, 631, - 0, 470, 0, 0, 875, 0, 0, 0, 440, 0, - 0, 366, 0, 0, 0, 815, 0, 423, 403, 888, - 0, 0, 421, 371, 455, 411, 461, 442, 469, 417, - 412, 294, 443, 333, 384, 306, 308, 328, 335, 337, - 341, 342, 393, 394, 406, 428, 445, 446, 447, 332, - 316, 422, 317, 352, 318, 295, 324, 322, 325, 430, - 326, 297, 407, 451, 0, 347, 418, 379, 298, 378, - 408, 450, 449, 307, 477, 483, 484, 573, 0, 489, - 660, 661, 662, 498, 0, 413, 503, 504, 505, 507, - 508, 509, 510, 574, 591, 558, 528, 491, 582, 525, - 529, 530, 357, 594, 1825, 1824, 1826, 482, 367, 368, - 0, 339, 338, 380, 416, 345, 291, 292, 655, 872, - 399, 596, 629, 630, 521, 142, 887, 867, 869, 870, - 874, 878, 879, 880, 881, 882, 884, 886, 890, 654, - 0, 575, 590, 658, 589, 651, 405, 0, 427, 587, - 534, 0, 579, 553, 0, 580, 549, 584, 0, 523, - 0, 435, 463, 475, 492, 495, 524, 609, 610, 611, - 296, 494, 613, 614, 615, 616, 617, 618, 619, 612, - 889, 556, 533, 559, 474, 536, 535, 0, 0, 570, - 819, 571, 572, 389, 390, 391, 392, 876, 597, 314, - 493, 415, 0, 557, 0, 0, 0, 0, 0, 0, - 0, 0, 562, 563, 560, 663, 0, 620, 621, 0, - 0, 487, 488, 344, 351, 506, 353, 313, 404, 346, - 472, 361, 0, 499, 564, 500, 623, 626, 624, 625, - 396, 356, 358, 431, 362, 372, 419, 471, 402, 424, - 311, 462, 433, 377, 550, 577, 898, 871, 897, 899, - 900, 896, 901, 902, 883, 774, 0, 826, 894, 893, - 895, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 605, 604, 603, 602, 601, 600, 599, 598, - 0, 0, 547, 448, 323, 285, 319, 320, 327, 652, - 649, 453, 653, 781, 293, 527, 370, 0, 414, 343, - 592, 593, 0, 644, 860, 833, 834, 835, 771, 836, - 830, 831, 772, 832, 861, 824, 857, 858, 800, 827, - 837, 856, 838, 859, 862, 863, 903, 904, 844, 828, - 257, 905, 841, 864, 855, 854, 839, 825, 865, 866, - 807, 802, 842, 843, 829, 848, 849, 850, 773, 821, - 822, 823, 845, 846, 803, 804, 805, 806, 0, 0, - 0, 478, 479, 480, 502, 0, 464, 526, 650, 0, - 0, 0, 0, 0, 0, 0, 576, 588, 622, 0, - 632, 633, 635, 637, 851, 639, 438, 439, 0, 847, - 642, 643, 640, 374, 425, 444, 432, 817, 656, 517, - 518, 657, 628, 0, 766, 0, 401, 0, 0, 532, - 565, 554, 638, 520, 0, 0, 0, 0, 0, 0, - 769, 0, 0, 0, 336, 1876, 0, 369, 569, 551, - 561, 552, 537, 538, 539, 546, 348, 540, 541, 542, - 512, 543, 513, 544, 545, 808, 568, 519, 434, 385, - 586, 585, 0, 0, 877, 885, 0, 0, 0, 0, - 0, 0, 0, 0, 873, 0, 2095, 0, 0, 761, - 0, 0, 798, 853, 852, 785, 795, 0, 0, 309, - 229, 514, 634, 516, 515, 786, 0, 787, 791, 794, - 790, 788, 789, 0, 868, 0, 0, 0, 0, 0, - 0, 753, 765, 0, 770, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 762, 763, - 0, 0, 0, 0, 818, 0, 764, 0, 0, 2096, - 792, 796, 0, 0, 0, 0, 299, 441, 460, 310, - 429, 473, 315, 437, 452, 305, 400, 426, 0, 0, - 301, 458, 436, 382, 359, 360, 300, 0, 420, 334, - 350, 331, 398, 793, 816, 820, 330, 891, 814, 468, - 303, 0, 467, 397, 454, 459, 383, 376, 0, 302, - 456, 381, 375, 363, 340, 892, 364, 365, 354, 409, - 373, 410, 355, 387, 386, 388, 0, 0, 0, 0, - 0, 496, 497, 0, 0, 645, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 627, 811, 0, - 631, 0, 470, 0, 0, 875, 0, 0, 0, 440, - 0, 0, 366, 0, 0, 0, 815, 0, 423, 403, - 888, 0, 0, 421, 371, 455, 411, 461, 442, 469, - 417, 412, 294, 443, 333, 384, 306, 308, 328, 335, - 337, 341, 342, 393, 394, 406, 428, 445, 446, 447, - 332, 316, 422, 317, 352, 318, 295, 324, 322, 325, - 430, 326, 297, 407, 451, 0, 347, 418, 379, 298, - 378, 408, 450, 449, 307, 477, 483, 484, 573, 0, - 489, 660, 661, 662, 498, 0, 413, 503, 504, 505, - 507, 508, 509, 510, 574, 591, 558, 528, 491, 582, - 525, 529, 530, 357, 594, 0, 0, 0, 482, 367, - 368, 0, 339, 338, 380, 416, 345, 291, 292, 655, - 872, 399, 596, 629, 630, 521, 0, 887, 867, 869, - 870, 874, 878, 879, 880, 881, 882, 884, 886, 890, - 654, 0, 575, 590, 658, 589, 651, 405, 0, 427, - 587, 534, 0, 579, 553, 0, 580, 549, 584, 0, - 523, 0, 435, 463, 475, 492, 495, 524, 609, 610, - 611, 296, 494, 613, 614, 615, 616, 617, 618, 619, - 612, 889, 556, 533, 559, 474, 536, 535, 0, 0, - 570, 819, 571, 572, 389, 390, 391, 392, 876, 597, - 314, 493, 415, 0, 557, 0, 0, 0, 0, 0, - 0, 0, 0, 562, 563, 560, 663, 0, 620, 621, - 0, 0, 487, 488, 344, 351, 506, 353, 313, 404, - 346, 472, 361, 0, 499, 564, 500, 623, 626, 624, - 625, 396, 356, 358, 431, 362, 372, 419, 471, 402, - 424, 311, 462, 433, 377, 550, 577, 898, 871, 897, - 899, 900, 896, 901, 902, 883, 774, 0, 826, 894, - 893, 895, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 605, 604, 603, 602, 601, 600, 599, - 598, 0, 0, 547, 448, 323, 285, 319, 320, 327, - 652, 649, 453, 653, 781, 293, 527, 370, 0, 414, - 343, 592, 593, 0, 644, 860, 833, 834, 835, 771, - 836, 830, 831, 772, 832, 861, 824, 857, 858, 800, - 827, 837, 856, 838, 859, 862, 863, 903, 904, 844, - 828, 257, 905, 841, 864, 855, 854, 839, 825, 865, - 866, 807, 802, 842, 843, 829, 848, 849, 850, 773, - 821, 822, 823, 845, 846, 803, 804, 805, 806, 0, - 0, 0, 478, 479, 480, 502, 0, 464, 526, 650, - 0, 0, 0, 0, 0, 0, 0, 576, 588, 622, - 0, 632, 633, 635, 637, 851, 639, 438, 439, 0, - 847, 642, 643, 640, 374, 425, 444, 432, 0, 656, - 517, 518, 657, 628, 0, 766, 206, 817, 0, 0, - 0, 0, 0, 0, 0, 0, 401, 0, 0, 532, - 565, 554, 638, 520, 0, 0, 0, 0, 0, 0, - 769, 0, 0, 0, 336, 0, 0, 369, 569, 551, - 561, 552, 537, 538, 539, 546, 348, 540, 541, 542, - 512, 543, 513, 544, 545, 1295, 568, 519, 434, 385, - 586, 585, 0, 0, 877, 885, 0, 0, 0, 0, - 0, 0, 0, 0, 873, 0, 0, 0, 0, 761, - 0, 0, 798, 853, 852, 785, 795, 0, 0, 309, - 229, 514, 634, 516, 515, 786, 0, 787, 791, 794, - 790, 788, 789, 0, 868, 0, 0, 0, 0, 0, - 0, 753, 765, 0, 770, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 762, 763, - 0, 0, 0, 0, 818, 0, 764, 0, 0, 813, - 792, 796, 0, 0, 0, 0, 299, 441, 460, 310, - 429, 473, 315, 437, 452, 305, 400, 426, 0, 0, - 301, 458, 436, 382, 359, 360, 300, 0, 420, 334, - 350, 331, 398, 793, 816, 820, 330, 891, 814, 468, - 303, 0, 467, 397, 454, 459, 383, 376, 0, 302, - 456, 381, 375, 363, 340, 892, 364, 365, 354, 409, - 373, 410, 355, 387, 386, 388, 0, 0, 0, 0, - 0, 496, 497, 0, 0, 645, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 627, 811, 0, - 631, 0, 470, 0, 0, 875, 0, 0, 0, 440, - 0, 0, 366, 0, 0, 0, 815, 0, 423, 403, - 888, 0, 0, 421, 371, 455, 411, 461, 442, 469, - 417, 412, 294, 443, 333, 384, 306, 308, 328, 335, - 337, 341, 342, 393, 394, 406, 428, 445, 446, 447, - 332, 316, 422, 317, 352, 318, 295, 324, 322, 325, - 430, 326, 297, 407, 451, 0, 347, 418, 379, 298, - 378, 408, 450, 449, 307, 477, 483, 484, 573, 0, - 489, 660, 661, 662, 498, 0, 413, 503, 504, 505, - 507, 508, 509, 510, 574, 591, 558, 528, 491, 582, - 525, 529, 530, 357, 594, 0, 0, 0, 482, 367, - 368, 0, 339, 338, 380, 416, 345, 291, 292, 655, - 872, 399, 596, 629, 630, 521, 0, 887, 867, 869, - 870, 874, 878, 879, 880, 881, 882, 884, 886, 890, - 654, 0, 575, 590, 658, 589, 651, 405, 0, 427, - 587, 534, 0, 579, 553, 0, 580, 549, 584, 0, - 523, 0, 435, 463, 475, 492, 495, 524, 609, 610, - 611, 296, 494, 613, 614, 615, 616, 617, 618, 619, - 612, 889, 556, 533, 559, 474, 536, 535, 0, 0, - 570, 819, 571, 572, 389, 390, 391, 392, 876, 597, - 314, 493, 415, 0, 557, 0, 0, 0, 0, 0, - 0, 0, 0, 562, 563, 560, 663, 0, 620, 621, - 0, 0, 487, 488, 344, 351, 506, 353, 313, 404, - 346, 472, 361, 0, 499, 564, 500, 623, 626, 624, - 625, 396, 356, 358, 431, 362, 372, 419, 471, 402, - 424, 311, 462, 433, 377, 550, 577, 898, 871, 897, - 899, 900, 896, 901, 902, 883, 774, 0, 826, 894, - 893, 895, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 605, 604, 603, 602, 601, 600, 599, - 598, 0, 0, 547, 448, 323, 285, 319, 320, 327, - 652, 649, 453, 653, 781, 293, 527, 370, 169, 414, - 343, 592, 593, 0, 644, 860, 833, 834, 835, 771, - 836, 830, 831, 772, 832, 861, 824, 857, 858, 800, - 827, 837, 856, 838, 859, 862, 863, 903, 904, 844, - 828, 257, 905, 841, 864, 855, 854, 839, 825, 865, - 866, 807, 802, 842, 843, 829, 848, 849, 850, 773, - 821, 822, 823, 845, 846, 803, 804, 805, 806, 0, - 0, 0, 478, 479, 480, 502, 0, 464, 526, 650, - 0, 0, 0, 0, 0, 0, 0, 576, 588, 622, - 0, 632, 633, 635, 637, 851, 639, 438, 439, 0, - 847, 642, 643, 640, 374, 425, 444, 432, 817, 656, - 517, 518, 657, 628, 0, 766, 0, 401, 0, 0, - 532, 565, 554, 638, 520, 0, 0, 0, 0, 0, - 0, 769, 0, 0, 0, 336, 4119, 0, 369, 569, - 551, 561, 552, 537, 538, 539, 546, 348, 540, 541, - 542, 512, 543, 513, 544, 545, 808, 568, 519, 434, - 385, 586, 585, 0, 0, 877, 885, 0, 0, 0, - 0, 0, 0, 0, 0, 873, 0, 0, 0, 0, - 761, 0, 0, 798, 853, 852, 785, 795, 0, 0, - 309, 229, 514, 634, 516, 515, 786, 0, 787, 791, - 794, 790, 788, 789, 0, 868, 0, 0, 0, 0, - 0, 0, 753, 765, 0, 770, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 762, - 763, 0, 0, 0, 0, 818, 0, 764, 0, 0, - 813, 792, 796, 0, 0, 0, 0, 299, 441, 460, - 310, 429, 473, 315, 437, 452, 305, 400, 426, 0, - 0, 301, 458, 436, 382, 359, 360, 300, 0, 420, - 334, 350, 331, 398, 793, 816, 820, 330, 891, 814, - 468, 303, 0, 467, 397, 454, 459, 383, 376, 0, - 302, 456, 381, 375, 363, 340, 892, 364, 365, 354, - 409, 373, 410, 355, 387, 386, 388, 0, 0, 0, - 0, 0, 496, 497, 0, 0, 645, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 627, 811, - 0, 631, 0, 470, 0, 0, 875, 0, 0, 0, - 440, 0, 0, 366, 0, 0, 0, 815, 0, 423, - 403, 888, 0, 0, 421, 371, 455, 411, 461, 442, - 469, 417, 412, 294, 443, 333, 384, 306, 308, 328, - 335, 337, 341, 342, 393, 394, 406, 428, 445, 446, - 447, 332, 316, 422, 317, 352, 318, 295, 324, 322, - 325, 430, 326, 297, 407, 451, 0, 347, 418, 379, - 298, 378, 408, 450, 449, 307, 477, 483, 484, 573, - 0, 489, 660, 661, 662, 498, 0, 413, 503, 504, - 505, 507, 508, 509, 510, 574, 591, 558, 528, 491, - 582, 525, 529, 530, 357, 594, 0, 0, 0, 482, - 367, 368, 0, 339, 338, 380, 416, 345, 291, 292, - 655, 872, 399, 596, 629, 630, 521, 0, 887, 867, - 869, 870, 874, 878, 879, 880, 881, 882, 884, 886, - 890, 654, 0, 575, 590, 658, 589, 651, 405, 0, - 427, 587, 534, 0, 579, 553, 0, 580, 549, 584, - 0, 523, 0, 435, 463, 475, 492, 495, 524, 609, - 610, 611, 296, 494, 613, 614, 615, 616, 617, 618, - 619, 612, 889, 556, 533, 559, 474, 536, 535, 0, - 0, 570, 819, 571, 572, 389, 390, 391, 392, 876, - 597, 314, 493, 415, 0, 557, 0, 0, 0, 0, - 0, 0, 0, 0, 562, 563, 560, 663, 0, 620, - 621, 0, 0, 487, 488, 344, 351, 506, 353, 313, - 404, 346, 472, 361, 0, 499, 564, 500, 623, 626, - 624, 625, 396, 356, 358, 431, 362, 372, 419, 471, - 402, 424, 311, 462, 433, 377, 550, 577, 898, 871, - 897, 899, 900, 896, 901, 902, 883, 774, 0, 826, - 894, 893, 895, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 605, 604, 603, 602, 601, 600, - 599, 598, 0, 0, 547, 448, 323, 285, 319, 320, - 327, 652, 649, 453, 653, 781, 293, 527, 370, 0, - 414, 343, 592, 593, 0, 644, 860, 833, 834, 835, - 771, 836, 830, 831, 772, 832, 861, 824, 857, 858, - 800, 827, 837, 856, 838, 859, 862, 863, 903, 904, - 844, 828, 257, 905, 841, 864, 855, 854, 839, 825, - 865, 866, 807, 802, 842, 843, 829, 848, 849, 850, - 773, 821, 822, 823, 845, 846, 803, 804, 805, 806, - 0, 0, 0, 478, 479, 480, 502, 0, 464, 526, - 650, 0, 0, 0, 0, 0, 0, 0, 576, 588, - 622, 0, 632, 633, 635, 637, 851, 639, 438, 439, - 0, 847, 642, 643, 640, 374, 425, 444, 432, 817, - 656, 517, 518, 657, 628, 0, 766, 0, 401, 0, - 0, 532, 565, 554, 638, 520, 0, 0, 0, 0, - 0, 0, 769, 0, 0, 0, 336, 0, 0, 369, - 569, 551, 561, 552, 537, 538, 539, 546, 348, 540, - 541, 542, 512, 543, 513, 544, 545, 808, 568, 519, - 434, 385, 586, 585, 0, 0, 877, 885, 0, 0, - 0, 0, 0, 0, 0, 0, 873, 0, 0, 0, - 0, 761, 0, 0, 798, 853, 852, 785, 795, 0, - 0, 309, 229, 514, 634, 516, 515, 786, 0, 787, - 791, 794, 790, 788, 789, 0, 868, 0, 0, 0, - 0, 0, 0, 753, 765, 0, 770, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 762, 763, 0, 0, 0, 0, 818, 0, 764, 0, - 0, 813, 792, 796, 0, 0, 0, 0, 299, 441, - 460, 310, 429, 473, 315, 437, 452, 305, 400, 426, - 0, 0, 301, 458, 436, 382, 359, 360, 300, 0, - 420, 334, 350, 331, 398, 793, 816, 820, 330, 891, - 814, 468, 303, 0, 467, 397, 454, 459, 383, 376, - 0, 302, 456, 381, 375, 363, 340, 892, 364, 365, - 354, 409, 373, 410, 355, 387, 386, 388, 0, 0, - 0, 0, 0, 496, 497, 0, 0, 645, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 627, - 811, 0, 631, 0, 470, 0, 0, 875, 0, 0, - 0, 440, 0, 0, 366, 0, 0, 0, 815, 0, - 423, 403, 888, 3997, 0, 421, 371, 455, 411, 461, - 442, 469, 417, 412, 294, 443, 333, 384, 306, 308, - 328, 335, 337, 341, 342, 393, 394, 406, 428, 445, - 446, 447, 332, 316, 422, 317, 352, 318, 295, 324, - 322, 325, 430, 326, 297, 407, 451, 0, 347, 418, - 379, 298, 378, 408, 450, 449, 307, 477, 483, 484, - 573, 0, 489, 660, 661, 662, 498, 0, 413, 503, - 504, 505, 507, 508, 509, 510, 574, 591, 558, 528, - 491, 582, 525, 529, 530, 357, 594, 0, 0, 0, - 482, 367, 368, 0, 339, 338, 380, 416, 345, 291, - 292, 655, 872, 399, 596, 629, 630, 521, 0, 887, - 867, 869, 870, 874, 878, 879, 880, 881, 882, 884, - 886, 890, 654, 0, 575, 590, 658, 589, 651, 405, - 0, 427, 587, 534, 0, 579, 553, 0, 580, 549, - 584, 0, 523, 0, 435, 463, 475, 492, 495, 524, - 609, 610, 611, 296, 494, 613, 614, 615, 616, 617, - 618, 619, 612, 889, 556, 533, 559, 474, 536, 535, - 0, 0, 570, 819, 571, 572, 389, 390, 391, 392, - 876, 597, 314, 493, 415, 0, 557, 0, 0, 0, - 0, 0, 0, 0, 0, 562, 563, 560, 663, 0, - 620, 621, 0, 0, 487, 488, 344, 351, 506, 353, - 313, 404, 346, 472, 361, 0, 499, 564, 500, 623, - 626, 624, 625, 396, 356, 358, 431, 362, 372, 419, - 471, 402, 424, 311, 462, 433, 377, 550, 577, 898, - 871, 897, 899, 900, 896, 901, 902, 883, 774, 0, - 826, 894, 893, 895, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 605, 604, 603, 602, 601, - 600, 599, 598, 0, 0, 547, 448, 323, 285, 319, - 320, 327, 652, 649, 453, 653, 781, 293, 527, 370, - 0, 414, 343, 592, 593, 0, 644, 860, 833, 834, - 835, 771, 836, 830, 831, 772, 832, 861, 824, 857, - 858, 800, 827, 837, 856, 838, 859, 862, 863, 903, - 904, 844, 828, 257, 905, 841, 864, 855, 854, 839, - 825, 865, 866, 807, 802, 842, 843, 829, 848, 849, - 850, 773, 821, 822, 823, 845, 846, 803, 804, 805, - 806, 0, 0, 0, 478, 479, 480, 502, 0, 464, - 526, 650, 0, 0, 0, 0, 0, 0, 0, 576, - 588, 622, 0, 632, 633, 635, 637, 851, 639, 438, - 439, 0, 847, 642, 643, 640, 374, 425, 444, 432, - 817, 656, 517, 518, 657, 628, 0, 766, 0, 401, - 0, 0, 532, 565, 554, 638, 520, 0, 0, 0, - 0, 0, 0, 769, 0, 0, 0, 336, 1876, 0, - 369, 569, 551, 561, 552, 537, 538, 539, 546, 348, - 540, 541, 542, 512, 543, 513, 544, 545, 808, 568, - 519, 434, 385, 586, 585, 0, 0, 877, 885, 0, - 0, 0, 0, 0, 0, 0, 0, 873, 0, 0, - 0, 0, 761, 0, 0, 798, 853, 852, 785, 795, - 0, 0, 309, 229, 514, 634, 516, 515, 786, 0, - 787, 791, 794, 790, 788, 789, 0, 868, 0, 0, - 0, 0, 0, 0, 753, 765, 0, 770, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 762, 763, 0, 0, 0, 0, 818, 0, 764, - 0, 0, 813, 792, 796, 0, 0, 0, 0, 299, - 441, 460, 310, 429, 473, 315, 437, 452, 305, 400, - 426, 0, 0, 301, 458, 436, 382, 359, 360, 300, - 0, 420, 334, 350, 331, 398, 793, 816, 820, 330, - 891, 814, 468, 303, 0, 467, 397, 454, 459, 383, - 376, 0, 302, 456, 381, 375, 363, 340, 892, 364, - 365, 354, 409, 373, 410, 355, 387, 386, 388, 0, - 0, 0, 0, 0, 496, 497, 0, 0, 645, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 627, 811, 0, 631, 0, 470, 0, 0, 875, 0, - 0, 0, 440, 0, 0, 366, 0, 0, 0, 815, - 0, 423, 403, 888, 0, 0, 421, 371, 455, 411, - 461, 442, 469, 417, 412, 294, 443, 333, 384, 306, - 308, 328, 335, 337, 341, 342, 393, 394, 406, 428, - 445, 446, 447, 332, 316, 422, 317, 352, 318, 295, - 324, 322, 325, 430, 326, 297, 407, 451, 0, 347, - 418, 379, 298, 378, 408, 450, 449, 307, 477, 483, - 484, 573, 0, 489, 660, 661, 662, 498, 0, 413, - 503, 504, 505, 507, 508, 509, 510, 574, 591, 558, - 528, 491, 582, 525, 529, 530, 357, 594, 0, 0, - 0, 482, 367, 368, 0, 339, 338, 380, 416, 345, - 291, 292, 655, 872, 399, 596, 629, 630, 521, 0, - 887, 867, 869, 870, 874, 878, 879, 880, 881, 882, - 884, 886, 890, 654, 0, 575, 590, 658, 589, 651, - 405, 0, 427, 587, 534, 0, 579, 553, 0, 580, - 549, 584, 0, 523, 0, 435, 463, 475, 492, 495, - 524, 609, 610, 611, 296, 494, 613, 614, 615, 616, - 617, 618, 619, 612, 889, 556, 533, 559, 474, 536, - 535, 0, 0, 570, 819, 571, 572, 389, 390, 391, - 392, 876, 597, 314, 493, 415, 0, 557, 0, 0, - 0, 0, 0, 0, 0, 0, 562, 563, 560, 663, - 0, 620, 621, 0, 0, 487, 488, 344, 351, 506, - 353, 313, 404, 346, 472, 361, 0, 499, 564, 500, - 623, 626, 624, 625, 396, 356, 358, 431, 362, 372, - 419, 471, 402, 424, 311, 462, 433, 377, 550, 577, - 898, 871, 897, 899, 900, 896, 901, 902, 883, 774, - 0, 826, 894, 893, 895, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 605, 604, 603, 602, - 601, 600, 599, 598, 0, 0, 547, 448, 323, 285, - 319, 320, 327, 652, 649, 453, 653, 781, 293, 527, - 370, 0, 414, 343, 592, 593, 0, 644, 860, 833, - 834, 835, 771, 836, 830, 831, 772, 832, 861, 824, - 857, 858, 800, 827, 837, 856, 838, 859, 862, 863, - 903, 904, 844, 828, 257, 905, 841, 864, 855, 854, - 839, 825, 865, 866, 807, 802, 842, 843, 829, 848, - 849, 850, 773, 821, 822, 823, 845, 846, 803, 804, - 805, 806, 0, 0, 0, 478, 479, 480, 502, 0, - 464, 526, 650, 0, 0, 0, 0, 0, 0, 0, - 576, 588, 622, 0, 632, 633, 635, 637, 851, 639, - 438, 439, 0, 847, 642, 643, 640, 374, 425, 444, - 432, 817, 656, 517, 518, 657, 628, 0, 766, 0, - 401, 0, 0, 532, 565, 554, 638, 520, 0, 0, - 0, 0, 0, 0, 769, 0, 0, 0, 336, 0, - 0, 369, 569, 551, 561, 552, 537, 538, 539, 546, - 348, 540, 541, 542, 512, 543, 513, 544, 545, 808, - 568, 519, 434, 385, 586, 585, 0, 0, 877, 885, - 0, 0, 0, 0, 0, 0, 0, 0, 873, 0, - 0, 0, 0, 761, 0, 0, 798, 853, 852, 785, - 795, 0, 0, 309, 229, 514, 634, 516, 515, 786, - 0, 787, 791, 794, 790, 788, 789, 0, 868, 0, - 0, 0, 0, 0, 0, 753, 765, 0, 770, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 762, 763, 1590, 0, 0, 0, 818, 0, - 764, 0, 0, 813, 792, 796, 0, 0, 0, 0, - 299, 441, 460, 310, 429, 473, 315, 437, 452, 305, - 400, 426, 0, 0, 301, 458, 436, 382, 359, 360, - 300, 0, 420, 334, 350, 331, 398, 793, 816, 820, - 330, 891, 814, 468, 303, 0, 467, 397, 454, 459, - 383, 376, 0, 302, 456, 381, 375, 363, 340, 892, - 364, 365, 354, 409, 373, 410, 355, 387, 386, 388, - 0, 0, 0, 0, 0, 496, 497, 0, 0, 645, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 627, 811, 0, 631, 0, 470, 0, 0, 875, - 0, 0, 0, 440, 0, 0, 366, 0, 0, 0, - 815, 0, 423, 403, 888, 0, 0, 421, 371, 455, - 411, 461, 442, 469, 417, 412, 294, 443, 333, 384, - 306, 308, 328, 335, 337, 341, 342, 393, 394, 406, - 428, 445, 446, 447, 332, 316, 422, 317, 352, 318, - 295, 324, 322, 325, 430, 326, 297, 407, 451, 0, - 347, 418, 379, 298, 378, 408, 450, 449, 307, 477, - 483, 484, 573, 0, 489, 660, 661, 662, 498, 0, - 413, 503, 504, 505, 507, 508, 509, 510, 574, 591, - 558, 528, 491, 582, 525, 529, 530, 357, 594, 0, - 0, 0, 482, 367, 368, 0, 339, 338, 380, 416, - 345, 291, 292, 655, 872, 399, 596, 629, 630, 521, - 0, 887, 867, 869, 870, 874, 878, 879, 880, 881, - 882, 884, 886, 890, 654, 0, 575, 590, 658, 589, - 651, 405, 0, 427, 587, 534, 0, 579, 553, 0, - 580, 549, 584, 0, 523, 0, 435, 463, 475, 492, - 495, 524, 609, 610, 611, 296, 494, 613, 614, 615, - 616, 617, 618, 619, 612, 889, 556, 533, 559, 474, - 536, 535, 0, 0, 570, 819, 571, 572, 389, 390, - 391, 392, 876, 597, 314, 493, 415, 0, 557, 0, - 0, 0, 0, 0, 0, 0, 0, 562, 563, 560, - 663, 0, 620, 621, 0, 0, 487, 488, 344, 351, - 506, 353, 313, 404, 346, 472, 361, 0, 499, 564, - 500, 623, 626, 624, 625, 396, 356, 358, 431, 362, - 372, 419, 471, 402, 424, 311, 462, 433, 377, 550, - 577, 898, 871, 897, 899, 900, 896, 901, 902, 883, - 774, 0, 826, 894, 893, 895, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 605, 604, 603, - 602, 601, 600, 599, 598, 0, 0, 547, 448, 323, - 285, 319, 320, 327, 652, 649, 453, 653, 781, 293, - 527, 370, 0, 414, 343, 592, 593, 0, 644, 860, - 833, 834, 835, 771, 836, 830, 831, 772, 832, 861, - 824, 857, 858, 800, 827, 837, 856, 838, 859, 862, - 863, 903, 904, 844, 828, 257, 905, 841, 864, 855, - 854, 839, 825, 865, 866, 807, 802, 842, 843, 829, - 848, 849, 850, 773, 821, 822, 823, 845, 846, 803, - 804, 805, 806, 0, 0, 0, 478, 479, 480, 502, - 0, 464, 526, 650, 0, 0, 0, 0, 0, 0, - 0, 576, 588, 622, 0, 632, 633, 635, 637, 851, - 639, 438, 439, 0, 847, 642, 643, 640, 374, 425, - 444, 432, 0, 656, 517, 518, 657, 628, 817, 766, - 0, 2268, 0, 0, 0, 0, 0, 401, 0, 0, - 532, 565, 554, 638, 520, 0, 0, 0, 0, 0, - 0, 769, 0, 0, 0, 336, 0, 0, 369, 569, - 551, 561, 552, 537, 538, 539, 546, 348, 540, 541, - 542, 512, 543, 513, 544, 545, 808, 568, 519, 434, - 385, 586, 585, 0, 0, 877, 885, 0, 0, 0, - 0, 0, 0, 0, 0, 873, 0, 0, 0, 0, - 761, 0, 0, 798, 853, 852, 785, 795, 0, 0, - 309, 229, 514, 634, 516, 515, 786, 0, 787, 791, - 794, 790, 788, 789, 0, 868, 0, 0, 0, 0, - 0, 0, 753, 765, 0, 770, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 762, - 763, 0, 0, 0, 0, 818, 0, 764, 0, 0, - 813, 792, 796, 0, 0, 0, 0, 299, 441, 460, - 310, 429, 473, 315, 437, 452, 305, 400, 426, 0, - 0, 301, 458, 436, 382, 359, 360, 300, 0, 420, - 334, 350, 331, 398, 793, 816, 820, 330, 891, 814, - 468, 303, 0, 467, 397, 454, 459, 383, 376, 0, - 302, 456, 381, 375, 363, 340, 892, 364, 365, 354, - 409, 373, 410, 355, 387, 386, 388, 0, 0, 0, - 0, 0, 496, 497, 0, 0, 645, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 627, 811, - 0, 631, 0, 470, 0, 0, 875, 0, 0, 0, - 440, 0, 0, 366, 0, 0, 0, 815, 0, 423, - 403, 888, 0, 0, 421, 371, 455, 411, 461, 442, - 469, 417, 412, 294, 443, 333, 384, 306, 308, 328, - 335, 337, 341, 342, 393, 394, 406, 428, 445, 446, - 447, 332, 316, 422, 317, 352, 318, 295, 324, 322, - 325, 430, 326, 297, 407, 451, 0, 347, 418, 379, - 298, 378, 408, 450, 449, 307, 477, 483, 484, 573, - 0, 489, 660, 661, 662, 498, 0, 413, 503, 504, - 505, 507, 508, 509, 510, 574, 591, 558, 528, 491, - 582, 525, 529, 530, 357, 594, 0, 0, 0, 482, - 367, 368, 0, 339, 338, 380, 416, 345, 291, 292, - 655, 872, 399, 596, 629, 630, 521, 0, 887, 867, - 869, 870, 874, 878, 879, 880, 881, 882, 884, 886, - 890, 654, 0, 575, 590, 658, 589, 651, 405, 0, - 427, 587, 534, 0, 579, 553, 0, 580, 549, 584, - 0, 523, 0, 435, 463, 475, 492, 495, 524, 609, - 610, 611, 296, 494, 613, 614, 615, 616, 617, 618, - 619, 612, 889, 556, 533, 559, 474, 536, 535, 0, - 0, 570, 819, 571, 572, 389, 390, 391, 392, 876, - 597, 314, 493, 415, 0, 557, 0, 0, 0, 0, - 0, 0, 0, 0, 562, 563, 560, 663, 0, 620, - 621, 0, 0, 487, 488, 344, 351, 506, 353, 313, - 404, 346, 472, 361, 0, 499, 564, 500, 623, 626, - 624, 625, 396, 356, 358, 431, 362, 372, 419, 471, - 402, 424, 311, 462, 433, 377, 550, 577, 898, 871, - 897, 899, 900, 896, 901, 902, 883, 774, 0, 826, - 894, 893, 895, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 605, 604, 603, 602, 601, 600, - 599, 598, 0, 0, 547, 448, 323, 285, 319, 320, - 327, 652, 649, 453, 653, 781, 293, 527, 370, 0, - 414, 343, 592, 593, 0, 644, 860, 833, 834, 835, - 771, 836, 830, 831, 772, 832, 861, 824, 857, 858, - 800, 827, 837, 856, 838, 859, 862, 863, 903, 904, - 844, 828, 257, 905, 841, 864, 855, 854, 839, 825, - 865, 866, 807, 802, 842, 843, 829, 848, 849, 850, - 773, 821, 822, 823, 845, 846, 803, 804, 805, 806, - 0, 0, 0, 478, 479, 480, 502, 0, 464, 526, - 650, 0, 0, 0, 0, 0, 0, 0, 576, 588, - 622, 0, 632, 633, 635, 637, 851, 639, 438, 439, - 0, 847, 642, 643, 640, 374, 425, 444, 432, 817, - 656, 517, 518, 657, 628, 0, 766, 0, 401, 0, - 0, 532, 565, 554, 638, 520, 0, 0, 0, 0, - 0, 0, 769, 0, 0, 0, 336, 0, 0, 369, - 569, 551, 561, 552, 537, 538, 539, 546, 348, 540, - 541, 542, 512, 543, 513, 544, 545, 808, 568, 519, - 434, 385, 586, 585, 0, 0, 877, 885, 0, 0, - 0, 0, 0, 0, 0, 0, 873, 0, 0, 0, - 0, 761, 0, 0, 798, 853, 852, 785, 795, 0, - 0, 309, 229, 514, 634, 516, 515, 786, 0, 787, - 791, 794, 790, 788, 789, 0, 868, 0, 0, 0, - 0, 0, 0, 753, 765, 0, 770, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 762, 763, 1869, 0, 0, 0, 818, 0, 764, 0, - 0, 813, 792, 796, 0, 0, 0, 0, 299, 441, - 460, 310, 429, 473, 315, 437, 452, 305, 400, 426, - 0, 0, 301, 458, 436, 382, 359, 360, 300, 0, - 420, 334, 350, 331, 398, 793, 816, 820, 330, 891, - 814, 468, 303, 0, 467, 397, 454, 459, 383, 376, - 0, 302, 456, 381, 375, 363, 340, 892, 364, 365, - 354, 409, 373, 410, 355, 387, 386, 388, 0, 0, - 0, 0, 0, 496, 497, 0, 0, 645, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 627, - 811, 0, 631, 0, 470, 0, 0, 875, 0, 0, - 0, 440, 0, 0, 366, 0, 0, 0, 815, 0, - 423, 403, 888, 0, 0, 421, 371, 455, 411, 461, - 442, 469, 417, 412, 294, 443, 333, 384, 306, 308, - 328, 335, 337, 341, 342, 393, 394, 406, 428, 445, - 446, 447, 332, 316, 422, 317, 352, 318, 295, 324, - 322, 325, 430, 326, 297, 407, 451, 0, 347, 418, - 379, 298, 378, 408, 450, 449, 307, 477, 483, 484, - 573, 0, 489, 660, 661, 662, 498, 0, 413, 503, - 504, 505, 507, 508, 509, 510, 574, 591, 558, 528, - 491, 582, 525, 529, 530, 357, 594, 0, 0, 0, - 482, 367, 368, 0, 339, 338, 380, 416, 345, 291, - 292, 655, 872, 399, 596, 629, 630, 521, 0, 887, - 867, 869, 870, 874, 878, 879, 880, 881, 882, 884, - 886, 890, 654, 0, 575, 590, 658, 589, 651, 405, - 0, 427, 587, 534, 0, 579, 553, 0, 580, 549, - 584, 0, 523, 0, 435, 463, 475, 492, 495, 524, - 609, 610, 611, 296, 494, 613, 614, 615, 616, 617, - 618, 619, 612, 889, 556, 533, 559, 474, 536, 535, - 0, 0, 570, 819, 571, 572, 389, 390, 391, 392, - 876, 597, 314, 493, 415, 0, 557, 0, 0, 0, - 0, 0, 0, 0, 0, 562, 563, 560, 663, 0, - 620, 621, 0, 0, 487, 488, 344, 351, 506, 353, - 313, 404, 346, 472, 361, 0, 499, 564, 500, 623, - 626, 624, 625, 396, 356, 358, 431, 362, 372, 419, - 471, 402, 424, 311, 462, 433, 377, 550, 577, 898, - 871, 897, 899, 900, 896, 901, 902, 883, 774, 0, - 826, 894, 893, 895, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 605, 604, 603, 602, 601, - 600, 599, 598, 0, 0, 547, 448, 323, 285, 319, - 320, 327, 652, 649, 453, 653, 781, 293, 527, 370, - 0, 414, 343, 592, 593, 0, 644, 860, 833, 834, - 835, 771, 836, 830, 831, 772, 832, 861, 824, 857, - 858, 800, 827, 837, 856, 838, 859, 862, 863, 903, - 904, 844, 828, 257, 905, 841, 864, 855, 854, 839, - 825, 865, 866, 807, 802, 842, 843, 829, 848, 849, - 850, 773, 821, 822, 823, 845, 846, 803, 804, 805, - 806, 0, 0, 0, 478, 479, 480, 502, 0, 464, - 526, 650, 0, 0, 0, 0, 0, 0, 0, 576, - 588, 622, 0, 632, 633, 635, 637, 851, 639, 438, - 439, 0, 847, 642, 643, 640, 374, 425, 444, 432, - 817, 656, 517, 518, 657, 628, 0, 766, 0, 401, - 0, 0, 532, 565, 554, 638, 520, 0, 0, 0, - 0, 0, 0, 769, 0, 0, 0, 336, 0, 0, - 369, 569, 551, 561, 552, 537, 538, 539, 546, 348, - 540, 541, 542, 512, 543, 513, 544, 545, 808, 568, - 519, 434, 385, 586, 585, 0, 0, 877, 885, 0, - 0, 0, 0, 0, 0, 0, 0, 873, 0, 0, - 0, 0, 761, 0, 0, 798, 853, 852, 785, 795, - 0, 0, 309, 229, 514, 634, 516, 515, 786, 0, - 787, 791, 794, 790, 788, 789, 0, 868, 0, 0, - 0, 0, 0, 0, 753, 765, 0, 770, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 762, 763, 0, 0, 0, 0, 818, 0, 764, - 0, 0, 813, 792, 796, 0, 0, 0, 0, 299, - 441, 460, 310, 429, 473, 315, 437, 452, 305, 400, - 426, 0, 0, 301, 458, 436, 382, 359, 360, 300, - 0, 420, 334, 350, 331, 398, 793, 816, 820, 330, - 891, 814, 468, 303, 0, 467, 397, 454, 459, 383, - 376, 0, 302, 456, 381, 375, 363, 340, 892, 364, - 365, 354, 409, 373, 410, 355, 387, 386, 388, 0, - 0, 0, 0, 0, 496, 497, 0, 0, 645, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 627, 811, 0, 631, 0, 470, 0, 0, 875, 0, - 0, 0, 440, 0, 0, 366, 0, 0, 0, 815, - 0, 423, 403, 888, 0, 0, 421, 371, 455, 411, - 461, 442, 469, 417, 412, 294, 443, 333, 384, 306, - 308, 328, 335, 337, 341, 342, 393, 394, 406, 428, - 445, 446, 447, 332, 316, 422, 317, 352, 318, 295, - 324, 322, 325, 430, 326, 297, 407, 451, 0, 347, - 418, 379, 298, 378, 408, 450, 449, 307, 477, 483, - 484, 573, 0, 489, 660, 661, 662, 498, 0, 413, - 503, 504, 505, 507, 508, 509, 510, 574, 591, 558, - 528, 491, 582, 525, 529, 530, 357, 594, 0, 0, - 0, 482, 367, 368, 0, 339, 338, 380, 416, 345, - 291, 292, 655, 872, 399, 596, 629, 630, 521, 0, - 887, 867, 869, 870, 874, 878, 879, 880, 881, 882, - 884, 886, 890, 654, 0, 575, 590, 658, 589, 651, - 405, 0, 427, 587, 534, 0, 579, 553, 0, 580, - 549, 584, 0, 523, 0, 435, 463, 475, 492, 495, - 524, 609, 610, 611, 296, 494, 613, 614, 615, 616, - 617, 618, 619, 612, 889, 556, 533, 559, 474, 536, - 535, 0, 0, 570, 819, 571, 572, 389, 390, 391, - 392, 876, 597, 314, 493, 415, 0, 557, 0, 0, - 0, 0, 0, 0, 0, 0, 562, 563, 560, 663, - 0, 620, 621, 0, 0, 487, 488, 344, 351, 506, - 353, 313, 404, 346, 472, 361, 0, 499, 564, 500, - 623, 626, 624, 625, 396, 356, 358, 431, 362, 372, - 419, 471, 402, 424, 311, 462, 433, 377, 550, 577, - 898, 871, 897, 899, 900, 896, 901, 902, 883, 774, - 0, 826, 894, 893, 895, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 605, 604, 603, 602, - 601, 600, 599, 598, 0, 0, 547, 448, 323, 285, - 319, 320, 327, 652, 649, 453, 653, 781, 293, 527, - 370, 0, 414, 343, 592, 593, 0, 644, 860, 833, - 834, 835, 771, 836, 830, 831, 772, 832, 861, 824, - 857, 858, 800, 827, 837, 856, 838, 859, 862, 863, - 903, 904, 844, 828, 257, 905, 841, 864, 855, 854, - 839, 825, 865, 866, 807, 802, 842, 843, 829, 848, - 849, 850, 773, 821, 822, 823, 845, 846, 803, 804, - 805, 806, 0, 0, 0, 478, 479, 480, 502, 0, - 464, 526, 650, 0, 0, 0, 0, 0, 0, 0, - 576, 588, 622, 0, 632, 633, 635, 637, 851, 639, - 438, 439, 0, 847, 642, 643, 640, 374, 425, 444, - 432, 817, 656, 517, 518, 657, 628, 0, 766, 0, - 401, 0, 0, 532, 565, 554, 638, 520, 0, 0, - 0, 0, 0, 0, 769, 0, 0, 0, 336, 0, - 0, 369, 569, 551, 561, 552, 537, 538, 539, 546, - 348, 540, 541, 542, 512, 543, 513, 544, 545, 808, - 568, 519, 434, 385, 586, 585, 0, 0, 877, 885, - 0, 0, 0, 0, 0, 0, 0, 0, 873, 0, - 0, 0, 0, 761, 0, 0, 798, 853, 852, 785, - 795, 0, 0, 309, 229, 514, 634, 516, 515, 786, - 0, 787, 791, 794, 790, 788, 789, 0, 868, 0, - 0, 0, 0, 0, 0, 753, 765, 0, 770, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 762, 763, 0, 0, 0, 0, 818, 0, - 764, 0, 0, 813, 792, 796, 0, 0, 0, 0, - 299, 441, 460, 310, 429, 473, 315, 437, 452, 305, - 400, 426, 0, 0, 301, 458, 436, 382, 359, 360, - 300, 0, 420, 334, 350, 331, 398, 793, 816, 820, - 330, 891, 814, 468, 303, 0, 467, 397, 454, 459, - 383, 376, 0, 302, 456, 381, 375, 363, 340, 892, - 364, 365, 354, 409, 373, 410, 355, 387, 386, 388, - 0, 0, 0, 0, 0, 496, 497, 0, 0, 645, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 627, 811, 0, 631, 0, 470, 0, 0, 875, - 0, 0, 0, 440, 0, 0, 366, 0, 0, 0, - 815, 0, 423, 403, 888, 0, 0, 421, 371, 455, - 411, 461, 442, 469, 417, 412, 294, 443, 333, 384, - 306, 308, 328, 335, 337, 341, 342, 393, 394, 406, - 428, 445, 446, 447, 332, 316, 422, 317, 352, 318, - 295, 324, 322, 325, 430, 326, 297, 407, 451, 0, - 347, 418, 379, 298, 378, 408, 450, 449, 307, 477, - 483, 484, 573, 0, 489, 660, 661, 662, 498, 0, - 413, 503, 504, 505, 507, 508, 509, 510, 574, 591, - 558, 528, 491, 582, 525, 529, 530, 357, 594, 0, - 0, 0, 482, 367, 368, 0, 339, 338, 380, 416, - 345, 291, 292, 655, 872, 399, 596, 629, 630, 521, - 0, 887, 867, 869, 870, 874, 878, 879, 880, 881, - 882, 884, 886, 890, 654, 0, 575, 590, 658, 589, - 651, 405, 0, 427, 587, 534, 0, 579, 553, 0, - 580, 549, 584, 0, 523, 0, 435, 463, 475, 492, - 495, 524, 609, 610, 611, 296, 494, 613, 614, 615, - 616, 617, 618, 619, 612, 889, 556, 533, 559, 474, - 536, 535, 0, 0, 570, 819, 571, 572, 389, 390, - 391, 392, 876, 597, 314, 493, 415, 0, 557, 0, - 0, 0, 0, 0, 0, 0, 0, 562, 563, 560, - 663, 0, 620, 621, 0, 0, 487, 488, 344, 351, - 506, 353, 313, 404, 346, 472, 361, 0, 499, 564, - 500, 623, 626, 624, 625, 396, 356, 358, 431, 362, - 372, 419, 471, 402, 424, 311, 462, 433, 377, 550, - 577, 898, 871, 897, 899, 900, 896, 901, 902, 883, - 774, 0, 826, 894, 893, 895, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 605, 604, 603, - 602, 601, 600, 599, 598, 0, 0, 547, 448, 323, - 285, 319, 320, 327, 652, 649, 453, 653, 781, 293, - 527, 370, 0, 414, 343, 592, 593, 0, 644, 860, - 833, 834, 835, 771, 836, 830, 831, 772, 832, 861, - 824, 857, 858, 800, 827, 837, 856, 838, 859, 862, - 863, 903, 904, 844, 828, 257, 905, 841, 864, 855, - 854, 839, 825, 865, 866, 807, 802, 842, 843, 829, - 848, 849, 850, 773, 821, 822, 823, 845, 846, 803, - 804, 805, 806, 0, 0, 0, 478, 479, 480, 502, - 0, 464, 526, 650, 0, 0, 0, 0, 0, 0, - 0, 576, 588, 622, 0, 632, 633, 635, 637, 851, - 639, 438, 439, 0, 3566, 642, 3567, 3568, 374, 425, - 444, 432, 817, 656, 517, 518, 657, 628, 0, 766, - 0, 401, 0, 0, 532, 565, 554, 638, 520, 0, - 0, 0, 0, 0, 0, 769, 0, 0, 0, 336, - 0, 0, 369, 569, 551, 561, 552, 537, 538, 539, - 546, 348, 540, 541, 542, 512, 543, 513, 544, 545, - 808, 568, 519, 434, 385, 586, 585, 0, 0, 877, - 885, 0, 0, 0, 0, 0, 0, 0, 0, 873, - 0, 0, 0, 0, 761, 0, 0, 798, 853, 852, - 785, 795, 0, 0, 309, 229, 514, 634, 516, 515, - 2748, 0, 2749, 791, 794, 790, 788, 789, 0, 868, - 0, 0, 0, 0, 0, 0, 753, 765, 0, 770, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 762, 763, 0, 0, 0, 0, 818, - 0, 764, 0, 0, 813, 792, 796, 0, 0, 0, - 0, 299, 441, 460, 310, 429, 473, 315, 437, 452, - 305, 400, 426, 0, 0, 301, 458, 436, 382, 359, - 360, 300, 0, 420, 334, 350, 331, 398, 793, 816, - 820, 330, 891, 814, 468, 303, 0, 467, 397, 454, - 459, 383, 376, 0, 302, 456, 381, 375, 363, 340, - 892, 364, 365, 354, 409, 373, 410, 355, 387, 386, - 388, 0, 0, 0, 0, 0, 496, 497, 0, 0, - 645, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 627, 811, 0, 631, 0, 470, 0, 0, - 875, 0, 0, 0, 440, 0, 0, 366, 0, 0, - 0, 815, 0, 423, 403, 888, 0, 0, 421, 371, - 455, 411, 461, 442, 469, 417, 412, 294, 443, 333, - 384, 306, 308, 328, 335, 337, 341, 342, 393, 394, - 406, 428, 445, 446, 447, 332, 316, 422, 317, 352, - 318, 295, 324, 322, 325, 430, 326, 297, 407, 451, - 0, 347, 418, 379, 298, 378, 408, 450, 449, 307, - 477, 483, 484, 573, 0, 489, 660, 661, 662, 498, - 0, 413, 503, 504, 505, 507, 508, 509, 510, 574, - 591, 558, 528, 491, 582, 525, 529, 530, 357, 594, - 0, 0, 0, 482, 367, 368, 0, 339, 338, 380, - 416, 345, 291, 292, 655, 872, 399, 596, 629, 630, - 521, 0, 887, 867, 869, 870, 874, 878, 879, 880, - 881, 882, 884, 886, 890, 654, 0, 575, 590, 658, - 589, 651, 405, 0, 427, 587, 534, 0, 579, 553, - 0, 580, 549, 584, 0, 523, 0, 435, 463, 475, - 492, 495, 524, 609, 610, 611, 296, 494, 613, 614, - 615, 616, 617, 618, 619, 612, 889, 556, 533, 559, - 474, 536, 535, 0, 0, 570, 819, 571, 572, 389, - 390, 391, 392, 876, 597, 314, 493, 415, 0, 557, - 0, 0, 0, 0, 0, 0, 0, 0, 562, 563, - 560, 663, 0, 620, 621, 0, 0, 487, 488, 344, - 351, 506, 353, 313, 404, 346, 472, 361, 0, 499, - 564, 500, 623, 626, 624, 625, 396, 356, 358, 431, - 362, 372, 419, 471, 402, 424, 311, 462, 433, 377, - 550, 577, 898, 871, 897, 899, 900, 896, 901, 902, - 883, 774, 0, 826, 894, 893, 895, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 605, 604, - 603, 602, 601, 600, 599, 598, 0, 0, 547, 448, - 323, 285, 319, 320, 327, 652, 649, 453, 653, 781, - 293, 527, 370, 0, 414, 343, 592, 593, 0, 644, - 860, 833, 834, 835, 771, 836, 830, 831, 772, 832, - 861, 824, 857, 858, 800, 827, 837, 856, 838, 859, - 862, 863, 903, 904, 844, 828, 257, 905, 841, 864, - 855, 854, 839, 825, 865, 866, 807, 802, 842, 843, - 829, 848, 849, 850, 773, 821, 822, 823, 845, 846, - 803, 804, 805, 806, 0, 0, 0, 478, 479, 480, - 502, 0, 464, 526, 650, 0, 0, 0, 0, 0, - 0, 0, 576, 588, 622, 0, 632, 633, 635, 637, - 851, 639, 438, 439, 0, 847, 642, 643, 640, 374, - 425, 444, 432, 817, 656, 517, 518, 657, 628, 0, - 766, 0, 401, 0, 0, 532, 565, 554, 638, 520, - 0, 0, 1734, 0, 0, 0, 769, 0, 0, 0, - 336, 0, 0, 369, 569, 551, 561, 552, 537, 538, - 539, 546, 348, 540, 541, 542, 512, 543, 513, 544, - 545, 808, 568, 519, 434, 385, 586, 585, 0, 0, - 877, 885, 0, 0, 0, 0, 0, 0, 0, 0, - 873, 0, 0, 0, 0, 761, 0, 0, 798, 853, - 852, 785, 795, 0, 0, 309, 229, 514, 634, 516, - 515, 786, 0, 787, 791, 794, 790, 788, 789, 0, - 868, 0, 0, 0, 0, 0, 0, 0, 765, 0, - 770, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 762, 763, 0, 0, 0, 0, - 818, 0, 764, 0, 0, 813, 792, 796, 0, 0, - 0, 0, 299, 441, 460, 310, 429, 473, 315, 437, - 452, 305, 400, 426, 0, 0, 301, 458, 436, 382, - 359, 360, 300, 0, 420, 334, 350, 331, 398, 793, - 816, 820, 330, 891, 814, 468, 303, 0, 467, 397, - 454, 459, 383, 376, 0, 302, 456, 381, 375, 363, - 340, 892, 364, 365, 354, 409, 373, 410, 355, 387, - 386, 388, 0, 0, 0, 0, 0, 496, 497, 0, - 0, 645, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 627, 811, 0, 631, 0, 470, 0, - 0, 875, 0, 0, 0, 440, 0, 0, 366, 0, - 0, 0, 815, 0, 423, 403, 888, 0, 0, 421, - 371, 455, 411, 461, 442, 469, 417, 412, 294, 443, - 333, 384, 306, 308, 328, 335, 337, 341, 342, 393, - 394, 406, 428, 445, 446, 447, 332, 316, 422, 317, - 352, 318, 295, 324, 322, 325, 430, 326, 297, 407, - 451, 0, 347, 418, 379, 298, 378, 408, 450, 449, - 307, 477, 1735, 1736, 573, 0, 489, 660, 661, 662, - 498, 0, 413, 503, 504, 505, 507, 508, 509, 510, - 574, 591, 558, 528, 491, 582, 525, 529, 530, 357, - 594, 0, 0, 0, 482, 367, 368, 0, 339, 338, - 380, 416, 345, 291, 292, 655, 872, 399, 596, 629, - 630, 521, 0, 887, 867, 869, 870, 874, 878, 879, - 880, 881, 882, 884, 886, 890, 654, 0, 575, 590, - 658, 589, 651, 405, 0, 427, 587, 534, 0, 579, - 553, 0, 580, 549, 584, 0, 523, 0, 435, 463, - 475, 492, 495, 524, 609, 610, 611, 296, 494, 613, - 614, 615, 616, 617, 618, 619, 612, 889, 556, 533, - 559, 474, 536, 535, 0, 0, 570, 819, 571, 572, - 389, 390, 391, 392, 876, 597, 314, 493, 415, 0, - 557, 0, 0, 0, 0, 0, 0, 0, 0, 562, - 563, 560, 663, 0, 620, 621, 0, 0, 487, 488, - 344, 351, 506, 353, 313, 404, 346, 472, 361, 0, - 499, 564, 500, 623, 626, 624, 625, 396, 356, 358, - 431, 362, 372, 419, 471, 402, 424, 311, 462, 433, - 377, 550, 577, 898, 871, 897, 899, 900, 896, 901, - 902, 883, 774, 0, 826, 894, 893, 895, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 605, - 604, 603, 602, 601, 600, 599, 598, 0, 0, 547, - 448, 323, 285, 319, 320, 327, 652, 649, 453, 653, - 781, 293, 527, 370, 0, 414, 343, 592, 593, 0, - 644, 860, 833, 834, 835, 771, 836, 830, 831, 772, - 832, 861, 824, 857, 858, 800, 827, 837, 856, 838, - 859, 862, 863, 903, 904, 844, 828, 257, 905, 841, - 864, 855, 854, 839, 825, 865, 866, 807, 802, 842, - 843, 829, 848, 849, 850, 773, 821, 822, 823, 845, - 846, 803, 804, 805, 806, 0, 0, 0, 478, 479, - 480, 502, 0, 464, 526, 650, 0, 0, 0, 0, - 0, 0, 0, 576, 588, 622, 0, 632, 633, 635, - 637, 851, 639, 438, 439, 0, 847, 642, 643, 640, - 374, 425, 444, 432, 817, 656, 517, 518, 657, 628, - 0, 766, 0, 401, 0, 0, 532, 565, 554, 638, - 520, 0, 0, 0, 0, 0, 0, 769, 0, 0, - 0, 336, 0, 0, 369, 569, 551, 561, 552, 537, - 538, 539, 546, 348, 540, 541, 542, 512, 543, 513, - 544, 545, 808, 568, 519, 434, 385, 586, 585, 0, - 0, 877, 885, 0, 0, 0, 0, 0, 0, 0, - 0, 873, 0, 0, 0, 0, 761, 0, 0, 798, - 853, 852, 785, 795, 0, 0, 309, 229, 514, 634, - 516, 515, 786, 0, 787, 791, 794, 790, 788, 789, - 0, 868, 0, 0, 0, 0, 0, 0, 0, 765, - 0, 770, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 762, 763, 0, 0, 0, - 0, 818, 0, 764, 0, 0, 813, 792, 796, 0, - 0, 0, 0, 299, 441, 460, 310, 429, 473, 315, - 437, 452, 305, 400, 426, 0, 0, 301, 458, 436, - 382, 359, 360, 300, 0, 420, 334, 350, 331, 398, - 793, 816, 820, 330, 891, 814, 468, 303, 0, 467, - 397, 454, 459, 383, 376, 0, 302, 456, 381, 375, - 363, 340, 892, 364, 365, 354, 409, 373, 410, 355, - 387, 386, 388, 0, 0, 0, 0, 0, 496, 497, - 0, 0, 645, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 627, 811, 0, 631, 0, 470, - 0, 0, 875, 0, 0, 0, 440, 0, 0, 366, - 0, 0, 0, 815, 0, 423, 403, 888, 0, 0, - 421, 371, 455, 411, 461, 442, 469, 417, 412, 294, - 443, 333, 384, 306, 308, 328, 335, 337, 341, 342, - 393, 394, 406, 428, 445, 446, 447, 332, 316, 422, - 317, 352, 318, 295, 324, 322, 325, 430, 326, 297, - 407, 451, 0, 347, 418, 379, 298, 378, 408, 450, - 449, 307, 477, 483, 484, 573, 0, 489, 660, 661, - 662, 498, 0, 413, 503, 504, 505, 507, 508, 509, - 510, 574, 591, 558, 528, 491, 582, 525, 529, 530, - 357, 594, 0, 0, 0, 482, 367, 368, 0, 339, - 338, 380, 416, 345, 291, 292, 655, 872, 399, 596, - 629, 630, 521, 0, 887, 867, 869, 870, 874, 878, - 879, 880, 881, 882, 884, 886, 890, 654, 0, 575, - 590, 658, 589, 651, 405, 0, 427, 587, 534, 0, - 579, 553, 0, 580, 549, 584, 0, 523, 0, 435, - 463, 475, 492, 495, 524, 609, 610, 611, 296, 494, - 613, 614, 615, 616, 617, 618, 619, 612, 889, 556, - 533, 559, 474, 536, 535, 0, 0, 570, 819, 571, - 572, 389, 390, 391, 392, 876, 597, 314, 493, 415, - 0, 557, 0, 0, 0, 0, 0, 0, 0, 0, - 562, 563, 560, 663, 0, 620, 621, 0, 0, 487, - 488, 344, 351, 506, 353, 313, 404, 346, 472, 361, - 0, 499, 564, 500, 623, 626, 624, 625, 396, 356, - 358, 431, 362, 372, 419, 471, 402, 424, 311, 462, - 433, 377, 550, 577, 898, 871, 897, 899, 900, 896, - 901, 902, 883, 774, 0, 826, 894, 893, 895, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 605, 604, 603, 602, 601, 600, 599, 598, 0, 0, - 547, 448, 323, 285, 319, 320, 327, 652, 649, 453, - 653, 781, 293, 527, 370, 0, 414, 343, 592, 593, - 0, 644, 860, 833, 834, 835, 771, 836, 830, 831, - 772, 832, 861, 824, 857, 858, 800, 827, 837, 856, - 838, 859, 862, 863, 903, 904, 844, 828, 257, 905, - 841, 864, 855, 854, 839, 825, 865, 866, 807, 802, - 842, 843, 829, 848, 849, 850, 773, 821, 822, 823, - 845, 846, 803, 804, 805, 806, 0, 0, 0, 478, - 479, 480, 502, 0, 464, 526, 650, 0, 0, 0, - 0, 0, 0, 0, 576, 588, 622, 0, 632, 633, - 635, 637, 851, 639, 438, 439, 0, 847, 642, 643, - 640, 374, 425, 444, 432, 817, 656, 517, 518, 657, - 628, 0, 766, 0, 401, 0, 0, 532, 565, 554, - 638, 520, 0, 0, 0, 0, 0, 0, 769, 0, - 0, 0, 336, 0, 0, 369, 569, 551, 561, 552, - 537, 538, 539, 546, 348, 540, 541, 542, 512, 543, - 513, 544, 545, 808, 568, 519, 434, 385, 586, 585, - 0, 0, 877, 885, 0, 0, 0, 0, 0, 0, - 0, 0, 873, 0, 0, 0, 0, 0, 0, 0, - 798, 853, 852, 785, 795, 0, 0, 309, 229, 514, - 634, 516, 515, 786, 0, 787, 791, 794, 790, 788, - 789, 0, 868, 0, 0, 0, 0, 0, 0, 753, - 765, 0, 770, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 762, 763, 0, 0, - 0, 0, 818, 0, 764, 0, 0, 813, 792, 796, - 0, 0, 0, 0, 299, 441, 460, 310, 429, 473, - 315, 437, 452, 305, 400, 426, 0, 0, 301, 458, - 436, 382, 359, 360, 300, 0, 420, 334, 350, 331, - 398, 793, 816, 820, 330, 891, 814, 468, 303, 0, - 467, 397, 454, 459, 383, 376, 0, 302, 456, 381, - 375, 363, 340, 892, 364, 365, 354, 409, 373, 410, - 355, 387, 386, 388, 0, 0, 0, 0, 0, 496, - 497, 0, 0, 645, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 627, 811, 0, 631, 0, - 470, 0, 0, 875, 0, 0, 0, 440, 0, 0, - 366, 0, 0, 0, 815, 0, 423, 403, 888, 0, - 0, 421, 371, 455, 411, 461, 442, 469, 417, 412, - 294, 443, 333, 384, 306, 308, 328, 335, 337, 341, - 342, 393, 394, 406, 428, 445, 446, 447, 332, 316, - 422, 317, 352, 318, 295, 324, 322, 325, 430, 326, - 297, 407, 451, 0, 347, 418, 379, 298, 378, 408, - 450, 449, 307, 477, 483, 484, 573, 0, 489, 660, - 661, 662, 498, 0, 413, 503, 504, 505, 507, 508, - 509, 510, 574, 591, 558, 528, 491, 582, 525, 529, - 530, 357, 594, 0, 0, 0, 482, 367, 368, 0, - 339, 338, 380, 416, 345, 291, 292, 655, 872, 399, - 596, 629, 630, 521, 0, 887, 867, 869, 870, 874, - 878, 879, 880, 881, 882, 884, 886, 890, 654, 0, - 575, 590, 658, 589, 651, 405, 0, 427, 587, 534, - 0, 579, 553, 0, 580, 549, 584, 0, 523, 0, - 435, 463, 475, 492, 495, 524, 609, 610, 611, 296, - 494, 613, 614, 615, 616, 617, 618, 619, 612, 889, - 556, 533, 559, 474, 536, 535, 0, 0, 570, 819, - 571, 572, 389, 390, 391, 392, 876, 597, 314, 493, - 415, 0, 557, 0, 0, 0, 0, 0, 0, 0, - 0, 562, 563, 560, 663, 0, 620, 621, 0, 0, - 487, 488, 344, 351, 506, 353, 313, 404, 346, 472, - 361, 0, 499, 564, 500, 623, 626, 624, 625, 396, - 356, 358, 431, 362, 372, 419, 471, 402, 424, 311, - 462, 433, 377, 550, 577, 898, 871, 897, 899, 900, - 896, 901, 902, 883, 774, 0, 826, 894, 893, 895, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 605, 604, 603, 602, 601, 600, 599, 598, 0, - 0, 547, 448, 323, 285, 319, 320, 327, 652, 649, - 453, 653, 781, 293, 527, 370, 0, 414, 343, 592, - 593, 0, 644, 860, 833, 834, 835, 771, 836, 830, - 831, 772, 832, 861, 824, 857, 858, 800, 827, 837, - 856, 838, 859, 862, 863, 903, 904, 844, 828, 257, - 905, 841, 864, 855, 854, 839, 825, 865, 866, 807, - 802, 842, 843, 829, 848, 849, 850, 773, 821, 822, - 823, 845, 846, 803, 804, 805, 806, 0, 0, 0, - 478, 479, 480, 502, 0, 464, 526, 650, 0, 0, - 0, 0, 0, 0, 0, 576, 588, 622, 0, 632, - 633, 635, 637, 851, 639, 438, 439, 0, 847, 642, - 643, 640, 374, 425, 444, 432, 0, 656, 517, 518, - 657, 628, 0, 766, 206, 64, 197, 168, 0, 0, - 0, 0, 0, 0, 401, 0, 0, 532, 565, 554, - 638, 520, 0, 198, 0, 0, 0, 0, 0, 0, - 189, 0, 336, 0, 199, 369, 569, 551, 561, 552, - 537, 538, 539, 546, 348, 540, 541, 542, 512, 543, - 513, 544, 545, 140, 568, 519, 434, 385, 586, 585, - 0, 0, 0, 0, 0, 0, 0, 0, 126, 0, - 0, 0, 0, 0, 0, 0, 0, 202, 0, 0, - 228, 0, 0, 0, 0, 0, 0, 309, 229, 514, - 634, 516, 515, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 312, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 220, 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, 299, 441, 460, 310, 429, 473, - 315, 437, 452, 305, 400, 426, 0, 0, 301, 458, - 436, 382, 359, 360, 300, 0, 420, 334, 350, 331, - 398, 0, 457, 485, 330, 476, 0, 468, 303, 0, - 467, 397, 454, 459, 383, 376, 0, 302, 456, 381, - 375, 363, 340, 501, 364, 365, 354, 409, 373, 410, - 355, 387, 386, 388, 0, 0, 0, 0, 0, 496, - 497, 0, 0, 645, 0, 0, 0, 0, 167, 195, - 204, 196, 124, 0, 0, 627, 0, 0, 631, 0, - 470, 0, 0, 221, 0, 0, 0, 440, 0, 0, - 366, 194, 188, 187, 486, 0, 423, 403, 233, 0, - 0, 421, 371, 455, 411, 461, 442, 469, 417, 412, - 294, 443, 333, 384, 306, 308, 328, 335, 337, 341, - 342, 393, 394, 406, 428, 445, 446, 447, 332, 316, - 422, 317, 352, 318, 295, 324, 322, 325, 430, 326, - 297, 407, 451, 0, 347, 418, 379, 298, 378, 408, - 450, 449, 307, 477, 483, 484, 573, 0, 489, 606, - 607, 608, 498, 0, 413, 503, 504, 505, 507, 508, - 509, 510, 574, 591, 558, 528, 491, 582, 525, 529, - 530, 357, 594, 0, 0, 0, 482, 367, 368, 0, - 339, 338, 380, 416, 345, 291, 292, 465, 329, 399, - 596, 629, 630, 521, 0, 583, 522, 531, 321, 555, - 567, 566, 395, 481, 224, 578, 581, 511, 234, 0, - 575, 590, 548, 589, 235, 405, 0, 427, 587, 534, - 0, 579, 553, 0, 580, 549, 584, 0, 523, 0, - 435, 463, 475, 492, 495, 524, 609, 610, 611, 296, - 494, 613, 614, 615, 616, 617, 618, 619, 612, 466, - 556, 533, 559, 474, 536, 535, 0, 0, 570, 490, - 571, 572, 389, 390, 391, 392, 349, 597, 314, 493, - 415, 138, 557, 0, 0, 0, 0, 0, 0, 0, - 0, 562, 563, 560, 232, 0, 620, 621, 0, 0, - 487, 488, 344, 351, 506, 353, 313, 404, 346, 472, - 361, 0, 499, 564, 500, 623, 626, 624, 625, 396, - 356, 358, 431, 362, 372, 419, 471, 402, 424, 311, - 462, 433, 377, 550, 577, 0, 0, 0, 0, 0, - 0, 0, 0, 65, 0, 0, 280, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 605, 604, 603, 602, 601, 600, 599, 598, 0, - 0, 547, 448, 323, 285, 319, 320, 327, 239, 304, - 453, 240, 0, 293, 527, 370, 169, 414, 343, 592, - 593, 61, 644, 241, 242, 243, 244, 245, 246, 247, - 248, 286, 249, 250, 251, 252, 253, 254, 255, 258, - 259, 260, 261, 262, 263, 264, 265, 595, 256, 257, - 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, - 276, 277, 278, 279, 0, 0, 0, 287, 288, 289, - 290, 0, 0, 281, 282, 283, 284, 0, 0, 0, - 478, 479, 480, 502, 0, 464, 526, 236, 45, 222, - 225, 227, 226, 0, 62, 576, 588, 622, 5, 632, - 633, 635, 637, 636, 639, 438, 439, 0, 641, 642, - 643, 640, 374, 425, 444, 432, 143, 237, 517, 518, - 238, 628, 206, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 401, 0, 0, 532, 565, 554, 638, 520, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 336, 0, 0, 369, 569, 551, 561, 552, 537, 538, - 539, 546, 348, 540, 541, 542, 512, 543, 513, 544, - 545, 140, 568, 519, 434, 385, 586, 585, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 202, 0, 0, 228, 0, - 0, 0, 0, 0, 0, 309, 229, 514, 634, 516, - 515, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 312, 2422, 2425, 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, 0, 0, 0, 0, 0, - 0, 0, 299, 441, 460, 310, 429, 473, 315, 437, - 452, 305, 400, 426, 0, 0, 301, 458, 436, 382, - 359, 360, 300, 0, 420, 334, 350, 331, 398, 0, - 457, 485, 330, 476, 0, 468, 303, 0, 467, 397, - 454, 459, 383, 376, 0, 302, 456, 381, 375, 363, - 340, 501, 364, 365, 354, 409, 373, 410, 355, 387, - 386, 388, 0, 0, 0, 0, 0, 496, 497, 0, - 0, 645, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 627, 0, 0, 631, 2426, 470, 0, - 0, 0, 2421, 0, 2420, 440, 2418, 2423, 366, 0, - 0, 0, 486, 0, 423, 403, 659, 0, 0, 421, - 371, 455, 411, 461, 442, 469, 417, 412, 294, 443, - 333, 384, 306, 308, 328, 335, 337, 341, 342, 393, - 394, 406, 428, 445, 446, 447, 332, 316, 422, 317, - 352, 318, 295, 324, 322, 325, 430, 326, 297, 407, - 451, 2424, 347, 418, 379, 298, 378, 408, 450, 449, - 307, 477, 483, 484, 573, 0, 489, 660, 661, 662, - 498, 0, 413, 503, 504, 505, 507, 508, 509, 510, - 574, 591, 558, 528, 491, 582, 525, 529, 530, 357, - 594, 0, 0, 0, 482, 367, 368, 0, 339, 338, - 380, 416, 345, 291, 292, 655, 329, 399, 596, 629, - 630, 521, 0, 583, 522, 531, 321, 555, 567, 566, - 395, 481, 0, 578, 581, 511, 654, 0, 575, 590, - 658, 589, 651, 405, 0, 427, 587, 534, 0, 579, - 553, 0, 580, 549, 584, 0, 523, 0, 435, 463, - 475, 492, 495, 524, 609, 610, 611, 296, 494, 613, - 614, 615, 616, 617, 618, 619, 612, 466, 556, 533, - 559, 474, 536, 535, 0, 0, 570, 490, 571, 572, - 389, 390, 391, 392, 349, 597, 314, 493, 415, 0, - 557, 0, 0, 0, 0, 0, 0, 0, 0, 562, - 563, 560, 663, 0, 620, 621, 0, 0, 487, 488, - 344, 351, 506, 353, 313, 404, 346, 472, 361, 0, - 499, 564, 500, 623, 626, 624, 625, 396, 356, 358, - 431, 362, 372, 419, 471, 402, 424, 311, 462, 433, - 377, 550, 577, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 280, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 605, - 604, 603, 602, 601, 600, 599, 598, 0, 0, 547, - 448, 323, 285, 319, 320, 327, 652, 649, 453, 653, - 0, 293, 527, 370, 169, 414, 343, 592, 593, 0, - 644, 241, 242, 243, 244, 245, 246, 247, 248, 286, - 249, 250, 251, 252, 253, 254, 255, 258, 259, 260, - 261, 262, 263, 264, 265, 595, 256, 257, 266, 267, - 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, - 278, 279, 0, 0, 0, 287, 288, 289, 290, 0, - 0, 281, 282, 283, 284, 0, 0, 0, 478, 479, - 480, 502, 0, 464, 526, 650, 0, 0, 0, 0, - 0, 0, 0, 576, 588, 622, 0, 632, 633, 635, - 637, 636, 639, 438, 439, 0, 641, 642, 643, 640, - 374, 425, 444, 432, 0, 656, 517, 518, 657, 628, - 401, 0, 0, 532, 565, 554, 638, 520, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 336, 0, - 0, 369, 569, 551, 561, 552, 537, 538, 539, 546, - 348, 540, 541, 542, 512, 543, 513, 544, 545, 0, - 568, 519, 434, 385, 586, 585, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1331, 0, 0, 228, 0, 0, 785, - 795, 0, 0, 309, 229, 514, 634, 516, 515, 786, - 0, 787, 791, 794, 790, 788, 789, 0, 312, 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, 0, 0, 0, 792, 0, 0, 0, 0, 0, - 299, 441, 460, 310, 429, 473, 315, 437, 452, 305, - 400, 426, 0, 0, 301, 458, 436, 382, 359, 360, - 300, 0, 420, 334, 350, 331, 398, 793, 457, 485, - 330, 476, 0, 468, 303, 0, 467, 397, 454, 459, - 383, 376, 0, 302, 456, 381, 375, 363, 340, 501, - 364, 365, 354, 409, 373, 410, 355, 387, 386, 388, - 0, 0, 0, 0, 0, 496, 497, 0, 0, 645, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 627, 0, 0, 631, 0, 470, 0, 0, 0, - 0, 0, 0, 440, 0, 0, 366, 0, 0, 0, - 486, 0, 423, 403, 659, 0, 0, 421, 371, 455, - 411, 461, 442, 469, 417, 412, 294, 443, 333, 384, - 306, 308, 328, 335, 337, 341, 342, 393, 394, 406, - 428, 445, 446, 447, 332, 316, 422, 317, 352, 318, - 295, 324, 322, 325, 430, 326, 297, 407, 451, 0, - 347, 418, 379, 298, 378, 408, 450, 449, 307, 477, - 483, 484, 573, 0, 489, 660, 661, 662, 498, 0, - 413, 503, 504, 505, 507, 508, 509, 510, 574, 591, - 558, 528, 491, 582, 525, 529, 530, 357, 594, 0, - 0, 0, 482, 367, 368, 0, 339, 338, 380, 416, - 345, 291, 292, 655, 329, 399, 596, 629, 630, 521, - 0, 583, 522, 531, 321, 555, 567, 566, 395, 481, - 0, 578, 581, 511, 654, 0, 575, 590, 658, 589, - 651, 405, 0, 427, 587, 534, 0, 579, 553, 0, - 580, 549, 584, 0, 523, 0, 435, 463, 475, 492, - 495, 524, 609, 610, 611, 296, 494, 613, 614, 615, - 616, 617, 618, 619, 612, 466, 556, 533, 559, 474, - 536, 535, 0, 0, 570, 490, 571, 572, 389, 390, - 391, 392, 349, 597, 314, 493, 415, 0, 557, 0, - 0, 0, 0, 0, 0, 0, 0, 562, 563, 560, - 663, 0, 620, 621, 0, 0, 487, 488, 344, 351, - 506, 353, 313, 404, 346, 472, 361, 0, 499, 564, - 500, 623, 626, 624, 625, 396, 356, 358, 431, 362, - 372, 419, 471, 402, 424, 311, 462, 433, 377, 550, - 577, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 280, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 605, 604, 603, - 602, 601, 600, 599, 598, 0, 0, 547, 448, 323, - 285, 319, 320, 327, 652, 649, 453, 653, 0, 293, - 527, 370, 0, 414, 343, 592, 593, 0, 644, 241, - 242, 243, 244, 245, 246, 247, 248, 286, 249, 250, - 251, 252, 253, 254, 255, 258, 259, 260, 261, 262, - 263, 264, 265, 595, 256, 257, 266, 267, 268, 269, - 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, - 0, 0, 0, 287, 288, 289, 290, 0, 0, 281, - 282, 283, 284, 0, 0, 0, 478, 479, 480, 502, - 0, 464, 526, 650, 0, 0, 0, 0, 0, 0, - 0, 576, 588, 622, 0, 632, 633, 635, 637, 636, - 639, 438, 439, 0, 641, 642, 643, 640, 374, 425, - 444, 432, 0, 656, 517, 518, 657, 628, 206, 64, - 197, 168, 0, 0, 0, 0, 0, 0, 401, 682, - 0, 532, 565, 554, 638, 520, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 336, 0, 0, 369, - 569, 551, 561, 552, 537, 538, 539, 546, 348, 540, - 541, 542, 512, 543, 513, 544, 545, 0, 568, 519, - 434, 385, 586, 585, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 689, 0, 0, 0, 0, 0, 0, - 0, 688, 0, 0, 228, 0, 0, 0, 0, 0, - 0, 309, 229, 514, 634, 516, 515, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 312, 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, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 299, 441, - 460, 310, 429, 473, 315, 437, 452, 305, 400, 426, - 0, 0, 301, 458, 436, 382, 359, 360, 300, 0, - 420, 334, 350, 331, 398, 0, 457, 485, 330, 476, - 0, 468, 303, 0, 467, 397, 454, 459, 383, 376, - 0, 302, 456, 381, 375, 363, 340, 501, 364, 365, - 354, 409, 373, 410, 355, 387, 386, 388, 0, 0, - 0, 0, 0, 496, 497, 0, 0, 645, 0, 0, - 0, 0, 0, 0, 0, 0, 686, 687, 0, 627, - 0, 0, 631, 0, 470, 0, 0, 0, 0, 0, - 0, 440, 0, 0, 366, 0, 0, 0, 486, 0, - 423, 403, 659, 0, 0, 421, 371, 455, 411, 461, - 442, 469, 417, 412, 294, 443, 333, 384, 306, 308, - 328, 335, 337, 341, 342, 393, 394, 406, 428, 445, - 446, 447, 332, 316, 422, 317, 352, 318, 295, 324, - 322, 325, 430, 326, 297, 407, 451, 0, 347, 418, - 379, 298, 378, 408, 450, 449, 307, 477, 483, 484, - 573, 0, 489, 660, 661, 662, 498, 0, 413, 503, - 504, 505, 507, 508, 509, 510, 574, 591, 558, 528, - 491, 582, 525, 529, 530, 357, 594, 0, 0, 0, - 482, 367, 368, 0, 339, 338, 380, 416, 345, 291, - 292, 655, 329, 399, 596, 629, 630, 521, 0, 583, - 522, 531, 321, 555, 567, 566, 395, 481, 0, 578, - 581, 511, 654, 0, 575, 590, 658, 589, 651, 405, - 0, 427, 587, 534, 0, 579, 553, 0, 580, 549, - 584, 0, 523, 0, 435, 463, 475, 492, 495, 524, - 609, 610, 611, 296, 494, 613, 614, 615, 616, 617, - 618, 619, 612, 466, 556, 533, 559, 474, 536, 535, - 0, 0, 570, 490, 571, 572, 389, 390, 391, 392, - 683, 685, 314, 493, 415, 697, 557, 0, 0, 0, - 0, 0, 0, 0, 0, 562, 563, 560, 663, 0, - 620, 621, 0, 0, 487, 488, 344, 351, 506, 353, - 313, 404, 346, 472, 361, 0, 499, 564, 500, 623, - 626, 624, 625, 396, 356, 358, 431, 362, 372, 419, - 471, 402, 424, 311, 462, 433, 377, 550, 577, 0, - 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, - 280, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 605, 604, 603, 602, 601, - 600, 599, 598, 0, 0, 547, 448, 323, 285, 319, - 320, 327, 652, 649, 453, 653, 0, 293, 527, 370, - 169, 414, 343, 592, 593, 0, 644, 241, 242, 243, - 244, 245, 246, 247, 248, 286, 249, 250, 251, 252, - 253, 254, 255, 258, 259, 260, 261, 262, 263, 264, - 265, 595, 256, 257, 266, 267, 268, 269, 270, 271, - 272, 273, 274, 275, 276, 277, 278, 279, 0, 0, - 0, 287, 288, 289, 290, 0, 0, 281, 282, 283, - 284, 0, 0, 0, 478, 479, 480, 502, 0, 464, - 526, 650, 0, 0, 0, 0, 0, 0, 0, 576, - 588, 622, 0, 632, 633, 635, 637, 636, 639, 438, - 439, 0, 641, 642, 643, 640, 374, 425, 444, 432, - 0, 656, 517, 518, 657, 628, 401, 0, 0, 532, - 565, 554, 638, 520, 0, 1139, 0, 0, 0, 0, - 0, 0, 0, 0, 336, 0, 0, 369, 569, 551, - 561, 552, 537, 538, 539, 546, 348, 540, 541, 542, - 512, 543, 513, 544, 545, 0, 568, 519, 434, 385, - 586, 585, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 228, 0, 0, 0, 0, 0, 0, 309, - 229, 514, 634, 516, 515, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 312, 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, 0, 0, 1124, - 0, 0, 0, 0, 0, 0, 299, 441, 460, 310, - 429, 473, 315, 437, 452, 305, 400, 426, 0, 0, - 2586, 2589, 2590, 2591, 2592, 2593, 2594, 0, 2599, 2595, - 2596, 2597, 2598, 0, 2581, 2582, 2583, 2584, 1122, 2565, - 2587, 0, 2566, 397, 2567, 2568, 2569, 2570, 1126, 2571, - 2572, 2573, 2574, 2575, 2578, 2579, 2576, 2577, 2585, 409, - 373, 410, 355, 387, 386, 388, 1150, 1152, 1154, 1156, - 1159, 496, 497, 0, 0, 645, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 627, 0, 0, - 631, 0, 470, 0, 0, 0, 0, 0, 0, 440, - 0, 0, 366, 0, 0, 0, 2580, 0, 423, 403, - 659, 0, 0, 421, 371, 455, 411, 461, 442, 469, - 417, 412, 294, 443, 333, 384, 306, 308, 328, 335, - 337, 341, 342, 393, 394, 406, 428, 445, 446, 447, - 332, 316, 422, 317, 352, 318, 295, 324, 322, 325, - 430, 326, 297, 407, 451, 0, 347, 418, 379, 298, - 378, 408, 450, 449, 307, 477, 483, 484, 573, 0, - 489, 660, 661, 662, 498, 0, 413, 503, 504, 505, - 507, 508, 509, 510, 574, 591, 558, 528, 491, 582, - 525, 529, 530, 357, 594, 0, 0, 0, 482, 367, - 368, 0, 339, 338, 380, 416, 345, 291, 292, 655, - 329, 399, 596, 629, 630, 521, 0, 583, 522, 531, - 321, 555, 567, 566, 395, 481, 0, 578, 581, 511, - 654, 0, 575, 590, 658, 589, 651, 405, 0, 427, - 587, 534, 0, 579, 553, 0, 580, 549, 584, 0, - 523, 0, 435, 463, 475, 492, 495, 524, 609, 610, - 611, 296, 494, 613, 614, 615, 616, 617, 618, 619, - 612, 466, 556, 533, 559, 474, 536, 535, 0, 0, - 570, 490, 571, 572, 389, 390, 391, 392, 349, 597, - 314, 493, 415, 0, 557, 0, 0, 0, 0, 0, - 0, 0, 0, 562, 563, 560, 663, 0, 620, 621, - 0, 0, 487, 488, 344, 351, 506, 353, 313, 404, - 346, 472, 361, 0, 499, 564, 500, 623, 626, 624, - 625, 396, 356, 358, 431, 362, 372, 419, 471, 402, - 424, 311, 462, 433, 377, 550, 577, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 280, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 605, 604, 603, 602, 601, 600, 599, - 598, 0, 0, 547, 448, 323, 285, 319, 320, 327, - 652, 649, 453, 653, 0, 293, 2588, 370, 0, 414, - 343, 592, 593, 0, 644, 241, 242, 243, 244, 245, - 246, 247, 248, 286, 249, 250, 251, 252, 253, 254, - 255, 258, 259, 260, 261, 262, 263, 264, 265, 595, - 256, 257, 266, 267, 268, 269, 270, 271, 272, 273, - 274, 275, 276, 277, 278, 279, 0, 0, 0, 287, - 288, 289, 290, 0, 0, 281, 282, 283, 284, 0, - 0, 0, 478, 479, 480, 502, 0, 464, 526, 650, - 0, 0, 0, 0, 0, 0, 0, 576, 588, 622, - 0, 632, 633, 635, 637, 636, 639, 438, 439, 0, - 641, 642, 643, 640, 374, 425, 444, 432, 0, 656, - 517, 518, 657, 628, 401, 0, 0, 532, 565, 554, - 638, 520, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 336, 0, 0, 369, 569, 551, 561, 552, - 537, 538, 539, 546, 348, 540, 541, 542, 512, 543, - 513, 544, 545, 0, 568, 519, 434, 385, 586, 585, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 228, 0, 0, 0, 0, 0, 0, 309, 229, 514, - 634, 516, 515, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 312, 2422, 2425, 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, 0, 0, 0, - 0, 0, 0, 0, 299, 441, 460, 310, 429, 473, - 315, 437, 452, 305, 400, 426, 0, 0, 301, 458, - 436, 382, 359, 360, 300, 0, 420, 334, 350, 331, - 398, 0, 457, 485, 330, 476, 0, 468, 303, 0, - 467, 397, 454, 459, 383, 376, 0, 302, 456, 381, - 375, 363, 340, 501, 364, 365, 354, 409, 373, 410, - 355, 387, 386, 388, 0, 0, 0, 0, 0, 496, - 497, 0, 0, 645, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 627, 0, 0, 631, 2426, - 470, 0, 0, 0, 2421, 0, 2420, 440, 2418, 2423, - 366, 0, 0, 0, 486, 0, 423, 403, 659, 0, - 0, 421, 371, 455, 411, 461, 442, 469, 417, 412, - 294, 443, 333, 384, 306, 308, 328, 335, 337, 341, - 342, 393, 394, 406, 428, 445, 446, 447, 332, 316, - 422, 317, 352, 318, 295, 324, 322, 325, 430, 326, - 297, 407, 451, 2424, 347, 418, 379, 298, 378, 408, - 450, 449, 307, 477, 483, 484, 573, 0, 489, 660, - 661, 662, 498, 0, 413, 503, 504, 505, 507, 508, - 509, 510, 574, 591, 558, 528, 491, 582, 525, 529, - 530, 357, 594, 0, 0, 0, 482, 367, 368, 0, - 339, 338, 380, 416, 345, 291, 292, 655, 329, 399, - 596, 629, 630, 521, 0, 583, 522, 531, 321, 555, - 567, 566, 395, 481, 0, 578, 581, 511, 654, 0, - 575, 590, 658, 589, 651, 405, 0, 427, 587, 534, - 0, 579, 553, 0, 580, 549, 584, 0, 523, 0, - 435, 463, 475, 492, 495, 524, 609, 610, 611, 296, - 494, 613, 614, 615, 616, 617, 618, 619, 612, 466, - 556, 533, 559, 474, 536, 535, 0, 0, 570, 490, - 571, 572, 389, 390, 391, 392, 349, 597, 314, 493, - 415, 0, 557, 0, 0, 0, 0, 0, 0, 0, - 0, 562, 563, 560, 663, 0, 620, 621, 0, 0, - 487, 488, 344, 351, 506, 353, 313, 404, 346, 472, - 361, 0, 499, 564, 500, 623, 626, 624, 625, 396, - 356, 358, 431, 362, 372, 419, 471, 402, 424, 311, - 462, 433, 377, 550, 577, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 280, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 605, 604, 603, 602, 601, 600, 599, 598, 0, - 0, 547, 448, 323, 285, 319, 320, 327, 652, 649, - 453, 653, 0, 293, 527, 370, 0, 414, 343, 592, - 593, 0, 644, 241, 242, 243, 244, 245, 246, 247, - 248, 286, 249, 250, 251, 252, 253, 254, 255, 258, - 259, 260, 261, 262, 263, 264, 265, 595, 256, 257, - 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, - 276, 277, 278, 279, 0, 0, 0, 287, 288, 289, - 290, 0, 0, 281, 282, 283, 284, 0, 0, 0, - 478, 479, 480, 502, 0, 464, 526, 650, 0, 0, - 0, 0, 0, 0, 0, 576, 588, 622, 0, 632, - 633, 635, 637, 636, 639, 438, 439, 0, 641, 642, - 643, 640, 374, 425, 444, 432, 0, 656, 517, 518, - 657, 628, 401, 0, 0, 532, 565, 554, 638, 520, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 336, 0, 0, 369, 569, 551, 561, 552, 537, 538, - 539, 546, 348, 540, 541, 542, 512, 543, 513, 544, - 545, 0, 568, 519, 434, 385, 586, 585, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 228, 0, - 0, 0, 0, 0, 0, 309, 229, 514, 634, 516, - 515, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 312, 0, 2443, 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, 0, 0, 0, 0, 0, - 0, 0, 299, 441, 460, 310, 429, 473, 315, 437, - 452, 305, 400, 426, 0, 0, 301, 458, 436, 382, - 359, 360, 300, 0, 420, 334, 350, 331, 398, 0, - 457, 485, 330, 476, 0, 468, 303, 0, 467, 397, - 454, 459, 383, 376, 0, 302, 456, 381, 375, 363, - 340, 501, 364, 365, 354, 409, 373, 410, 355, 387, - 386, 388, 0, 0, 0, 0, 0, 496, 497, 0, - 0, 645, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 627, 0, 0, 631, 2442, 470, 0, - 0, 0, 2448, 2445, 2447, 440, 0, 2446, 366, 0, - 0, 0, 486, 0, 423, 403, 659, 0, 2440, 421, - 371, 455, 411, 461, 442, 469, 417, 412, 294, 443, - 333, 384, 306, 308, 328, 335, 337, 341, 342, 393, - 394, 406, 428, 445, 446, 447, 332, 316, 422, 317, - 352, 318, 295, 324, 322, 325, 430, 326, 297, 407, - 451, 0, 347, 418, 379, 298, 378, 408, 450, 449, - 307, 477, 483, 484, 573, 0, 489, 660, 661, 662, - 498, 0, 413, 503, 504, 505, 507, 508, 509, 510, - 574, 591, 558, 528, 491, 582, 525, 529, 530, 357, - 594, 0, 0, 0, 482, 367, 368, 0, 339, 338, - 380, 416, 345, 291, 292, 655, 329, 399, 596, 629, - 630, 521, 0, 583, 522, 531, 321, 555, 567, 566, - 395, 481, 0, 578, 581, 511, 654, 0, 575, 590, - 658, 589, 651, 405, 0, 427, 587, 534, 0, 579, - 553, 0, 580, 549, 584, 0, 523, 0, 435, 463, - 475, 492, 495, 524, 609, 610, 611, 296, 494, 613, - 614, 615, 616, 617, 618, 619, 612, 466, 556, 533, - 559, 474, 536, 535, 0, 0, 570, 490, 571, 572, - 389, 390, 391, 392, 349, 597, 314, 493, 415, 0, - 557, 0, 0, 0, 0, 0, 0, 0, 0, 562, - 563, 560, 663, 0, 620, 621, 0, 0, 487, 488, - 344, 351, 506, 353, 313, 404, 346, 472, 361, 0, - 499, 564, 500, 623, 626, 624, 625, 396, 356, 358, - 431, 362, 372, 419, 471, 402, 424, 311, 462, 433, - 377, 550, 577, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 280, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 605, - 604, 603, 602, 601, 600, 599, 598, 0, 0, 547, - 448, 323, 285, 319, 320, 327, 652, 649, 453, 653, - 0, 293, 527, 370, 0, 414, 343, 592, 593, 0, - 644, 241, 242, 243, 244, 245, 246, 247, 248, 286, - 249, 250, 251, 252, 253, 254, 255, 258, 259, 260, - 261, 262, 263, 264, 265, 595, 256, 257, 266, 267, - 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, - 278, 279, 0, 0, 0, 287, 288, 289, 290, 0, - 0, 281, 282, 283, 284, 0, 0, 0, 478, 479, - 480, 502, 0, 464, 526, 650, 0, 0, 0, 0, - 0, 0, 0, 576, 588, 622, 0, 632, 633, 635, - 637, 636, 639, 438, 439, 0, 641, 642, 643, 640, - 374, 425, 444, 432, 0, 656, 517, 518, 657, 628, - 401, 0, 0, 532, 565, 554, 638, 520, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 336, 0, - 0, 369, 569, 551, 561, 552, 537, 538, 539, 546, - 348, 540, 541, 542, 512, 543, 513, 544, 545, 0, - 568, 519, 434, 385, 586, 585, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 228, 0, 0, 0, - 0, 0, 0, 309, 229, 514, 634, 516, 515, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 312, 0, - 2443, 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, 0, 0, 0, 0, 0, 0, 0, - 299, 441, 460, 310, 429, 473, 315, 437, 452, 305, - 400, 426, 0, 0, 301, 458, 436, 382, 359, 360, - 300, 0, 420, 334, 350, 331, 398, 0, 457, 485, - 330, 476, 0, 468, 303, 0, 467, 397, 454, 459, - 383, 376, 0, 302, 456, 381, 375, 363, 340, 501, - 364, 365, 354, 409, 373, 410, 355, 387, 386, 388, - 0, 0, 0, 0, 0, 496, 497, 0, 0, 645, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 627, 0, 0, 631, 2442, 470, 0, 0, 0, - 2448, 2445, 2447, 440, 0, 2446, 366, 0, 0, 0, - 486, 0, 423, 403, 659, 0, 0, 421, 371, 455, - 411, 461, 442, 469, 417, 412, 294, 443, 333, 384, - 306, 308, 328, 335, 337, 341, 342, 393, 394, 406, - 428, 445, 446, 447, 332, 316, 422, 317, 352, 318, - 295, 324, 322, 325, 430, 326, 297, 407, 451, 0, - 347, 418, 379, 298, 378, 408, 450, 449, 307, 477, - 483, 484, 573, 0, 489, 660, 661, 662, 498, 0, - 413, 503, 504, 505, 507, 508, 509, 510, 574, 591, - 558, 528, 491, 582, 525, 529, 530, 357, 594, 0, - 0, 0, 482, 367, 368, 0, 339, 338, 380, 416, - 345, 291, 292, 655, 329, 399, 596, 629, 630, 521, - 0, 583, 522, 531, 321, 555, 567, 566, 395, 481, - 0, 578, 581, 511, 654, 0, 575, 590, 658, 589, - 651, 405, 0, 427, 587, 534, 0, 579, 553, 0, - 580, 549, 584, 0, 523, 0, 435, 463, 475, 492, - 495, 524, 609, 610, 611, 296, 494, 613, 614, 615, - 616, 617, 618, 619, 612, 466, 556, 533, 559, 474, - 536, 535, 0, 0, 570, 490, 571, 572, 389, 390, - 391, 392, 349, 597, 314, 493, 415, 0, 557, 0, - 0, 0, 0, 0, 0, 0, 0, 562, 563, 560, - 663, 0, 620, 621, 0, 0, 487, 488, 344, 351, - 506, 353, 313, 404, 346, 472, 361, 0, 499, 564, - 500, 623, 626, 624, 625, 396, 356, 358, 431, 362, - 372, 419, 471, 402, 424, 311, 462, 433, 377, 550, - 577, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 280, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 605, 604, 603, - 602, 601, 600, 599, 598, 0, 0, 547, 448, 323, - 285, 319, 320, 327, 652, 649, 453, 653, 0, 293, - 527, 370, 0, 414, 343, 592, 593, 0, 644, 241, - 242, 243, 244, 245, 246, 247, 248, 286, 249, 250, - 251, 252, 253, 254, 255, 258, 259, 260, 261, 262, - 263, 264, 265, 595, 256, 257, 266, 267, 268, 269, - 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, - 0, 0, 0, 287, 288, 289, 290, 0, 0, 281, - 282, 283, 284, 0, 0, 0, 478, 479, 480, 502, - 0, 464, 526, 650, 0, 0, 0, 0, 0, 0, - 0, 576, 588, 622, 0, 632, 633, 635, 637, 636, - 639, 438, 439, 0, 641, 642, 643, 640, 374, 425, - 444, 432, 0, 656, 517, 518, 657, 628, 401, 0, - 0, 532, 565, 554, 638, 520, 0, 0, 0, 0, - 0, 2135, 0, 0, 0, 0, 336, 0, 0, 369, - 569, 551, 561, 552, 537, 538, 539, 546, 348, 540, - 541, 542, 512, 543, 513, 544, 545, 0, 568, 519, - 434, 385, 586, 585, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 228, 0, 0, 2136, 0, 0, - 0, 309, 229, 514, 634, 516, 515, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 312, 0, 0, 1260, - 1261, 1262, 1259, 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, 0, 0, 0, 299, 441, - 460, 310, 429, 473, 315, 437, 452, 305, 400, 426, - 0, 0, 301, 458, 436, 382, 359, 360, 300, 0, - 420, 334, 350, 331, 398, 0, 457, 485, 330, 476, - 0, 468, 303, 0, 467, 397, 454, 459, 383, 376, - 0, 302, 456, 381, 375, 363, 340, 501, 364, 365, - 354, 409, 373, 410, 355, 387, 386, 388, 0, 0, - 0, 0, 0, 496, 497, 0, 0, 645, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 627, - 0, 0, 631, 0, 470, 0, 0, 0, 0, 0, - 0, 440, 0, 0, 366, 0, 0, 0, 486, 0, - 423, 403, 659, 0, 0, 421, 371, 455, 411, 461, - 442, 469, 417, 412, 294, 443, 333, 384, 306, 308, - 328, 335, 337, 341, 342, 393, 394, 406, 428, 445, - 446, 447, 332, 316, 422, 317, 352, 318, 295, 324, - 322, 325, 430, 326, 297, 407, 451, 0, 347, 418, - 379, 298, 378, 408, 450, 449, 307, 477, 483, 484, - 573, 0, 489, 660, 661, 662, 498, 0, 413, 503, - 504, 505, 507, 508, 509, 510, 574, 591, 558, 528, - 491, 582, 525, 529, 530, 357, 594, 0, 0, 0, - 482, 367, 368, 0, 339, 338, 380, 416, 345, 291, - 292, 655, 329, 399, 596, 629, 630, 521, 0, 583, - 522, 531, 321, 555, 567, 566, 395, 481, 0, 578, - 581, 511, 654, 0, 575, 590, 658, 589, 651, 405, - 0, 427, 587, 534, 0, 579, 553, 0, 580, 549, - 584, 0, 523, 0, 435, 463, 475, 492, 495, 524, - 609, 610, 611, 296, 494, 613, 614, 615, 616, 617, - 618, 619, 612, 466, 556, 533, 559, 474, 536, 535, - 0, 0, 570, 490, 571, 572, 389, 390, 391, 392, - 349, 597, 314, 493, 415, 0, 557, 0, 0, 0, - 0, 0, 0, 0, 0, 562, 563, 560, 663, 0, - 620, 621, 0, 0, 487, 488, 344, 351, 506, 353, - 313, 404, 346, 472, 361, 0, 499, 564, 500, 623, - 626, 624, 625, 396, 356, 358, 431, 362, 372, 419, - 471, 402, 424, 311, 462, 433, 377, 550, 577, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 280, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 605, 604, 603, 602, 601, - 600, 599, 598, 0, 0, 547, 448, 323, 285, 319, - 320, 327, 652, 649, 453, 653, 0, 293, 527, 370, - 0, 414, 343, 592, 593, 0, 644, 241, 242, 243, - 244, 245, 246, 247, 248, 286, 249, 250, 251, 252, - 253, 254, 255, 258, 259, 260, 261, 262, 263, 264, - 265, 595, 256, 257, 266, 267, 268, 269, 270, 271, - 272, 273, 274, 275, 276, 277, 278, 279, 0, 0, - 0, 287, 288, 289, 290, 0, 0, 281, 282, 283, - 284, 0, 0, 0, 478, 479, 480, 502, 0, 464, - 526, 650, 0, 0, 0, 0, 0, 0, 0, 576, - 588, 622, 0, 632, 633, 635, 637, 636, 639, 438, - 439, 0, 641, 642, 643, 640, 374, 425, 444, 432, - 206, 656, 517, 518, 657, 628, 0, 0, 0, 0, - 401, 0, 0, 532, 565, 554, 638, 520, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 336, 0, - 0, 369, 569, 551, 561, 552, 537, 538, 539, 546, - 348, 540, 541, 542, 512, 543, 513, 544, 545, 140, - 568, 519, 434, 385, 586, 585, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 202, 2185, 0, 228, 0, 0, 0, - 0, 0, 0, 309, 229, 514, 634, 516, 515, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 312, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 299, 441, 460, 310, 429, 473, 315, 437, 452, 305, - 400, 426, 0, 0, 301, 458, 436, 382, 359, 360, - 300, 0, 420, 334, 350, 331, 398, 0, 457, 485, - 330, 476, 0, 468, 303, 0, 467, 397, 454, 459, - 383, 376, 0, 302, 456, 381, 375, 363, 340, 501, - 364, 365, 354, 409, 373, 410, 355, 387, 386, 388, - 0, 0, 0, 0, 0, 496, 497, 0, 0, 645, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 627, 0, 0, 631, 0, 470, 0, 0, 0, - 0, 0, 0, 440, 0, 0, 366, 0, 0, 0, - 486, 0, 423, 403, 659, 0, 0, 421, 371, 455, - 411, 461, 442, 469, 417, 412, 294, 443, 333, 384, - 306, 308, 328, 335, 337, 341, 342, 393, 394, 406, - 428, 445, 446, 447, 332, 316, 422, 317, 352, 318, - 295, 324, 322, 325, 430, 326, 297, 407, 451, 0, - 347, 418, 379, 298, 378, 408, 450, 449, 307, 477, - 483, 484, 573, 0, 489, 660, 661, 662, 498, 0, - 413, 503, 504, 505, 507, 508, 509, 510, 574, 591, - 558, 528, 491, 582, 525, 529, 530, 357, 594, 0, - 0, 0, 482, 367, 368, 0, 339, 338, 380, 416, - 345, 291, 292, 655, 329, 399, 596, 629, 630, 521, - 0, 583, 522, 531, 321, 555, 567, 566, 395, 481, - 0, 578, 581, 511, 654, 0, 575, 590, 658, 589, - 651, 405, 0, 427, 587, 534, 0, 579, 553, 0, - 580, 549, 584, 0, 523, 0, 435, 463, 475, 492, - 495, 524, 609, 610, 611, 296, 494, 613, 614, 615, - 616, 617, 618, 619, 612, 466, 556, 533, 559, 474, - 536, 535, 0, 0, 570, 490, 571, 572, 389, 390, - 391, 392, 349, 597, 314, 493, 415, 0, 557, 0, - 0, 0, 0, 0, 0, 0, 0, 562, 563, 560, - 663, 0, 620, 621, 0, 0, 487, 488, 344, 351, - 506, 353, 313, 404, 346, 472, 361, 0, 499, 564, - 500, 623, 626, 624, 625, 396, 356, 358, 431, 362, - 372, 419, 471, 402, 424, 311, 462, 433, 377, 550, - 577, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 280, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 605, 604, 603, - 602, 601, 600, 599, 598, 0, 0, 547, 448, 323, - 285, 319, 320, 327, 652, 649, 453, 653, 0, 293, - 527, 370, 169, 414, 343, 592, 593, 0, 644, 241, - 242, 243, 244, 245, 246, 247, 248, 286, 249, 250, - 251, 252, 253, 254, 255, 258, 259, 260, 261, 262, - 263, 264, 265, 595, 256, 257, 266, 267, 268, 269, - 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, - 0, 0, 0, 287, 288, 289, 290, 0, 0, 281, - 282, 283, 284, 0, 0, 0, 478, 479, 480, 502, - 0, 464, 526, 650, 0, 0, 0, 0, 0, 0, - 0, 576, 588, 622, 0, 632, 633, 635, 637, 636, - 639, 438, 439, 0, 641, 642, 643, 640, 374, 425, - 444, 432, 206, 656, 517, 518, 657, 628, 0, 0, - 0, 0, 401, 0, 0, 532, 565, 554, 638, 520, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 336, 0, 0, 369, 569, 551, 561, 552, 537, 538, - 539, 546, 348, 540, 541, 542, 512, 543, 513, 544, - 545, 140, 568, 519, 434, 385, 586, 585, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 202, 2170, 0, 228, 0, - 0, 0, 0, 0, 0, 309, 229, 514, 634, 516, - 515, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 312, 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, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 299, 441, 460, 310, 429, 473, 315, 437, - 452, 305, 400, 426, 0, 0, 301, 458, 436, 382, - 359, 360, 300, 0, 420, 334, 350, 331, 398, 0, - 457, 485, 330, 476, 0, 468, 303, 0, 467, 397, - 454, 459, 383, 376, 0, 302, 456, 381, 375, 363, - 340, 501, 364, 365, 354, 409, 373, 410, 355, 387, - 386, 388, 0, 0, 0, 0, 0, 496, 497, 0, - 0, 645, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 627, 0, 0, 631, 0, 470, 0, - 0, 0, 0, 0, 0, 440, 0, 0, 366, 0, - 0, 0, 486, 0, 423, 403, 659, 0, 0, 421, - 371, 455, 411, 461, 442, 469, 417, 412, 294, 443, - 333, 384, 306, 308, 328, 335, 337, 341, 342, 393, - 394, 406, 428, 445, 446, 447, 332, 316, 422, 317, - 352, 318, 295, 324, 322, 325, 430, 326, 297, 407, - 451, 0, 347, 418, 379, 298, 378, 408, 450, 449, - 307, 477, 483, 484, 573, 0, 489, 660, 661, 662, - 498, 0, 413, 503, 504, 505, 507, 508, 509, 510, - 574, 591, 558, 528, 491, 582, 525, 529, 530, 357, - 594, 0, 0, 0, 482, 367, 368, 0, 339, 338, - 380, 416, 345, 291, 292, 655, 329, 399, 596, 629, - 630, 521, 0, 583, 522, 531, 321, 555, 567, 566, - 395, 481, 0, 578, 581, 511, 654, 0, 575, 590, - 658, 589, 651, 405, 0, 427, 587, 534, 0, 579, - 553, 0, 580, 549, 584, 0, 523, 0, 435, 463, - 475, 492, 495, 524, 609, 610, 611, 296, 494, 613, - 614, 615, 616, 617, 618, 619, 612, 466, 556, 533, - 559, 474, 536, 535, 0, 0, 570, 490, 571, 572, - 389, 390, 391, 392, 349, 597, 314, 493, 415, 0, - 557, 0, 0, 0, 0, 0, 0, 0, 0, 562, - 563, 560, 663, 0, 620, 621, 0, 0, 487, 488, - 344, 351, 506, 353, 313, 404, 346, 472, 361, 0, - 499, 564, 500, 623, 626, 624, 625, 396, 356, 358, - 431, 362, 372, 419, 471, 402, 424, 311, 462, 433, - 377, 550, 577, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 280, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 605, - 604, 603, 602, 601, 600, 599, 598, 0, 0, 547, - 448, 323, 285, 319, 320, 327, 652, 649, 453, 653, - 0, 293, 527, 370, 169, 414, 343, 592, 593, 0, - 644, 241, 242, 243, 244, 245, 246, 247, 248, 286, - 249, 250, 251, 252, 253, 254, 255, 258, 259, 260, - 261, 262, 263, 264, 265, 595, 256, 257, 266, 267, - 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, - 278, 279, 0, 0, 0, 287, 288, 289, 290, 0, - 0, 281, 282, 283, 284, 0, 0, 0, 478, 479, - 480, 502, 0, 464, 526, 650, 0, 0, 0, 0, - 0, 0, 0, 576, 588, 622, 0, 632, 633, 635, - 637, 636, 639, 438, 439, 0, 641, 642, 643, 640, - 374, 425, 444, 432, 0, 656, 517, 518, 657, 628, - 401, 0, 0, 532, 565, 554, 638, 520, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 336, 1050, - 0, 369, 569, 551, 561, 552, 537, 538, 539, 546, - 348, 540, 541, 542, 512, 543, 513, 544, 545, 0, - 568, 519, 434, 385, 586, 585, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 228, 1057, 1058, 0, - 0, 0, 0, 309, 229, 514, 634, 516, 515, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1061, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 299, 441, 1044, 310, 429, 473, 315, 437, 452, 305, - 400, 426, 0, 0, 301, 458, 436, 382, 359, 360, - 300, 0, 420, 334, 350, 331, 398, 0, 457, 485, - 330, 476, 1031, 468, 303, 1030, 467, 397, 454, 459, - 383, 376, 0, 302, 456, 381, 375, 363, 340, 501, - 364, 365, 354, 409, 373, 410, 355, 387, 386, 388, - 0, 0, 0, 0, 0, 496, 497, 0, 0, 645, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 627, 0, 0, 631, 0, 470, 0, 0, 0, - 0, 0, 0, 440, 0, 0, 366, 0, 0, 0, - 486, 0, 423, 403, 659, 0, 0, 421, 371, 455, - 411, 461, 442, 469, 1048, 412, 294, 443, 333, 384, - 306, 308, 328, 335, 337, 341, 342, 393, 394, 406, - 428, 445, 446, 447, 332, 316, 422, 317, 352, 318, - 295, 324, 322, 325, 430, 326, 297, 407, 451, 0, - 347, 418, 379, 298, 378, 408, 450, 449, 307, 477, - 483, 484, 573, 0, 489, 660, 661, 662, 498, 0, - 413, 503, 504, 505, 507, 508, 509, 510, 574, 591, - 558, 528, 491, 582, 525, 529, 530, 357, 594, 0, - 0, 0, 482, 367, 368, 0, 339, 338, 380, 416, - 345, 291, 292, 655, 329, 399, 596, 629, 630, 521, - 0, 583, 522, 531, 321, 555, 567, 566, 395, 481, - 0, 578, 581, 511, 654, 0, 575, 590, 658, 589, - 651, 405, 0, 427, 587, 534, 0, 579, 553, 0, - 580, 549, 584, 0, 523, 0, 435, 463, 475, 492, - 495, 524, 609, 610, 611, 296, 494, 613, 614, 615, - 616, 617, 618, 1049, 612, 466, 556, 533, 559, 474, - 536, 535, 0, 0, 570, 1052, 571, 572, 389, 390, - 391, 392, 349, 597, 1047, 493, 415, 0, 557, 0, - 0, 0, 0, 0, 0, 0, 0, 562, 563, 560, - 663, 0, 620, 621, 0, 0, 487, 488, 344, 351, - 506, 353, 313, 404, 346, 472, 361, 0, 499, 564, - 500, 623, 626, 624, 625, 1059, 1045, 1055, 1046, 362, - 372, 419, 471, 402, 424, 311, 462, 433, 1056, 550, - 577, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 280, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 605, 604, 603, - 602, 601, 600, 599, 598, 0, 0, 547, 448, 323, - 285, 319, 320, 327, 652, 649, 453, 653, 0, 293, - 527, 370, 0, 414, 343, 592, 593, 0, 644, 241, - 242, 243, 244, 245, 246, 247, 248, 286, 249, 250, - 251, 252, 253, 254, 255, 258, 259, 260, 261, 262, - 263, 264, 265, 595, 256, 257, 266, 267, 268, 269, - 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, - 0, 0, 0, 287, 288, 289, 290, 0, 0, 281, - 282, 283, 284, 0, 0, 0, 478, 479, 480, 502, - 0, 464, 526, 650, 0, 0, 0, 0, 0, 0, - 0, 576, 588, 622, 0, 632, 633, 635, 637, 636, - 639, 438, 439, 0, 641, 642, 643, 640, 1043, 425, - 444, 432, 206, 656, 517, 518, 657, 628, 0, 0, - 0, 0, 401, 0, 0, 532, 565, 554, 638, 520, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 336, 0, 0, 369, 569, 551, 561, 552, 537, 538, - 539, 546, 348, 540, 541, 542, 512, 543, 513, 544, - 545, 140, 568, 519, 434, 385, 586, 585, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 2067, 0, 0, 228, 0, - 0, 0, 0, 0, 0, 309, 229, 514, 634, 516, - 515, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 312, 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, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 299, 441, 460, 310, 429, 473, 315, 437, - 452, 305, 400, 426, 0, 0, 301, 458, 436, 382, - 359, 360, 300, 0, 420, 334, 350, 331, 398, 0, - 457, 485, 330, 476, 0, 468, 303, 0, 467, 397, - 454, 459, 383, 376, 0, 302, 456, 381, 375, 363, - 340, 501, 364, 365, 354, 409, 373, 410, 355, 387, - 386, 388, 0, 0, 0, 0, 0, 496, 497, 0, - 0, 645, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 627, 0, 0, 631, 0, 470, 0, - 0, 0, 0, 0, 0, 440, 0, 0, 366, 0, - 0, 0, 486, 0, 423, 403, 659, 0, 0, 421, - 371, 455, 411, 461, 442, 469, 417, 412, 294, 443, - 333, 384, 306, 308, 328, 335, 337, 341, 342, 393, - 394, 406, 428, 445, 446, 447, 332, 316, 422, 317, - 352, 318, 295, 324, 322, 325, 430, 326, 297, 407, - 451, 0, 347, 418, 379, 298, 378, 408, 450, 449, - 307, 477, 483, 484, 573, 0, 489, 660, 661, 662, - 498, 0, 413, 503, 504, 505, 507, 508, 509, 510, - 574, 591, 558, 528, 491, 582, 525, 529, 530, 357, - 594, 0, 0, 0, 482, 367, 368, 0, 339, 338, - 380, 416, 345, 291, 292, 655, 329, 399, 596, 629, - 630, 521, 0, 583, 522, 531, 321, 555, 567, 566, - 395, 481, 0, 578, 581, 511, 654, 0, 575, 590, - 658, 589, 651, 405, 0, 427, 587, 534, 0, 579, - 553, 0, 580, 549, 584, 0, 523, 0, 435, 463, - 475, 492, 495, 524, 609, 610, 611, 296, 494, 613, - 614, 615, 616, 617, 618, 619, 612, 466, 556, 533, - 559, 474, 536, 535, 0, 0, 570, 490, 571, 572, - 389, 390, 391, 392, 349, 597, 314, 493, 415, 0, - 557, 0, 0, 0, 0, 0, 0, 0, 0, 562, - 563, 560, 663, 0, 620, 621, 0, 0, 487, 488, - 344, 351, 506, 353, 313, 404, 346, 472, 361, 0, - 499, 564, 500, 623, 626, 624, 625, 396, 356, 358, - 431, 362, 372, 419, 471, 402, 424, 311, 462, 433, - 377, 550, 577, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 280, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 605, - 604, 603, 602, 601, 600, 599, 598, 0, 0, 547, - 448, 323, 285, 319, 320, 327, 652, 649, 453, 653, - 0, 293, 527, 370, 169, 414, 343, 592, 593, 0, - 644, 241, 242, 243, 244, 245, 246, 247, 248, 286, - 249, 250, 251, 252, 253, 254, 255, 258, 259, 260, - 261, 262, 263, 264, 265, 595, 256, 257, 266, 267, - 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, - 278, 279, 0, 0, 0, 287, 288, 289, 290, 0, - 0, 281, 282, 283, 284, 0, 0, 0, 478, 479, - 480, 502, 0, 464, 526, 650, 0, 0, 0, 0, - 0, 0, 0, 576, 588, 622, 0, 632, 633, 635, - 637, 636, 639, 438, 439, 0, 641, 642, 643, 640, - 374, 425, 444, 432, 0, 656, 517, 518, 657, 628, - 401, 0, 0, 532, 565, 554, 638, 520, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 336, 0, - 0, 369, 569, 551, 561, 552, 537, 538, 539, 546, - 348, 540, 541, 542, 512, 543, 513, 544, 545, 0, - 568, 519, 434, 385, 586, 585, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 228, 1057, 1058, 0, - 0, 0, 0, 309, 229, 514, 634, 516, 515, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1061, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 299, 441, 460, 310, 429, 473, 315, 437, 452, 305, - 400, 426, 0, 0, 301, 458, 436, 382, 359, 360, - 300, 0, 420, 334, 350, 331, 398, 0, 457, 485, - 330, 476, 1031, 468, 303, 1030, 467, 397, 454, 459, - 383, 376, 0, 302, 456, 381, 375, 363, 340, 501, - 364, 365, 354, 409, 373, 410, 355, 387, 386, 388, - 0, 0, 0, 0, 0, 496, 497, 0, 0, 645, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 627, 0, 0, 631, 0, 470, 0, 0, 0, - 0, 0, 0, 440, 0, 0, 366, 0, 0, 0, - 486, 0, 423, 403, 659, 0, 0, 421, 371, 455, - 411, 461, 442, 469, 417, 412, 294, 443, 333, 384, - 306, 308, 328, 335, 337, 341, 342, 393, 394, 406, - 428, 445, 446, 447, 332, 316, 422, 317, 352, 318, - 295, 324, 322, 325, 430, 326, 297, 407, 451, 0, - 347, 418, 379, 298, 378, 408, 450, 449, 307, 477, - 483, 484, 573, 0, 489, 660, 661, 662, 498, 0, - 413, 503, 504, 505, 507, 508, 509, 510, 574, 591, - 558, 528, 491, 582, 525, 529, 530, 357, 594, 0, - 0, 0, 482, 367, 368, 0, 339, 338, 380, 416, - 345, 291, 292, 655, 329, 399, 596, 629, 630, 521, - 0, 583, 522, 531, 321, 555, 567, 566, 395, 481, - 0, 578, 581, 511, 654, 0, 575, 590, 658, 589, - 651, 405, 0, 427, 587, 534, 0, 579, 553, 0, - 580, 549, 584, 0, 523, 0, 435, 463, 475, 492, - 495, 524, 609, 610, 611, 296, 494, 613, 614, 615, - 616, 617, 618, 619, 612, 466, 556, 533, 559, 474, - 536, 535, 0, 0, 570, 490, 571, 572, 389, 390, - 391, 392, 349, 597, 314, 493, 415, 0, 557, 0, - 0, 0, 0, 0, 0, 0, 0, 562, 563, 560, - 663, 0, 620, 621, 0, 0, 487, 488, 344, 351, - 506, 353, 313, 404, 346, 472, 361, 0, 499, 564, - 500, 623, 626, 624, 625, 1059, 2088, 1055, 2089, 362, - 372, 419, 471, 402, 424, 311, 462, 433, 1056, 550, - 577, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 280, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 605, 604, 603, - 602, 601, 600, 599, 598, 0, 0, 547, 448, 323, - 285, 319, 320, 327, 652, 649, 453, 653, 0, 293, - 527, 370, 0, 414, 343, 592, 593, 0, 644, 241, - 242, 243, 244, 245, 246, 247, 248, 286, 249, 250, - 251, 252, 253, 254, 255, 258, 259, 260, 261, 262, - 263, 264, 265, 595, 256, 257, 266, 267, 268, 269, - 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, - 0, 0, 0, 287, 288, 289, 290, 0, 0, 281, - 282, 283, 284, 0, 0, 0, 478, 479, 480, 502, - 0, 464, 526, 650, 0, 0, 0, 0, 0, 0, - 0, 576, 588, 622, 0, 632, 633, 635, 637, 636, - 639, 438, 439, 0, 641, 642, 643, 640, 374, 425, - 444, 432, 0, 656, 517, 518, 657, 628, 401, 0, - 0, 532, 565, 554, 638, 520, 0, 0, 2977, 0, - 0, 0, 0, 0, 0, 0, 336, 0, 0, 369, - 569, 551, 561, 552, 537, 538, 539, 546, 348, 540, - 541, 542, 512, 543, 513, 544, 545, 0, 568, 519, - 434, 385, 586, 585, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 228, 0, 0, 0, 0, 0, - 0, 309, 229, 514, 634, 516, 515, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 312, 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, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 299, 441, - 460, 310, 429, 473, 315, 437, 452, 305, 400, 426, - 0, 0, 301, 458, 436, 382, 359, 360, 300, 0, - 420, 334, 350, 331, 398, 0, 457, 485, 330, 476, - 0, 468, 303, 0, 467, 397, 454, 459, 383, 376, - 0, 302, 456, 381, 375, 363, 340, 501, 364, 365, - 354, 409, 373, 410, 355, 387, 386, 388, 0, 0, - 0, 0, 0, 496, 497, 0, 0, 645, 0, 0, - 0, 0, 0, 0, 2980, 0, 0, 0, 2979, 627, - 0, 0, 631, 0, 470, 0, 0, 0, 0, 0, - 0, 440, 0, 0, 366, 0, 0, 0, 486, 0, - 423, 403, 659, 0, 0, 421, 371, 455, 411, 461, - 442, 469, 417, 412, 294, 443, 333, 384, 306, 308, - 328, 335, 337, 341, 342, 393, 394, 406, 428, 445, - 446, 447, 332, 316, 422, 317, 352, 318, 295, 324, - 322, 325, 430, 326, 297, 407, 451, 0, 347, 418, - 379, 298, 378, 408, 450, 449, 307, 477, 483, 484, - 573, 0, 489, 660, 661, 662, 498, 0, 413, 503, - 504, 505, 507, 508, 509, 510, 574, 591, 558, 528, - 491, 582, 525, 529, 530, 357, 594, 0, 0, 0, - 482, 367, 368, 0, 339, 338, 380, 416, 345, 291, - 292, 655, 329, 399, 596, 629, 630, 521, 0, 583, - 522, 531, 321, 555, 567, 566, 395, 481, 0, 578, - 581, 511, 654, 0, 575, 590, 658, 589, 651, 405, - 0, 427, 587, 534, 0, 579, 553, 0, 580, 549, - 584, 0, 523, 0, 435, 463, 475, 492, 495, 524, - 609, 610, 611, 296, 494, 613, 614, 615, 616, 617, - 618, 619, 612, 466, 556, 533, 559, 474, 536, 535, - 0, 0, 570, 490, 571, 572, 389, 390, 391, 392, - 349, 597, 314, 493, 415, 0, 557, 0, 0, 0, - 0, 0, 0, 0, 0, 562, 563, 560, 663, 0, - 620, 621, 0, 0, 487, 488, 344, 351, 506, 353, - 313, 404, 346, 472, 361, 0, 499, 564, 500, 623, - 626, 624, 625, 396, 356, 358, 431, 362, 372, 419, - 471, 402, 424, 311, 462, 433, 377, 550, 577, 0, + 0, 0, 146, 203, 0, 147, 0, 0, 0, 2837, + 169, 0, 0, 0, 0, 61, 0, 0, 0, 3516, + 0, 0, 0, 0, 0, 1022, 1026, 0, 0, 725, + 729, 735, 0, 736, 738, 0, 0, 739, 740, 741, + 0, 0, 743, 744, 0, 1009, 0, 1007, 1011, 1029, + 0, 0, 0, 1008, 1005, 1004, 0, 1010, 995, 996, + 994, 997, 998, 999, 1000, 0, 1027, 0, 1028, 0, + 0, 2037, 0, 0, 0, 0, 1998, 0, 0, 1023, + 1024, 139, 45, 0, 0, 0, 0, 0, 62, 0, + 0, 0, 0, 0, 0, 3515, 0, 0, 0, 0, + 1140, 0, 0, 0, 0, 0, 0, 2040, 2007, 0, + 143, 144, 0, 0, 145, 0, 1019, 2041, 2042, 0, + 0, 0, 1018, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1014, 0, 0, + 0, 0, 0, 2006, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2014, 0, 0, 728, 727, 734, 724, 0, 1068, + 0, 142, 0, 0, 0, 0, 142, 731, 732, 0, + 733, 737, 0, 2070, 718, 0, 0, 0, 0, 0, + 3028, 3029, 0, 0, 742, 0, 0, 0, 722, 0, + 0, 0, 0, 142, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1017, 0, 0, 0, 0, + 0, 988, 989, 983, 1125, 0, 0, 0, 984, 2030, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1148, 1152, 1154, 1156, 1158, + 1159, 1161, 0, 1166, 1162, 1163, 1164, 1165, 0, 1143, + 1144, 1145, 1146, 1123, 1124, 1149, 0, 1126, 0, 1128, + 1129, 1130, 1131, 1127, 1132, 1133, 1134, 1135, 1136, 1139, + 1141, 1137, 1138, 1147, 0, 0, 0, 0, 0, 0, + 0, 1151, 1153, 1155, 1157, 1160, 0, 0, 0, 0, + 0, 0, 0, 1997, 1999, 1996, 0, 0, 1993, 0, + 0, 0, 0, 2018, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2024, 0, 0, 0, 0, 0, + 2037, 1142, 2009, 0, 1992, 1998, 0, 0, 0, 0, + 0, 0, 0, 0, 2012, 2046, 0, 0, 2013, 2015, + 2017, 0, 2019, 2020, 2021, 2025, 2026, 2027, 2029, 2032, + 2033, 2034, 0, 0, 0, 0, 2040, 2007, 0, 2022, + 2031, 2023, 0, 0, 0, 0, 2041, 2042, 0, 0, + 0, 2001, 0, 0, 0, 0, 0, 0, 719, 721, + 720, 0, 0, 0, 0, 0, 0, 0, 0, 726, + 0, 0, 2006, 0, 0, 2038, 0, 0, 0, 0, + 0, 730, 0, 0, 0, 0, 0, 0, 745, 0, + 2014, 0, 0, 0, 0, 723, 0, 728, 727, 734, + 724, 0, 0, 0, 0, 0, 0, 0, 1994, 1995, + 731, 732, 0, 733, 737, 3220, 0, 718, 0, 0, + 0, 0, 0, 0, 0, 0, 2035, 742, 0, 0, + 0, 0, 3232, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 2011, 0, 0, 0, 0, 2692, 2693, + 2010, 0, 0, 0, 0, 0, 0, 0, 2030, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 746, 2028, 0, 748, 0, 0, 0, + 0, 747, 0, 2016, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 2044, 2043, 0, 142, + 0, 0, 0, 0, 0, 0, 142, 0, 0, 0, + 0, 0, 0, 725, 729, 735, 0, 736, 738, 0, + 0, 739, 740, 741, 0, 0, 743, 744, 0, 0, + 0, 0, 1997, 2863, 1996, 0, 0, 2862, 0, 0, + 0, 0, 2018, 0, 0, 0, 0, 0, 0, 2003, + 0, 0, 0, 2024, 0, 2070, 0, 0, 0, 0, + 2112, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 2012, 2046, 0, 0, 2013, 2015, 2017, + 0, 2019, 2020, 2021, 2025, 2026, 2027, 2029, 2032, 2033, + 2034, 2039, 1150, 0, 2045, 0, 0, 0, 2022, 2031, + 2023, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2001, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 719, 721, 720, 0, 0, 0, 0, 0, 0, + 0, 0, 726, 0, 2038, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 730, 0, 0, 0, 0, 0, + 0, 745, 0, 0, 0, 0, 0, 0, 723, 0, + 0, 0, 713, 0, 0, 0, 0, 1994, 1995, 0, + 0, 0, 142, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 722, 0, 0, 2035, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 3384, 0, 0, 0, + 0, 0, 2011, 0, 0, 0, 0, 0, 0, 2010, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 2028, 0, 0, 0, 0, 0, 0, + 0, 0, 2016, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 2044, 2043, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 142, 0, 0, 0, 725, 729, 735, 0, + 736, 738, 0, 0, 739, 740, 741, 0, 0, 743, + 744, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 2003, 0, + 0, 0, 0, 0, 0, 0, 0, 2112, 0, 0, + 0, 0, 0, 0, 0, 818, 0, 0, 0, 0, + 0, 0, 0, 0, 402, 0, 0, 533, 566, 555, + 639, 521, 0, 0, 0, 0, 0, 0, 770, 0, + 2039, 0, 337, 2045, 0, 370, 570, 552, 562, 553, + 538, 539, 540, 547, 349, 541, 542, 543, 513, 544, + 514, 545, 546, 809, 569, 520, 435, 386, 587, 586, + 0, 0, 878, 886, 0, 0, 0, 0, 0, 0, + 0, 0, 874, 0, 0, 0, 0, 762, 0, 0, + 799, 854, 853, 786, 796, 0, 0, 310, 229, 515, + 635, 517, 516, 787, 0, 788, 792, 795, 791, 789, + 790, 0, 869, 0, 2112, 0, 0, 0, 0, 754, + 766, 0, 771, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 722, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 763, 764, 0, 0, + 0, 142, 819, 0, 765, 0, 0, 814, 793, 797, + 0, 0, 0, 0, 300, 442, 461, 311, 430, 474, + 316, 438, 453, 306, 401, 427, 0, 0, 302, 459, + 437, 383, 360, 361, 301, 0, 421, 335, 351, 332, + 399, 794, 817, 821, 331, 892, 815, 469, 304, 0, + 468, 398, 455, 460, 384, 377, 0, 303, 457, 382, + 376, 364, 341, 893, 365, 366, 355, 410, 374, 411, + 356, 388, 387, 389, 0, 0, 0, 0, 0, 497, + 498, 0, 0, 646, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 628, 812, 0, 632, 0, + 471, 0, 0, 876, 0, 0, 0, 441, 0, 0, + 367, 0, 0, 0, 816, 0, 424, 404, 889, 0, + 0, 422, 372, 456, 412, 462, 443, 470, 418, 413, + 294, 444, 334, 385, 307, 309, 329, 336, 338, 342, + 343, 394, 395, 407, 429, 446, 447, 448, 333, 317, + 423, 318, 353, 319, 295, 325, 323, 326, 431, 327, + 297, 408, 452, 3702, 348, 419, 380, 298, 379, 409, + 451, 450, 308, 478, 484, 485, 574, 0, 490, 661, + 662, 663, 499, 0, 414, 504, 505, 506, 508, 509, + 510, 511, 575, 592, 559, 529, 492, 583, 526, 530, + 531, 358, 595, 1826, 1825, 1827, 483, 368, 369, 0, + 340, 339, 381, 417, 299, 346, 291, 292, 656, 873, + 400, 597, 630, 631, 522, 0, 888, 868, 870, 871, + 875, 879, 880, 881, 882, 883, 885, 887, 891, 655, + 0, 576, 591, 659, 590, 652, 406, 0, 428, 588, + 535, 0, 580, 554, 0, 581, 550, 585, 0, 524, + 0, 436, 464, 476, 493, 496, 525, 610, 611, 612, + 296, 495, 614, 615, 616, 617, 618, 619, 620, 613, + 890, 557, 534, 560, 475, 537, 536, 0, 0, 571, + 820, 572, 573, 390, 391, 392, 393, 877, 598, 315, + 494, 416, 0, 558, 0, 0, 0, 0, 0, 0, + 0, 0, 563, 564, 561, 664, 0, 621, 622, 0, + 0, 488, 489, 345, 352, 507, 354, 314, 405, 347, + 473, 362, 0, 500, 565, 501, 624, 627, 625, 626, + 397, 357, 359, 432, 363, 373, 420, 472, 403, 425, + 312, 463, 434, 378, 551, 578, 899, 872, 898, 900, + 901, 897, 902, 903, 884, 775, 0, 827, 895, 894, + 896, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 606, 605, 604, 603, 602, 601, 600, 599, + 0, 0, 548, 449, 324, 285, 320, 321, 328, 653, + 650, 454, 654, 782, 293, 528, 371, 0, 415, 344, + 593, 594, 0, 645, 861, 834, 835, 836, 772, 837, + 831, 832, 773, 833, 862, 825, 858, 859, 801, 828, + 838, 857, 839, 860, 863, 864, 904, 905, 845, 829, + 257, 906, 842, 865, 856, 855, 840, 826, 866, 867, + 808, 803, 843, 844, 830, 849, 850, 851, 774, 822, + 823, 824, 846, 847, 804, 805, 806, 807, 0, 0, + 0, 479, 480, 481, 503, 0, 465, 527, 651, 0, + 0, 0, 0, 0, 0, 0, 577, 589, 623, 0, + 633, 634, 636, 638, 852, 640, 439, 440, 0, 848, + 643, 644, 641, 375, 426, 445, 433, 818, 657, 518, + 519, 658, 629, 0, 767, 0, 402, 0, 0, 533, + 566, 555, 639, 521, 0, 0, 0, 0, 0, 0, + 770, 0, 0, 0, 337, 1877, 0, 370, 570, 552, + 562, 553, 538, 539, 540, 547, 349, 541, 542, 543, + 513, 544, 514, 545, 546, 809, 569, 520, 435, 386, + 587, 586, 0, 0, 878, 886, 0, 0, 0, 0, + 0, 0, 0, 0, 874, 0, 2096, 0, 0, 762, + 0, 0, 799, 854, 853, 786, 796, 0, 0, 310, + 229, 515, 635, 517, 516, 787, 0, 788, 792, 795, + 791, 789, 790, 0, 869, 0, 0, 0, 0, 0, + 0, 754, 766, 0, 771, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 763, 764, + 0, 0, 0, 0, 819, 0, 765, 0, 0, 2097, + 793, 797, 0, 0, 0, 0, 300, 442, 461, 311, + 430, 474, 316, 438, 453, 306, 401, 427, 0, 0, + 302, 459, 437, 383, 360, 361, 301, 0, 421, 335, + 351, 332, 399, 794, 817, 821, 331, 892, 815, 469, + 304, 0, 468, 398, 455, 460, 384, 377, 0, 303, + 457, 382, 376, 364, 341, 893, 365, 366, 355, 410, + 374, 411, 356, 388, 387, 389, 0, 0, 0, 0, + 0, 497, 498, 0, 0, 646, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 628, 812, 0, + 632, 0, 471, 0, 0, 876, 0, 0, 0, 441, + 0, 0, 367, 0, 0, 0, 816, 0, 424, 404, + 889, 0, 0, 422, 372, 456, 412, 462, 443, 470, + 418, 413, 294, 444, 334, 385, 307, 309, 329, 336, + 338, 342, 343, 394, 395, 407, 429, 446, 447, 448, + 333, 317, 423, 318, 353, 319, 295, 325, 323, 326, + 431, 327, 297, 408, 452, 0, 348, 419, 380, 298, + 379, 409, 451, 450, 308, 478, 484, 485, 574, 0, + 490, 661, 662, 663, 499, 0, 414, 504, 505, 506, + 508, 509, 510, 511, 575, 592, 559, 529, 492, 583, + 526, 530, 531, 358, 595, 0, 0, 0, 483, 368, + 369, 0, 340, 339, 381, 417, 299, 346, 291, 292, + 656, 873, 400, 597, 630, 631, 522, 0, 888, 868, + 870, 871, 875, 879, 880, 881, 882, 883, 885, 887, + 891, 655, 0, 576, 591, 659, 590, 652, 406, 0, + 428, 588, 535, 0, 580, 554, 0, 581, 550, 585, + 0, 524, 0, 436, 464, 476, 493, 496, 525, 610, + 611, 612, 296, 495, 614, 615, 616, 617, 618, 619, + 620, 613, 890, 557, 534, 560, 475, 537, 536, 0, + 0, 571, 820, 572, 573, 390, 391, 392, 393, 877, + 598, 315, 494, 416, 0, 558, 0, 0, 0, 0, + 0, 0, 0, 0, 563, 564, 561, 664, 0, 621, + 622, 0, 0, 488, 489, 345, 352, 507, 354, 314, + 405, 347, 473, 362, 0, 500, 565, 501, 624, 627, + 625, 626, 397, 357, 359, 432, 363, 373, 420, 472, + 403, 425, 312, 463, 434, 378, 551, 578, 899, 872, + 898, 900, 901, 897, 902, 903, 884, 775, 0, 827, + 895, 894, 896, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 606, 605, 604, 603, 602, 601, + 600, 599, 0, 0, 548, 449, 324, 285, 320, 321, + 328, 653, 650, 454, 654, 782, 293, 528, 371, 0, + 415, 344, 593, 594, 0, 645, 861, 834, 835, 836, + 772, 837, 831, 832, 773, 833, 862, 825, 858, 859, + 801, 828, 838, 857, 839, 860, 863, 864, 904, 905, + 845, 829, 257, 906, 842, 865, 856, 855, 840, 826, + 866, 867, 808, 803, 843, 844, 830, 849, 850, 851, + 774, 822, 823, 824, 846, 847, 804, 805, 806, 807, + 0, 0, 0, 479, 480, 481, 503, 0, 465, 527, + 651, 0, 0, 0, 0, 0, 0, 0, 577, 589, + 623, 0, 633, 634, 636, 638, 852, 640, 439, 440, + 0, 848, 643, 644, 641, 375, 426, 445, 433, 0, + 657, 518, 519, 658, 629, 0, 767, 206, 818, 0, + 0, 0, 0, 0, 0, 0, 0, 402, 0, 0, + 533, 566, 555, 639, 521, 0, 0, 0, 0, 0, + 0, 770, 0, 0, 0, 337, 0, 0, 370, 570, + 552, 562, 553, 538, 539, 540, 547, 349, 541, 542, + 543, 513, 544, 514, 545, 546, 1296, 569, 520, 435, + 386, 587, 586, 0, 0, 878, 886, 0, 0, 0, + 0, 0, 0, 0, 0, 874, 0, 0, 0, 0, + 762, 0, 0, 799, 854, 853, 786, 796, 0, 0, + 310, 229, 515, 635, 517, 516, 787, 0, 788, 792, + 795, 791, 789, 790, 0, 869, 0, 0, 0, 0, + 0, 0, 754, 766, 0, 771, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 763, + 764, 0, 0, 0, 0, 819, 0, 765, 0, 0, + 814, 793, 797, 0, 0, 0, 0, 300, 442, 461, + 311, 430, 474, 316, 438, 453, 306, 401, 427, 0, + 0, 302, 459, 437, 383, 360, 361, 301, 0, 421, + 335, 351, 332, 399, 794, 817, 821, 331, 892, 815, + 469, 304, 0, 468, 398, 455, 460, 384, 377, 0, + 303, 457, 382, 376, 364, 341, 893, 365, 366, 355, + 410, 374, 411, 356, 388, 387, 389, 0, 0, 0, + 0, 0, 497, 498, 0, 0, 646, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 628, 812, + 0, 632, 0, 471, 0, 0, 876, 0, 0, 0, + 441, 0, 0, 367, 0, 0, 0, 816, 0, 424, + 404, 889, 0, 0, 422, 372, 456, 412, 462, 443, + 470, 418, 413, 294, 444, 334, 385, 307, 309, 329, + 336, 338, 342, 343, 394, 395, 407, 429, 446, 447, + 448, 333, 317, 423, 318, 353, 319, 295, 325, 323, + 326, 431, 327, 297, 408, 452, 0, 348, 419, 380, + 298, 379, 409, 451, 450, 308, 478, 484, 485, 574, + 0, 490, 661, 662, 663, 499, 0, 414, 504, 505, + 506, 508, 509, 510, 511, 575, 592, 559, 529, 492, + 583, 526, 530, 531, 358, 595, 0, 0, 0, 483, + 368, 369, 0, 340, 339, 381, 417, 299, 346, 291, + 292, 656, 873, 400, 597, 630, 631, 522, 0, 888, + 868, 870, 871, 875, 879, 880, 881, 882, 883, 885, + 887, 891, 655, 0, 576, 591, 659, 590, 652, 406, + 0, 428, 588, 535, 0, 580, 554, 0, 581, 550, + 585, 0, 524, 0, 436, 464, 476, 493, 496, 525, + 610, 611, 612, 296, 495, 614, 615, 616, 617, 618, + 619, 620, 613, 890, 557, 534, 560, 475, 537, 536, + 0, 0, 571, 820, 572, 573, 390, 391, 392, 393, + 877, 598, 315, 494, 416, 0, 558, 0, 0, 0, + 0, 0, 0, 0, 0, 563, 564, 561, 664, 0, + 621, 622, 0, 0, 488, 489, 345, 352, 507, 354, + 314, 405, 347, 473, 362, 0, 500, 565, 501, 624, + 627, 625, 626, 397, 357, 359, 432, 363, 373, 420, + 472, 403, 425, 312, 463, 434, 378, 551, 578, 899, + 872, 898, 900, 901, 897, 902, 903, 884, 775, 0, + 827, 895, 894, 896, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 606, 605, 604, 603, 602, + 601, 600, 599, 0, 0, 548, 449, 324, 285, 320, + 321, 328, 653, 650, 454, 654, 782, 293, 528, 371, + 169, 415, 344, 593, 594, 0, 645, 861, 834, 835, + 836, 772, 837, 831, 832, 773, 833, 862, 825, 858, + 859, 801, 828, 838, 857, 839, 860, 863, 864, 904, + 905, 845, 829, 257, 906, 842, 865, 856, 855, 840, + 826, 866, 867, 808, 803, 843, 844, 830, 849, 850, + 851, 774, 822, 823, 824, 846, 847, 804, 805, 806, + 807, 0, 0, 0, 479, 480, 481, 503, 0, 465, + 527, 651, 0, 0, 0, 0, 0, 0, 0, 577, + 589, 623, 0, 633, 634, 636, 638, 852, 640, 439, + 440, 0, 848, 643, 644, 641, 375, 426, 445, 433, + 818, 657, 518, 519, 658, 629, 0, 767, 0, 402, + 0, 0, 533, 566, 555, 639, 521, 0, 0, 0, + 0, 0, 0, 770, 0, 0, 0, 337, 4121, 0, + 370, 570, 552, 562, 553, 538, 539, 540, 547, 349, + 541, 542, 543, 513, 544, 514, 545, 546, 809, 569, + 520, 435, 386, 587, 586, 0, 0, 878, 886, 0, + 0, 0, 0, 0, 0, 0, 0, 874, 0, 0, + 0, 0, 762, 0, 0, 799, 854, 853, 786, 796, + 0, 0, 310, 229, 515, 635, 517, 516, 787, 0, + 788, 792, 795, 791, 789, 790, 0, 869, 0, 0, + 0, 0, 0, 0, 754, 766, 0, 771, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 763, 764, 0, 0, 0, 0, 819, 0, 765, + 0, 0, 814, 793, 797, 0, 0, 0, 0, 300, + 442, 461, 311, 430, 474, 316, 438, 453, 306, 401, + 427, 0, 0, 302, 459, 437, 383, 360, 361, 301, + 0, 421, 335, 351, 332, 399, 794, 817, 821, 331, + 892, 815, 469, 304, 0, 468, 398, 455, 460, 384, + 377, 0, 303, 457, 382, 376, 364, 341, 893, 365, + 366, 355, 410, 374, 411, 356, 388, 387, 389, 0, + 0, 0, 0, 0, 497, 498, 0, 0, 646, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 628, 812, 0, 632, 0, 471, 0, 0, 876, 0, + 0, 0, 441, 0, 0, 367, 0, 0, 0, 816, + 0, 424, 404, 889, 0, 0, 422, 372, 456, 412, + 462, 443, 470, 418, 413, 294, 444, 334, 385, 307, + 309, 329, 336, 338, 342, 343, 394, 395, 407, 429, + 446, 447, 448, 333, 317, 423, 318, 353, 319, 295, + 325, 323, 326, 431, 327, 297, 408, 452, 0, 348, + 419, 380, 298, 379, 409, 451, 450, 308, 478, 484, + 485, 574, 0, 490, 661, 662, 663, 499, 0, 414, + 504, 505, 506, 508, 509, 510, 511, 575, 592, 559, + 529, 492, 583, 526, 530, 531, 358, 595, 0, 0, + 0, 483, 368, 369, 0, 340, 339, 381, 417, 299, + 346, 291, 292, 656, 873, 400, 597, 630, 631, 522, + 0, 888, 868, 870, 871, 875, 879, 880, 881, 882, + 883, 885, 887, 891, 655, 0, 576, 591, 659, 590, + 652, 406, 0, 428, 588, 535, 0, 580, 554, 0, + 581, 550, 585, 0, 524, 0, 436, 464, 476, 493, + 496, 525, 610, 611, 612, 296, 495, 614, 615, 616, + 617, 618, 619, 620, 613, 890, 557, 534, 560, 475, + 537, 536, 0, 0, 571, 820, 572, 573, 390, 391, + 392, 393, 877, 598, 315, 494, 416, 0, 558, 0, + 0, 0, 0, 0, 0, 0, 0, 563, 564, 561, + 664, 0, 621, 622, 0, 0, 488, 489, 345, 352, + 507, 354, 314, 405, 347, 473, 362, 0, 500, 565, + 501, 624, 627, 625, 626, 397, 357, 359, 432, 363, + 373, 420, 472, 403, 425, 312, 463, 434, 378, 551, + 578, 899, 872, 898, 900, 901, 897, 902, 903, 884, + 775, 0, 827, 895, 894, 896, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 606, 605, 604, + 603, 602, 601, 600, 599, 0, 0, 548, 449, 324, + 285, 320, 321, 328, 653, 650, 454, 654, 782, 293, + 528, 371, 0, 415, 344, 593, 594, 0, 645, 861, + 834, 835, 836, 772, 837, 831, 832, 773, 833, 862, + 825, 858, 859, 801, 828, 838, 857, 839, 860, 863, + 864, 904, 905, 845, 829, 257, 906, 842, 865, 856, + 855, 840, 826, 866, 867, 808, 803, 843, 844, 830, + 849, 850, 851, 774, 822, 823, 824, 846, 847, 804, + 805, 806, 807, 0, 0, 0, 479, 480, 481, 503, + 0, 465, 527, 651, 0, 0, 0, 0, 0, 0, + 0, 577, 589, 623, 0, 633, 634, 636, 638, 852, + 640, 439, 440, 0, 848, 643, 644, 641, 375, 426, + 445, 433, 818, 657, 518, 519, 658, 629, 0, 767, + 0, 402, 0, 0, 533, 566, 555, 639, 521, 0, + 0, 0, 0, 0, 0, 770, 0, 0, 0, 337, + 0, 0, 370, 570, 552, 562, 553, 538, 539, 540, + 547, 349, 541, 542, 543, 513, 544, 514, 545, 546, + 809, 569, 520, 435, 386, 587, 586, 0, 0, 878, + 886, 0, 0, 0, 0, 0, 0, 0, 0, 874, + 0, 0, 0, 0, 762, 0, 0, 799, 854, 853, + 786, 796, 0, 0, 310, 229, 515, 635, 517, 516, + 787, 0, 788, 792, 795, 791, 789, 790, 0, 869, + 0, 0, 0, 0, 0, 0, 754, 766, 0, 771, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 763, 764, 0, 0, 0, 0, 819, + 0, 765, 0, 0, 814, 793, 797, 0, 0, 0, + 0, 300, 442, 461, 311, 430, 474, 316, 438, 453, + 306, 401, 427, 0, 0, 302, 459, 437, 383, 360, + 361, 301, 0, 421, 335, 351, 332, 399, 794, 817, + 821, 331, 892, 815, 469, 304, 0, 468, 398, 455, + 460, 384, 377, 0, 303, 457, 382, 376, 364, 341, + 893, 365, 366, 355, 410, 374, 411, 356, 388, 387, + 389, 0, 0, 0, 0, 0, 497, 498, 0, 0, + 646, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 628, 812, 0, 632, 0, 471, 0, 0, + 876, 0, 0, 0, 441, 0, 0, 367, 0, 0, + 0, 816, 0, 424, 404, 889, 3999, 0, 422, 372, + 456, 412, 462, 443, 470, 418, 413, 294, 444, 334, + 385, 307, 309, 329, 336, 338, 342, 343, 394, 395, + 407, 429, 446, 447, 448, 333, 317, 423, 318, 353, + 319, 295, 325, 323, 326, 431, 327, 297, 408, 452, + 0, 348, 419, 380, 298, 379, 409, 451, 450, 308, + 478, 484, 485, 574, 0, 490, 661, 662, 663, 499, + 0, 414, 504, 505, 506, 508, 509, 510, 511, 575, + 592, 559, 529, 492, 583, 526, 530, 531, 358, 595, + 0, 0, 0, 483, 368, 369, 0, 340, 339, 381, + 417, 299, 346, 291, 292, 656, 873, 400, 597, 630, + 631, 522, 0, 888, 868, 870, 871, 875, 879, 880, + 881, 882, 883, 885, 887, 891, 655, 0, 576, 591, + 659, 590, 652, 406, 0, 428, 588, 535, 0, 580, + 554, 0, 581, 550, 585, 0, 524, 0, 436, 464, + 476, 493, 496, 525, 610, 611, 612, 296, 495, 614, + 615, 616, 617, 618, 619, 620, 613, 890, 557, 534, + 560, 475, 537, 536, 0, 0, 571, 820, 572, 573, + 390, 391, 392, 393, 877, 598, 315, 494, 416, 0, + 558, 0, 0, 0, 0, 0, 0, 0, 0, 563, + 564, 561, 664, 0, 621, 622, 0, 0, 488, 489, + 345, 352, 507, 354, 314, 405, 347, 473, 362, 0, + 500, 565, 501, 624, 627, 625, 626, 397, 357, 359, + 432, 363, 373, 420, 472, 403, 425, 312, 463, 434, + 378, 551, 578, 899, 872, 898, 900, 901, 897, 902, + 903, 884, 775, 0, 827, 895, 894, 896, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 606, + 605, 604, 603, 602, 601, 600, 599, 0, 0, 548, + 449, 324, 285, 320, 321, 328, 653, 650, 454, 654, + 782, 293, 528, 371, 0, 415, 344, 593, 594, 0, + 645, 861, 834, 835, 836, 772, 837, 831, 832, 773, + 833, 862, 825, 858, 859, 801, 828, 838, 857, 839, + 860, 863, 864, 904, 905, 845, 829, 257, 906, 842, + 865, 856, 855, 840, 826, 866, 867, 808, 803, 843, + 844, 830, 849, 850, 851, 774, 822, 823, 824, 846, + 847, 804, 805, 806, 807, 0, 0, 0, 479, 480, + 481, 503, 0, 465, 527, 651, 0, 0, 0, 0, + 0, 0, 0, 577, 589, 623, 0, 633, 634, 636, + 638, 852, 640, 439, 440, 0, 848, 643, 644, 641, + 375, 426, 445, 433, 818, 657, 518, 519, 658, 629, + 0, 767, 0, 402, 0, 0, 533, 566, 555, 639, + 521, 0, 0, 0, 0, 0, 0, 770, 0, 0, + 0, 337, 1877, 0, 370, 570, 552, 562, 553, 538, + 539, 540, 547, 349, 541, 542, 543, 513, 544, 514, + 545, 546, 809, 569, 520, 435, 386, 587, 586, 0, + 0, 878, 886, 0, 0, 0, 0, 0, 0, 0, + 0, 874, 0, 0, 0, 0, 762, 0, 0, 799, + 854, 853, 786, 796, 0, 0, 310, 229, 515, 635, + 517, 516, 787, 0, 788, 792, 795, 791, 789, 790, + 0, 869, 0, 0, 0, 0, 0, 0, 754, 766, + 0, 771, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 763, 764, 0, 0, 0, + 0, 819, 0, 765, 0, 0, 814, 793, 797, 0, + 0, 0, 0, 300, 442, 461, 311, 430, 474, 316, + 438, 453, 306, 401, 427, 0, 0, 302, 459, 437, + 383, 360, 361, 301, 0, 421, 335, 351, 332, 399, + 794, 817, 821, 331, 892, 815, 469, 304, 0, 468, + 398, 455, 460, 384, 377, 0, 303, 457, 382, 376, + 364, 341, 893, 365, 366, 355, 410, 374, 411, 356, + 388, 387, 389, 0, 0, 0, 0, 0, 497, 498, + 0, 0, 646, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 628, 812, 0, 632, 0, 471, + 0, 0, 876, 0, 0, 0, 441, 0, 0, 367, + 0, 0, 0, 816, 0, 424, 404, 889, 0, 0, + 422, 372, 456, 412, 462, 443, 470, 418, 413, 294, + 444, 334, 385, 307, 309, 329, 336, 338, 342, 343, + 394, 395, 407, 429, 446, 447, 448, 333, 317, 423, + 318, 353, 319, 295, 325, 323, 326, 431, 327, 297, + 408, 452, 0, 348, 419, 380, 298, 379, 409, 451, + 450, 308, 478, 484, 485, 574, 0, 490, 661, 662, + 663, 499, 0, 414, 504, 505, 506, 508, 509, 510, + 511, 575, 592, 559, 529, 492, 583, 526, 530, 531, + 358, 595, 0, 0, 0, 483, 368, 369, 0, 340, + 339, 381, 417, 299, 346, 291, 292, 656, 873, 400, + 597, 630, 631, 522, 0, 888, 868, 870, 871, 875, + 879, 880, 881, 882, 883, 885, 887, 891, 655, 0, + 576, 591, 659, 590, 652, 406, 0, 428, 588, 535, + 0, 580, 554, 0, 581, 550, 585, 0, 524, 0, + 436, 464, 476, 493, 496, 525, 610, 611, 612, 296, + 495, 614, 615, 616, 617, 618, 619, 620, 613, 890, + 557, 534, 560, 475, 537, 536, 0, 0, 571, 820, + 572, 573, 390, 391, 392, 393, 877, 598, 315, 494, + 416, 0, 558, 0, 0, 0, 0, 0, 0, 0, + 0, 563, 564, 561, 664, 0, 621, 622, 0, 0, + 488, 489, 345, 352, 507, 354, 314, 405, 347, 473, + 362, 0, 500, 565, 501, 624, 627, 625, 626, 397, + 357, 359, 432, 363, 373, 420, 472, 403, 425, 312, + 463, 434, 378, 551, 578, 899, 872, 898, 900, 901, + 897, 902, 903, 884, 775, 0, 827, 895, 894, 896, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 606, 605, 604, 603, 602, 601, 600, 599, 0, + 0, 548, 449, 324, 285, 320, 321, 328, 653, 650, + 454, 654, 782, 293, 528, 371, 0, 415, 344, 593, + 594, 0, 645, 861, 834, 835, 836, 772, 837, 831, + 832, 773, 833, 862, 825, 858, 859, 801, 828, 838, + 857, 839, 860, 863, 864, 904, 905, 845, 829, 257, + 906, 842, 865, 856, 855, 840, 826, 866, 867, 808, + 803, 843, 844, 830, 849, 850, 851, 774, 822, 823, + 824, 846, 847, 804, 805, 806, 807, 0, 0, 0, + 479, 480, 481, 503, 0, 465, 527, 651, 0, 0, + 0, 0, 0, 0, 0, 577, 589, 623, 0, 633, + 634, 636, 638, 852, 640, 439, 440, 0, 848, 643, + 644, 641, 375, 426, 445, 433, 818, 657, 518, 519, + 658, 629, 0, 767, 0, 402, 0, 0, 533, 566, + 555, 639, 521, 0, 0, 0, 0, 0, 0, 770, + 0, 0, 0, 337, 0, 0, 370, 570, 552, 562, + 553, 538, 539, 540, 547, 349, 541, 542, 543, 513, + 544, 514, 545, 546, 809, 569, 520, 435, 386, 587, + 586, 0, 0, 878, 886, 0, 0, 0, 0, 0, + 0, 0, 0, 874, 0, 0, 0, 0, 762, 0, + 0, 799, 854, 853, 786, 796, 0, 0, 310, 229, + 515, 635, 517, 516, 787, 0, 788, 792, 795, 791, + 789, 790, 0, 869, 0, 0, 0, 0, 0, 0, + 754, 766, 0, 771, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 763, 764, 1591, + 0, 0, 0, 819, 0, 765, 0, 0, 814, 793, + 797, 0, 0, 0, 0, 300, 442, 461, 311, 430, + 474, 316, 438, 453, 306, 401, 427, 0, 0, 302, + 459, 437, 383, 360, 361, 301, 0, 421, 335, 351, + 332, 399, 794, 817, 821, 331, 892, 815, 469, 304, + 0, 468, 398, 455, 460, 384, 377, 0, 303, 457, + 382, 376, 364, 341, 893, 365, 366, 355, 410, 374, + 411, 356, 388, 387, 389, 0, 0, 0, 0, 0, + 497, 498, 0, 0, 646, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 628, 812, 0, 632, + 0, 471, 0, 0, 876, 0, 0, 0, 441, 0, + 0, 367, 0, 0, 0, 816, 0, 424, 404, 889, + 0, 0, 422, 372, 456, 412, 462, 443, 470, 418, + 413, 294, 444, 334, 385, 307, 309, 329, 336, 338, + 342, 343, 394, 395, 407, 429, 446, 447, 448, 333, + 317, 423, 318, 353, 319, 295, 325, 323, 326, 431, + 327, 297, 408, 452, 0, 348, 419, 380, 298, 379, + 409, 451, 450, 308, 478, 484, 485, 574, 0, 490, + 661, 662, 663, 499, 0, 414, 504, 505, 506, 508, + 509, 510, 511, 575, 592, 559, 529, 492, 583, 526, + 530, 531, 358, 595, 0, 0, 0, 483, 368, 369, + 0, 340, 339, 381, 417, 299, 346, 291, 292, 656, + 873, 400, 597, 630, 631, 522, 0, 888, 868, 870, + 871, 875, 879, 880, 881, 882, 883, 885, 887, 891, + 655, 0, 576, 591, 659, 590, 652, 406, 0, 428, + 588, 535, 0, 580, 554, 0, 581, 550, 585, 0, + 524, 0, 436, 464, 476, 493, 496, 525, 610, 611, + 612, 296, 495, 614, 615, 616, 617, 618, 619, 620, + 613, 890, 557, 534, 560, 475, 537, 536, 0, 0, + 571, 820, 572, 573, 390, 391, 392, 393, 877, 598, + 315, 494, 416, 0, 558, 0, 0, 0, 0, 0, + 0, 0, 0, 563, 564, 561, 664, 0, 621, 622, + 0, 0, 488, 489, 345, 352, 507, 354, 314, 405, + 347, 473, 362, 0, 500, 565, 501, 624, 627, 625, + 626, 397, 357, 359, 432, 363, 373, 420, 472, 403, + 425, 312, 463, 434, 378, 551, 578, 899, 872, 898, + 900, 901, 897, 902, 903, 884, 775, 0, 827, 895, + 894, 896, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 606, 605, 604, 603, 602, 601, 600, + 599, 0, 0, 548, 449, 324, 285, 320, 321, 328, + 653, 650, 454, 654, 782, 293, 528, 371, 0, 415, + 344, 593, 594, 0, 645, 861, 834, 835, 836, 772, + 837, 831, 832, 773, 833, 862, 825, 858, 859, 801, + 828, 838, 857, 839, 860, 863, 864, 904, 905, 845, + 829, 257, 906, 842, 865, 856, 855, 840, 826, 866, + 867, 808, 803, 843, 844, 830, 849, 850, 851, 774, + 822, 823, 824, 846, 847, 804, 805, 806, 807, 0, + 0, 0, 479, 480, 481, 503, 0, 465, 527, 651, + 0, 0, 0, 0, 0, 0, 0, 577, 589, 623, + 0, 633, 634, 636, 638, 852, 640, 439, 440, 0, + 848, 643, 644, 641, 375, 426, 445, 433, 0, 657, + 518, 519, 658, 629, 818, 767, 0, 2269, 0, 0, + 0, 0, 0, 402, 0, 0, 533, 566, 555, 639, + 521, 0, 0, 0, 0, 0, 0, 770, 0, 0, + 0, 337, 0, 0, 370, 570, 552, 562, 553, 538, + 539, 540, 547, 349, 541, 542, 543, 513, 544, 514, + 545, 546, 809, 569, 520, 435, 386, 587, 586, 0, + 0, 878, 886, 0, 0, 0, 0, 0, 0, 0, + 0, 874, 0, 0, 0, 0, 762, 0, 0, 799, + 854, 853, 786, 796, 0, 0, 310, 229, 515, 635, + 517, 516, 787, 0, 788, 792, 795, 791, 789, 790, + 0, 869, 0, 0, 0, 0, 0, 0, 754, 766, + 0, 771, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 763, 764, 0, 0, 0, + 0, 819, 0, 765, 0, 0, 814, 793, 797, 0, + 0, 0, 0, 300, 442, 461, 311, 430, 474, 316, + 438, 453, 306, 401, 427, 0, 0, 302, 459, 437, + 383, 360, 361, 301, 0, 421, 335, 351, 332, 399, + 794, 817, 821, 331, 892, 815, 469, 304, 0, 468, + 398, 455, 460, 384, 377, 0, 303, 457, 382, 376, + 364, 341, 893, 365, 366, 355, 410, 374, 411, 356, + 388, 387, 389, 0, 0, 0, 0, 0, 497, 498, + 0, 0, 646, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 628, 812, 0, 632, 0, 471, + 0, 0, 876, 0, 0, 0, 441, 0, 0, 367, + 0, 0, 0, 816, 0, 424, 404, 889, 0, 0, + 422, 372, 456, 412, 462, 443, 470, 418, 413, 294, + 444, 334, 385, 307, 309, 329, 336, 338, 342, 343, + 394, 395, 407, 429, 446, 447, 448, 333, 317, 423, + 318, 353, 319, 295, 325, 323, 326, 431, 327, 297, + 408, 452, 0, 348, 419, 380, 298, 379, 409, 451, + 450, 308, 478, 484, 485, 574, 0, 490, 661, 662, + 663, 499, 0, 414, 504, 505, 506, 508, 509, 510, + 511, 575, 592, 559, 529, 492, 583, 526, 530, 531, + 358, 595, 0, 0, 0, 483, 368, 369, 0, 340, + 339, 381, 417, 299, 346, 291, 292, 656, 873, 400, + 597, 630, 631, 522, 0, 888, 868, 870, 871, 875, + 879, 880, 881, 882, 883, 885, 887, 891, 655, 0, + 576, 591, 659, 590, 652, 406, 0, 428, 588, 535, + 0, 580, 554, 0, 581, 550, 585, 0, 524, 0, + 436, 464, 476, 493, 496, 525, 610, 611, 612, 296, + 495, 614, 615, 616, 617, 618, 619, 620, 613, 890, + 557, 534, 560, 475, 537, 536, 0, 0, 571, 820, + 572, 573, 390, 391, 392, 393, 877, 598, 315, 494, + 416, 0, 558, 0, 0, 0, 0, 0, 0, 0, + 0, 563, 564, 561, 664, 0, 621, 622, 0, 0, + 488, 489, 345, 352, 507, 354, 314, 405, 347, 473, + 362, 0, 500, 565, 501, 624, 627, 625, 626, 397, + 357, 359, 432, 363, 373, 420, 472, 403, 425, 312, + 463, 434, 378, 551, 578, 899, 872, 898, 900, 901, + 897, 902, 903, 884, 775, 0, 827, 895, 894, 896, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 606, 605, 604, 603, 602, 601, 600, 599, 0, + 0, 548, 449, 324, 285, 320, 321, 328, 653, 650, + 454, 654, 782, 293, 528, 371, 0, 415, 344, 593, + 594, 0, 645, 861, 834, 835, 836, 772, 837, 831, + 832, 773, 833, 862, 825, 858, 859, 801, 828, 838, + 857, 839, 860, 863, 864, 904, 905, 845, 829, 257, + 906, 842, 865, 856, 855, 840, 826, 866, 867, 808, + 803, 843, 844, 830, 849, 850, 851, 774, 822, 823, + 824, 846, 847, 804, 805, 806, 807, 0, 0, 0, + 479, 480, 481, 503, 0, 465, 527, 651, 0, 0, + 0, 0, 0, 0, 0, 577, 589, 623, 0, 633, + 634, 636, 638, 852, 640, 439, 440, 0, 848, 643, + 644, 641, 375, 426, 445, 433, 818, 657, 518, 519, + 658, 629, 0, 767, 0, 402, 0, 0, 533, 566, + 555, 639, 521, 0, 0, 0, 0, 0, 0, 770, + 0, 0, 0, 337, 0, 0, 370, 570, 552, 562, + 553, 538, 539, 540, 547, 349, 541, 542, 543, 513, + 544, 514, 545, 546, 809, 569, 520, 435, 386, 587, + 586, 0, 0, 878, 886, 0, 0, 0, 0, 0, + 0, 0, 0, 874, 0, 0, 0, 0, 762, 0, + 0, 799, 854, 853, 786, 796, 0, 0, 310, 229, + 515, 635, 517, 516, 787, 0, 788, 792, 795, 791, + 789, 790, 0, 869, 0, 0, 0, 0, 0, 0, + 754, 766, 0, 771, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 763, 764, 1870, + 0, 0, 0, 819, 0, 765, 0, 0, 814, 793, + 797, 0, 0, 0, 0, 300, 442, 461, 311, 430, + 474, 316, 438, 453, 306, 401, 427, 0, 0, 302, + 459, 437, 383, 360, 361, 301, 0, 421, 335, 351, + 332, 399, 794, 817, 821, 331, 892, 815, 469, 304, + 0, 468, 398, 455, 460, 384, 377, 0, 303, 457, + 382, 376, 364, 341, 893, 365, 366, 355, 410, 374, + 411, 356, 388, 387, 389, 0, 0, 0, 0, 0, + 497, 498, 0, 0, 646, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 628, 812, 0, 632, + 0, 471, 0, 0, 876, 0, 0, 0, 441, 0, + 0, 367, 0, 0, 0, 816, 0, 424, 404, 889, + 0, 0, 422, 372, 456, 412, 462, 443, 470, 418, + 413, 294, 444, 334, 385, 307, 309, 329, 336, 338, + 342, 343, 394, 395, 407, 429, 446, 447, 448, 333, + 317, 423, 318, 353, 319, 295, 325, 323, 326, 431, + 327, 297, 408, 452, 0, 348, 419, 380, 298, 379, + 409, 451, 450, 308, 478, 484, 485, 574, 0, 490, + 661, 662, 663, 499, 0, 414, 504, 505, 506, 508, + 509, 510, 511, 575, 592, 559, 529, 492, 583, 526, + 530, 531, 358, 595, 0, 0, 0, 483, 368, 369, + 0, 340, 339, 381, 417, 299, 346, 291, 292, 656, + 873, 400, 597, 630, 631, 522, 0, 888, 868, 870, + 871, 875, 879, 880, 881, 882, 883, 885, 887, 891, + 655, 0, 576, 591, 659, 590, 652, 406, 0, 428, + 588, 535, 0, 580, 554, 0, 581, 550, 585, 0, + 524, 0, 436, 464, 476, 493, 496, 525, 610, 611, + 612, 296, 495, 614, 615, 616, 617, 618, 619, 620, + 613, 890, 557, 534, 560, 475, 537, 536, 0, 0, + 571, 820, 572, 573, 390, 391, 392, 393, 877, 598, + 315, 494, 416, 0, 558, 0, 0, 0, 0, 0, + 0, 0, 0, 563, 564, 561, 664, 0, 621, 622, + 0, 0, 488, 489, 345, 352, 507, 354, 314, 405, + 347, 473, 362, 0, 500, 565, 501, 624, 627, 625, + 626, 397, 357, 359, 432, 363, 373, 420, 472, 403, + 425, 312, 463, 434, 378, 551, 578, 899, 872, 898, + 900, 901, 897, 902, 903, 884, 775, 0, 827, 895, + 894, 896, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 606, 605, 604, 603, 602, 601, 600, + 599, 0, 0, 548, 449, 324, 285, 320, 321, 328, + 653, 650, 454, 654, 782, 293, 528, 371, 0, 415, + 344, 593, 594, 0, 645, 861, 834, 835, 836, 772, + 837, 831, 832, 773, 833, 862, 825, 858, 859, 801, + 828, 838, 857, 839, 860, 863, 864, 904, 905, 845, + 829, 257, 906, 842, 865, 856, 855, 840, 826, 866, + 867, 808, 803, 843, 844, 830, 849, 850, 851, 774, + 822, 823, 824, 846, 847, 804, 805, 806, 807, 0, + 0, 0, 479, 480, 481, 503, 0, 465, 527, 651, + 0, 0, 0, 0, 0, 0, 0, 577, 589, 623, + 0, 633, 634, 636, 638, 852, 640, 439, 440, 0, + 848, 643, 644, 641, 375, 426, 445, 433, 818, 657, + 518, 519, 658, 629, 0, 767, 0, 402, 0, 0, + 533, 566, 555, 639, 521, 0, 0, 0, 0, 0, + 0, 770, 0, 0, 0, 337, 0, 0, 370, 570, + 552, 562, 553, 538, 539, 540, 547, 349, 541, 542, + 543, 513, 544, 514, 545, 546, 809, 569, 520, 435, + 386, 587, 586, 0, 0, 878, 886, 0, 0, 0, + 0, 0, 0, 0, 0, 874, 0, 0, 0, 0, + 762, 0, 0, 799, 854, 853, 786, 796, 0, 0, + 310, 229, 515, 635, 517, 516, 787, 0, 788, 792, + 795, 791, 789, 790, 0, 869, 0, 0, 0, 0, + 0, 0, 754, 766, 0, 771, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 763, + 764, 0, 0, 0, 0, 819, 0, 765, 0, 0, + 814, 793, 797, 0, 0, 0, 0, 300, 442, 461, + 311, 430, 474, 316, 438, 453, 306, 401, 427, 0, + 0, 302, 459, 437, 383, 360, 361, 301, 0, 421, + 335, 351, 332, 399, 794, 817, 821, 331, 892, 815, + 469, 304, 0, 468, 398, 455, 460, 384, 377, 0, + 303, 457, 382, 376, 364, 341, 893, 365, 366, 355, + 410, 374, 411, 356, 388, 387, 389, 0, 0, 0, + 0, 0, 497, 498, 0, 0, 646, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 628, 812, + 0, 632, 0, 471, 0, 0, 876, 0, 0, 0, + 441, 0, 0, 367, 0, 0, 0, 816, 0, 424, + 404, 889, 0, 0, 422, 372, 456, 412, 462, 443, + 470, 418, 413, 294, 444, 334, 385, 307, 309, 329, + 336, 338, 342, 343, 394, 395, 407, 429, 446, 447, + 448, 333, 317, 423, 318, 353, 319, 295, 325, 323, + 326, 431, 327, 297, 408, 452, 0, 348, 419, 380, + 298, 379, 409, 451, 450, 308, 478, 484, 485, 574, + 0, 490, 661, 662, 663, 499, 0, 414, 504, 505, + 506, 508, 509, 510, 511, 575, 592, 559, 529, 492, + 583, 526, 530, 531, 358, 595, 0, 0, 0, 483, + 368, 369, 0, 340, 339, 381, 417, 299, 346, 291, + 292, 656, 873, 400, 597, 630, 631, 522, 0, 888, + 868, 870, 871, 875, 879, 880, 881, 882, 883, 885, + 887, 891, 655, 0, 576, 591, 659, 590, 652, 406, + 0, 428, 588, 535, 0, 580, 554, 0, 581, 550, + 585, 0, 524, 0, 436, 464, 476, 493, 496, 525, + 610, 611, 612, 296, 495, 614, 615, 616, 617, 618, + 619, 620, 613, 890, 557, 534, 560, 475, 537, 536, + 0, 0, 571, 820, 572, 573, 390, 391, 392, 393, + 877, 598, 315, 494, 416, 0, 558, 0, 0, 0, + 0, 0, 0, 0, 0, 563, 564, 561, 664, 0, + 621, 622, 0, 0, 488, 489, 345, 352, 507, 354, + 314, 405, 347, 473, 362, 0, 500, 565, 501, 624, + 627, 625, 626, 397, 357, 359, 432, 363, 373, 420, + 472, 403, 425, 312, 463, 434, 378, 551, 578, 899, + 872, 898, 900, 901, 897, 902, 903, 884, 775, 0, + 827, 895, 894, 896, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 606, 605, 604, 603, 602, + 601, 600, 599, 0, 0, 548, 449, 324, 285, 320, + 321, 328, 653, 650, 454, 654, 782, 293, 528, 371, + 0, 415, 344, 593, 594, 0, 645, 861, 834, 835, + 836, 772, 837, 831, 832, 773, 833, 862, 825, 858, + 859, 801, 828, 838, 857, 839, 860, 863, 864, 904, + 905, 845, 829, 257, 906, 842, 865, 856, 855, 840, + 826, 866, 867, 808, 803, 843, 844, 830, 849, 850, + 851, 774, 822, 823, 824, 846, 847, 804, 805, 806, + 807, 0, 0, 0, 479, 480, 481, 503, 0, 465, + 527, 651, 0, 0, 0, 0, 0, 0, 0, 577, + 589, 623, 0, 633, 634, 636, 638, 852, 640, 439, + 440, 0, 848, 643, 644, 641, 375, 426, 445, 433, + 818, 657, 518, 519, 658, 629, 0, 767, 0, 402, + 0, 0, 533, 566, 555, 639, 521, 0, 0, 0, + 0, 0, 0, 770, 0, 0, 0, 337, 0, 0, + 370, 570, 552, 562, 553, 538, 539, 540, 547, 349, + 541, 542, 543, 513, 544, 514, 545, 546, 809, 569, + 520, 435, 386, 587, 586, 0, 0, 878, 886, 0, + 0, 0, 0, 0, 0, 0, 0, 874, 0, 0, + 0, 0, 762, 0, 0, 799, 854, 853, 786, 796, + 0, 0, 310, 229, 515, 635, 517, 516, 787, 0, + 788, 792, 795, 791, 789, 790, 0, 869, 0, 0, + 0, 0, 0, 0, 754, 766, 0, 771, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 763, 764, 0, 0, 0, 0, 819, 0, 765, + 0, 0, 814, 793, 797, 0, 0, 0, 0, 300, + 442, 461, 311, 430, 474, 316, 438, 453, 306, 401, + 427, 0, 0, 302, 459, 437, 383, 360, 361, 301, + 0, 421, 335, 351, 332, 399, 794, 817, 821, 331, + 892, 815, 469, 304, 0, 468, 398, 455, 460, 384, + 377, 0, 303, 457, 382, 376, 364, 341, 893, 365, + 366, 355, 410, 374, 411, 356, 388, 387, 389, 0, + 0, 0, 0, 0, 497, 498, 0, 0, 646, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 628, 812, 0, 632, 0, 471, 0, 0, 876, 0, + 0, 0, 441, 0, 0, 367, 0, 0, 0, 816, + 0, 424, 404, 889, 0, 0, 422, 372, 456, 412, + 462, 443, 470, 418, 413, 294, 444, 334, 385, 307, + 309, 329, 336, 338, 342, 343, 394, 395, 407, 429, + 446, 447, 448, 333, 317, 423, 318, 353, 319, 295, + 325, 323, 326, 431, 327, 297, 408, 452, 0, 348, + 419, 380, 298, 379, 409, 451, 450, 308, 478, 484, + 485, 574, 0, 490, 661, 662, 663, 499, 0, 414, + 504, 505, 506, 508, 509, 510, 511, 575, 592, 559, + 529, 492, 583, 526, 530, 531, 358, 595, 0, 0, + 0, 483, 368, 369, 0, 340, 339, 381, 417, 299, + 346, 291, 292, 656, 873, 400, 597, 630, 631, 522, + 0, 888, 868, 870, 871, 875, 879, 880, 881, 882, + 883, 885, 887, 891, 655, 0, 576, 591, 659, 590, + 652, 406, 0, 428, 588, 535, 0, 580, 554, 0, + 581, 550, 585, 0, 524, 0, 436, 464, 476, 493, + 496, 525, 610, 611, 612, 296, 495, 614, 615, 616, + 617, 618, 619, 620, 613, 890, 557, 534, 560, 475, + 537, 536, 0, 0, 571, 820, 572, 573, 390, 391, + 392, 393, 877, 598, 315, 494, 416, 0, 558, 0, + 0, 0, 0, 0, 0, 0, 0, 563, 564, 561, + 664, 0, 621, 622, 0, 0, 488, 489, 345, 352, + 507, 354, 314, 405, 347, 473, 362, 0, 500, 565, + 501, 624, 627, 625, 626, 397, 357, 359, 432, 363, + 373, 420, 472, 403, 425, 312, 463, 434, 378, 551, + 578, 899, 872, 898, 900, 901, 897, 902, 903, 884, + 775, 0, 827, 895, 894, 896, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 606, 605, 604, + 603, 602, 601, 600, 599, 0, 0, 548, 449, 324, + 285, 320, 321, 328, 653, 650, 454, 654, 782, 293, + 528, 371, 0, 415, 344, 593, 594, 0, 645, 861, + 834, 835, 836, 772, 837, 831, 832, 773, 833, 862, + 825, 858, 859, 801, 828, 838, 857, 839, 860, 863, + 864, 904, 905, 845, 829, 257, 906, 842, 865, 856, + 855, 840, 826, 866, 867, 808, 803, 843, 844, 830, + 849, 850, 851, 774, 822, 823, 824, 846, 847, 804, + 805, 806, 807, 0, 0, 0, 479, 480, 481, 503, + 0, 465, 527, 651, 0, 0, 0, 0, 0, 0, + 0, 577, 589, 623, 0, 633, 634, 636, 638, 852, + 640, 439, 440, 0, 3567, 643, 3568, 3569, 375, 426, + 445, 433, 818, 657, 518, 519, 658, 629, 0, 767, + 0, 402, 0, 0, 533, 566, 555, 639, 521, 0, + 0, 0, 0, 0, 0, 770, 0, 0, 0, 337, + 0, 0, 370, 570, 552, 562, 553, 538, 539, 540, + 547, 349, 541, 542, 543, 513, 544, 514, 545, 546, + 809, 569, 520, 435, 386, 587, 586, 0, 0, 878, + 886, 0, 0, 0, 0, 0, 0, 0, 0, 874, + 0, 0, 0, 0, 762, 0, 0, 799, 854, 853, + 786, 796, 0, 0, 310, 229, 515, 635, 517, 516, + 2749, 0, 2750, 792, 795, 791, 789, 790, 0, 869, + 0, 0, 0, 0, 0, 0, 754, 766, 0, 771, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 763, 764, 0, 0, 0, 0, 819, + 0, 765, 0, 0, 814, 793, 797, 0, 0, 0, + 0, 300, 442, 461, 311, 430, 474, 316, 438, 453, + 306, 401, 427, 0, 0, 302, 459, 437, 383, 360, + 361, 301, 0, 421, 335, 351, 332, 399, 794, 817, + 821, 331, 892, 815, 469, 304, 0, 468, 398, 455, + 460, 384, 377, 0, 303, 457, 382, 376, 364, 341, + 893, 365, 366, 355, 410, 374, 411, 356, 388, 387, + 389, 0, 0, 0, 0, 0, 497, 498, 0, 0, + 646, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 628, 812, 0, 632, 0, 471, 0, 0, + 876, 0, 0, 0, 441, 0, 0, 367, 0, 0, + 0, 816, 0, 424, 404, 889, 0, 0, 422, 372, + 456, 412, 462, 443, 470, 418, 413, 294, 444, 334, + 385, 307, 309, 329, 336, 338, 342, 343, 394, 395, + 407, 429, 446, 447, 448, 333, 317, 423, 318, 353, + 319, 295, 325, 323, 326, 431, 327, 297, 408, 452, + 0, 348, 419, 380, 298, 379, 409, 451, 450, 308, + 478, 484, 485, 574, 0, 490, 661, 662, 663, 499, + 0, 414, 504, 505, 506, 508, 509, 510, 511, 575, + 592, 559, 529, 492, 583, 526, 530, 531, 358, 595, + 0, 0, 0, 483, 368, 369, 0, 340, 339, 381, + 417, 299, 346, 291, 292, 656, 873, 400, 597, 630, + 631, 522, 0, 888, 868, 870, 871, 875, 879, 880, + 881, 882, 883, 885, 887, 891, 655, 0, 576, 591, + 659, 590, 652, 406, 0, 428, 588, 535, 0, 580, + 554, 0, 581, 550, 585, 0, 524, 0, 436, 464, + 476, 493, 496, 525, 610, 611, 612, 296, 495, 614, + 615, 616, 617, 618, 619, 620, 613, 890, 557, 534, + 560, 475, 537, 536, 0, 0, 571, 820, 572, 573, + 390, 391, 392, 393, 877, 598, 315, 494, 416, 0, + 558, 0, 0, 0, 0, 0, 0, 0, 0, 563, + 564, 561, 664, 0, 621, 622, 0, 0, 488, 489, + 345, 352, 507, 354, 314, 405, 347, 473, 362, 0, + 500, 565, 501, 624, 627, 625, 626, 397, 357, 359, + 432, 363, 373, 420, 472, 403, 425, 312, 463, 434, + 378, 551, 578, 899, 872, 898, 900, 901, 897, 902, + 903, 884, 775, 0, 827, 895, 894, 896, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 606, + 605, 604, 603, 602, 601, 600, 599, 0, 0, 548, + 449, 324, 285, 320, 321, 328, 653, 650, 454, 654, + 782, 293, 528, 371, 0, 415, 344, 593, 594, 0, + 645, 861, 834, 835, 836, 772, 837, 831, 832, 773, + 833, 862, 825, 858, 859, 801, 828, 838, 857, 839, + 860, 863, 864, 904, 905, 845, 829, 257, 906, 842, + 865, 856, 855, 840, 826, 866, 867, 808, 803, 843, + 844, 830, 849, 850, 851, 774, 822, 823, 824, 846, + 847, 804, 805, 806, 807, 0, 0, 0, 479, 480, + 481, 503, 0, 465, 527, 651, 0, 0, 0, 0, + 0, 0, 0, 577, 589, 623, 0, 633, 634, 636, + 638, 852, 640, 439, 440, 0, 848, 643, 644, 641, + 375, 426, 445, 433, 818, 657, 518, 519, 658, 629, + 0, 767, 0, 402, 0, 0, 533, 566, 555, 639, + 521, 0, 0, 1735, 0, 0, 0, 770, 0, 0, + 0, 337, 0, 0, 370, 570, 552, 562, 553, 538, + 539, 540, 547, 349, 541, 542, 543, 513, 544, 514, + 545, 546, 809, 569, 520, 435, 386, 587, 586, 0, + 0, 878, 886, 0, 0, 0, 0, 0, 0, 0, + 0, 874, 0, 0, 0, 0, 762, 0, 0, 799, + 854, 853, 786, 796, 0, 0, 310, 229, 515, 635, + 517, 516, 787, 0, 788, 792, 795, 791, 789, 790, + 0, 869, 0, 0, 0, 0, 0, 0, 0, 766, + 0, 771, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 763, 764, 0, 0, 0, + 0, 819, 0, 765, 0, 0, 814, 793, 797, 0, + 0, 0, 0, 300, 442, 461, 311, 430, 474, 316, + 438, 453, 306, 401, 427, 0, 0, 302, 459, 437, + 383, 360, 361, 301, 0, 421, 335, 351, 332, 399, + 794, 817, 821, 331, 892, 815, 469, 304, 0, 468, + 398, 455, 460, 384, 377, 0, 303, 457, 382, 376, + 364, 341, 893, 365, 366, 355, 410, 374, 411, 356, + 388, 387, 389, 0, 0, 0, 0, 0, 497, 498, + 0, 0, 646, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 628, 812, 0, 632, 0, 471, + 0, 0, 876, 0, 0, 0, 441, 0, 0, 367, + 0, 0, 0, 816, 0, 424, 404, 889, 0, 0, + 422, 372, 456, 412, 462, 443, 470, 418, 413, 294, + 444, 334, 385, 307, 309, 329, 336, 338, 342, 343, + 394, 395, 407, 429, 446, 447, 448, 333, 317, 423, + 318, 353, 319, 295, 325, 323, 326, 431, 327, 297, + 408, 452, 0, 348, 419, 380, 298, 379, 409, 451, + 450, 308, 478, 1736, 1737, 574, 0, 490, 661, 662, + 663, 499, 0, 414, 504, 505, 506, 508, 509, 510, + 511, 575, 592, 559, 529, 492, 583, 526, 530, 531, + 358, 595, 0, 0, 0, 483, 368, 369, 0, 340, + 339, 381, 417, 299, 346, 291, 292, 656, 873, 400, + 597, 630, 631, 522, 0, 888, 868, 870, 871, 875, + 879, 880, 881, 882, 883, 885, 887, 891, 655, 0, + 576, 591, 659, 590, 652, 406, 0, 428, 588, 535, + 0, 580, 554, 0, 581, 550, 585, 0, 524, 0, + 436, 464, 476, 493, 496, 525, 610, 611, 612, 296, + 495, 614, 615, 616, 617, 618, 619, 620, 613, 890, + 557, 534, 560, 475, 537, 536, 0, 0, 571, 820, + 572, 573, 390, 391, 392, 393, 877, 598, 315, 494, + 416, 0, 558, 0, 0, 0, 0, 0, 0, 0, + 0, 563, 564, 561, 664, 0, 621, 622, 0, 0, + 488, 489, 345, 352, 507, 354, 314, 405, 347, 473, + 362, 0, 500, 565, 501, 624, 627, 625, 626, 397, + 357, 359, 432, 363, 373, 420, 472, 403, 425, 312, + 463, 434, 378, 551, 578, 899, 872, 898, 900, 901, + 897, 902, 903, 884, 775, 0, 827, 895, 894, 896, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 606, 605, 604, 603, 602, 601, 600, 599, 0, + 0, 548, 449, 324, 285, 320, 321, 328, 653, 650, + 454, 654, 782, 293, 528, 371, 0, 415, 344, 593, + 594, 0, 645, 861, 834, 835, 836, 772, 837, 831, + 832, 773, 833, 862, 825, 858, 859, 801, 828, 838, + 857, 839, 860, 863, 864, 904, 905, 845, 829, 257, + 906, 842, 865, 856, 855, 840, 826, 866, 867, 808, + 803, 843, 844, 830, 849, 850, 851, 774, 822, 823, + 824, 846, 847, 804, 805, 806, 807, 0, 0, 0, + 479, 480, 481, 503, 0, 465, 527, 651, 0, 0, + 0, 0, 0, 0, 0, 577, 589, 623, 0, 633, + 634, 636, 638, 852, 640, 439, 440, 0, 848, 643, + 644, 641, 375, 426, 445, 433, 818, 657, 518, 519, + 658, 629, 0, 767, 0, 402, 0, 0, 533, 566, + 555, 639, 521, 0, 0, 0, 0, 0, 0, 770, + 0, 0, 0, 337, 0, 0, 370, 570, 552, 562, + 553, 538, 539, 540, 547, 349, 541, 542, 543, 513, + 544, 514, 545, 546, 809, 569, 520, 435, 386, 587, + 586, 0, 0, 878, 886, 0, 0, 0, 0, 0, + 0, 0, 0, 874, 0, 0, 0, 0, 762, 0, + 0, 799, 854, 853, 786, 796, 0, 0, 310, 229, + 515, 635, 517, 516, 787, 0, 788, 792, 795, 791, + 789, 790, 0, 869, 0, 0, 0, 0, 0, 0, + 0, 766, 0, 771, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 763, 764, 0, + 0, 0, 0, 819, 0, 765, 0, 0, 814, 793, + 797, 0, 0, 0, 0, 300, 442, 461, 311, 430, + 474, 316, 438, 453, 306, 401, 427, 0, 0, 302, + 459, 437, 383, 360, 361, 301, 0, 421, 335, 351, + 332, 399, 794, 817, 821, 331, 892, 815, 469, 304, + 0, 468, 398, 455, 460, 384, 377, 0, 303, 457, + 382, 376, 364, 341, 893, 365, 366, 355, 410, 374, + 411, 356, 388, 387, 389, 0, 0, 0, 0, 0, + 497, 498, 0, 0, 646, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 628, 812, 0, 632, + 0, 471, 0, 0, 876, 0, 0, 0, 441, 0, + 0, 367, 0, 0, 0, 816, 0, 424, 404, 889, + 0, 0, 422, 372, 456, 412, 462, 443, 470, 418, + 413, 294, 444, 334, 385, 307, 309, 329, 336, 338, + 342, 343, 394, 395, 407, 429, 446, 447, 448, 333, + 317, 423, 318, 353, 319, 295, 325, 323, 326, 431, + 327, 297, 408, 452, 0, 348, 419, 380, 298, 379, + 409, 451, 450, 308, 478, 484, 485, 574, 0, 490, + 661, 662, 663, 499, 0, 414, 504, 505, 506, 508, + 509, 510, 511, 575, 592, 559, 529, 492, 583, 526, + 530, 531, 358, 595, 0, 0, 0, 483, 368, 369, + 0, 340, 339, 381, 417, 299, 346, 291, 292, 656, + 873, 400, 597, 630, 631, 522, 0, 888, 868, 870, + 871, 875, 879, 880, 881, 882, 883, 885, 887, 891, + 655, 0, 576, 591, 659, 590, 652, 406, 0, 428, + 588, 535, 0, 580, 554, 0, 581, 550, 585, 0, + 524, 0, 436, 464, 476, 493, 496, 525, 610, 611, + 612, 296, 495, 614, 615, 616, 617, 618, 619, 620, + 613, 890, 557, 534, 560, 475, 537, 536, 0, 0, + 571, 820, 572, 573, 390, 391, 392, 393, 877, 598, + 315, 494, 416, 0, 558, 0, 0, 0, 0, 0, + 0, 0, 0, 563, 564, 561, 664, 0, 621, 622, + 0, 0, 488, 489, 345, 352, 507, 354, 314, 405, + 347, 473, 362, 0, 500, 565, 501, 624, 627, 625, + 626, 397, 357, 359, 432, 363, 373, 420, 472, 403, + 425, 312, 463, 434, 378, 551, 578, 899, 872, 898, + 900, 901, 897, 902, 903, 884, 775, 0, 827, 895, + 894, 896, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 606, 605, 604, 603, 602, 601, 600, + 599, 0, 0, 548, 449, 324, 285, 320, 321, 328, + 653, 650, 454, 654, 782, 293, 528, 371, 0, 415, + 344, 593, 594, 0, 645, 861, 834, 835, 836, 772, + 837, 831, 832, 773, 833, 862, 825, 858, 859, 801, + 828, 838, 857, 839, 860, 863, 864, 904, 905, 845, + 829, 257, 906, 842, 865, 856, 855, 840, 826, 866, + 867, 808, 803, 843, 844, 830, 849, 850, 851, 774, + 822, 823, 824, 846, 847, 804, 805, 806, 807, 0, + 0, 0, 479, 480, 481, 503, 0, 465, 527, 651, + 0, 0, 0, 0, 0, 0, 0, 577, 589, 623, + 0, 633, 634, 636, 638, 852, 640, 439, 440, 0, + 848, 643, 644, 641, 375, 426, 445, 433, 818, 657, + 518, 519, 658, 629, 0, 767, 0, 402, 0, 0, + 533, 566, 555, 639, 521, 0, 0, 0, 0, 0, + 0, 770, 0, 0, 0, 337, 0, 0, 370, 570, + 552, 562, 553, 538, 539, 540, 547, 349, 541, 542, + 543, 513, 544, 514, 545, 546, 809, 569, 520, 435, + 386, 587, 586, 0, 0, 878, 886, 0, 0, 0, + 0, 0, 0, 0, 0, 874, 0, 0, 0, 0, + 0, 0, 0, 799, 854, 853, 786, 796, 0, 0, + 310, 229, 515, 635, 517, 516, 787, 0, 788, 792, + 795, 791, 789, 790, 0, 869, 0, 0, 0, 0, + 0, 0, 754, 766, 0, 771, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 763, + 764, 0, 0, 0, 0, 819, 0, 765, 0, 0, + 814, 793, 797, 0, 0, 0, 0, 300, 442, 461, + 311, 430, 474, 316, 438, 453, 306, 401, 427, 0, + 0, 302, 459, 437, 383, 360, 361, 301, 0, 421, + 335, 351, 332, 399, 794, 817, 821, 331, 892, 815, + 469, 304, 0, 468, 398, 455, 460, 384, 377, 0, + 303, 457, 382, 376, 364, 341, 893, 365, 366, 355, + 410, 374, 411, 356, 388, 387, 389, 0, 0, 0, + 0, 0, 497, 498, 0, 0, 646, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 628, 812, + 0, 632, 0, 471, 0, 0, 876, 0, 0, 0, + 441, 0, 0, 367, 0, 0, 0, 816, 0, 424, + 404, 889, 0, 0, 422, 372, 456, 412, 462, 443, + 470, 418, 413, 294, 444, 334, 385, 307, 309, 329, + 336, 338, 342, 343, 394, 395, 407, 429, 446, 447, + 448, 333, 317, 423, 318, 353, 319, 295, 325, 323, + 326, 431, 327, 297, 408, 452, 0, 348, 419, 380, + 298, 379, 409, 451, 450, 308, 478, 484, 485, 574, + 0, 490, 661, 662, 663, 499, 0, 414, 504, 505, + 506, 508, 509, 510, 511, 575, 592, 559, 529, 492, + 583, 526, 530, 531, 358, 595, 0, 0, 0, 483, + 368, 369, 0, 340, 339, 381, 417, 299, 346, 291, + 292, 656, 873, 400, 597, 630, 631, 522, 0, 888, + 868, 870, 871, 875, 879, 880, 881, 882, 883, 885, + 887, 891, 655, 0, 576, 591, 659, 590, 652, 406, + 0, 428, 588, 535, 0, 580, 554, 0, 581, 550, + 585, 0, 524, 0, 436, 464, 476, 493, 496, 525, + 610, 611, 612, 296, 495, 614, 615, 616, 617, 618, + 619, 620, 613, 890, 557, 534, 560, 475, 537, 536, + 0, 0, 571, 820, 572, 573, 390, 391, 392, 393, + 877, 598, 315, 494, 416, 0, 558, 0, 0, 0, + 0, 0, 0, 0, 0, 563, 564, 561, 664, 0, + 621, 622, 0, 0, 488, 489, 345, 352, 507, 354, + 314, 405, 347, 473, 362, 0, 500, 565, 501, 624, + 627, 625, 626, 397, 357, 359, 432, 363, 373, 420, + 472, 403, 425, 312, 463, 434, 378, 551, 578, 899, + 872, 898, 900, 901, 897, 902, 903, 884, 775, 0, + 827, 895, 894, 896, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 606, 605, 604, 603, 602, + 601, 600, 599, 0, 0, 548, 449, 324, 285, 320, + 321, 328, 653, 650, 454, 654, 782, 293, 528, 371, + 0, 415, 344, 593, 594, 0, 645, 861, 834, 835, + 836, 772, 837, 831, 832, 773, 833, 862, 825, 858, + 859, 801, 828, 838, 857, 839, 860, 863, 864, 904, + 905, 845, 829, 257, 906, 842, 865, 856, 855, 840, + 826, 866, 867, 808, 803, 843, 844, 830, 849, 850, + 851, 774, 822, 823, 824, 846, 847, 804, 805, 806, + 807, 0, 0, 0, 479, 480, 481, 503, 0, 465, + 527, 651, 0, 0, 0, 0, 0, 0, 0, 577, + 589, 623, 0, 633, 634, 636, 638, 852, 640, 439, + 440, 0, 848, 643, 644, 641, 375, 426, 445, 433, + 0, 657, 518, 519, 658, 629, 0, 767, 206, 64, + 197, 168, 0, 0, 0, 0, 0, 0, 402, 0, + 0, 533, 566, 555, 639, 521, 0, 198, 0, 0, + 0, 0, 0, 0, 189, 0, 337, 0, 199, 370, + 570, 552, 562, 553, 538, 539, 540, 547, 349, 541, + 542, 543, 513, 544, 514, 545, 546, 140, 569, 520, + 435, 386, 587, 586, 0, 0, 0, 0, 0, 0, + 0, 0, 126, 0, 0, 0, 0, 0, 0, 0, + 0, 202, 0, 0, 228, 0, 0, 0, 0, 0, + 0, 310, 229, 515, 635, 517, 516, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 313, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 220, 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, 300, 442, + 461, 311, 430, 474, 316, 438, 453, 306, 401, 427, + 0, 0, 302, 459, 437, 383, 360, 361, 301, 0, + 421, 335, 351, 332, 399, 0, 458, 486, 331, 477, + 0, 469, 304, 0, 468, 398, 455, 460, 384, 377, + 0, 303, 457, 382, 376, 364, 341, 502, 365, 366, + 355, 410, 374, 411, 356, 388, 387, 389, 0, 0, + 0, 0, 0, 497, 498, 0, 0, 646, 0, 0, + 0, 0, 167, 195, 204, 196, 124, 0, 0, 628, + 0, 0, 632, 0, 471, 0, 0, 221, 0, 0, + 0, 441, 0, 0, 367, 194, 188, 187, 487, 0, + 424, 404, 233, 0, 0, 422, 372, 456, 412, 462, + 443, 470, 418, 413, 294, 444, 334, 385, 307, 309, + 329, 336, 338, 342, 343, 394, 395, 407, 429, 446, + 447, 448, 333, 317, 423, 318, 353, 319, 295, 325, + 323, 326, 431, 327, 297, 408, 452, 0, 348, 419, + 380, 298, 379, 409, 451, 450, 308, 478, 484, 485, + 574, 0, 490, 607, 608, 609, 499, 0, 414, 504, + 505, 506, 508, 509, 510, 511, 575, 592, 559, 529, + 492, 583, 526, 530, 531, 358, 595, 0, 0, 0, + 483, 368, 369, 0, 340, 339, 381, 417, 299, 346, + 291, 292, 466, 330, 400, 597, 630, 631, 522, 0, + 584, 523, 532, 322, 556, 568, 567, 396, 482, 224, + 579, 582, 512, 234, 0, 576, 591, 549, 590, 235, + 406, 0, 428, 588, 535, 0, 580, 554, 0, 581, + 550, 585, 0, 524, 0, 436, 464, 476, 493, 496, + 525, 610, 611, 612, 296, 495, 614, 615, 616, 617, + 618, 619, 620, 613, 467, 557, 534, 560, 475, 537, + 536, 0, 0, 571, 491, 572, 573, 390, 391, 392, + 393, 350, 598, 315, 494, 416, 138, 558, 0, 0, + 0, 0, 0, 0, 0, 0, 563, 564, 561, 232, + 0, 621, 622, 0, 0, 488, 489, 345, 352, 507, + 354, 314, 405, 347, 473, 362, 0, 500, 565, 501, + 624, 627, 625, 626, 397, 357, 359, 432, 363, 373, + 420, 472, 403, 425, 312, 463, 434, 378, 551, 578, + 0, 0, 0, 0, 0, 0, 0, 0, 65, 0, + 0, 280, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 606, 605, 604, 603, + 602, 601, 600, 599, 0, 0, 548, 449, 324, 285, + 320, 321, 328, 239, 305, 454, 240, 0, 293, 528, + 371, 169, 415, 344, 593, 594, 61, 645, 241, 242, + 243, 244, 245, 246, 247, 248, 286, 249, 250, 251, + 252, 253, 254, 255, 258, 259, 260, 261, 262, 263, + 264, 265, 596, 256, 257, 266, 267, 268, 269, 270, + 271, 272, 273, 274, 275, 276, 277, 278, 279, 0, + 0, 0, 287, 288, 289, 290, 0, 0, 281, 282, + 283, 284, 0, 0, 0, 479, 480, 481, 503, 0, + 465, 527, 236, 45, 222, 225, 227, 226, 0, 62, + 577, 589, 623, 5, 633, 634, 636, 638, 637, 640, + 439, 440, 0, 642, 643, 644, 641, 375, 426, 445, + 433, 143, 237, 518, 519, 238, 629, 206, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 402, 0, 0, + 533, 566, 555, 639, 521, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 337, 0, 0, 370, 570, + 552, 562, 553, 538, 539, 540, 547, 349, 541, 542, + 543, 513, 544, 514, 545, 546, 140, 569, 520, 435, + 386, 587, 586, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 202, 0, 0, 228, 0, 0, 0, 0, 0, 0, + 310, 229, 515, 635, 517, 516, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 313, 2423, 2426, 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, + 0, 0, 0, 0, 0, 0, 0, 300, 442, 461, + 311, 430, 474, 316, 438, 453, 306, 401, 427, 0, + 0, 302, 459, 437, 383, 360, 361, 301, 0, 421, + 335, 351, 332, 399, 0, 458, 486, 331, 477, 0, + 469, 304, 0, 468, 398, 455, 460, 384, 377, 0, + 303, 457, 382, 376, 364, 341, 502, 365, 366, 355, + 410, 374, 411, 356, 388, 387, 389, 0, 0, 0, + 0, 0, 497, 498, 0, 0, 646, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 628, 0, + 0, 632, 2427, 471, 0, 0, 0, 2422, 0, 2421, + 441, 2419, 2424, 367, 0, 0, 0, 487, 0, 424, + 404, 660, 0, 0, 422, 372, 456, 412, 462, 443, + 470, 418, 413, 294, 444, 334, 385, 307, 309, 329, + 336, 338, 342, 343, 394, 395, 407, 429, 446, 447, + 448, 333, 317, 423, 318, 353, 319, 295, 325, 323, + 326, 431, 327, 297, 408, 452, 2425, 348, 419, 380, + 298, 379, 409, 451, 450, 308, 478, 484, 485, 574, + 0, 490, 661, 662, 663, 499, 0, 414, 504, 505, + 506, 508, 509, 510, 511, 575, 592, 559, 529, 492, + 583, 526, 530, 531, 358, 595, 0, 0, 0, 483, + 368, 369, 0, 340, 339, 381, 417, 299, 346, 291, + 292, 656, 330, 400, 597, 630, 631, 522, 0, 584, + 523, 532, 322, 556, 568, 567, 396, 482, 0, 579, + 582, 512, 655, 0, 576, 591, 659, 590, 652, 406, + 0, 428, 588, 535, 0, 580, 554, 0, 581, 550, + 585, 0, 524, 0, 436, 464, 476, 493, 496, 525, + 610, 611, 612, 296, 495, 614, 615, 616, 617, 618, + 619, 620, 613, 467, 557, 534, 560, 475, 537, 536, + 0, 0, 571, 491, 572, 573, 390, 391, 392, 393, + 350, 598, 315, 494, 416, 0, 558, 0, 0, 0, + 0, 0, 0, 0, 0, 563, 564, 561, 664, 0, + 621, 622, 0, 0, 488, 489, 345, 352, 507, 354, + 314, 405, 347, 473, 362, 0, 500, 565, 501, 624, + 627, 625, 626, 397, 357, 359, 432, 363, 373, 420, + 472, 403, 425, 312, 463, 434, 378, 551, 578, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 280, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 605, 604, 603, 602, 601, - 600, 599, 598, 0, 0, 547, 448, 323, 285, 319, - 320, 327, 652, 649, 453, 653, 0, 293, 527, 370, - 0, 414, 343, 592, 593, 0, 644, 241, 242, 243, + 0, 0, 0, 0, 0, 606, 605, 604, 603, 602, + 601, 600, 599, 0, 0, 548, 449, 324, 285, 320, + 321, 328, 653, 650, 454, 654, 0, 293, 528, 371, + 169, 415, 344, 593, 594, 0, 645, 241, 242, 243, 244, 245, 246, 247, 248, 286, 249, 250, 251, 252, 253, 254, 255, 258, 259, 260, 261, 262, 263, 264, - 265, 595, 256, 257, 266, 267, 268, 269, 270, 271, + 265, 596, 256, 257, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 0, 0, 0, 287, 288, 289, 290, 0, 0, 281, 282, 283, - 284, 0, 0, 0, 478, 479, 480, 502, 0, 464, - 526, 650, 0, 0, 0, 0, 0, 0, 0, 576, - 588, 622, 0, 632, 633, 635, 637, 636, 639, 438, - 439, 0, 641, 642, 643, 640, 374, 425, 444, 432, - 0, 656, 517, 518, 657, 628, 401, 0, 0, 532, - 565, 554, 638, 520, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 336, 1556, 0, 369, 569, 551, - 561, 552, 537, 538, 539, 546, 348, 540, 541, 542, - 512, 543, 513, 544, 545, 0, 568, 519, 434, 385, - 586, 585, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 228, 0, 0, 1554, 0, 0, 0, 309, - 229, 514, 634, 516, 515, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 312, 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, 0, 0, 1552, - 0, 0, 0, 0, 0, 0, 299, 441, 460, 310, - 429, 473, 315, 437, 452, 305, 400, 426, 0, 0, - 301, 458, 436, 382, 359, 360, 300, 0, 420, 334, - 350, 331, 398, 0, 457, 485, 330, 476, 0, 468, - 303, 0, 467, 397, 454, 459, 383, 376, 0, 302, - 456, 381, 375, 363, 340, 501, 364, 365, 354, 409, - 373, 410, 355, 387, 386, 388, 0, 0, 0, 0, - 0, 496, 497, 0, 0, 645, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 627, 0, 0, - 631, 0, 470, 0, 0, 0, 0, 0, 0, 440, - 0, 0, 366, 0, 0, 0, 486, 0, 423, 403, - 659, 0, 0, 421, 371, 455, 411, 461, 442, 469, - 417, 412, 294, 443, 333, 384, 306, 308, 328, 335, - 337, 341, 342, 393, 394, 406, 428, 445, 446, 447, - 332, 316, 422, 317, 352, 318, 295, 324, 322, 325, - 430, 326, 297, 407, 451, 0, 347, 418, 379, 298, - 378, 408, 450, 449, 307, 477, 483, 484, 573, 0, - 489, 660, 661, 662, 498, 0, 413, 503, 504, 505, - 507, 508, 509, 510, 574, 591, 558, 528, 491, 582, - 525, 529, 530, 357, 594, 0, 0, 0, 482, 367, - 368, 0, 339, 338, 380, 416, 345, 291, 292, 655, - 329, 399, 596, 629, 630, 521, 0, 583, 522, 531, - 321, 555, 567, 566, 395, 481, 0, 578, 581, 511, - 654, 0, 575, 590, 658, 589, 651, 405, 0, 427, - 587, 534, 0, 579, 553, 0, 580, 549, 584, 0, - 523, 0, 435, 463, 475, 492, 495, 524, 609, 610, - 611, 296, 494, 613, 614, 615, 616, 617, 618, 619, - 612, 466, 556, 533, 559, 474, 536, 535, 0, 0, - 570, 490, 571, 572, 389, 390, 391, 392, 349, 597, - 314, 493, 415, 0, 557, 0, 0, 0, 0, 0, - 0, 0, 0, 562, 563, 560, 663, 0, 620, 621, - 0, 0, 487, 488, 344, 351, 506, 353, 313, 404, - 346, 472, 361, 0, 499, 564, 500, 623, 626, 624, - 625, 396, 356, 358, 431, 362, 372, 419, 471, 402, - 424, 311, 462, 433, 377, 550, 577, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 280, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 605, 604, 603, 602, 601, 600, 599, - 598, 0, 0, 547, 448, 323, 285, 319, 320, 327, - 652, 649, 453, 653, 0, 293, 527, 370, 0, 414, - 343, 592, 593, 0, 644, 241, 242, 243, 244, 245, + 284, 0, 0, 0, 479, 480, 481, 503, 0, 465, + 527, 651, 0, 0, 0, 0, 0, 0, 0, 577, + 589, 623, 0, 633, 634, 636, 638, 637, 640, 439, + 440, 0, 642, 643, 644, 641, 375, 426, 445, 433, + 0, 657, 518, 519, 658, 629, 402, 0, 0, 533, + 566, 555, 639, 521, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 337, 0, 0, 370, 570, 552, + 562, 553, 538, 539, 540, 547, 349, 541, 542, 543, + 513, 544, 514, 545, 546, 0, 569, 520, 435, 386, + 587, 586, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1332, + 0, 0, 228, 0, 0, 786, 796, 0, 0, 310, + 229, 515, 635, 517, 516, 787, 0, 788, 792, 795, + 791, 789, 790, 0, 313, 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, 0, 0, 0, + 793, 0, 0, 0, 0, 0, 300, 442, 461, 311, + 430, 474, 316, 438, 453, 306, 401, 427, 0, 0, + 302, 459, 437, 383, 360, 361, 301, 0, 421, 335, + 351, 332, 399, 794, 458, 486, 331, 477, 0, 469, + 304, 0, 468, 398, 455, 460, 384, 377, 0, 303, + 457, 382, 376, 364, 341, 502, 365, 366, 355, 410, + 374, 411, 356, 388, 387, 389, 0, 0, 0, 0, + 0, 497, 498, 0, 0, 646, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 628, 0, 0, + 632, 0, 471, 0, 0, 0, 0, 0, 0, 441, + 0, 0, 367, 0, 0, 0, 487, 0, 424, 404, + 660, 0, 0, 422, 372, 456, 412, 462, 443, 470, + 418, 413, 294, 444, 334, 385, 307, 309, 329, 336, + 338, 342, 343, 394, 395, 407, 429, 446, 447, 448, + 333, 317, 423, 318, 353, 319, 295, 325, 323, 326, + 431, 327, 297, 408, 452, 0, 348, 419, 380, 298, + 379, 409, 451, 450, 308, 478, 484, 485, 574, 0, + 490, 661, 662, 663, 499, 0, 414, 504, 505, 506, + 508, 509, 510, 511, 575, 592, 559, 529, 492, 583, + 526, 530, 531, 358, 595, 0, 0, 0, 483, 368, + 369, 0, 340, 339, 381, 417, 299, 346, 291, 292, + 656, 330, 400, 597, 630, 631, 522, 0, 584, 523, + 532, 322, 556, 568, 567, 396, 482, 0, 579, 582, + 512, 655, 0, 576, 591, 659, 590, 652, 406, 0, + 428, 588, 535, 0, 580, 554, 0, 581, 550, 585, + 0, 524, 0, 436, 464, 476, 493, 496, 525, 610, + 611, 612, 296, 495, 614, 615, 616, 617, 618, 619, + 620, 613, 467, 557, 534, 560, 475, 537, 536, 0, + 0, 571, 491, 572, 573, 390, 391, 392, 393, 350, + 598, 315, 494, 416, 0, 558, 0, 0, 0, 0, + 0, 0, 0, 0, 563, 564, 561, 664, 0, 621, + 622, 0, 0, 488, 489, 345, 352, 507, 354, 314, + 405, 347, 473, 362, 0, 500, 565, 501, 624, 627, + 625, 626, 397, 357, 359, 432, 363, 373, 420, 472, + 403, 425, 312, 463, 434, 378, 551, 578, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 280, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 606, 605, 604, 603, 602, 601, + 600, 599, 0, 0, 548, 449, 324, 285, 320, 321, + 328, 653, 650, 454, 654, 0, 293, 528, 371, 0, + 415, 344, 593, 594, 0, 645, 241, 242, 243, 244, + 245, 246, 247, 248, 286, 249, 250, 251, 252, 253, + 254, 255, 258, 259, 260, 261, 262, 263, 264, 265, + 596, 256, 257, 266, 267, 268, 269, 270, 271, 272, + 273, 274, 275, 276, 277, 278, 279, 0, 0, 0, + 287, 288, 289, 290, 0, 0, 281, 282, 283, 284, + 0, 0, 0, 479, 480, 481, 503, 0, 465, 527, + 651, 0, 0, 0, 0, 0, 0, 0, 577, 589, + 623, 0, 633, 634, 636, 638, 637, 640, 439, 440, + 0, 642, 643, 644, 641, 375, 426, 445, 433, 0, + 657, 518, 519, 658, 629, 206, 64, 197, 168, 0, + 0, 0, 0, 0, 0, 402, 683, 0, 533, 566, + 555, 639, 521, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 337, 0, 0, 370, 570, 552, 562, + 553, 538, 539, 540, 547, 349, 541, 542, 543, 513, + 544, 514, 545, 546, 0, 569, 520, 435, 386, 587, + 586, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 690, 0, 0, 0, 0, 0, 0, 0, 689, 0, + 0, 228, 0, 0, 0, 0, 0, 0, 310, 229, + 515, 635, 517, 516, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 313, 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, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 300, 442, 461, 311, 430, + 474, 316, 438, 453, 306, 401, 427, 0, 0, 302, + 459, 437, 383, 360, 361, 301, 0, 421, 335, 351, + 332, 399, 0, 458, 486, 331, 477, 0, 469, 304, + 0, 468, 398, 455, 460, 384, 377, 0, 303, 457, + 382, 376, 364, 341, 502, 365, 366, 355, 410, 374, + 411, 356, 388, 387, 389, 0, 0, 0, 0, 0, + 497, 498, 0, 0, 646, 0, 0, 0, 0, 0, + 0, 0, 0, 687, 688, 0, 628, 0, 0, 632, + 0, 471, 0, 0, 0, 0, 0, 0, 441, 0, + 0, 367, 0, 0, 0, 487, 0, 424, 404, 660, + 0, 0, 422, 372, 456, 412, 462, 443, 470, 418, + 413, 294, 444, 334, 385, 307, 309, 329, 336, 338, + 342, 343, 394, 395, 407, 429, 446, 447, 448, 333, + 317, 423, 318, 353, 319, 295, 325, 323, 326, 431, + 327, 297, 408, 452, 0, 348, 419, 380, 298, 379, + 409, 451, 450, 308, 478, 484, 485, 574, 0, 490, + 661, 662, 663, 499, 0, 414, 504, 505, 506, 508, + 509, 510, 511, 575, 592, 559, 529, 492, 583, 526, + 530, 531, 358, 595, 0, 0, 0, 483, 368, 369, + 0, 340, 339, 381, 417, 299, 346, 291, 292, 656, + 330, 400, 597, 630, 631, 522, 0, 584, 523, 532, + 322, 556, 568, 567, 396, 482, 0, 579, 582, 512, + 655, 0, 576, 591, 659, 590, 652, 406, 0, 428, + 588, 535, 0, 580, 554, 0, 581, 550, 585, 0, + 524, 0, 436, 464, 476, 493, 496, 525, 610, 611, + 612, 296, 495, 614, 615, 616, 617, 618, 619, 620, + 613, 467, 557, 534, 560, 475, 537, 536, 0, 0, + 571, 491, 572, 573, 390, 391, 392, 393, 684, 686, + 315, 494, 416, 698, 558, 0, 0, 0, 0, 0, + 0, 0, 0, 563, 564, 561, 664, 0, 621, 622, + 0, 0, 488, 489, 345, 352, 507, 354, 314, 405, + 347, 473, 362, 0, 500, 565, 501, 624, 627, 625, + 626, 397, 357, 359, 432, 363, 373, 420, 472, 403, + 425, 312, 463, 434, 378, 551, 578, 0, 0, 0, + 0, 0, 0, 0, 0, 65, 0, 0, 280, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 606, 605, 604, 603, 602, 601, 600, + 599, 0, 0, 548, 449, 324, 285, 320, 321, 328, + 653, 650, 454, 654, 0, 293, 528, 371, 169, 415, + 344, 593, 594, 0, 645, 241, 242, 243, 244, 245, 246, 247, 248, 286, 249, 250, 251, 252, 253, 254, - 255, 258, 259, 260, 261, 262, 263, 264, 265, 595, + 255, 258, 259, 260, 261, 262, 263, 264, 265, 596, 256, 257, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 0, 0, 0, 287, 288, 289, 290, 0, 0, 281, 282, 283, 284, 0, - 0, 0, 478, 479, 480, 502, 0, 464, 526, 650, - 0, 0, 0, 0, 0, 0, 0, 576, 588, 622, - 0, 632, 633, 635, 637, 636, 639, 438, 439, 0, - 641, 642, 643, 640, 374, 425, 444, 432, 0, 656, - 517, 518, 657, 628, 401, 0, 0, 532, 565, 554, - 638, 520, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 336, 1550, 0, 369, 569, 551, 561, 552, - 537, 538, 539, 546, 348, 540, 541, 542, 512, 543, - 513, 544, 545, 0, 568, 519, 434, 385, 586, 585, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 228, 0, 0, 1554, 0, 0, 0, 309, 229, 514, - 634, 516, 515, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 312, 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, 0, 0, 1552, 0, 0, - 0, 0, 0, 0, 299, 441, 460, 310, 429, 473, - 315, 437, 452, 305, 400, 426, 0, 0, 301, 458, - 436, 382, 359, 360, 300, 0, 420, 334, 350, 331, - 398, 0, 457, 485, 330, 476, 0, 468, 303, 0, - 467, 397, 454, 459, 383, 376, 0, 302, 456, 381, - 375, 363, 340, 501, 364, 365, 354, 409, 373, 410, - 355, 387, 386, 388, 0, 0, 0, 0, 0, 496, - 497, 0, 0, 645, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 627, 0, 0, 631, 0, - 470, 0, 0, 0, 0, 0, 0, 440, 0, 0, - 366, 0, 0, 0, 486, 0, 423, 403, 659, 0, - 0, 421, 371, 455, 411, 461, 442, 469, 417, 412, - 294, 443, 333, 384, 306, 308, 328, 335, 337, 341, - 342, 393, 394, 406, 428, 445, 446, 447, 332, 316, - 422, 317, 352, 318, 295, 324, 322, 325, 430, 326, - 297, 407, 451, 0, 347, 418, 379, 298, 378, 408, - 450, 449, 307, 477, 483, 484, 573, 0, 489, 660, - 661, 662, 498, 0, 413, 503, 504, 505, 507, 508, - 509, 510, 574, 591, 558, 528, 491, 582, 525, 529, - 530, 357, 594, 0, 0, 0, 482, 367, 368, 0, - 339, 338, 380, 416, 345, 291, 292, 655, 329, 399, - 596, 629, 630, 521, 0, 583, 522, 531, 321, 555, - 567, 566, 395, 481, 0, 578, 581, 511, 654, 0, - 575, 590, 658, 589, 651, 405, 0, 427, 587, 534, - 0, 579, 553, 0, 580, 549, 584, 0, 523, 0, - 435, 463, 475, 492, 495, 524, 609, 610, 611, 296, - 494, 613, 614, 615, 616, 617, 618, 619, 612, 466, - 556, 533, 559, 474, 536, 535, 0, 0, 570, 490, - 571, 572, 389, 390, 391, 392, 349, 597, 314, 493, - 415, 0, 557, 0, 0, 0, 0, 0, 0, 0, - 0, 562, 563, 560, 663, 0, 620, 621, 0, 0, - 487, 488, 344, 351, 506, 353, 313, 404, 346, 472, - 361, 0, 499, 564, 500, 623, 626, 624, 625, 396, - 356, 358, 431, 362, 372, 419, 471, 402, 424, 311, - 462, 433, 377, 550, 577, 0, 0, 0, 0, 0, + 0, 0, 479, 480, 481, 503, 0, 465, 527, 651, + 0, 0, 0, 0, 0, 0, 0, 577, 589, 623, + 0, 633, 634, 636, 638, 637, 640, 439, 440, 0, + 642, 643, 644, 641, 375, 426, 445, 433, 0, 657, + 518, 519, 658, 629, 402, 0, 0, 533, 566, 555, + 639, 521, 0, 1140, 0, 0, 0, 0, 0, 0, + 0, 0, 337, 0, 0, 370, 570, 552, 562, 553, + 538, 539, 540, 547, 349, 541, 542, 543, 513, 544, + 514, 545, 546, 0, 569, 520, 435, 386, 587, 586, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 228, 0, 0, 0, 0, 0, 0, 310, 229, 515, + 635, 517, 516, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 313, 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, 0, 0, 1125, 0, 0, + 0, 0, 0, 0, 300, 442, 461, 311, 430, 474, + 316, 438, 453, 306, 401, 427, 0, 0, 2587, 2590, + 2591, 2592, 2593, 2594, 2595, 0, 2600, 2596, 2597, 2598, + 2599, 0, 2582, 2583, 2584, 2585, 1123, 2566, 2588, 0, + 2567, 398, 2568, 2569, 2570, 2571, 1127, 2572, 2573, 2574, + 2575, 2576, 2579, 2580, 2577, 2578, 2586, 410, 374, 411, + 356, 388, 387, 389, 1151, 1153, 1155, 1157, 1160, 497, + 498, 0, 0, 646, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 628, 0, 0, 632, 0, + 471, 0, 0, 0, 0, 0, 0, 441, 0, 0, + 367, 0, 0, 0, 2581, 0, 424, 404, 660, 0, + 0, 422, 372, 456, 412, 462, 443, 470, 418, 413, + 294, 444, 334, 385, 307, 309, 329, 336, 338, 342, + 343, 394, 395, 407, 429, 446, 447, 448, 333, 317, + 423, 318, 353, 319, 295, 325, 323, 326, 431, 327, + 297, 408, 452, 0, 348, 419, 380, 298, 379, 409, + 451, 450, 308, 478, 484, 485, 574, 0, 490, 661, + 662, 663, 499, 0, 414, 504, 505, 506, 508, 509, + 510, 511, 575, 592, 559, 529, 492, 583, 526, 530, + 531, 358, 595, 0, 0, 0, 483, 368, 369, 0, + 340, 339, 381, 417, 299, 346, 291, 292, 656, 330, + 400, 597, 630, 631, 522, 0, 584, 523, 532, 322, + 556, 568, 567, 396, 482, 0, 579, 582, 512, 655, + 0, 576, 591, 659, 590, 652, 406, 0, 428, 588, + 535, 0, 580, 554, 0, 581, 550, 585, 0, 524, + 0, 436, 464, 476, 493, 496, 525, 610, 611, 612, + 296, 495, 614, 615, 616, 617, 618, 619, 620, 613, + 467, 557, 534, 560, 475, 537, 536, 0, 0, 571, + 491, 572, 573, 390, 391, 392, 393, 350, 598, 315, + 494, 416, 0, 558, 0, 0, 0, 0, 0, 0, + 0, 0, 563, 564, 561, 664, 0, 621, 622, 0, + 0, 488, 489, 345, 352, 507, 354, 314, 405, 347, + 473, 362, 0, 500, 565, 501, 624, 627, 625, 626, + 397, 357, 359, 432, 363, 373, 420, 472, 403, 425, + 312, 463, 434, 378, 551, 578, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 280, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 606, 605, 604, 603, 602, 601, 600, 599, + 0, 0, 548, 449, 324, 285, 320, 321, 328, 653, + 650, 454, 654, 0, 293, 2589, 371, 0, 415, 344, + 593, 594, 0, 645, 241, 242, 243, 244, 245, 246, + 247, 248, 286, 249, 250, 251, 252, 253, 254, 255, + 258, 259, 260, 261, 262, 263, 264, 265, 596, 256, + 257, 266, 267, 268, 269, 270, 271, 272, 273, 274, + 275, 276, 277, 278, 279, 0, 0, 0, 287, 288, + 289, 290, 0, 0, 281, 282, 283, 284, 0, 0, + 0, 479, 480, 481, 503, 0, 465, 527, 651, 0, + 0, 0, 0, 0, 0, 0, 577, 589, 623, 0, + 633, 634, 636, 638, 637, 640, 439, 440, 0, 642, + 643, 644, 641, 375, 426, 445, 433, 0, 657, 518, + 519, 658, 629, 402, 0, 0, 533, 566, 555, 639, + 521, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 337, 0, 0, 370, 570, 552, 562, 553, 538, + 539, 540, 547, 349, 541, 542, 543, 513, 544, 514, + 545, 546, 0, 569, 520, 435, 386, 587, 586, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 228, + 0, 0, 0, 0, 0, 0, 310, 229, 515, 635, + 517, 516, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 313, 2423, 2426, 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, 0, 0, 0, 0, + 0, 0, 0, 300, 442, 461, 311, 430, 474, 316, + 438, 453, 306, 401, 427, 0, 0, 302, 459, 437, + 383, 360, 361, 301, 0, 421, 335, 351, 332, 399, + 0, 458, 486, 331, 477, 0, 469, 304, 0, 468, + 398, 455, 460, 384, 377, 0, 303, 457, 382, 376, + 364, 341, 502, 365, 366, 355, 410, 374, 411, 356, + 388, 387, 389, 0, 0, 0, 0, 0, 497, 498, + 0, 0, 646, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 628, 0, 0, 632, 2427, 471, + 0, 0, 0, 2422, 0, 2421, 441, 2419, 2424, 367, + 0, 0, 0, 487, 0, 424, 404, 660, 0, 0, + 422, 372, 456, 412, 462, 443, 470, 418, 413, 294, + 444, 334, 385, 307, 309, 329, 336, 338, 342, 343, + 394, 395, 407, 429, 446, 447, 448, 333, 317, 423, + 318, 353, 319, 295, 325, 323, 326, 431, 327, 297, + 408, 452, 2425, 348, 419, 380, 298, 379, 409, 451, + 450, 308, 478, 484, 485, 574, 0, 490, 661, 662, + 663, 499, 0, 414, 504, 505, 506, 508, 509, 510, + 511, 575, 592, 559, 529, 492, 583, 526, 530, 531, + 358, 595, 0, 0, 0, 483, 368, 369, 0, 340, + 339, 381, 417, 299, 346, 291, 292, 656, 330, 400, + 597, 630, 631, 522, 0, 584, 523, 532, 322, 556, + 568, 567, 396, 482, 0, 579, 582, 512, 655, 0, + 576, 591, 659, 590, 652, 406, 0, 428, 588, 535, + 0, 580, 554, 0, 581, 550, 585, 0, 524, 0, + 436, 464, 476, 493, 496, 525, 610, 611, 612, 296, + 495, 614, 615, 616, 617, 618, 619, 620, 613, 467, + 557, 534, 560, 475, 537, 536, 0, 0, 571, 491, + 572, 573, 390, 391, 392, 393, 350, 598, 315, 494, + 416, 0, 558, 0, 0, 0, 0, 0, 0, 0, + 0, 563, 564, 561, 664, 0, 621, 622, 0, 0, + 488, 489, 345, 352, 507, 354, 314, 405, 347, 473, + 362, 0, 500, 565, 501, 624, 627, 625, 626, 397, + 357, 359, 432, 363, 373, 420, 472, 403, 425, 312, + 463, 434, 378, 551, 578, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 280, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 605, 604, 603, 602, 601, 600, 599, 598, 0, - 0, 547, 448, 323, 285, 319, 320, 327, 652, 649, - 453, 653, 0, 293, 527, 370, 0, 414, 343, 592, - 593, 0, 644, 241, 242, 243, 244, 245, 246, 247, + 0, 606, 605, 604, 603, 602, 601, 600, 599, 0, + 0, 548, 449, 324, 285, 320, 321, 328, 653, 650, + 454, 654, 0, 293, 528, 371, 0, 415, 344, 593, + 594, 0, 645, 241, 242, 243, 244, 245, 246, 247, 248, 286, 249, 250, 251, 252, 253, 254, 255, 258, - 259, 260, 261, 262, 263, 264, 265, 595, 256, 257, + 259, 260, 261, 262, 263, 264, 265, 596, 256, 257, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 0, 0, 0, 287, 288, 289, 290, 0, 0, 281, 282, 283, 284, 0, 0, 0, - 478, 479, 480, 502, 0, 464, 526, 650, 0, 0, - 0, 0, 0, 0, 0, 576, 588, 622, 0, 632, - 633, 635, 637, 636, 639, 438, 439, 0, 641, 642, - 643, 640, 374, 425, 444, 432, 0, 656, 517, 518, - 657, 628, 401, 0, 0, 532, 565, 554, 638, 520, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 336, 0, 0, 369, 569, 551, 561, 552, 537, 538, - 539, 546, 348, 540, 541, 542, 512, 543, 513, 544, - 545, 0, 568, 519, 434, 385, 586, 585, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 4066, 0, 228, 853, - 0, 0, 0, 0, 0, 309, 229, 514, 634, 516, - 515, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 312, 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, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 299, 441, 460, 310, 429, 473, 315, 437, - 452, 305, 400, 426, 0, 0, 301, 458, 436, 382, - 359, 360, 300, 0, 420, 334, 350, 331, 398, 0, - 457, 485, 330, 476, 0, 468, 303, 0, 467, 397, - 454, 459, 383, 376, 0, 302, 456, 381, 375, 363, - 340, 501, 364, 365, 354, 409, 373, 410, 355, 387, - 386, 388, 0, 0, 0, 0, 0, 496, 497, 0, - 0, 645, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 627, 0, 0, 631, 0, 470, 0, - 0, 0, 0, 0, 0, 440, 0, 0, 366, 0, - 0, 0, 486, 0, 423, 403, 659, 0, 0, 421, - 371, 455, 411, 461, 442, 469, 417, 412, 294, 443, - 333, 384, 306, 308, 328, 335, 337, 341, 342, 393, - 394, 406, 428, 445, 446, 447, 332, 316, 422, 317, - 352, 318, 295, 324, 322, 325, 430, 326, 297, 407, - 451, 0, 347, 418, 379, 298, 378, 408, 450, 449, - 307, 477, 483, 484, 573, 0, 489, 660, 661, 662, - 498, 0, 413, 503, 504, 505, 507, 508, 509, 510, - 574, 591, 558, 528, 491, 582, 525, 529, 530, 357, - 594, 0, 0, 0, 482, 367, 368, 0, 339, 338, - 380, 416, 345, 291, 292, 655, 329, 399, 596, 629, - 630, 521, 0, 583, 522, 531, 321, 555, 567, 566, - 395, 481, 0, 578, 581, 511, 654, 0, 575, 590, - 658, 589, 651, 405, 0, 427, 587, 534, 0, 579, - 553, 0, 580, 549, 584, 0, 523, 0, 435, 463, - 475, 492, 495, 524, 609, 610, 611, 296, 494, 613, - 614, 615, 616, 617, 618, 619, 612, 466, 556, 533, - 559, 474, 536, 535, 0, 0, 570, 490, 571, 572, - 389, 390, 391, 392, 349, 597, 314, 493, 415, 0, - 557, 0, 0, 0, 0, 0, 0, 0, 0, 562, - 563, 560, 663, 0, 620, 621, 0, 0, 487, 488, - 344, 351, 506, 353, 313, 404, 346, 472, 361, 0, - 499, 564, 500, 623, 626, 624, 625, 396, 356, 358, - 431, 362, 372, 419, 471, 402, 424, 311, 462, 433, - 377, 550, 577, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 280, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 605, - 604, 603, 602, 601, 600, 599, 598, 0, 0, 547, - 448, 323, 285, 319, 320, 327, 652, 649, 453, 653, - 0, 293, 527, 370, 0, 414, 343, 592, 593, 0, - 644, 241, 242, 243, 244, 245, 246, 247, 248, 286, - 249, 250, 251, 252, 253, 254, 255, 258, 259, 260, - 261, 262, 263, 264, 265, 595, 256, 257, 266, 267, - 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, - 278, 279, 0, 0, 0, 287, 288, 289, 290, 0, - 0, 281, 282, 283, 284, 0, 0, 0, 478, 479, - 480, 502, 0, 464, 526, 650, 0, 0, 0, 0, - 0, 0, 0, 576, 588, 622, 0, 632, 633, 635, - 637, 636, 639, 438, 439, 0, 641, 642, 643, 640, - 374, 425, 444, 432, 0, 656, 517, 518, 657, 628, - 401, 0, 0, 532, 565, 554, 638, 520, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 336, 0, - 0, 369, 569, 551, 561, 552, 537, 538, 539, 546, - 348, 540, 541, 542, 512, 543, 513, 544, 545, 0, - 568, 519, 434, 385, 586, 585, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 228, 0, 0, 1554, - 0, 0, 0, 309, 229, 514, 634, 516, 515, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 312, 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, 0, 0, 1552, 0, 0, 0, 0, 0, 0, - 299, 441, 460, 310, 429, 473, 315, 437, 452, 305, - 400, 426, 0, 0, 301, 458, 436, 382, 359, 360, - 300, 0, 420, 334, 350, 331, 398, 0, 457, 485, - 330, 476, 0, 468, 303, 0, 467, 397, 454, 459, - 383, 376, 0, 302, 456, 381, 375, 363, 340, 501, - 364, 365, 354, 409, 373, 410, 355, 387, 386, 388, - 0, 0, 0, 0, 0, 496, 497, 0, 0, 645, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 627, 0, 0, 631, 0, 470, 0, 0, 0, - 0, 0, 0, 440, 0, 0, 366, 0, 0, 0, - 486, 0, 423, 403, 659, 0, 0, 421, 371, 455, - 411, 461, 442, 469, 417, 412, 294, 443, 333, 384, - 306, 308, 328, 335, 337, 341, 342, 393, 394, 406, - 428, 445, 446, 447, 332, 316, 422, 317, 352, 318, - 295, 324, 322, 325, 430, 326, 297, 407, 451, 0, - 347, 418, 379, 298, 378, 408, 450, 449, 307, 477, - 483, 484, 573, 0, 489, 660, 661, 662, 498, 0, - 413, 503, 504, 505, 507, 508, 509, 510, 574, 591, - 558, 528, 491, 582, 525, 529, 530, 357, 594, 0, - 0, 0, 482, 367, 368, 0, 339, 338, 380, 416, - 345, 291, 292, 655, 329, 399, 596, 629, 630, 521, - 0, 583, 522, 531, 321, 555, 567, 566, 395, 481, - 0, 578, 581, 511, 654, 0, 575, 590, 658, 589, - 651, 405, 0, 427, 587, 534, 0, 579, 553, 0, - 580, 549, 584, 0, 523, 0, 435, 463, 475, 492, - 495, 524, 609, 610, 611, 296, 494, 613, 614, 615, - 616, 617, 618, 619, 612, 466, 556, 533, 559, 474, - 536, 535, 0, 0, 570, 490, 571, 572, 389, 390, - 391, 392, 349, 597, 314, 493, 415, 0, 557, 0, - 0, 0, 0, 0, 0, 0, 0, 562, 563, 560, - 663, 0, 620, 621, 0, 0, 487, 488, 344, 351, - 506, 353, 313, 404, 346, 472, 361, 0, 499, 564, - 500, 623, 626, 624, 625, 396, 356, 358, 431, 362, - 372, 419, 471, 402, 424, 311, 462, 433, 377, 550, - 577, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 280, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 605, 604, 603, - 602, 601, 600, 599, 598, 0, 0, 547, 448, 323, - 285, 319, 320, 327, 652, 649, 453, 653, 0, 293, - 527, 370, 0, 414, 343, 592, 593, 0, 644, 241, - 242, 243, 244, 245, 246, 247, 248, 286, 249, 250, - 251, 252, 253, 254, 255, 258, 259, 260, 261, 262, - 263, 264, 265, 595, 256, 257, 266, 267, 268, 269, - 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, - 0, 0, 0, 287, 288, 289, 290, 0, 0, 281, - 282, 283, 284, 0, 0, 0, 478, 479, 480, 502, - 0, 464, 526, 650, 0, 0, 0, 0, 0, 0, - 0, 576, 588, 622, 0, 632, 633, 635, 637, 636, - 639, 438, 439, 0, 641, 642, 643, 640, 374, 425, - 444, 432, 0, 656, 517, 518, 657, 628, 401, 0, - 0, 532, 565, 554, 638, 520, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 336, 0, 0, 369, - 569, 551, 561, 552, 537, 538, 539, 546, 348, 540, - 541, 542, 512, 543, 513, 544, 545, 0, 568, 519, - 434, 385, 586, 585, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 228, 0, 0, 0, 0, 0, - 0, 309, 229, 514, 634, 516, 515, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 312, 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, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 299, 441, - 460, 310, 429, 473, 315, 437, 452, 305, 400, 426, - 0, 0, 301, 458, 436, 382, 359, 360, 300, 0, - 420, 334, 350, 331, 398, 0, 457, 485, 330, 476, - 0, 468, 303, 0, 467, 397, 454, 459, 383, 376, - 0, 302, 456, 381, 375, 363, 340, 501, 364, 365, - 354, 409, 373, 410, 355, 387, 386, 388, 0, 0, - 0, 0, 0, 496, 497, 0, 0, 645, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 627, - 0, 0, 631, 0, 470, 0, 0, 0, 0, 0, - 0, 440, 0, 0, 366, 0, 0, 0, 486, 0, - 423, 403, 659, 0, 0, 421, 371, 455, 411, 461, - 442, 469, 417, 412, 294, 443, 333, 384, 306, 308, - 328, 335, 337, 341, 342, 393, 394, 406, 428, 445, - 446, 447, 332, 316, 422, 317, 352, 318, 295, 324, - 322, 325, 430, 326, 297, 407, 451, 0, 347, 418, - 379, 298, 378, 408, 450, 449, 307, 477, 483, 484, - 573, 0, 489, 660, 661, 662, 498, 2487, 413, 503, - 504, 505, 507, 508, 509, 510, 574, 591, 558, 528, - 491, 582, 525, 529, 530, 357, 594, 0, 0, 0, - 482, 367, 368, 0, 339, 338, 380, 416, 345, 291, - 292, 655, 329, 399, 596, 629, 630, 521, 0, 583, - 522, 531, 321, 555, 567, 566, 395, 481, 0, 578, - 581, 511, 654, 0, 575, 590, 658, 589, 651, 405, - 0, 427, 587, 534, 0, 579, 553, 0, 580, 549, - 584, 0, 523, 0, 435, 463, 475, 492, 495, 524, - 609, 610, 611, 296, 494, 613, 614, 615, 616, 617, - 618, 619, 612, 466, 556, 533, 559, 474, 536, 535, - 0, 0, 570, 490, 571, 572, 389, 390, 391, 392, - 349, 597, 314, 493, 415, 0, 557, 0, 0, 0, - 0, 0, 0, 0, 0, 562, 563, 560, 663, 0, - 620, 621, 0, 0, 487, 488, 344, 351, 506, 353, - 313, 404, 346, 472, 361, 0, 499, 564, 500, 623, - 626, 624, 625, 396, 356, 358, 431, 362, 372, 419, - 471, 402, 424, 311, 462, 433, 377, 550, 577, 0, + 479, 480, 481, 503, 0, 465, 527, 651, 0, 0, + 0, 0, 0, 0, 0, 577, 589, 623, 0, 633, + 634, 636, 638, 637, 640, 439, 440, 0, 642, 643, + 644, 641, 375, 426, 445, 433, 0, 657, 518, 519, + 658, 629, 402, 0, 0, 533, 566, 555, 639, 521, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 280, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 605, 604, 603, 602, 601, - 600, 599, 598, 979, 0, 547, 448, 323, 285, 319, - 320, 327, 652, 649, 453, 653, 0, 293, 527, 370, - 0, 414, 343, 592, 593, 0, 644, 241, 242, 243, - 244, 245, 246, 247, 248, 286, 249, 250, 251, 252, - 253, 254, 255, 258, 259, 260, 261, 262, 263, 264, - 265, 595, 256, 257, 266, 267, 268, 269, 270, 271, - 272, 273, 274, 275, 276, 277, 278, 279, 0, 0, - 0, 287, 288, 289, 290, 0, 0, 281, 282, 283, - 284, 0, 0, 0, 478, 479, 480, 502, 0, 464, - 526, 650, 0, 0, 0, 0, 0, 0, 0, 576, - 588, 622, 0, 632, 633, 635, 637, 636, 639, 438, - 439, 0, 641, 642, 643, 640, 374, 425, 444, 432, - 0, 656, 517, 518, 657, 628, 401, 0, 0, 532, - 565, 554, 638, 520, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 336, 0, 0, 369, 569, 551, - 561, 552, 537, 538, 539, 546, 348, 540, 541, 542, - 512, 543, 513, 544, 545, 0, 568, 519, 434, 385, - 586, 585, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 228, 0, 0, 1554, 0, 0, 0, 309, - 229, 514, 634, 516, 515, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 312, 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, 0, 0, 1764, - 0, 0, 0, 0, 0, 0, 299, 441, 460, 310, - 429, 473, 315, 437, 452, 305, 400, 426, 0, 0, - 301, 458, 436, 382, 359, 360, 300, 0, 420, 334, - 350, 331, 398, 0, 457, 485, 330, 476, 0, 468, - 303, 0, 467, 397, 454, 459, 383, 376, 0, 302, - 456, 381, 375, 363, 340, 501, 364, 365, 354, 409, - 373, 410, 355, 387, 386, 388, 0, 0, 0, 0, - 0, 496, 497, 0, 0, 645, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 627, 0, 0, - 631, 0, 470, 0, 0, 0, 0, 0, 0, 440, - 0, 0, 366, 0, 0, 0, 486, 0, 423, 403, - 659, 0, 0, 421, 371, 455, 411, 461, 442, 469, - 417, 412, 294, 443, 333, 384, 306, 308, 328, 335, - 337, 341, 342, 393, 394, 406, 428, 445, 446, 447, - 332, 316, 422, 317, 352, 318, 295, 324, 322, 325, - 430, 326, 297, 407, 451, 0, 347, 418, 379, 298, - 378, 408, 450, 449, 307, 477, 483, 484, 573, 0, - 489, 660, 661, 662, 498, 0, 413, 503, 504, 505, - 507, 508, 509, 510, 574, 591, 558, 528, 491, 582, - 525, 529, 530, 357, 594, 0, 0, 0, 482, 367, - 368, 0, 339, 338, 380, 416, 345, 291, 292, 655, - 329, 399, 596, 629, 630, 521, 0, 583, 522, 531, - 321, 555, 567, 566, 395, 481, 0, 578, 581, 511, - 654, 0, 575, 590, 658, 589, 651, 405, 0, 427, - 587, 534, 0, 579, 553, 0, 580, 549, 584, 0, - 523, 0, 435, 463, 475, 492, 495, 524, 609, 610, - 611, 296, 494, 613, 614, 615, 616, 617, 618, 619, - 612, 466, 556, 533, 559, 474, 536, 535, 0, 0, - 570, 490, 571, 572, 389, 390, 391, 392, 349, 597, - 314, 493, 415, 0, 557, 0, 0, 0, 0, 0, - 0, 0, 0, 562, 563, 560, 663, 0, 620, 621, - 0, 0, 487, 488, 344, 351, 506, 353, 313, 404, - 346, 472, 361, 0, 499, 564, 500, 623, 626, 624, - 625, 396, 356, 358, 431, 362, 372, 419, 471, 402, - 424, 311, 462, 433, 377, 550, 577, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 280, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 605, 604, 603, 602, 601, 600, 599, - 598, 0, 0, 547, 448, 323, 285, 319, 320, 327, - 652, 649, 453, 653, 0, 293, 527, 370, 0, 414, - 343, 592, 593, 0, 644, 241, 242, 243, 244, 245, - 246, 247, 248, 286, 249, 250, 251, 252, 253, 254, - 255, 258, 259, 260, 261, 262, 263, 264, 265, 595, - 256, 257, 266, 267, 268, 269, 270, 271, 272, 273, - 274, 275, 276, 277, 278, 279, 0, 0, 0, 287, - 288, 289, 290, 0, 0, 281, 282, 283, 284, 0, - 0, 0, 478, 479, 480, 502, 0, 464, 526, 650, - 0, 0, 0, 0, 0, 0, 0, 576, 588, 622, - 0, 632, 633, 635, 637, 636, 639, 438, 439, 0, - 641, 642, 643, 640, 374, 425, 444, 432, 0, 656, - 517, 518, 657, 628, 401, 0, 0, 532, 565, 554, - 638, 520, 0, 0, 0, 0, 0, 2527, 0, 0, - 0, 0, 336, 0, 0, 369, 569, 551, 561, 552, - 537, 538, 539, 546, 348, 540, 541, 542, 512, 543, - 513, 544, 545, 0, 568, 519, 434, 385, 586, 585, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 228, 0, 0, 2529, 0, 0, 0, 309, 229, 514, - 634, 516, 515, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 312, 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, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 299, 441, 460, 310, 429, 473, - 315, 437, 452, 305, 400, 426, 0, 0, 301, 458, - 436, 382, 359, 360, 300, 0, 420, 334, 350, 331, - 398, 0, 457, 485, 330, 476, 0, 468, 303, 0, - 467, 397, 454, 459, 383, 376, 0, 302, 456, 381, - 375, 363, 340, 501, 364, 365, 354, 409, 373, 410, - 355, 387, 386, 388, 0, 0, 0, 0, 0, 496, - 497, 0, 0, 645, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 627, 0, 0, 631, 0, - 470, 0, 0, 0, 0, 0, 0, 440, 0, 0, - 366, 0, 0, 0, 486, 0, 423, 403, 659, 0, - 0, 421, 371, 455, 411, 461, 442, 469, 417, 412, - 294, 443, 333, 384, 306, 308, 328, 335, 337, 341, - 342, 393, 394, 406, 428, 445, 446, 447, 332, 316, - 422, 317, 352, 318, 295, 324, 322, 325, 430, 326, - 297, 407, 451, 0, 347, 418, 379, 298, 378, 408, - 450, 449, 307, 477, 483, 484, 573, 0, 489, 660, - 661, 662, 498, 0, 413, 503, 504, 505, 507, 508, - 509, 510, 574, 591, 558, 528, 491, 582, 525, 529, - 530, 357, 594, 0, 0, 0, 482, 367, 368, 0, - 339, 338, 380, 416, 345, 291, 292, 655, 329, 399, - 596, 629, 630, 521, 0, 583, 522, 531, 321, 555, - 567, 566, 395, 481, 0, 578, 581, 511, 654, 0, - 575, 590, 658, 589, 651, 405, 0, 427, 587, 534, - 0, 579, 553, 0, 580, 549, 584, 0, 523, 0, - 435, 463, 475, 492, 495, 524, 609, 610, 611, 296, - 494, 613, 614, 615, 616, 617, 618, 619, 612, 466, - 556, 533, 559, 474, 536, 535, 0, 0, 570, 490, - 571, 572, 389, 390, 391, 392, 349, 597, 314, 493, - 415, 0, 557, 0, 0, 0, 0, 0, 0, 0, - 0, 562, 563, 560, 663, 0, 620, 621, 0, 0, - 487, 488, 344, 351, 506, 353, 313, 404, 346, 472, - 361, 0, 499, 564, 500, 623, 626, 624, 625, 396, - 356, 358, 431, 362, 372, 419, 471, 402, 424, 311, - 462, 433, 377, 550, 577, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 280, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 605, 604, 603, 602, 601, 600, 599, 598, 0, - 0, 547, 448, 323, 285, 319, 320, 327, 652, 649, - 453, 653, 0, 293, 527, 370, 0, 414, 343, 592, - 593, 0, 644, 241, 242, 243, 244, 245, 246, 247, - 248, 286, 249, 250, 251, 252, 253, 254, 255, 258, - 259, 260, 261, 262, 263, 264, 265, 595, 256, 257, - 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, - 276, 277, 278, 279, 0, 0, 0, 287, 288, 289, - 290, 0, 0, 281, 282, 283, 284, 0, 0, 0, - 478, 479, 480, 502, 0, 464, 526, 650, 0, 0, - 0, 0, 0, 0, 0, 576, 588, 622, 0, 632, - 633, 635, 637, 636, 639, 438, 439, 0, 641, 642, - 643, 640, 374, 425, 444, 432, 0, 656, 517, 518, - 657, 628, 401, 0, 0, 532, 565, 554, 638, 520, - 0, 0, 0, 0, 0, 2135, 0, 0, 0, 0, - 336, 0, 0, 369, 569, 551, 561, 552, 537, 538, - 539, 546, 348, 540, 541, 542, 512, 543, 513, 544, - 545, 0, 568, 519, 434, 385, 586, 585, 0, 0, + 337, 0, 0, 370, 570, 552, 562, 553, 538, 539, + 540, 547, 349, 541, 542, 543, 513, 544, 514, 545, + 546, 0, 569, 520, 435, 386, 587, 586, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 228, 0, - 0, 2136, 0, 0, 0, 309, 229, 514, 634, 516, - 515, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 312, 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, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 299, 441, 460, 310, 429, 473, 315, 437, - 452, 305, 400, 426, 0, 0, 301, 458, 436, 382, - 359, 360, 300, 0, 420, 334, 350, 331, 398, 0, - 457, 485, 330, 476, 0, 468, 303, 0, 467, 397, - 454, 459, 383, 376, 0, 302, 456, 381, 375, 363, - 340, 501, 364, 365, 354, 409, 373, 410, 355, 387, - 386, 388, 0, 0, 0, 0, 0, 496, 497, 0, - 0, 645, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 627, 0, 0, 631, 0, 470, 0, - 0, 0, 0, 0, 0, 440, 0, 0, 366, 0, - 0, 0, 486, 0, 423, 403, 659, 0, 0, 421, - 371, 455, 411, 461, 442, 469, 417, 412, 294, 443, - 333, 384, 306, 308, 328, 335, 337, 341, 342, 393, - 394, 406, 428, 445, 446, 447, 332, 316, 422, 317, - 352, 318, 295, 324, 322, 325, 430, 326, 297, 407, - 451, 0, 347, 418, 379, 298, 378, 408, 450, 449, - 307, 477, 483, 484, 573, 0, 489, 660, 661, 662, - 498, 0, 413, 503, 504, 505, 507, 508, 509, 510, - 574, 591, 558, 528, 491, 582, 525, 529, 530, 357, - 594, 0, 0, 0, 482, 367, 368, 0, 339, 338, - 380, 416, 345, 291, 292, 655, 329, 399, 596, 629, - 630, 521, 0, 583, 522, 531, 321, 555, 567, 566, - 395, 481, 0, 578, 581, 511, 654, 0, 575, 590, - 658, 589, 651, 405, 0, 427, 587, 534, 0, 579, - 553, 0, 580, 549, 584, 0, 523, 0, 435, 463, - 475, 492, 495, 524, 609, 610, 611, 296, 494, 613, - 614, 615, 616, 617, 618, 619, 612, 466, 556, 533, - 559, 474, 536, 535, 0, 0, 570, 490, 571, 572, - 389, 390, 391, 392, 349, 597, 314, 493, 415, 0, - 557, 0, 0, 0, 0, 0, 0, 0, 0, 562, - 563, 560, 663, 0, 620, 621, 0, 0, 487, 488, - 344, 351, 506, 353, 313, 404, 346, 472, 361, 0, - 499, 564, 500, 623, 626, 624, 625, 396, 356, 358, - 431, 362, 372, 419, 471, 402, 424, 311, 462, 433, - 377, 550, 577, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 310, 229, 515, 635, 517, + 516, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 313, 0, 2444, 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, 0, 0, 0, 0, 0, + 0, 0, 300, 442, 461, 311, 430, 474, 316, 438, + 453, 306, 401, 427, 0, 0, 302, 459, 437, 383, + 360, 361, 301, 0, 421, 335, 351, 332, 399, 0, + 458, 486, 331, 477, 0, 469, 304, 0, 468, 398, + 455, 460, 384, 377, 0, 303, 457, 382, 376, 364, + 341, 502, 365, 366, 355, 410, 374, 411, 356, 388, + 387, 389, 0, 0, 0, 0, 0, 497, 498, 0, + 0, 646, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 628, 0, 0, 632, 2443, 471, 0, + 0, 0, 2449, 2446, 2448, 441, 0, 2447, 367, 0, + 0, 0, 487, 0, 424, 404, 660, 0, 2441, 422, + 372, 456, 412, 462, 443, 470, 418, 413, 294, 444, + 334, 385, 307, 309, 329, 336, 338, 342, 343, 394, + 395, 407, 429, 446, 447, 448, 333, 317, 423, 318, + 353, 319, 295, 325, 323, 326, 431, 327, 297, 408, + 452, 0, 348, 419, 380, 298, 379, 409, 451, 450, + 308, 478, 484, 485, 574, 0, 490, 661, 662, 663, + 499, 0, 414, 504, 505, 506, 508, 509, 510, 511, + 575, 592, 559, 529, 492, 583, 526, 530, 531, 358, + 595, 0, 0, 0, 483, 368, 369, 0, 340, 339, + 381, 417, 299, 346, 291, 292, 656, 330, 400, 597, + 630, 631, 522, 0, 584, 523, 532, 322, 556, 568, + 567, 396, 482, 0, 579, 582, 512, 655, 0, 576, + 591, 659, 590, 652, 406, 0, 428, 588, 535, 0, + 580, 554, 0, 581, 550, 585, 0, 524, 0, 436, + 464, 476, 493, 496, 525, 610, 611, 612, 296, 495, + 614, 615, 616, 617, 618, 619, 620, 613, 467, 557, + 534, 560, 475, 537, 536, 0, 0, 571, 491, 572, + 573, 390, 391, 392, 393, 350, 598, 315, 494, 416, + 0, 558, 0, 0, 0, 0, 0, 0, 0, 0, + 563, 564, 561, 664, 0, 621, 622, 0, 0, 488, + 489, 345, 352, 507, 354, 314, 405, 347, 473, 362, + 0, 500, 565, 501, 624, 627, 625, 626, 397, 357, + 359, 432, 363, 373, 420, 472, 403, 425, 312, 463, + 434, 378, 551, 578, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 280, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 606, 605, 604, 603, 602, 601, 600, 599, 0, 0, + 548, 449, 324, 285, 320, 321, 328, 653, 650, 454, + 654, 0, 293, 528, 371, 0, 415, 344, 593, 594, + 0, 645, 241, 242, 243, 244, 245, 246, 247, 248, + 286, 249, 250, 251, 252, 253, 254, 255, 258, 259, + 260, 261, 262, 263, 264, 265, 596, 256, 257, 266, + 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, + 277, 278, 279, 0, 0, 0, 287, 288, 289, 290, + 0, 0, 281, 282, 283, 284, 0, 0, 0, 479, + 480, 481, 503, 0, 465, 527, 651, 0, 0, 0, + 0, 0, 0, 0, 577, 589, 623, 0, 633, 634, + 636, 638, 637, 640, 439, 440, 0, 642, 643, 644, + 641, 375, 426, 445, 433, 0, 657, 518, 519, 658, + 629, 402, 0, 0, 533, 566, 555, 639, 521, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 337, + 0, 0, 370, 570, 552, 562, 553, 538, 539, 540, + 547, 349, 541, 542, 543, 513, 544, 514, 545, 546, + 0, 569, 520, 435, 386, 587, 586, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 228, 0, 0, + 0, 0, 0, 0, 310, 229, 515, 635, 517, 516, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 313, + 0, 2444, 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, 0, 0, 0, 0, 0, 0, + 0, 300, 442, 461, 311, 430, 474, 316, 438, 453, + 306, 401, 427, 0, 0, 302, 459, 437, 383, 360, + 361, 301, 0, 421, 335, 351, 332, 399, 0, 458, + 486, 331, 477, 0, 469, 304, 0, 468, 398, 455, + 460, 384, 377, 0, 303, 457, 382, 376, 364, 341, + 502, 365, 366, 355, 410, 374, 411, 356, 388, 387, + 389, 0, 0, 0, 0, 0, 497, 498, 0, 0, + 646, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 628, 0, 0, 632, 2443, 471, 0, 0, + 0, 2449, 2446, 2448, 441, 0, 2447, 367, 0, 0, + 0, 487, 0, 424, 404, 660, 0, 0, 422, 372, + 456, 412, 462, 443, 470, 418, 413, 294, 444, 334, + 385, 307, 309, 329, 336, 338, 342, 343, 394, 395, + 407, 429, 446, 447, 448, 333, 317, 423, 318, 353, + 319, 295, 325, 323, 326, 431, 327, 297, 408, 452, + 0, 348, 419, 380, 298, 379, 409, 451, 450, 308, + 478, 484, 485, 574, 0, 490, 661, 662, 663, 499, + 0, 414, 504, 505, 506, 508, 509, 510, 511, 575, + 592, 559, 529, 492, 583, 526, 530, 531, 358, 595, + 0, 0, 0, 483, 368, 369, 0, 340, 339, 381, + 417, 299, 346, 291, 292, 656, 330, 400, 597, 630, + 631, 522, 0, 584, 523, 532, 322, 556, 568, 567, + 396, 482, 0, 579, 582, 512, 655, 0, 576, 591, + 659, 590, 652, 406, 0, 428, 588, 535, 0, 580, + 554, 0, 581, 550, 585, 0, 524, 0, 436, 464, + 476, 493, 496, 525, 610, 611, 612, 296, 495, 614, + 615, 616, 617, 618, 619, 620, 613, 467, 557, 534, + 560, 475, 537, 536, 0, 0, 571, 491, 572, 573, + 390, 391, 392, 393, 350, 598, 315, 494, 416, 0, + 558, 0, 0, 0, 0, 0, 0, 0, 0, 563, + 564, 561, 664, 0, 621, 622, 0, 0, 488, 489, + 345, 352, 507, 354, 314, 405, 347, 473, 362, 0, + 500, 565, 501, 624, 627, 625, 626, 397, 357, 359, + 432, 363, 373, 420, 472, 403, 425, 312, 463, 434, + 378, 551, 578, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 280, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 605, - 604, 603, 602, 601, 600, 599, 598, 0, 0, 547, - 448, 323, 285, 319, 320, 327, 652, 649, 453, 653, - 0, 293, 527, 370, 0, 414, 343, 592, 593, 0, - 644, 241, 242, 243, 244, 245, 246, 247, 248, 286, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 606, + 605, 604, 603, 602, 601, 600, 599, 0, 0, 548, + 449, 324, 285, 320, 321, 328, 653, 650, 454, 654, + 0, 293, 528, 371, 0, 415, 344, 593, 594, 0, + 645, 241, 242, 243, 244, 245, 246, 247, 248, 286, 249, 250, 251, 252, 253, 254, 255, 258, 259, 260, - 261, 262, 263, 264, 265, 595, 256, 257, 266, 267, + 261, 262, 263, 264, 265, 596, 256, 257, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 0, 0, 0, 287, 288, 289, 290, 0, - 0, 281, 282, 283, 284, 0, 0, 0, 478, 479, - 480, 502, 0, 464, 526, 650, 0, 0, 0, 0, - 0, 0, 0, 576, 588, 622, 0, 632, 633, 635, - 637, 636, 639, 438, 439, 0, 641, 642, 643, 640, - 374, 425, 444, 432, 0, 656, 517, 518, 657, 628, - 401, 0, 0, 532, 565, 554, 638, 520, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 336, 0, - 0, 369, 569, 551, 561, 552, 537, 538, 539, 546, - 348, 540, 541, 542, 512, 543, 513, 544, 545, 0, - 568, 519, 434, 385, 586, 585, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 228, 0, 0, 3196, - 3198, 0, 0, 309, 229, 514, 634, 516, 515, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 312, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 299, 441, 460, 310, 429, 473, 315, 437, 452, 305, - 400, 426, 0, 0, 301, 458, 436, 382, 359, 360, - 300, 0, 420, 334, 350, 331, 398, 0, 457, 485, - 330, 476, 0, 468, 303, 0, 467, 397, 454, 459, - 383, 376, 0, 302, 456, 381, 375, 363, 340, 501, - 364, 365, 354, 409, 373, 410, 355, 387, 386, 388, - 0, 0, 0, 0, 0, 496, 497, 0, 0, 645, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 627, 0, 0, 631, 0, 470, 0, 0, 0, - 0, 0, 0, 440, 0, 0, 366, 0, 0, 0, - 486, 0, 423, 403, 659, 0, 0, 421, 371, 455, - 411, 461, 442, 469, 417, 412, 294, 443, 333, 384, - 306, 308, 328, 335, 337, 341, 342, 393, 394, 406, - 428, 445, 446, 447, 332, 316, 422, 317, 352, 318, - 295, 324, 322, 325, 430, 326, 297, 407, 451, 0, - 347, 418, 379, 298, 378, 408, 450, 449, 307, 477, - 483, 484, 573, 0, 489, 660, 661, 662, 498, 0, - 413, 503, 504, 505, 507, 508, 509, 510, 574, 591, - 558, 528, 491, 582, 525, 529, 530, 357, 594, 0, - 0, 0, 482, 367, 368, 0, 339, 338, 380, 416, - 345, 291, 292, 655, 329, 399, 596, 629, 630, 521, - 0, 583, 522, 531, 321, 555, 567, 566, 395, 481, - 0, 578, 581, 511, 654, 0, 575, 590, 658, 589, - 651, 405, 0, 427, 587, 534, 0, 579, 553, 0, - 580, 549, 584, 0, 523, 0, 435, 463, 475, 492, - 495, 524, 609, 610, 611, 296, 494, 613, 614, 615, - 616, 617, 618, 619, 612, 466, 556, 533, 559, 474, - 536, 535, 0, 0, 570, 490, 571, 572, 389, 390, - 391, 392, 349, 597, 314, 493, 415, 0, 557, 0, - 0, 0, 0, 0, 0, 0, 0, 562, 563, 560, - 663, 0, 620, 621, 0, 0, 487, 488, 344, 351, - 506, 353, 313, 404, 346, 472, 361, 0, 499, 564, - 500, 623, 626, 624, 625, 396, 356, 358, 431, 362, - 372, 419, 471, 402, 424, 311, 462, 433, 377, 550, - 577, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 280, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 605, 604, 603, - 602, 601, 600, 599, 598, 0, 0, 547, 448, 323, - 285, 319, 320, 327, 652, 649, 453, 653, 0, 293, - 527, 370, 0, 414, 343, 592, 593, 0, 644, 241, - 242, 243, 244, 245, 246, 247, 248, 286, 249, 250, - 251, 252, 253, 254, 255, 258, 259, 260, 261, 262, - 263, 264, 265, 595, 256, 257, 266, 267, 268, 269, - 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, - 0, 0, 0, 287, 288, 289, 290, 0, 0, 281, - 282, 283, 284, 0, 0, 0, 478, 479, 480, 502, - 0, 464, 526, 650, 0, 0, 0, 0, 0, 0, - 0, 576, 588, 622, 0, 632, 633, 635, 637, 636, - 639, 438, 439, 0, 641, 642, 643, 640, 374, 425, - 444, 432, 0, 656, 517, 518, 657, 628, 401, 0, - 0, 532, 565, 554, 638, 520, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 336, 2550, 0, 369, - 569, 551, 561, 552, 537, 538, 539, 546, 348, 540, - 541, 542, 512, 543, 513, 544, 545, 0, 568, 519, - 434, 385, 586, 585, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 228, 0, 0, 1554, 0, 0, - 0, 309, 229, 514, 634, 516, 515, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 312, 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, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 299, 441, - 460, 310, 429, 473, 315, 437, 452, 305, 400, 426, - 0, 0, 301, 458, 436, 382, 359, 360, 300, 0, - 420, 334, 350, 331, 398, 0, 457, 485, 330, 476, - 0, 468, 303, 0, 467, 397, 454, 459, 383, 376, - 0, 302, 456, 381, 375, 363, 340, 501, 364, 365, - 354, 409, 373, 410, 355, 387, 386, 388, 0, 0, - 0, 0, 0, 496, 497, 0, 0, 645, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 627, - 0, 0, 631, 0, 470, 0, 0, 0, 0, 0, - 0, 440, 0, 0, 366, 0, 0, 0, 486, 0, - 423, 403, 659, 0, 0, 421, 371, 455, 411, 461, - 442, 469, 417, 412, 294, 443, 333, 384, 306, 308, - 328, 335, 337, 341, 342, 393, 394, 406, 428, 445, - 446, 447, 332, 316, 422, 317, 352, 318, 295, 324, - 322, 325, 430, 326, 297, 407, 451, 0, 347, 418, - 379, 298, 378, 408, 450, 449, 307, 477, 483, 484, - 573, 0, 489, 660, 661, 662, 498, 0, 413, 503, - 504, 505, 507, 508, 509, 510, 574, 591, 558, 528, - 491, 582, 525, 529, 530, 357, 594, 0, 0, 0, - 482, 367, 368, 0, 339, 338, 380, 416, 345, 291, - 292, 655, 329, 399, 596, 629, 630, 521, 0, 583, - 522, 531, 321, 555, 567, 566, 395, 481, 0, 578, - 581, 511, 654, 0, 575, 590, 658, 589, 651, 405, - 0, 427, 587, 534, 0, 579, 553, 0, 580, 549, - 584, 0, 523, 0, 435, 463, 475, 492, 495, 524, - 609, 610, 611, 296, 494, 613, 614, 615, 616, 617, - 618, 619, 612, 466, 556, 533, 559, 474, 536, 535, - 0, 0, 570, 490, 571, 572, 389, 390, 391, 392, - 349, 597, 314, 493, 415, 0, 557, 0, 0, 0, - 0, 0, 0, 0, 0, 562, 563, 560, 663, 0, - 620, 621, 0, 0, 487, 488, 344, 351, 506, 353, - 313, 404, 346, 472, 361, 0, 499, 564, 500, 623, - 626, 624, 625, 396, 356, 358, 431, 362, 372, 419, - 471, 402, 424, 311, 462, 433, 377, 550, 577, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 280, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 605, 604, 603, 602, 601, - 600, 599, 598, 0, 0, 547, 448, 323, 285, 319, - 320, 327, 652, 649, 453, 653, 0, 293, 527, 370, - 0, 414, 343, 592, 593, 0, 644, 241, 242, 243, - 244, 245, 246, 247, 248, 286, 249, 250, 251, 252, - 253, 254, 255, 258, 259, 260, 261, 262, 263, 264, - 265, 595, 256, 257, 266, 267, 268, 269, 270, 271, - 272, 273, 274, 275, 276, 277, 278, 279, 0, 0, - 0, 287, 288, 289, 290, 0, 0, 281, 282, 283, - 284, 0, 0, 0, 478, 479, 480, 502, 0, 464, - 526, 650, 0, 0, 0, 0, 0, 0, 0, 576, - 588, 622, 0, 632, 633, 635, 637, 636, 639, 438, - 439, 0, 641, 642, 643, 640, 374, 425, 444, 432, - 0, 656, 517, 518, 657, 628, 401, 0, 0, 532, - 565, 554, 638, 520, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 670, 336, 0, 0, 369, 569, 551, - 561, 552, 537, 538, 539, 546, 348, 540, 541, 542, - 512, 543, 513, 544, 545, 0, 568, 519, 434, 385, - 586, 585, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 228, 0, 0, 0, 0, 0, 0, 309, - 229, 514, 634, 516, 515, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 312, 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, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 299, 441, 460, 310, - 429, 473, 315, 437, 452, 305, 400, 426, 0, 0, - 301, 458, 436, 382, 359, 360, 300, 0, 420, 334, - 350, 331, 398, 0, 457, 485, 330, 476, 0, 468, - 303, 0, 467, 397, 454, 459, 383, 376, 0, 302, - 456, 381, 375, 363, 340, 501, 364, 365, 354, 409, - 373, 410, 355, 387, 386, 388, 0, 0, 0, 0, - 0, 496, 497, 0, 0, 645, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 627, 0, 0, - 631, 0, 470, 0, 669, 0, 0, 0, 0, 440, - 0, 0, 366, 0, 0, 0, 486, 0, 423, 403, - 659, 0, 0, 421, 371, 455, 411, 461, 442, 469, - 417, 412, 294, 443, 333, 384, 306, 308, 328, 335, - 337, 341, 342, 393, 394, 406, 428, 445, 446, 447, - 332, 316, 422, 317, 352, 318, 295, 324, 322, 325, - 430, 326, 297, 407, 451, 0, 347, 418, 379, 298, - 378, 408, 450, 449, 307, 477, 483, 484, 573, 0, - 489, 660, 661, 662, 498, 0, 413, 503, 504, 505, - 507, 508, 509, 510, 574, 591, 558, 528, 491, 582, - 525, 529, 530, 357, 594, 0, 0, 0, 482, 367, - 368, 0, 339, 338, 380, 416, 345, 291, 292, 655, - 329, 399, 596, 629, 630, 521, 0, 583, 522, 531, - 321, 555, 567, 566, 395, 481, 0, 578, 581, 511, - 654, 0, 575, 590, 658, 589, 651, 405, 0, 427, - 587, 534, 0, 579, 553, 0, 580, 549, 584, 0, - 523, 0, 435, 463, 475, 492, 495, 524, 609, 610, - 611, 296, 494, 613, 614, 615, 616, 617, 618, 619, - 612, 466, 556, 533, 559, 474, 536, 535, 0, 0, - 570, 490, 571, 572, 389, 390, 391, 392, 349, 597, - 314, 493, 415, 0, 557, 0, 0, 0, 0, 0, - 0, 0, 0, 562, 563, 560, 663, 0, 620, 621, - 0, 0, 487, 488, 344, 351, 506, 353, 313, 404, - 346, 472, 361, 0, 499, 564, 500, 623, 626, 624, - 625, 396, 356, 358, 431, 362, 372, 419, 471, 402, - 424, 311, 462, 433, 377, 550, 577, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 280, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 605, 604, 603, 602, 601, 600, 599, - 598, 0, 0, 547, 448, 323, 285, 319, 320, 327, - 652, 649, 453, 653, 0, 293, 527, 370, 0, 414, - 343, 592, 593, 0, 644, 241, 242, 243, 244, 245, - 246, 247, 248, 286, 249, 250, 251, 252, 253, 254, - 255, 258, 259, 260, 261, 262, 263, 264, 265, 595, - 256, 257, 266, 267, 268, 269, 270, 271, 272, 273, - 274, 275, 276, 277, 278, 279, 0, 0, 0, 287, - 288, 289, 290, 0, 0, 281, 282, 283, 284, 0, - 0, 0, 478, 479, 480, 502, 0, 464, 526, 650, - 0, 0, 0, 0, 0, 0, 0, 576, 588, 622, - 0, 632, 633, 635, 637, 636, 639, 438, 439, 0, - 641, 642, 643, 640, 374, 425, 444, 432, 0, 656, - 517, 518, 657, 628, 401, 0, 0, 532, 565, 554, - 638, 520, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 336, 0, 0, 369, 569, 551, 561, 552, - 537, 538, 539, 546, 348, 540, 541, 542, 512, 543, - 513, 544, 545, 0, 568, 519, 434, 385, 586, 585, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 228, 853, 0, 0, 0, 0, 0, 309, 229, 514, - 634, 516, 515, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 312, 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, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 299, 441, 460, 310, 429, 473, - 315, 437, 452, 305, 400, 426, 0, 0, 301, 458, - 436, 382, 359, 360, 300, 0, 420, 334, 350, 331, - 398, 0, 457, 485, 330, 476, 0, 468, 303, 0, - 467, 397, 454, 459, 383, 376, 0, 302, 456, 381, - 375, 363, 340, 501, 364, 365, 354, 409, 373, 410, - 355, 387, 386, 388, 0, 0, 0, 0, 0, 496, - 497, 0, 0, 645, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 627, 0, 0, 631, 0, - 470, 0, 0, 0, 0, 0, 0, 440, 0, 0, - 366, 0, 0, 0, 486, 0, 423, 403, 659, 0, - 0, 421, 371, 455, 411, 461, 442, 469, 417, 412, - 294, 443, 333, 384, 306, 308, 328, 335, 337, 341, - 342, 393, 394, 406, 428, 445, 446, 447, 332, 316, - 422, 317, 352, 318, 295, 324, 322, 325, 430, 326, - 297, 407, 451, 0, 347, 418, 379, 298, 378, 408, - 450, 449, 307, 477, 483, 484, 573, 0, 489, 660, - 661, 662, 498, 0, 413, 503, 504, 505, 507, 508, - 509, 510, 574, 591, 558, 528, 491, 582, 525, 529, - 530, 357, 594, 0, 0, 0, 482, 367, 368, 0, - 339, 338, 380, 416, 345, 291, 292, 655, 329, 399, - 596, 629, 630, 521, 0, 583, 522, 531, 321, 555, - 567, 566, 395, 481, 0, 578, 581, 511, 654, 0, - 575, 590, 658, 589, 651, 405, 0, 427, 587, 534, - 0, 579, 553, 0, 580, 549, 584, 0, 523, 0, - 435, 463, 475, 492, 495, 524, 609, 610, 611, 296, - 494, 613, 614, 615, 616, 617, 618, 619, 612, 466, - 556, 533, 559, 474, 536, 535, 0, 0, 570, 490, - 571, 572, 389, 390, 391, 392, 349, 597, 314, 493, - 415, 0, 557, 0, 0, 0, 0, 0, 0, 0, - 0, 562, 563, 560, 663, 0, 620, 621, 0, 0, - 487, 488, 344, 351, 506, 353, 313, 404, 346, 472, - 361, 0, 499, 564, 500, 623, 626, 624, 625, 396, - 356, 358, 431, 362, 372, 419, 471, 402, 424, 311, - 462, 433, 377, 550, 577, 0, 0, 0, 0, 0, + 0, 281, 282, 283, 284, 0, 0, 0, 479, 480, + 481, 503, 0, 465, 527, 651, 0, 0, 0, 0, + 0, 0, 0, 577, 589, 623, 0, 633, 634, 636, + 638, 637, 640, 439, 440, 0, 642, 643, 644, 641, + 375, 426, 445, 433, 0, 657, 518, 519, 658, 629, + 402, 0, 0, 533, 566, 555, 639, 521, 0, 0, + 0, 0, 0, 2136, 0, 0, 0, 0, 337, 0, + 0, 370, 570, 552, 562, 553, 538, 539, 540, 547, + 349, 541, 542, 543, 513, 544, 514, 545, 546, 0, + 569, 520, 435, 386, 587, 586, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 228, 0, 0, 2137, + 0, 0, 0, 310, 229, 515, 635, 517, 516, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 313, 0, + 0, 1261, 1262, 1263, 1260, 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, 0, 0, 0, + 300, 442, 461, 311, 430, 474, 316, 438, 453, 306, + 401, 427, 0, 0, 302, 459, 437, 383, 360, 361, + 301, 0, 421, 335, 351, 332, 399, 0, 458, 486, + 331, 477, 0, 469, 304, 0, 468, 398, 455, 460, + 384, 377, 0, 303, 457, 382, 376, 364, 341, 502, + 365, 366, 355, 410, 374, 411, 356, 388, 387, 389, + 0, 0, 0, 0, 0, 497, 498, 0, 0, 646, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 628, 0, 0, 632, 0, 471, 0, 0, 0, + 0, 0, 0, 441, 0, 0, 367, 0, 0, 0, + 487, 0, 424, 404, 660, 0, 0, 422, 372, 456, + 412, 462, 443, 470, 418, 413, 294, 444, 334, 385, + 307, 309, 329, 336, 338, 342, 343, 394, 395, 407, + 429, 446, 447, 448, 333, 317, 423, 318, 353, 319, + 295, 325, 323, 326, 431, 327, 297, 408, 452, 0, + 348, 419, 380, 298, 379, 409, 451, 450, 308, 478, + 484, 485, 574, 0, 490, 661, 662, 663, 499, 0, + 414, 504, 505, 506, 508, 509, 510, 511, 575, 592, + 559, 529, 492, 583, 526, 530, 531, 358, 595, 0, + 0, 0, 483, 368, 369, 0, 340, 339, 381, 417, + 299, 346, 291, 292, 656, 330, 400, 597, 630, 631, + 522, 0, 584, 523, 532, 322, 556, 568, 567, 396, + 482, 0, 579, 582, 512, 655, 0, 576, 591, 659, + 590, 652, 406, 0, 428, 588, 535, 0, 580, 554, + 0, 581, 550, 585, 0, 524, 0, 436, 464, 476, + 493, 496, 525, 610, 611, 612, 296, 495, 614, 615, + 616, 617, 618, 619, 620, 613, 467, 557, 534, 560, + 475, 537, 536, 0, 0, 571, 491, 572, 573, 390, + 391, 392, 393, 350, 598, 315, 494, 416, 0, 558, + 0, 0, 0, 0, 0, 0, 0, 0, 563, 564, + 561, 664, 0, 621, 622, 0, 0, 488, 489, 345, + 352, 507, 354, 314, 405, 347, 473, 362, 0, 500, + 565, 501, 624, 627, 625, 626, 397, 357, 359, 432, + 363, 373, 420, 472, 403, 425, 312, 463, 434, 378, + 551, 578, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 280, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 606, 605, + 604, 603, 602, 601, 600, 599, 0, 0, 548, 449, + 324, 285, 320, 321, 328, 653, 650, 454, 654, 0, + 293, 528, 371, 0, 415, 344, 593, 594, 0, 645, + 241, 242, 243, 244, 245, 246, 247, 248, 286, 249, + 250, 251, 252, 253, 254, 255, 258, 259, 260, 261, + 262, 263, 264, 265, 596, 256, 257, 266, 267, 268, + 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, + 279, 0, 0, 0, 287, 288, 289, 290, 0, 0, + 281, 282, 283, 284, 0, 0, 0, 479, 480, 481, + 503, 0, 465, 527, 651, 0, 0, 0, 0, 0, + 0, 0, 577, 589, 623, 0, 633, 634, 636, 638, + 637, 640, 439, 440, 0, 642, 643, 644, 641, 375, + 426, 445, 433, 206, 657, 518, 519, 658, 629, 0, + 0, 0, 0, 402, 0, 0, 533, 566, 555, 639, + 521, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 337, 0, 0, 370, 570, 552, 562, 553, 538, + 539, 540, 547, 349, 541, 542, 543, 513, 544, 514, + 545, 546, 140, 569, 520, 435, 386, 587, 586, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 202, 2186, 0, 228, + 0, 0, 0, 0, 0, 0, 310, 229, 515, 635, + 517, 516, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 313, 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, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 300, 442, 461, 311, 430, 474, 316, + 438, 453, 306, 401, 427, 0, 0, 302, 459, 437, + 383, 360, 361, 301, 0, 421, 335, 351, 332, 399, + 0, 458, 486, 331, 477, 0, 469, 304, 0, 468, + 398, 455, 460, 384, 377, 0, 303, 457, 382, 376, + 364, 341, 502, 365, 366, 355, 410, 374, 411, 356, + 388, 387, 389, 0, 0, 0, 0, 0, 497, 498, + 0, 0, 646, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 628, 0, 0, 632, 0, 471, + 0, 0, 0, 0, 0, 0, 441, 0, 0, 367, + 0, 0, 0, 487, 0, 424, 404, 660, 0, 0, + 422, 372, 456, 412, 462, 443, 470, 418, 413, 294, + 444, 334, 385, 307, 309, 329, 336, 338, 342, 343, + 394, 395, 407, 429, 446, 447, 448, 333, 317, 423, + 318, 353, 319, 295, 325, 323, 326, 431, 327, 297, + 408, 452, 0, 348, 419, 380, 298, 379, 409, 451, + 450, 308, 478, 484, 485, 574, 0, 490, 661, 662, + 663, 499, 0, 414, 504, 505, 506, 508, 509, 510, + 511, 575, 592, 559, 529, 492, 583, 526, 530, 531, + 358, 595, 0, 0, 0, 483, 368, 369, 0, 340, + 339, 381, 417, 299, 346, 291, 292, 656, 330, 400, + 597, 630, 631, 522, 0, 584, 523, 532, 322, 556, + 568, 567, 396, 482, 0, 579, 582, 512, 655, 0, + 576, 591, 659, 590, 652, 406, 0, 428, 588, 535, + 0, 580, 554, 0, 581, 550, 585, 0, 524, 0, + 436, 464, 476, 493, 496, 525, 610, 611, 612, 296, + 495, 614, 615, 616, 617, 618, 619, 620, 613, 467, + 557, 534, 560, 475, 537, 536, 0, 0, 571, 491, + 572, 573, 390, 391, 392, 393, 350, 598, 315, 494, + 416, 0, 558, 0, 0, 0, 0, 0, 0, 0, + 0, 563, 564, 561, 664, 0, 621, 622, 0, 0, + 488, 489, 345, 352, 507, 354, 314, 405, 347, 473, + 362, 0, 500, 565, 501, 624, 627, 625, 626, 397, + 357, 359, 432, 363, 373, 420, 472, 403, 425, 312, + 463, 434, 378, 551, 578, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 280, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 605, 604, 603, 602, 601, 600, 599, 598, 0, - 0, 547, 448, 323, 285, 319, 320, 327, 652, 649, - 453, 653, 0, 293, 527, 370, 0, 414, 343, 592, - 593, 0, 644, 241, 242, 243, 244, 245, 246, 247, + 0, 606, 605, 604, 603, 602, 601, 600, 599, 0, + 0, 548, 449, 324, 285, 320, 321, 328, 653, 650, + 454, 654, 0, 293, 528, 371, 169, 415, 344, 593, + 594, 0, 645, 241, 242, 243, 244, 245, 246, 247, 248, 286, 249, 250, 251, 252, 253, 254, 255, 258, - 259, 260, 261, 262, 263, 264, 265, 595, 256, 257, + 259, 260, 261, 262, 263, 264, 265, 596, 256, 257, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 0, 0, 0, 287, 288, 289, 290, 0, 0, 281, 282, 283, 284, 0, 0, 0, - 478, 479, 480, 502, 0, 464, 526, 650, 0, 0, - 0, 0, 0, 0, 0, 576, 588, 622, 0, 632, - 633, 635, 637, 636, 639, 438, 439, 0, 641, 642, - 643, 640, 374, 425, 444, 432, 0, 656, 517, 518, - 657, 628, 401, 0, 0, 532, 565, 554, 638, 520, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 336, 0, 0, 369, 569, 551, 561, 552, 537, 538, - 539, 546, 348, 540, 541, 542, 512, 543, 513, 544, - 545, 0, 568, 519, 434, 385, 586, 585, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 4043, 0, 0, 228, 0, - 0, 0, 0, 0, 0, 309, 229, 514, 634, 516, - 515, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 312, 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, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 299, 441, 460, 310, 429, 473, 315, 437, - 452, 305, 400, 426, 0, 0, 301, 458, 436, 382, - 359, 360, 300, 0, 420, 334, 350, 331, 398, 0, - 457, 485, 330, 476, 0, 468, 303, 0, 467, 397, - 454, 459, 383, 376, 0, 302, 456, 381, 375, 363, - 340, 501, 364, 365, 354, 409, 373, 410, 355, 387, - 386, 388, 0, 0, 0, 0, 0, 496, 497, 0, - 0, 645, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 627, 0, 0, 631, 0, 470, 0, - 0, 0, 0, 0, 0, 440, 0, 0, 366, 0, - 0, 0, 486, 0, 423, 403, 659, 0, 0, 421, - 371, 455, 411, 461, 442, 469, 417, 412, 294, 443, - 333, 384, 306, 308, 328, 335, 337, 341, 342, 393, - 394, 406, 428, 445, 446, 447, 332, 316, 422, 317, - 352, 318, 295, 324, 322, 325, 430, 326, 297, 407, - 451, 0, 347, 418, 379, 298, 378, 408, 450, 449, - 307, 477, 483, 484, 573, 0, 489, 660, 661, 662, - 498, 0, 413, 503, 504, 505, 507, 508, 509, 510, - 574, 591, 558, 528, 491, 582, 525, 529, 530, 357, - 594, 0, 0, 0, 482, 367, 368, 0, 339, 338, - 380, 416, 345, 291, 292, 655, 329, 399, 596, 629, - 630, 521, 0, 583, 522, 531, 321, 555, 567, 566, - 395, 481, 0, 578, 581, 511, 654, 0, 575, 590, - 658, 589, 651, 405, 0, 427, 587, 534, 0, 579, - 553, 0, 580, 549, 584, 0, 523, 0, 435, 463, - 475, 492, 495, 524, 609, 610, 611, 296, 494, 613, - 614, 615, 616, 617, 618, 619, 612, 466, 556, 533, - 559, 474, 536, 535, 0, 0, 570, 490, 571, 572, - 389, 390, 391, 392, 349, 597, 314, 493, 415, 0, - 557, 0, 0, 0, 0, 0, 0, 0, 0, 562, - 563, 560, 663, 0, 620, 621, 0, 0, 487, 488, - 344, 351, 506, 353, 313, 404, 346, 472, 361, 0, - 499, 564, 500, 623, 626, 624, 625, 396, 356, 358, - 431, 362, 372, 419, 471, 402, 424, 311, 462, 433, - 377, 550, 577, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 280, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 605, - 604, 603, 602, 601, 600, 599, 598, 0, 0, 547, - 448, 323, 285, 319, 320, 327, 652, 649, 453, 653, - 0, 293, 527, 370, 0, 414, 343, 592, 593, 0, - 644, 241, 242, 243, 244, 245, 246, 247, 248, 286, - 249, 250, 251, 252, 253, 254, 255, 258, 259, 260, - 261, 262, 263, 264, 265, 595, 256, 257, 266, 267, - 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, - 278, 279, 0, 0, 0, 287, 288, 289, 290, 0, - 0, 281, 282, 283, 284, 0, 0, 0, 478, 479, - 480, 502, 0, 464, 526, 650, 0, 0, 0, 0, - 0, 0, 0, 576, 588, 622, 0, 632, 633, 635, - 637, 636, 639, 438, 439, 0, 641, 642, 643, 640, - 374, 425, 444, 432, 0, 656, 517, 518, 657, 628, - 401, 0, 0, 532, 565, 554, 638, 520, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 336, 0, - 0, 369, 569, 551, 561, 552, 537, 538, 539, 546, - 348, 540, 541, 542, 512, 543, 513, 544, 545, 0, - 568, 519, 434, 385, 586, 585, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 228, 0, 0, 3802, - 0, 0, 0, 309, 229, 514, 634, 516, 515, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 312, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 299, 441, 460, 310, 429, 473, 315, 437, 452, 305, - 400, 426, 0, 0, 301, 458, 436, 382, 359, 360, - 300, 0, 420, 334, 350, 331, 398, 0, 457, 485, - 330, 476, 0, 468, 303, 0, 467, 397, 454, 459, - 383, 376, 0, 302, 456, 381, 375, 363, 340, 501, - 364, 365, 354, 409, 373, 410, 355, 387, 386, 388, - 0, 0, 0, 0, 0, 496, 497, 0, 0, 645, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 627, 0, 0, 631, 0, 470, 0, 0, 0, - 0, 0, 0, 440, 0, 0, 366, 0, 0, 0, - 486, 0, 423, 403, 659, 0, 0, 421, 371, 455, - 411, 461, 442, 469, 417, 412, 294, 443, 333, 384, - 306, 308, 328, 335, 337, 341, 342, 393, 394, 406, - 428, 445, 446, 447, 332, 316, 422, 317, 352, 318, - 295, 324, 322, 325, 430, 326, 297, 407, 451, 0, - 347, 418, 379, 298, 378, 408, 450, 449, 307, 477, - 483, 484, 573, 0, 489, 660, 661, 662, 498, 0, - 413, 503, 504, 505, 507, 508, 509, 510, 574, 591, - 558, 528, 491, 582, 525, 529, 530, 357, 594, 0, - 0, 0, 482, 367, 368, 0, 339, 338, 380, 416, - 345, 291, 292, 655, 329, 399, 596, 629, 630, 521, - 0, 583, 522, 531, 321, 555, 567, 566, 395, 481, - 0, 578, 581, 511, 654, 0, 575, 590, 658, 589, - 651, 405, 0, 427, 587, 534, 0, 579, 553, 0, - 580, 549, 584, 0, 523, 0, 435, 463, 475, 492, - 495, 524, 609, 610, 611, 296, 494, 613, 614, 615, - 616, 617, 618, 619, 612, 466, 556, 533, 559, 474, - 536, 535, 0, 0, 570, 490, 571, 572, 389, 390, - 391, 392, 349, 597, 314, 493, 415, 0, 557, 0, - 0, 0, 0, 0, 0, 0, 0, 562, 563, 560, - 663, 0, 620, 621, 0, 0, 487, 488, 344, 351, - 506, 353, 313, 404, 346, 472, 361, 0, 499, 564, - 500, 623, 626, 624, 625, 396, 356, 358, 431, 362, - 372, 419, 471, 402, 424, 311, 462, 433, 377, 550, - 577, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 280, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 605, 604, 603, - 602, 601, 600, 599, 598, 0, 0, 547, 448, 323, - 285, 319, 320, 327, 652, 649, 453, 653, 0, 293, - 527, 370, 0, 414, 343, 592, 593, 0, 644, 241, - 242, 243, 244, 245, 246, 247, 248, 286, 249, 250, - 251, 252, 253, 254, 255, 258, 259, 260, 261, 262, - 263, 264, 265, 595, 256, 257, 266, 267, 268, 269, - 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, - 0, 0, 0, 287, 288, 289, 290, 0, 0, 281, - 282, 283, 284, 0, 0, 0, 478, 479, 480, 502, - 0, 464, 526, 650, 0, 0, 0, 0, 0, 0, - 0, 576, 588, 622, 0, 632, 633, 635, 637, 636, - 639, 438, 439, 0, 641, 642, 643, 640, 374, 425, - 444, 432, 0, 656, 517, 518, 657, 628, 401, 0, - 0, 532, 565, 554, 638, 520, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 336, 0, 0, 369, - 569, 551, 561, 552, 537, 538, 539, 546, 348, 540, - 541, 542, 512, 543, 513, 544, 545, 0, 568, 519, - 434, 385, 586, 585, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 228, 0, 0, 0, 0, 0, - 0, 309, 229, 514, 634, 516, 515, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 312, 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, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 299, 441, - 460, 310, 429, 473, 315, 437, 452, 305, 400, 426, - 0, 0, 301, 458, 436, 382, 359, 360, 300, 0, - 420, 334, 350, 331, 398, 0, 457, 485, 330, 476, - 0, 468, 303, 0, 467, 397, 454, 459, 383, 376, - 0, 302, 456, 381, 375, 363, 340, 501, 364, 365, - 354, 409, 373, 410, 355, 387, 386, 388, 0, 0, - 0, 0, 0, 496, 497, 0, 0, 645, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 627, - 0, 0, 631, 0, 470, 0, 0, 0, 3936, 0, - 0, 440, 0, 0, 366, 0, 0, 0, 486, 0, - 423, 403, 659, 0, 0, 421, 371, 455, 411, 461, - 442, 469, 417, 412, 294, 443, 333, 384, 306, 308, - 328, 335, 337, 341, 342, 393, 394, 406, 428, 445, - 446, 447, 332, 316, 422, 317, 352, 318, 295, 324, - 322, 325, 430, 326, 297, 407, 451, 0, 347, 418, - 379, 298, 378, 408, 450, 449, 307, 477, 483, 484, - 573, 0, 489, 660, 661, 662, 498, 0, 413, 503, - 504, 505, 507, 508, 509, 510, 574, 591, 558, 528, - 491, 582, 525, 529, 530, 357, 594, 0, 0, 0, - 482, 367, 368, 0, 339, 338, 380, 416, 345, 291, - 292, 655, 329, 399, 596, 629, 630, 521, 0, 583, - 522, 531, 321, 555, 567, 566, 395, 481, 0, 578, - 581, 511, 654, 0, 575, 590, 658, 589, 651, 405, - 0, 427, 587, 534, 0, 579, 553, 0, 580, 549, - 584, 0, 523, 0, 435, 463, 475, 492, 495, 524, - 609, 610, 611, 296, 494, 613, 614, 615, 616, 617, - 618, 619, 612, 466, 556, 533, 559, 474, 536, 535, - 0, 0, 570, 490, 571, 572, 389, 390, 391, 392, - 349, 597, 314, 493, 415, 0, 557, 0, 0, 0, - 0, 0, 0, 0, 0, 562, 563, 560, 663, 0, - 620, 621, 0, 0, 487, 488, 344, 351, 506, 353, - 313, 404, 346, 472, 361, 0, 499, 564, 500, 623, - 626, 624, 625, 396, 356, 358, 431, 362, 372, 419, - 471, 402, 424, 311, 462, 433, 377, 550, 577, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 280, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 605, 604, 603, 602, 601, - 600, 599, 598, 0, 0, 547, 448, 323, 285, 319, - 320, 327, 652, 649, 453, 653, 0, 293, 527, 370, - 0, 414, 343, 592, 593, 0, 644, 241, 242, 243, - 244, 245, 246, 247, 248, 286, 249, 250, 251, 252, - 253, 254, 255, 258, 259, 260, 261, 262, 263, 264, - 265, 595, 256, 257, 266, 267, 268, 269, 270, 271, - 272, 273, 274, 275, 276, 277, 278, 279, 0, 0, - 0, 287, 288, 289, 290, 0, 0, 281, 282, 283, - 284, 0, 0, 0, 478, 479, 480, 502, 0, 464, - 526, 650, 0, 0, 0, 0, 0, 0, 0, 576, - 588, 622, 0, 632, 633, 635, 637, 636, 639, 438, - 439, 0, 641, 642, 643, 640, 374, 425, 444, 432, - 0, 656, 517, 518, 657, 628, 401, 0, 0, 532, - 565, 554, 638, 520, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 336, 0, 0, 369, 569, 551, - 561, 552, 537, 538, 539, 546, 348, 540, 541, 542, - 512, 543, 513, 544, 545, 0, 568, 519, 434, 385, - 586, 585, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1778, - 0, 0, 228, 0, 0, 0, 0, 0, 0, 309, - 229, 514, 634, 516, 515, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 312, 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, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 299, 441, 460, 310, - 429, 473, 315, 437, 452, 305, 400, 426, 0, 0, - 301, 458, 436, 382, 359, 360, 300, 0, 420, 334, - 350, 331, 398, 0, 457, 485, 330, 476, 0, 468, - 303, 0, 467, 397, 454, 459, 383, 376, 0, 302, - 456, 381, 375, 363, 340, 501, 364, 365, 354, 409, - 373, 410, 355, 387, 386, 388, 0, 0, 0, 0, - 0, 496, 497, 0, 0, 645, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 627, 0, 0, - 631, 0, 470, 0, 0, 0, 0, 0, 0, 440, - 0, 0, 366, 0, 0, 0, 486, 0, 423, 403, - 659, 0, 0, 421, 371, 455, 411, 461, 442, 469, - 417, 412, 294, 443, 333, 384, 306, 308, 328, 335, - 337, 341, 342, 393, 394, 406, 428, 445, 446, 447, - 332, 316, 422, 317, 352, 318, 295, 324, 322, 325, - 430, 326, 297, 407, 451, 0, 347, 418, 379, 298, - 378, 408, 450, 449, 307, 477, 483, 484, 573, 0, - 489, 660, 661, 662, 498, 0, 413, 503, 504, 505, - 507, 508, 509, 510, 574, 591, 558, 528, 491, 582, - 525, 529, 530, 357, 594, 0, 0, 0, 482, 367, - 368, 0, 339, 338, 380, 416, 345, 291, 292, 655, - 329, 399, 596, 629, 630, 521, 0, 583, 522, 531, - 321, 555, 567, 566, 395, 481, 0, 578, 581, 511, - 654, 0, 575, 590, 658, 589, 651, 405, 0, 427, - 587, 534, 0, 579, 553, 0, 580, 549, 584, 0, - 523, 0, 435, 463, 475, 492, 495, 524, 609, 610, - 611, 296, 494, 613, 614, 615, 616, 617, 618, 619, - 612, 466, 556, 533, 559, 474, 536, 535, 0, 0, - 570, 490, 571, 572, 389, 390, 391, 392, 349, 597, - 314, 493, 415, 0, 557, 0, 0, 0, 0, 0, - 0, 0, 0, 562, 563, 560, 663, 0, 620, 621, - 0, 0, 487, 488, 344, 351, 506, 353, 313, 404, - 346, 472, 361, 0, 499, 564, 500, 623, 626, 624, - 625, 396, 356, 358, 431, 362, 372, 419, 471, 402, - 424, 311, 462, 433, 377, 550, 577, 0, 0, 0, + 479, 480, 481, 503, 0, 465, 527, 651, 0, 0, + 0, 0, 0, 0, 0, 577, 589, 623, 0, 633, + 634, 636, 638, 637, 640, 439, 440, 0, 642, 643, + 644, 641, 375, 426, 445, 433, 206, 657, 518, 519, + 658, 629, 0, 0, 0, 0, 402, 0, 0, 533, + 566, 555, 639, 521, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 337, 0, 0, 370, 570, 552, + 562, 553, 538, 539, 540, 547, 349, 541, 542, 543, + 513, 544, 514, 545, 546, 140, 569, 520, 435, 386, + 587, 586, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 202, + 2171, 0, 228, 0, 0, 0, 0, 0, 0, 310, + 229, 515, 635, 517, 516, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 313, 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, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 300, 442, 461, 311, + 430, 474, 316, 438, 453, 306, 401, 427, 0, 0, + 302, 459, 437, 383, 360, 361, 301, 0, 421, 335, + 351, 332, 399, 0, 458, 486, 331, 477, 0, 469, + 304, 0, 468, 398, 455, 460, 384, 377, 0, 303, + 457, 382, 376, 364, 341, 502, 365, 366, 355, 410, + 374, 411, 356, 388, 387, 389, 0, 0, 0, 0, + 0, 497, 498, 0, 0, 646, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 628, 0, 0, + 632, 0, 471, 0, 0, 0, 0, 0, 0, 441, + 0, 0, 367, 0, 0, 0, 487, 0, 424, 404, + 660, 0, 0, 422, 372, 456, 412, 462, 443, 470, + 418, 413, 294, 444, 334, 385, 307, 309, 329, 336, + 338, 342, 343, 394, 395, 407, 429, 446, 447, 448, + 333, 317, 423, 318, 353, 319, 295, 325, 323, 326, + 431, 327, 297, 408, 452, 0, 348, 419, 380, 298, + 379, 409, 451, 450, 308, 478, 484, 485, 574, 0, + 490, 661, 662, 663, 499, 0, 414, 504, 505, 506, + 508, 509, 510, 511, 575, 592, 559, 529, 492, 583, + 526, 530, 531, 358, 595, 0, 0, 0, 483, 368, + 369, 0, 340, 339, 381, 417, 299, 346, 291, 292, + 656, 330, 400, 597, 630, 631, 522, 0, 584, 523, + 532, 322, 556, 568, 567, 396, 482, 0, 579, 582, + 512, 655, 0, 576, 591, 659, 590, 652, 406, 0, + 428, 588, 535, 0, 580, 554, 0, 581, 550, 585, + 0, 524, 0, 436, 464, 476, 493, 496, 525, 610, + 611, 612, 296, 495, 614, 615, 616, 617, 618, 619, + 620, 613, 467, 557, 534, 560, 475, 537, 536, 0, + 0, 571, 491, 572, 573, 390, 391, 392, 393, 350, + 598, 315, 494, 416, 0, 558, 0, 0, 0, 0, + 0, 0, 0, 0, 563, 564, 561, 664, 0, 621, + 622, 0, 0, 488, 489, 345, 352, 507, 354, 314, + 405, 347, 473, 362, 0, 500, 565, 501, 624, 627, + 625, 626, 397, 357, 359, 432, 363, 373, 420, 472, + 403, 425, 312, 463, 434, 378, 551, 578, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 280, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 606, 605, 604, 603, 602, 601, + 600, 599, 0, 0, 548, 449, 324, 285, 320, 321, + 328, 653, 650, 454, 654, 0, 293, 528, 371, 169, + 415, 344, 593, 594, 0, 645, 241, 242, 243, 244, + 245, 246, 247, 248, 286, 249, 250, 251, 252, 253, + 254, 255, 258, 259, 260, 261, 262, 263, 264, 265, + 596, 256, 257, 266, 267, 268, 269, 270, 271, 272, + 273, 274, 275, 276, 277, 278, 279, 0, 0, 0, + 287, 288, 289, 290, 0, 0, 281, 282, 283, 284, + 0, 0, 0, 479, 480, 481, 503, 0, 465, 527, + 651, 0, 0, 0, 0, 0, 0, 0, 577, 589, + 623, 0, 633, 634, 636, 638, 637, 640, 439, 440, + 0, 642, 643, 644, 641, 375, 426, 445, 433, 0, + 657, 518, 519, 658, 629, 402, 0, 0, 533, 566, + 555, 639, 521, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 337, 1051, 0, 370, 570, 552, 562, + 553, 538, 539, 540, 547, 349, 541, 542, 543, 513, + 544, 514, 545, 546, 0, 569, 520, 435, 386, 587, + 586, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 228, 1058, 1059, 0, 0, 0, 0, 310, 229, + 515, 635, 517, 516, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1062, 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, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 300, 442, 1045, 311, 430, + 474, 316, 438, 453, 306, 401, 427, 0, 0, 302, + 459, 437, 383, 360, 361, 301, 0, 421, 335, 351, + 332, 399, 0, 458, 486, 331, 477, 1032, 469, 304, + 1031, 468, 398, 455, 460, 384, 377, 0, 303, 457, + 382, 376, 364, 341, 502, 365, 366, 355, 410, 374, + 411, 356, 388, 387, 389, 0, 0, 0, 0, 0, + 497, 498, 0, 0, 646, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 628, 0, 0, 632, + 0, 471, 0, 0, 0, 0, 0, 0, 441, 0, + 0, 367, 0, 0, 0, 487, 0, 424, 404, 660, + 0, 0, 422, 372, 456, 412, 462, 443, 470, 1049, + 413, 294, 444, 334, 385, 307, 309, 329, 336, 338, + 342, 343, 394, 395, 407, 429, 446, 447, 448, 333, + 317, 423, 318, 353, 319, 295, 325, 323, 326, 431, + 327, 297, 408, 452, 0, 348, 419, 380, 298, 379, + 409, 451, 450, 308, 478, 484, 485, 574, 0, 490, + 661, 662, 663, 499, 0, 414, 504, 505, 506, 508, + 509, 510, 511, 575, 592, 559, 529, 492, 583, 526, + 530, 531, 358, 595, 0, 0, 0, 483, 368, 369, + 0, 340, 339, 381, 417, 299, 346, 291, 292, 656, + 330, 400, 597, 630, 631, 522, 0, 584, 523, 532, + 322, 556, 568, 567, 396, 482, 0, 579, 582, 512, + 655, 0, 576, 591, 659, 590, 652, 406, 0, 428, + 588, 535, 0, 580, 554, 0, 581, 550, 585, 0, + 524, 0, 436, 464, 476, 493, 496, 525, 610, 611, + 612, 296, 495, 614, 615, 616, 617, 618, 619, 1050, + 613, 467, 557, 534, 560, 475, 537, 536, 0, 0, + 571, 1053, 572, 573, 390, 391, 392, 393, 350, 598, + 1048, 494, 416, 0, 558, 0, 0, 0, 0, 0, + 0, 0, 0, 563, 564, 561, 664, 0, 621, 622, + 0, 0, 488, 489, 345, 352, 507, 354, 314, 405, + 347, 473, 362, 0, 500, 565, 501, 624, 627, 625, + 626, 1060, 1046, 1056, 1047, 363, 373, 420, 472, 403, + 425, 312, 463, 434, 1057, 551, 578, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 280, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 605, 604, 603, 602, 601, 600, 599, - 598, 0, 0, 547, 448, 323, 285, 319, 320, 327, - 652, 649, 453, 653, 0, 293, 527, 370, 0, 414, - 343, 592, 593, 0, 644, 241, 242, 243, 244, 245, + 0, 0, 0, 606, 605, 604, 603, 602, 601, 600, + 599, 0, 0, 548, 449, 324, 285, 320, 321, 328, + 653, 650, 454, 654, 0, 293, 528, 371, 0, 415, + 344, 593, 594, 0, 645, 241, 242, 243, 244, 245, 246, 247, 248, 286, 249, 250, 251, 252, 253, 254, - 255, 258, 259, 260, 261, 262, 263, 264, 265, 595, + 255, 258, 259, 260, 261, 262, 263, 264, 265, 596, 256, 257, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 0, 0, 0, 287, 288, 289, 290, 0, 0, 281, 282, 283, 284, 0, - 0, 0, 478, 479, 480, 502, 0, 464, 526, 650, - 0, 0, 0, 0, 0, 0, 0, 576, 588, 622, - 0, 632, 633, 635, 637, 636, 639, 438, 439, 0, - 641, 642, 643, 640, 374, 425, 444, 432, 0, 656, - 517, 518, 657, 628, 401, 0, 0, 532, 565, 554, - 638, 520, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 336, 0, 0, 369, 569, 551, 561, 552, - 537, 538, 539, 546, 348, 540, 541, 542, 512, 543, - 513, 544, 545, 0, 568, 519, 434, 385, 586, 585, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 3817, 0, - 228, 0, 0, 0, 0, 0, 0, 309, 229, 514, - 634, 516, 515, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 312, 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, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 299, 441, 460, 310, 429, 473, - 315, 437, 452, 305, 400, 426, 0, 0, 301, 458, - 436, 382, 359, 360, 300, 0, 420, 334, 350, 331, - 398, 0, 457, 485, 330, 476, 0, 468, 303, 0, - 467, 397, 454, 459, 383, 376, 0, 302, 456, 381, - 375, 363, 340, 501, 364, 365, 354, 409, 373, 410, - 355, 387, 386, 388, 0, 0, 0, 0, 0, 496, - 497, 0, 0, 645, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 627, 0, 0, 631, 0, - 470, 0, 0, 0, 0, 0, 0, 440, 0, 0, - 366, 0, 0, 0, 486, 0, 423, 403, 659, 0, - 0, 421, 371, 455, 411, 461, 442, 469, 417, 412, - 294, 443, 333, 384, 306, 308, 328, 335, 337, 341, - 342, 393, 394, 406, 428, 445, 446, 447, 332, 316, - 422, 317, 352, 318, 295, 324, 322, 325, 430, 326, - 297, 407, 451, 0, 347, 418, 379, 298, 378, 408, - 450, 449, 307, 477, 483, 484, 573, 0, 489, 660, - 661, 662, 498, 0, 413, 503, 504, 505, 507, 508, - 509, 510, 574, 591, 558, 528, 491, 582, 525, 529, - 530, 357, 594, 0, 0, 0, 482, 367, 368, 0, - 339, 338, 380, 416, 345, 291, 292, 655, 329, 399, - 596, 629, 630, 521, 0, 583, 522, 531, 321, 555, - 567, 566, 395, 481, 0, 578, 581, 511, 654, 0, - 575, 590, 658, 589, 651, 405, 0, 427, 587, 534, - 0, 579, 553, 0, 580, 549, 584, 0, 523, 0, - 435, 463, 475, 492, 495, 524, 609, 610, 611, 296, - 494, 613, 614, 615, 616, 617, 618, 619, 612, 466, - 556, 533, 559, 474, 536, 535, 0, 0, 570, 490, - 571, 572, 389, 390, 391, 392, 349, 597, 314, 493, - 415, 0, 557, 0, 0, 0, 0, 0, 0, 0, - 0, 562, 563, 560, 663, 0, 620, 621, 0, 0, - 487, 488, 344, 351, 506, 353, 313, 404, 346, 472, - 361, 0, 499, 564, 500, 623, 626, 624, 625, 396, - 356, 358, 431, 362, 372, 419, 471, 402, 424, 311, - 462, 433, 377, 550, 577, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 280, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 605, 604, 603, 602, 601, 600, 599, 598, 0, - 0, 547, 448, 323, 285, 319, 320, 327, 652, 649, - 453, 653, 0, 293, 527, 370, 0, 414, 343, 592, - 593, 0, 644, 241, 242, 243, 244, 245, 246, 247, - 248, 286, 249, 250, 251, 252, 253, 254, 255, 258, - 259, 260, 261, 262, 263, 264, 265, 595, 256, 257, - 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, - 276, 277, 278, 279, 0, 0, 0, 287, 288, 289, - 290, 0, 0, 281, 282, 283, 284, 0, 0, 0, - 478, 479, 480, 502, 0, 464, 526, 650, 0, 0, - 0, 0, 0, 0, 0, 576, 588, 622, 0, 632, - 633, 635, 637, 636, 639, 438, 439, 0, 641, 642, - 643, 640, 374, 425, 444, 432, 0, 656, 517, 518, - 657, 628, 401, 0, 0, 532, 565, 554, 638, 520, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 336, 0, 0, 369, 569, 551, 561, 552, 537, 538, - 539, 546, 348, 540, 541, 542, 512, 543, 513, 544, - 545, 0, 568, 519, 434, 385, 586, 585, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 228, 0, - 0, 0, 0, 0, 0, 309, 229, 514, 634, 516, - 515, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 312, 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, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 299, 441, 460, 310, 429, 473, 315, 437, - 452, 305, 400, 426, 0, 0, 301, 458, 436, 382, - 359, 360, 300, 0, 420, 334, 350, 331, 398, 0, - 457, 485, 330, 476, 0, 468, 303, 0, 467, 397, - 454, 459, 383, 376, 0, 302, 456, 381, 375, 363, - 340, 501, 364, 365, 354, 409, 373, 410, 355, 387, - 386, 388, 0, 0, 0, 0, 0, 496, 497, 0, - 0, 645, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 627, 0, 0, 631, 0, 470, 0, - 0, 0, 3728, 0, 0, 440, 0, 0, 366, 0, - 0, 0, 486, 0, 423, 403, 659, 0, 0, 421, - 371, 455, 411, 461, 442, 469, 417, 412, 294, 443, - 333, 384, 306, 308, 328, 335, 337, 341, 342, 393, - 394, 406, 428, 445, 446, 447, 332, 316, 422, 317, - 352, 318, 295, 324, 322, 325, 430, 326, 297, 407, - 451, 0, 347, 418, 379, 298, 378, 408, 450, 449, - 307, 477, 483, 484, 573, 0, 489, 660, 661, 662, - 498, 0, 413, 503, 504, 505, 507, 508, 509, 510, - 574, 591, 558, 528, 491, 582, 525, 529, 530, 357, - 594, 0, 0, 0, 482, 367, 368, 0, 339, 338, - 380, 416, 345, 291, 292, 655, 329, 399, 596, 629, - 630, 521, 0, 583, 522, 531, 321, 555, 567, 566, - 395, 481, 0, 578, 581, 511, 654, 0, 575, 590, - 658, 589, 651, 405, 0, 427, 587, 534, 0, 579, - 553, 0, 580, 549, 584, 0, 523, 0, 435, 463, - 475, 492, 495, 524, 609, 610, 611, 296, 494, 613, - 614, 615, 616, 617, 618, 619, 612, 466, 556, 533, - 559, 474, 536, 535, 0, 0, 570, 490, 571, 572, - 389, 390, 391, 392, 349, 597, 314, 493, 415, 0, - 557, 0, 0, 0, 0, 0, 0, 0, 0, 562, - 563, 560, 663, 0, 620, 621, 0, 0, 487, 488, - 344, 351, 506, 353, 313, 404, 346, 472, 361, 0, - 499, 564, 500, 623, 626, 624, 625, 396, 356, 358, - 431, 362, 372, 419, 471, 402, 424, 311, 462, 433, - 377, 550, 577, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 280, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 605, - 604, 603, 602, 601, 600, 599, 598, 0, 0, 547, - 448, 323, 285, 319, 320, 327, 652, 649, 453, 653, - 0, 293, 527, 370, 0, 414, 343, 592, 593, 0, - 644, 241, 242, 243, 244, 245, 246, 247, 248, 286, - 249, 250, 251, 252, 253, 254, 255, 258, 259, 260, - 261, 262, 263, 264, 265, 595, 256, 257, 266, 267, - 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, - 278, 279, 0, 0, 0, 287, 288, 289, 290, 0, - 0, 281, 282, 283, 284, 0, 0, 0, 478, 479, - 480, 502, 0, 464, 526, 650, 0, 0, 0, 0, - 0, 0, 0, 576, 588, 622, 0, 632, 633, 635, - 637, 636, 639, 438, 439, 0, 641, 642, 643, 640, - 374, 425, 444, 432, 0, 656, 517, 518, 657, 628, - 401, 0, 0, 532, 565, 554, 638, 520, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 336, 0, - 0, 369, 569, 551, 561, 552, 537, 538, 539, 546, - 348, 540, 541, 542, 512, 543, 513, 544, 545, 0, - 568, 519, 434, 385, 586, 585, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 228, 0, 0, 3228, - 0, 0, 0, 309, 229, 514, 634, 516, 515, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 312, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 299, 441, 460, 310, 429, 473, 315, 437, 452, 305, - 400, 426, 0, 0, 301, 458, 436, 382, 359, 360, - 300, 0, 420, 334, 350, 331, 398, 0, 457, 485, - 330, 476, 0, 468, 303, 0, 467, 397, 454, 459, - 383, 376, 0, 302, 456, 381, 375, 363, 340, 501, - 364, 365, 354, 409, 373, 410, 355, 387, 386, 388, - 0, 0, 0, 0, 0, 496, 497, 0, 0, 645, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 627, 0, 0, 631, 0, 470, 0, 0, 0, - 0, 0, 0, 440, 0, 0, 366, 0, 0, 0, - 486, 0, 423, 403, 659, 0, 0, 421, 371, 455, - 411, 461, 442, 469, 417, 412, 294, 443, 333, 384, - 306, 308, 328, 335, 337, 341, 342, 393, 394, 406, - 428, 445, 446, 447, 332, 316, 422, 317, 352, 318, - 295, 324, 322, 325, 430, 326, 297, 407, 451, 0, - 347, 418, 379, 298, 378, 408, 450, 449, 307, 477, - 483, 484, 573, 0, 489, 660, 661, 662, 498, 0, - 413, 503, 504, 505, 507, 508, 509, 510, 574, 591, - 558, 528, 491, 582, 525, 529, 530, 357, 594, 0, - 0, 0, 482, 367, 368, 0, 339, 338, 380, 416, - 345, 291, 292, 655, 329, 399, 596, 629, 630, 521, - 0, 583, 522, 531, 321, 555, 567, 566, 395, 481, - 0, 578, 581, 511, 654, 0, 575, 590, 658, 589, - 651, 405, 0, 427, 587, 534, 0, 579, 553, 0, - 580, 549, 584, 0, 523, 0, 435, 463, 475, 492, - 495, 524, 609, 610, 611, 296, 494, 613, 614, 615, - 616, 617, 618, 619, 612, 466, 556, 533, 559, 474, - 536, 535, 0, 0, 570, 490, 571, 572, 389, 390, - 391, 392, 349, 597, 314, 493, 415, 0, 557, 0, - 0, 0, 0, 0, 0, 0, 0, 562, 563, 560, - 663, 0, 620, 621, 0, 0, 487, 488, 344, 351, - 506, 353, 313, 404, 346, 472, 361, 0, 499, 564, - 500, 623, 626, 624, 625, 396, 356, 358, 431, 362, - 372, 419, 471, 402, 424, 311, 462, 433, 377, 550, - 577, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 280, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 605, 604, 603, - 602, 601, 600, 599, 598, 0, 0, 547, 448, 323, - 285, 319, 320, 327, 652, 649, 453, 653, 0, 293, - 527, 370, 0, 414, 343, 592, 593, 0, 644, 241, - 242, 243, 244, 245, 246, 247, 248, 286, 249, 250, - 251, 252, 253, 254, 255, 258, 259, 260, 261, 262, - 263, 264, 265, 595, 256, 257, 266, 267, 268, 269, - 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, - 0, 0, 0, 287, 288, 289, 290, 0, 0, 281, - 282, 283, 284, 0, 0, 0, 478, 479, 480, 502, - 0, 464, 526, 650, 0, 0, 0, 0, 0, 0, - 0, 576, 588, 622, 0, 632, 633, 635, 637, 636, - 639, 438, 439, 0, 641, 642, 643, 640, 374, 425, - 444, 432, 0, 656, 517, 518, 657, 628, 401, 0, - 0, 532, 565, 554, 638, 520, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 336, 0, 0, 369, - 569, 551, 561, 552, 537, 538, 539, 546, 348, 540, - 541, 542, 512, 543, 513, 544, 545, 0, 568, 519, - 434, 385, 586, 585, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 228, 0, 0, 0, 0, 0, - 0, 309, 229, 514, 634, 516, 515, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 312, 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, 3246, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 299, 441, - 460, 310, 429, 473, 315, 437, 452, 305, 400, 426, - 0, 0, 301, 458, 436, 382, 359, 360, 300, 0, - 420, 334, 350, 331, 398, 0, 457, 485, 330, 476, - 0, 468, 303, 0, 467, 397, 454, 459, 383, 376, - 0, 302, 456, 381, 375, 363, 340, 501, 364, 365, - 354, 409, 373, 410, 355, 387, 386, 388, 0, 0, - 0, 0, 0, 496, 497, 0, 0, 645, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 627, - 0, 0, 631, 0, 470, 0, 0, 0, 0, 0, - 0, 440, 0, 0, 366, 0, 0, 0, 486, 0, - 423, 403, 659, 0, 0, 421, 371, 455, 411, 461, - 442, 469, 417, 412, 294, 443, 333, 384, 306, 308, - 328, 335, 337, 341, 342, 393, 394, 406, 428, 445, - 446, 447, 332, 316, 422, 317, 352, 318, 295, 324, - 322, 325, 430, 326, 297, 407, 451, 0, 347, 418, - 379, 298, 378, 408, 450, 449, 307, 477, 483, 484, - 573, 0, 489, 660, 661, 662, 498, 0, 413, 503, - 504, 505, 507, 508, 509, 510, 574, 591, 558, 528, - 491, 582, 525, 529, 530, 357, 594, 0, 0, 0, - 482, 367, 368, 0, 339, 338, 380, 416, 345, 291, - 292, 655, 329, 399, 596, 629, 630, 521, 0, 583, - 522, 531, 321, 555, 567, 566, 395, 481, 0, 578, - 581, 511, 654, 0, 575, 590, 658, 589, 651, 405, - 0, 427, 587, 534, 0, 579, 553, 0, 580, 549, - 584, 0, 523, 0, 435, 463, 475, 492, 495, 524, - 609, 610, 611, 296, 494, 613, 614, 615, 616, 617, - 618, 619, 612, 466, 556, 533, 559, 474, 536, 535, - 0, 0, 570, 490, 571, 572, 389, 390, 391, 392, - 349, 597, 314, 493, 415, 0, 557, 0, 0, 0, - 0, 0, 0, 0, 0, 562, 563, 560, 663, 0, - 620, 621, 0, 0, 487, 488, 344, 351, 506, 353, - 313, 404, 346, 472, 361, 0, 499, 564, 500, 623, - 626, 624, 625, 396, 356, 358, 431, 362, 372, 419, - 471, 402, 424, 311, 462, 433, 377, 550, 577, 0, + 0, 0, 479, 480, 481, 503, 0, 465, 527, 651, + 0, 0, 0, 0, 0, 0, 0, 577, 589, 623, + 0, 633, 634, 636, 638, 637, 640, 439, 440, 0, + 642, 643, 644, 641, 1044, 426, 445, 433, 206, 657, + 518, 519, 658, 629, 0, 0, 0, 0, 402, 0, + 0, 533, 566, 555, 639, 521, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 337, 0, 0, 370, + 570, 552, 562, 553, 538, 539, 540, 547, 349, 541, + 542, 543, 513, 544, 514, 545, 546, 140, 569, 520, + 435, 386, 587, 586, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2068, 0, 0, 228, 0, 0, 0, 0, 0, + 0, 310, 229, 515, 635, 517, 516, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 313, 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, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 300, 442, + 461, 311, 430, 474, 316, 438, 453, 306, 401, 427, + 0, 0, 302, 459, 437, 383, 360, 361, 301, 0, + 421, 335, 351, 332, 399, 0, 458, 486, 331, 477, + 0, 469, 304, 0, 468, 398, 455, 460, 384, 377, + 0, 303, 457, 382, 376, 364, 341, 502, 365, 366, + 355, 410, 374, 411, 356, 388, 387, 389, 0, 0, + 0, 0, 0, 497, 498, 0, 0, 646, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 628, + 0, 0, 632, 0, 471, 0, 0, 0, 0, 0, + 0, 441, 0, 0, 367, 0, 0, 0, 487, 0, + 424, 404, 660, 0, 0, 422, 372, 456, 412, 462, + 443, 470, 418, 413, 294, 444, 334, 385, 307, 309, + 329, 336, 338, 342, 343, 394, 395, 407, 429, 446, + 447, 448, 333, 317, 423, 318, 353, 319, 295, 325, + 323, 326, 431, 327, 297, 408, 452, 0, 348, 419, + 380, 298, 379, 409, 451, 450, 308, 478, 484, 485, + 574, 0, 490, 661, 662, 663, 499, 0, 414, 504, + 505, 506, 508, 509, 510, 511, 575, 592, 559, 529, + 492, 583, 526, 530, 531, 358, 595, 0, 0, 0, + 483, 368, 369, 0, 340, 339, 381, 417, 299, 346, + 291, 292, 656, 330, 400, 597, 630, 631, 522, 0, + 584, 523, 532, 322, 556, 568, 567, 396, 482, 0, + 579, 582, 512, 655, 0, 576, 591, 659, 590, 652, + 406, 0, 428, 588, 535, 0, 580, 554, 0, 581, + 550, 585, 0, 524, 0, 436, 464, 476, 493, 496, + 525, 610, 611, 612, 296, 495, 614, 615, 616, 617, + 618, 619, 620, 613, 467, 557, 534, 560, 475, 537, + 536, 0, 0, 571, 491, 572, 573, 390, 391, 392, + 393, 350, 598, 315, 494, 416, 0, 558, 0, 0, + 0, 0, 0, 0, 0, 0, 563, 564, 561, 664, + 0, 621, 622, 0, 0, 488, 489, 345, 352, 507, + 354, 314, 405, 347, 473, 362, 0, 500, 565, 501, + 624, 627, 625, 626, 397, 357, 359, 432, 363, 373, + 420, 472, 403, 425, 312, 463, 434, 378, 551, 578, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 280, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 606, 605, 604, 603, + 602, 601, 600, 599, 0, 0, 548, 449, 324, 285, + 320, 321, 328, 653, 650, 454, 654, 0, 293, 528, + 371, 169, 415, 344, 593, 594, 0, 645, 241, 242, + 243, 244, 245, 246, 247, 248, 286, 249, 250, 251, + 252, 253, 254, 255, 258, 259, 260, 261, 262, 263, + 264, 265, 596, 256, 257, 266, 267, 268, 269, 270, + 271, 272, 273, 274, 275, 276, 277, 278, 279, 0, + 0, 0, 287, 288, 289, 290, 0, 0, 281, 282, + 283, 284, 0, 0, 0, 479, 480, 481, 503, 0, + 465, 527, 651, 0, 0, 0, 0, 0, 0, 0, + 577, 589, 623, 0, 633, 634, 636, 638, 637, 640, + 439, 440, 0, 642, 643, 644, 641, 375, 426, 445, + 433, 0, 657, 518, 519, 658, 629, 402, 0, 0, + 533, 566, 555, 639, 521, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 337, 0, 0, 370, 570, + 552, 562, 553, 538, 539, 540, 547, 349, 541, 542, + 543, 513, 544, 514, 545, 546, 0, 569, 520, 435, + 386, 587, 586, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 228, 1058, 1059, 0, 0, 0, 0, + 310, 229, 515, 635, 517, 516, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1062, 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, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 300, 442, 461, + 311, 430, 474, 316, 438, 453, 306, 401, 427, 0, + 0, 302, 459, 437, 383, 360, 361, 301, 0, 421, + 335, 351, 332, 399, 0, 458, 486, 331, 477, 1032, + 469, 304, 1031, 468, 398, 455, 460, 384, 377, 0, + 303, 457, 382, 376, 364, 341, 502, 365, 366, 355, + 410, 374, 411, 356, 388, 387, 389, 0, 0, 0, + 0, 0, 497, 498, 0, 0, 646, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 628, 0, + 0, 632, 0, 471, 0, 0, 0, 0, 0, 0, + 441, 0, 0, 367, 0, 0, 0, 487, 0, 424, + 404, 660, 0, 0, 422, 372, 456, 412, 462, 443, + 470, 418, 413, 294, 444, 334, 385, 307, 309, 329, + 336, 338, 342, 343, 394, 395, 407, 429, 446, 447, + 448, 333, 317, 423, 318, 353, 319, 295, 325, 323, + 326, 431, 327, 297, 408, 452, 0, 348, 419, 380, + 298, 379, 409, 451, 450, 308, 478, 484, 485, 574, + 0, 490, 661, 662, 663, 499, 0, 414, 504, 505, + 506, 508, 509, 510, 511, 575, 592, 559, 529, 492, + 583, 526, 530, 531, 358, 595, 0, 0, 0, 483, + 368, 369, 0, 340, 339, 381, 417, 299, 346, 291, + 292, 656, 330, 400, 597, 630, 631, 522, 0, 584, + 523, 532, 322, 556, 568, 567, 396, 482, 0, 579, + 582, 512, 655, 0, 576, 591, 659, 590, 652, 406, + 0, 428, 588, 535, 0, 580, 554, 0, 581, 550, + 585, 0, 524, 0, 436, 464, 476, 493, 496, 525, + 610, 611, 612, 296, 495, 614, 615, 616, 617, 618, + 619, 620, 613, 467, 557, 534, 560, 475, 537, 536, + 0, 0, 571, 491, 572, 573, 390, 391, 392, 393, + 350, 598, 315, 494, 416, 0, 558, 0, 0, 0, + 0, 0, 0, 0, 0, 563, 564, 561, 664, 0, + 621, 622, 0, 0, 488, 489, 345, 352, 507, 354, + 314, 405, 347, 473, 362, 0, 500, 565, 501, 624, + 627, 625, 626, 1060, 2089, 1056, 2090, 363, 373, 420, + 472, 403, 425, 312, 463, 434, 1057, 551, 578, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 280, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 605, 604, 603, 602, 601, - 600, 599, 598, 0, 0, 547, 448, 323, 285, 319, - 320, 327, 652, 649, 453, 653, 0, 293, 527, 370, - 0, 414, 343, 592, 593, 0, 644, 241, 242, 243, + 0, 0, 0, 0, 0, 606, 605, 604, 603, 602, + 601, 600, 599, 0, 0, 548, 449, 324, 285, 320, + 321, 328, 653, 650, 454, 654, 0, 293, 528, 371, + 0, 415, 344, 593, 594, 0, 645, 241, 242, 243, 244, 245, 246, 247, 248, 286, 249, 250, 251, 252, 253, 254, 255, 258, 259, 260, 261, 262, 263, 264, - 265, 595, 256, 257, 266, 267, 268, 269, 270, 271, + 265, 596, 256, 257, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 0, 0, 0, 287, 288, 289, 290, 0, 0, 281, 282, 283, - 284, 0, 0, 0, 478, 479, 480, 502, 0, 464, - 526, 650, 0, 0, 0, 0, 0, 0, 0, 576, - 588, 622, 0, 632, 633, 635, 637, 636, 639, 438, - 439, 0, 641, 642, 643, 640, 374, 425, 444, 432, - 0, 656, 517, 518, 657, 628, 401, 0, 0, 532, - 565, 554, 638, 520, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 336, 0, 0, 369, 569, 551, - 561, 552, 537, 538, 539, 546, 348, 540, 541, 542, - 512, 543, 513, 544, 545, 0, 568, 519, 434, 385, - 586, 585, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 2067, - 0, 0, 228, 0, 0, 0, 0, 0, 0, 309, - 229, 514, 634, 516, 515, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 312, 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, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 299, 441, 460, 310, - 429, 473, 315, 437, 452, 305, 400, 426, 0, 0, - 301, 458, 436, 382, 359, 360, 300, 0, 420, 334, - 350, 331, 398, 0, 457, 485, 330, 476, 0, 468, - 303, 0, 467, 397, 454, 459, 383, 376, 0, 302, - 456, 381, 375, 363, 340, 501, 364, 365, 354, 409, - 373, 410, 355, 387, 386, 388, 0, 0, 0, 0, - 0, 496, 497, 0, 0, 645, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 627, 0, 0, - 631, 0, 470, 0, 0, 0, 0, 0, 0, 440, - 0, 0, 366, 0, 0, 0, 486, 0, 423, 403, - 659, 0, 0, 421, 371, 455, 411, 461, 442, 469, - 417, 412, 294, 443, 333, 384, 306, 308, 328, 335, - 337, 341, 342, 393, 394, 406, 428, 445, 446, 447, - 332, 316, 422, 317, 352, 318, 295, 324, 322, 325, - 430, 326, 297, 407, 451, 0, 347, 418, 379, 298, - 378, 408, 450, 449, 307, 477, 483, 484, 573, 0, - 489, 660, 661, 662, 498, 0, 413, 503, 504, 505, - 507, 508, 509, 510, 574, 591, 558, 528, 491, 582, - 525, 529, 530, 357, 594, 0, 0, 0, 482, 367, - 368, 0, 339, 338, 380, 416, 345, 291, 292, 655, - 329, 399, 596, 629, 630, 521, 0, 583, 522, 531, - 321, 555, 567, 566, 395, 481, 0, 578, 581, 511, - 654, 0, 575, 590, 658, 589, 651, 405, 0, 427, - 587, 534, 0, 579, 553, 0, 580, 549, 584, 0, - 523, 0, 435, 463, 475, 492, 495, 524, 609, 610, - 611, 296, 494, 613, 614, 615, 616, 617, 618, 619, - 612, 466, 556, 533, 559, 474, 536, 535, 0, 0, - 570, 490, 571, 572, 389, 390, 391, 392, 349, 597, - 314, 493, 415, 0, 557, 0, 0, 0, 0, 0, - 0, 0, 0, 562, 563, 560, 663, 0, 620, 621, - 0, 0, 487, 488, 344, 351, 506, 353, 313, 404, - 346, 472, 361, 0, 499, 564, 500, 623, 626, 624, - 625, 396, 356, 358, 431, 362, 372, 419, 471, 402, - 424, 311, 462, 433, 377, 550, 577, 0, 0, 0, + 284, 0, 0, 0, 479, 480, 481, 503, 0, 465, + 527, 651, 0, 0, 0, 0, 0, 0, 0, 577, + 589, 623, 0, 633, 634, 636, 638, 637, 640, 439, + 440, 0, 642, 643, 644, 641, 375, 426, 445, 433, + 0, 657, 518, 519, 658, 629, 402, 0, 0, 533, + 566, 555, 639, 521, 0, 0, 2978, 0, 0, 0, + 0, 0, 0, 0, 337, 0, 0, 370, 570, 552, + 562, 553, 538, 539, 540, 547, 349, 541, 542, 543, + 513, 544, 514, 545, 546, 0, 569, 520, 435, 386, + 587, 586, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 228, 0, 0, 0, 0, 0, 0, 310, + 229, 515, 635, 517, 516, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 313, 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, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 300, 442, 461, 311, + 430, 474, 316, 438, 453, 306, 401, 427, 0, 0, + 302, 459, 437, 383, 360, 361, 301, 0, 421, 335, + 351, 332, 399, 0, 458, 486, 331, 477, 0, 469, + 304, 0, 468, 398, 455, 460, 384, 377, 0, 303, + 457, 382, 376, 364, 341, 502, 365, 366, 355, 410, + 374, 411, 356, 388, 387, 389, 0, 0, 0, 0, + 0, 497, 498, 0, 0, 646, 0, 0, 0, 0, + 0, 0, 2981, 0, 0, 0, 2980, 628, 0, 0, + 632, 0, 471, 0, 0, 0, 0, 0, 0, 441, + 0, 0, 367, 0, 0, 0, 487, 0, 424, 404, + 660, 0, 0, 422, 372, 456, 412, 462, 443, 470, + 418, 413, 294, 444, 334, 385, 307, 309, 329, 336, + 338, 342, 343, 394, 395, 407, 429, 446, 447, 448, + 333, 317, 423, 318, 353, 319, 295, 325, 323, 326, + 431, 327, 297, 408, 452, 0, 348, 419, 380, 298, + 379, 409, 451, 450, 308, 478, 484, 485, 574, 0, + 490, 661, 662, 663, 499, 0, 414, 504, 505, 506, + 508, 509, 510, 511, 575, 592, 559, 529, 492, 583, + 526, 530, 531, 358, 595, 0, 0, 0, 483, 368, + 369, 0, 340, 339, 381, 417, 299, 346, 291, 292, + 656, 330, 400, 597, 630, 631, 522, 0, 584, 523, + 532, 322, 556, 568, 567, 396, 482, 0, 579, 582, + 512, 655, 0, 576, 591, 659, 590, 652, 406, 0, + 428, 588, 535, 0, 580, 554, 0, 581, 550, 585, + 0, 524, 0, 436, 464, 476, 493, 496, 525, 610, + 611, 612, 296, 495, 614, 615, 616, 617, 618, 619, + 620, 613, 467, 557, 534, 560, 475, 537, 536, 0, + 0, 571, 491, 572, 573, 390, 391, 392, 393, 350, + 598, 315, 494, 416, 0, 558, 0, 0, 0, 0, + 0, 0, 0, 0, 563, 564, 561, 664, 0, 621, + 622, 0, 0, 488, 489, 345, 352, 507, 354, 314, + 405, 347, 473, 362, 0, 500, 565, 501, 624, 627, + 625, 626, 397, 357, 359, 432, 363, 373, 420, 472, + 403, 425, 312, 463, 434, 378, 551, 578, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 280, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 606, 605, 604, 603, 602, 601, + 600, 599, 0, 0, 548, 449, 324, 285, 320, 321, + 328, 653, 650, 454, 654, 0, 293, 528, 371, 0, + 415, 344, 593, 594, 0, 645, 241, 242, 243, 244, + 245, 246, 247, 248, 286, 249, 250, 251, 252, 253, + 254, 255, 258, 259, 260, 261, 262, 263, 264, 265, + 596, 256, 257, 266, 267, 268, 269, 270, 271, 272, + 273, 274, 275, 276, 277, 278, 279, 0, 0, 0, + 287, 288, 289, 290, 0, 0, 281, 282, 283, 284, + 0, 0, 0, 479, 480, 481, 503, 0, 465, 527, + 651, 0, 0, 0, 0, 0, 0, 0, 577, 589, + 623, 0, 633, 634, 636, 638, 637, 640, 439, 440, + 0, 642, 643, 644, 641, 375, 426, 445, 433, 0, + 657, 518, 519, 658, 629, 402, 0, 0, 533, 566, + 555, 639, 521, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 337, 1557, 0, 370, 570, 552, 562, + 553, 538, 539, 540, 547, 349, 541, 542, 543, 513, + 544, 514, 545, 546, 0, 569, 520, 435, 386, 587, + 586, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 228, 0, 0, 1555, 0, 0, 0, 310, 229, + 515, 635, 517, 516, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 313, 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, 0, 0, 1553, 0, + 0, 0, 0, 0, 0, 300, 442, 461, 311, 430, + 474, 316, 438, 453, 306, 401, 427, 0, 0, 302, + 459, 437, 383, 360, 361, 301, 0, 421, 335, 351, + 332, 399, 0, 458, 486, 331, 477, 0, 469, 304, + 0, 468, 398, 455, 460, 384, 377, 0, 303, 457, + 382, 376, 364, 341, 502, 365, 366, 355, 410, 374, + 411, 356, 388, 387, 389, 0, 0, 0, 0, 0, + 497, 498, 0, 0, 646, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 628, 0, 0, 632, + 0, 471, 0, 0, 0, 0, 0, 0, 441, 0, + 0, 367, 0, 0, 0, 487, 0, 424, 404, 660, + 0, 0, 422, 372, 456, 412, 462, 443, 470, 418, + 413, 294, 444, 334, 385, 307, 309, 329, 336, 338, + 342, 343, 394, 395, 407, 429, 446, 447, 448, 333, + 317, 423, 318, 353, 319, 295, 325, 323, 326, 431, + 327, 297, 408, 452, 0, 348, 419, 380, 298, 379, + 409, 451, 450, 308, 478, 484, 485, 574, 0, 490, + 661, 662, 663, 499, 0, 414, 504, 505, 506, 508, + 509, 510, 511, 575, 592, 559, 529, 492, 583, 526, + 530, 531, 358, 595, 0, 0, 0, 483, 368, 369, + 0, 340, 339, 381, 417, 299, 346, 291, 292, 656, + 330, 400, 597, 630, 631, 522, 0, 584, 523, 532, + 322, 556, 568, 567, 396, 482, 0, 579, 582, 512, + 655, 0, 576, 591, 659, 590, 652, 406, 0, 428, + 588, 535, 0, 580, 554, 0, 581, 550, 585, 0, + 524, 0, 436, 464, 476, 493, 496, 525, 610, 611, + 612, 296, 495, 614, 615, 616, 617, 618, 619, 620, + 613, 467, 557, 534, 560, 475, 537, 536, 0, 0, + 571, 491, 572, 573, 390, 391, 392, 393, 350, 598, + 315, 494, 416, 0, 558, 0, 0, 0, 0, 0, + 0, 0, 0, 563, 564, 561, 664, 0, 621, 622, + 0, 0, 488, 489, 345, 352, 507, 354, 314, 405, + 347, 473, 362, 0, 500, 565, 501, 624, 627, 625, + 626, 397, 357, 359, 432, 363, 373, 420, 472, 403, + 425, 312, 463, 434, 378, 551, 578, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 280, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 605, 604, 603, 602, 601, 600, 599, - 598, 0, 0, 547, 448, 323, 285, 319, 320, 327, - 652, 649, 453, 653, 0, 293, 527, 370, 0, 414, - 343, 592, 593, 0, 644, 241, 242, 243, 244, 245, + 0, 0, 0, 606, 605, 604, 603, 602, 601, 600, + 599, 0, 0, 548, 449, 324, 285, 320, 321, 328, + 653, 650, 454, 654, 0, 293, 528, 371, 0, 415, + 344, 593, 594, 0, 645, 241, 242, 243, 244, 245, 246, 247, 248, 286, 249, 250, 251, 252, 253, 254, - 255, 258, 259, 260, 261, 262, 263, 264, 265, 595, + 255, 258, 259, 260, 261, 262, 263, 264, 265, 596, 256, 257, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 0, 0, 0, 287, 288, 289, 290, 0, 0, 281, 282, 283, 284, 0, - 0, 0, 478, 479, 480, 502, 0, 464, 526, 650, - 0, 0, 0, 0, 0, 0, 0, 576, 588, 622, - 0, 632, 633, 635, 637, 636, 639, 438, 439, 0, - 641, 642, 643, 640, 374, 425, 444, 432, 0, 656, - 517, 518, 657, 628, 401, 0, 0, 532, 565, 554, - 638, 520, 0, 0, 3443, 0, 0, 0, 0, 0, - 0, 0, 336, 0, 0, 369, 569, 551, 561, 552, - 537, 538, 539, 546, 348, 540, 541, 542, 512, 543, - 513, 544, 545, 0, 568, 519, 434, 385, 586, 585, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 228, 0, 0, 0, 0, 0, 0, 309, 229, 514, - 634, 516, 515, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 312, 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, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 299, 441, 460, 310, 429, 473, - 315, 437, 452, 305, 400, 426, 0, 0, 301, 458, - 436, 382, 359, 360, 300, 0, 420, 334, 350, 331, - 398, 0, 457, 485, 330, 476, 0, 468, 303, 0, - 467, 397, 454, 459, 383, 376, 0, 302, 456, 381, - 375, 363, 340, 501, 364, 365, 354, 409, 373, 410, - 355, 387, 386, 388, 0, 0, 0, 0, 0, 496, - 497, 0, 0, 645, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 627, 0, 0, 631, 0, - 470, 0, 0, 0, 0, 0, 0, 440, 0, 0, - 366, 0, 0, 0, 486, 0, 423, 403, 659, 0, - 0, 421, 371, 455, 411, 461, 442, 469, 417, 412, - 294, 443, 333, 384, 306, 308, 328, 335, 337, 341, - 342, 393, 394, 406, 428, 445, 446, 447, 332, 316, - 422, 317, 352, 318, 295, 324, 322, 325, 430, 326, - 297, 407, 451, 0, 347, 418, 379, 298, 378, 408, - 450, 449, 307, 477, 483, 484, 573, 0, 489, 660, - 661, 662, 498, 0, 413, 503, 504, 505, 507, 508, - 509, 510, 574, 591, 558, 528, 491, 582, 525, 529, - 530, 357, 594, 0, 0, 0, 482, 367, 368, 0, - 339, 338, 380, 416, 345, 291, 292, 655, 329, 399, - 596, 629, 630, 521, 0, 583, 522, 531, 321, 555, - 567, 566, 395, 481, 0, 578, 581, 511, 654, 0, - 575, 590, 658, 589, 651, 405, 0, 427, 587, 534, - 0, 579, 553, 0, 580, 549, 584, 0, 523, 0, - 435, 463, 475, 492, 495, 524, 609, 610, 611, 296, - 494, 613, 614, 615, 616, 617, 618, 619, 612, 466, - 556, 533, 559, 474, 536, 535, 0, 0, 570, 490, - 571, 572, 389, 390, 391, 392, 349, 597, 314, 493, - 415, 0, 557, 0, 0, 0, 0, 0, 0, 0, - 0, 562, 563, 560, 663, 0, 620, 621, 0, 0, - 487, 488, 344, 351, 506, 353, 313, 404, 346, 472, - 361, 0, 499, 564, 500, 623, 626, 624, 625, 396, - 356, 358, 431, 362, 372, 419, 471, 402, 424, 311, - 462, 433, 377, 550, 577, 0, 0, 0, 0, 0, + 0, 0, 479, 480, 481, 503, 0, 465, 527, 651, + 0, 0, 0, 0, 0, 0, 0, 577, 589, 623, + 0, 633, 634, 636, 638, 637, 640, 439, 440, 0, + 642, 643, 644, 641, 375, 426, 445, 433, 0, 657, + 518, 519, 658, 629, 402, 0, 0, 533, 566, 555, + 639, 521, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 337, 1551, 0, 370, 570, 552, 562, 553, + 538, 539, 540, 547, 349, 541, 542, 543, 513, 544, + 514, 545, 546, 0, 569, 520, 435, 386, 587, 586, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 228, 0, 0, 1555, 0, 0, 0, 310, 229, 515, + 635, 517, 516, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 313, 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, 0, 0, 1553, 0, 0, + 0, 0, 0, 0, 300, 442, 461, 311, 430, 474, + 316, 438, 453, 306, 401, 427, 0, 0, 302, 459, + 437, 383, 360, 361, 301, 0, 421, 335, 351, 332, + 399, 0, 458, 486, 331, 477, 0, 469, 304, 0, + 468, 398, 455, 460, 384, 377, 0, 303, 457, 382, + 376, 364, 341, 502, 365, 366, 355, 410, 374, 411, + 356, 388, 387, 389, 0, 0, 0, 0, 0, 497, + 498, 0, 0, 646, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 628, 0, 0, 632, 0, + 471, 0, 0, 0, 0, 0, 0, 441, 0, 0, + 367, 0, 0, 0, 487, 0, 424, 404, 660, 0, + 0, 422, 372, 456, 412, 462, 443, 470, 418, 413, + 294, 444, 334, 385, 307, 309, 329, 336, 338, 342, + 343, 394, 395, 407, 429, 446, 447, 448, 333, 317, + 423, 318, 353, 319, 295, 325, 323, 326, 431, 327, + 297, 408, 452, 0, 348, 419, 380, 298, 379, 409, + 451, 450, 308, 478, 484, 485, 574, 0, 490, 661, + 662, 663, 499, 0, 414, 504, 505, 506, 508, 509, + 510, 511, 575, 592, 559, 529, 492, 583, 526, 530, + 531, 358, 595, 0, 0, 0, 483, 368, 369, 0, + 340, 339, 381, 417, 299, 346, 291, 292, 656, 330, + 400, 597, 630, 631, 522, 0, 584, 523, 532, 322, + 556, 568, 567, 396, 482, 0, 579, 582, 512, 655, + 0, 576, 591, 659, 590, 652, 406, 0, 428, 588, + 535, 0, 580, 554, 0, 581, 550, 585, 0, 524, + 0, 436, 464, 476, 493, 496, 525, 610, 611, 612, + 296, 495, 614, 615, 616, 617, 618, 619, 620, 613, + 467, 557, 534, 560, 475, 537, 536, 0, 0, 571, + 491, 572, 573, 390, 391, 392, 393, 350, 598, 315, + 494, 416, 0, 558, 0, 0, 0, 0, 0, 0, + 0, 0, 563, 564, 561, 664, 0, 621, 622, 0, + 0, 488, 489, 345, 352, 507, 354, 314, 405, 347, + 473, 362, 0, 500, 565, 501, 624, 627, 625, 626, + 397, 357, 359, 432, 363, 373, 420, 472, 403, 425, + 312, 463, 434, 378, 551, 578, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 280, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 606, 605, 604, 603, 602, 601, 600, 599, + 0, 0, 548, 449, 324, 285, 320, 321, 328, 653, + 650, 454, 654, 0, 293, 528, 371, 0, 415, 344, + 593, 594, 0, 645, 241, 242, 243, 244, 245, 246, + 247, 248, 286, 249, 250, 251, 252, 253, 254, 255, + 258, 259, 260, 261, 262, 263, 264, 265, 596, 256, + 257, 266, 267, 268, 269, 270, 271, 272, 273, 274, + 275, 276, 277, 278, 279, 0, 0, 0, 287, 288, + 289, 290, 0, 0, 281, 282, 283, 284, 0, 0, + 0, 479, 480, 481, 503, 0, 465, 527, 651, 0, + 0, 0, 0, 0, 0, 0, 577, 589, 623, 0, + 633, 634, 636, 638, 637, 640, 439, 440, 0, 642, + 643, 644, 641, 375, 426, 445, 433, 0, 657, 518, + 519, 658, 629, 402, 0, 0, 533, 566, 555, 639, + 521, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 337, 0, 0, 370, 570, 552, 562, 553, 538, + 539, 540, 547, 349, 541, 542, 543, 513, 544, 514, + 545, 546, 0, 569, 520, 435, 386, 587, 586, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 4068, 0, 228, + 854, 0, 0, 0, 0, 0, 310, 229, 515, 635, + 517, 516, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 313, 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, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 300, 442, 461, 311, 430, 474, 316, + 438, 453, 306, 401, 427, 0, 0, 302, 459, 437, + 383, 360, 361, 301, 0, 421, 335, 351, 332, 399, + 0, 458, 486, 331, 477, 0, 469, 304, 0, 468, + 398, 455, 460, 384, 377, 0, 303, 457, 382, 376, + 364, 341, 502, 365, 366, 355, 410, 374, 411, 356, + 388, 387, 389, 0, 0, 0, 0, 0, 497, 498, + 0, 0, 646, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 628, 0, 0, 632, 0, 471, + 0, 0, 0, 0, 0, 0, 441, 0, 0, 367, + 0, 0, 0, 487, 0, 424, 404, 660, 0, 0, + 422, 372, 456, 412, 462, 443, 470, 418, 413, 294, + 444, 334, 385, 307, 309, 329, 336, 338, 342, 343, + 394, 395, 407, 429, 446, 447, 448, 333, 317, 423, + 318, 353, 319, 295, 325, 323, 326, 431, 327, 297, + 408, 452, 0, 348, 419, 380, 298, 379, 409, 451, + 450, 308, 478, 484, 485, 574, 0, 490, 661, 662, + 663, 499, 0, 414, 504, 505, 506, 508, 509, 510, + 511, 575, 592, 559, 529, 492, 583, 526, 530, 531, + 358, 595, 0, 0, 0, 483, 368, 369, 0, 340, + 339, 381, 417, 299, 346, 291, 292, 656, 330, 400, + 597, 630, 631, 522, 0, 584, 523, 532, 322, 556, + 568, 567, 396, 482, 0, 579, 582, 512, 655, 0, + 576, 591, 659, 590, 652, 406, 0, 428, 588, 535, + 0, 580, 554, 0, 581, 550, 585, 0, 524, 0, + 436, 464, 476, 493, 496, 525, 610, 611, 612, 296, + 495, 614, 615, 616, 617, 618, 619, 620, 613, 467, + 557, 534, 560, 475, 537, 536, 0, 0, 571, 491, + 572, 573, 390, 391, 392, 393, 350, 598, 315, 494, + 416, 0, 558, 0, 0, 0, 0, 0, 0, 0, + 0, 563, 564, 561, 664, 0, 621, 622, 0, 0, + 488, 489, 345, 352, 507, 354, 314, 405, 347, 473, + 362, 0, 500, 565, 501, 624, 627, 625, 626, 397, + 357, 359, 432, 363, 373, 420, 472, 403, 425, 312, + 463, 434, 378, 551, 578, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 280, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 605, 604, 603, 602, 601, 600, 599, 598, 0, - 0, 547, 448, 323, 285, 319, 320, 327, 652, 649, - 453, 653, 0, 293, 527, 370, 0, 414, 343, 592, - 593, 0, 644, 241, 242, 243, 244, 245, 246, 247, + 0, 606, 605, 604, 603, 602, 601, 600, 599, 0, + 0, 548, 449, 324, 285, 320, 321, 328, 653, 650, + 454, 654, 0, 293, 528, 371, 0, 415, 344, 593, + 594, 0, 645, 241, 242, 243, 244, 245, 246, 247, 248, 286, 249, 250, 251, 252, 253, 254, 255, 258, - 259, 260, 261, 262, 263, 264, 265, 595, 256, 257, + 259, 260, 261, 262, 263, 264, 265, 596, 256, 257, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 0, 0, 0, 287, 288, 289, 290, 0, 0, 281, 282, 283, 284, 0, 0, 0, - 478, 479, 480, 502, 0, 464, 526, 650, 0, 0, - 0, 0, 0, 0, 0, 576, 588, 622, 0, 632, - 633, 635, 637, 636, 639, 438, 439, 0, 641, 642, - 643, 640, 374, 425, 444, 432, 0, 656, 517, 518, - 657, 628, 401, 0, 0, 532, 565, 554, 638, 520, + 479, 480, 481, 503, 0, 465, 527, 651, 0, 0, + 0, 0, 0, 0, 0, 577, 589, 623, 0, 633, + 634, 636, 638, 637, 640, 439, 440, 0, 642, 643, + 644, 641, 375, 426, 445, 433, 0, 657, 518, 519, + 658, 629, 402, 0, 0, 533, 566, 555, 639, 521, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 336, 0, 0, 369, 569, 551, 561, 552, 537, 538, - 539, 546, 348, 540, 541, 542, 512, 543, 513, 544, - 545, 0, 568, 519, 434, 385, 586, 585, 0, 0, + 337, 0, 0, 370, 570, 552, 562, 553, 538, 539, + 540, 547, 349, 541, 542, 543, 513, 544, 514, 545, + 546, 0, 569, 520, 435, 386, 587, 586, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 228, 0, - 0, 0, 0, 0, 0, 309, 229, 514, 634, 516, - 515, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 312, 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, 3356, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 299, 441, 460, 310, 429, 473, 315, 437, - 452, 305, 400, 426, 0, 0, 301, 458, 436, 382, - 359, 360, 300, 0, 420, 334, 350, 331, 398, 0, - 457, 485, 330, 476, 0, 468, 303, 0, 467, 397, - 454, 459, 383, 376, 0, 302, 456, 381, 375, 363, - 340, 501, 364, 365, 354, 409, 373, 410, 355, 387, - 386, 388, 0, 0, 0, 0, 0, 496, 497, 0, - 0, 645, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 627, 0, 0, 631, 0, 470, 0, - 0, 0, 0, 0, 0, 440, 0, 0, 366, 0, - 0, 0, 486, 0, 423, 403, 659, 0, 0, 421, - 371, 455, 411, 461, 442, 469, 417, 412, 294, 443, - 333, 384, 306, 308, 328, 335, 337, 341, 342, 393, - 394, 406, 428, 445, 446, 447, 332, 316, 422, 317, - 352, 318, 295, 324, 322, 325, 430, 326, 297, 407, - 451, 0, 347, 418, 379, 298, 378, 408, 450, 449, - 307, 477, 483, 484, 573, 0, 489, 660, 661, 662, - 498, 0, 413, 503, 504, 505, 507, 508, 509, 510, - 574, 591, 558, 528, 491, 582, 525, 529, 530, 357, - 594, 0, 0, 0, 482, 367, 368, 0, 339, 338, - 380, 416, 345, 291, 292, 655, 329, 399, 596, 629, - 630, 521, 0, 583, 522, 531, 321, 555, 567, 566, - 395, 481, 0, 578, 581, 511, 654, 0, 575, 590, - 658, 589, 651, 405, 0, 427, 587, 534, 0, 579, - 553, 0, 580, 549, 584, 0, 523, 0, 435, 463, - 475, 492, 495, 524, 609, 610, 611, 296, 494, 613, - 614, 615, 616, 617, 618, 619, 612, 466, 556, 533, - 559, 474, 536, 535, 0, 0, 570, 490, 571, 572, - 389, 390, 391, 392, 349, 597, 314, 493, 415, 0, - 557, 0, 0, 0, 0, 0, 0, 0, 0, 562, - 563, 560, 663, 0, 620, 621, 0, 0, 487, 488, - 344, 351, 506, 353, 313, 404, 346, 472, 361, 0, - 499, 564, 500, 623, 626, 624, 625, 396, 356, 358, - 431, 362, 372, 419, 471, 402, 424, 311, 462, 433, - 377, 550, 577, 0, 0, 0, 0, 0, 0, 0, + 0, 1555, 0, 0, 0, 310, 229, 515, 635, 517, + 516, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 313, 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, 0, 0, 1553, 0, 0, 0, 0, + 0, 0, 300, 442, 461, 311, 430, 474, 316, 438, + 453, 306, 401, 427, 0, 0, 302, 459, 437, 383, + 360, 361, 301, 0, 421, 335, 351, 332, 399, 0, + 458, 486, 331, 477, 0, 469, 304, 0, 468, 398, + 455, 460, 384, 377, 0, 303, 457, 382, 376, 364, + 341, 502, 365, 366, 355, 410, 374, 411, 356, 388, + 387, 389, 0, 0, 0, 0, 0, 497, 498, 0, + 0, 646, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 628, 0, 0, 632, 0, 471, 0, + 0, 0, 0, 0, 0, 441, 0, 0, 367, 0, + 0, 0, 487, 0, 424, 404, 660, 0, 0, 422, + 372, 456, 412, 462, 443, 470, 418, 413, 294, 444, + 334, 385, 307, 309, 329, 336, 338, 342, 343, 394, + 395, 407, 429, 446, 447, 448, 333, 317, 423, 318, + 353, 319, 295, 325, 323, 326, 431, 327, 297, 408, + 452, 0, 348, 419, 380, 298, 379, 409, 451, 450, + 308, 478, 484, 485, 574, 0, 490, 661, 662, 663, + 499, 0, 414, 504, 505, 506, 508, 509, 510, 511, + 575, 592, 559, 529, 492, 583, 526, 530, 531, 358, + 595, 0, 0, 0, 483, 368, 369, 0, 340, 339, + 381, 417, 299, 346, 291, 292, 656, 330, 400, 597, + 630, 631, 522, 0, 584, 523, 532, 322, 556, 568, + 567, 396, 482, 0, 579, 582, 512, 655, 0, 576, + 591, 659, 590, 652, 406, 0, 428, 588, 535, 0, + 580, 554, 0, 581, 550, 585, 0, 524, 0, 436, + 464, 476, 493, 496, 525, 610, 611, 612, 296, 495, + 614, 615, 616, 617, 618, 619, 620, 613, 467, 557, + 534, 560, 475, 537, 536, 0, 0, 571, 491, 572, + 573, 390, 391, 392, 393, 350, 598, 315, 494, 416, + 0, 558, 0, 0, 0, 0, 0, 0, 0, 0, + 563, 564, 561, 664, 0, 621, 622, 0, 0, 488, + 489, 345, 352, 507, 354, 314, 405, 347, 473, 362, + 0, 500, 565, 501, 624, 627, 625, 626, 397, 357, + 359, 432, 363, 373, 420, 472, 403, 425, 312, 463, + 434, 378, 551, 578, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 280, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 606, 605, 604, 603, 602, 601, 600, 599, 0, 0, + 548, 449, 324, 285, 320, 321, 328, 653, 650, 454, + 654, 0, 293, 528, 371, 0, 415, 344, 593, 594, + 0, 645, 241, 242, 243, 244, 245, 246, 247, 248, + 286, 249, 250, 251, 252, 253, 254, 255, 258, 259, + 260, 261, 262, 263, 264, 265, 596, 256, 257, 266, + 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, + 277, 278, 279, 0, 0, 0, 287, 288, 289, 290, + 0, 0, 281, 282, 283, 284, 0, 0, 0, 479, + 480, 481, 503, 0, 465, 527, 651, 0, 0, 0, + 0, 0, 0, 0, 577, 589, 623, 0, 633, 634, + 636, 638, 637, 640, 439, 440, 0, 642, 643, 644, + 641, 375, 426, 445, 433, 0, 657, 518, 519, 658, + 629, 402, 0, 0, 533, 566, 555, 639, 521, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 337, + 0, 0, 370, 570, 552, 562, 553, 538, 539, 540, + 547, 349, 541, 542, 543, 513, 544, 514, 545, 546, + 0, 569, 520, 435, 386, 587, 586, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 228, 0, 0, + 0, 0, 0, 0, 310, 229, 515, 635, 517, 516, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 313, + 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, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 300, 442, 461, 311, 430, 474, 316, 438, 453, + 306, 401, 427, 0, 0, 302, 459, 437, 383, 360, + 361, 301, 0, 421, 335, 351, 332, 399, 0, 458, + 486, 331, 477, 0, 469, 304, 0, 468, 398, 455, + 460, 384, 377, 0, 303, 457, 382, 376, 364, 341, + 502, 365, 366, 355, 410, 374, 411, 356, 388, 387, + 389, 0, 0, 0, 0, 0, 497, 498, 0, 0, + 646, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 628, 0, 0, 632, 0, 471, 0, 0, + 0, 0, 0, 0, 441, 0, 0, 367, 0, 0, + 0, 487, 0, 424, 404, 660, 0, 0, 422, 372, + 456, 412, 462, 443, 470, 418, 413, 294, 444, 334, + 385, 307, 309, 329, 336, 338, 342, 343, 394, 395, + 407, 429, 446, 447, 448, 333, 317, 423, 318, 353, + 319, 295, 325, 323, 326, 431, 327, 297, 408, 452, + 0, 348, 419, 380, 298, 379, 409, 451, 450, 308, + 478, 484, 485, 574, 0, 490, 661, 662, 663, 499, + 2488, 414, 504, 505, 506, 508, 509, 510, 511, 575, + 592, 559, 529, 492, 583, 526, 530, 531, 358, 595, + 0, 0, 0, 483, 368, 369, 0, 340, 339, 381, + 417, 299, 346, 291, 292, 656, 330, 400, 597, 630, + 631, 522, 0, 584, 523, 532, 322, 556, 568, 567, + 396, 482, 0, 579, 582, 512, 655, 0, 576, 591, + 659, 590, 652, 406, 0, 428, 588, 535, 0, 580, + 554, 0, 581, 550, 585, 0, 524, 0, 436, 464, + 476, 493, 496, 525, 610, 611, 612, 296, 495, 614, + 615, 616, 617, 618, 619, 620, 613, 467, 557, 534, + 560, 475, 537, 536, 0, 0, 571, 491, 572, 573, + 390, 391, 392, 393, 350, 598, 315, 494, 416, 0, + 558, 0, 0, 0, 0, 0, 0, 0, 0, 563, + 564, 561, 664, 0, 621, 622, 0, 0, 488, 489, + 345, 352, 507, 354, 314, 405, 347, 473, 362, 0, + 500, 565, 501, 624, 627, 625, 626, 397, 357, 359, + 432, 363, 373, 420, 472, 403, 425, 312, 463, 434, + 378, 551, 578, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 280, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 605, - 604, 603, 602, 601, 600, 599, 598, 0, 0, 547, - 448, 323, 285, 319, 320, 327, 652, 649, 453, 653, - 0, 293, 527, 370, 0, 414, 343, 592, 593, 0, - 644, 241, 242, 243, 244, 245, 246, 247, 248, 286, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 606, + 605, 604, 603, 602, 601, 600, 599, 980, 0, 548, + 449, 324, 285, 320, 321, 328, 653, 650, 454, 654, + 0, 293, 528, 371, 0, 415, 344, 593, 594, 0, + 645, 241, 242, 243, 244, 245, 246, 247, 248, 286, 249, 250, 251, 252, 253, 254, 255, 258, 259, 260, - 261, 262, 263, 264, 265, 595, 256, 257, 266, 267, + 261, 262, 263, 264, 265, 596, 256, 257, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 0, 0, 0, 287, 288, 289, 290, 0, - 0, 281, 282, 283, 284, 0, 0, 0, 478, 479, - 480, 502, 0, 464, 526, 650, 0, 0, 0, 0, - 0, 0, 0, 576, 588, 622, 0, 632, 633, 635, - 637, 636, 639, 438, 439, 0, 641, 642, 643, 640, - 374, 425, 444, 432, 0, 656, 517, 518, 657, 628, - 401, 0, 0, 532, 565, 554, 638, 520, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 336, 0, - 0, 369, 569, 551, 561, 552, 537, 538, 539, 546, - 348, 540, 541, 542, 512, 543, 513, 544, 545, 0, - 568, 519, 434, 385, 586, 585, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 228, 0, 0, 0, - 0, 0, 0, 309, 229, 514, 634, 516, 515, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 312, 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, 3085, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 299, 441, 460, 310, 429, 473, 315, 437, 452, 305, - 400, 426, 0, 0, 301, 458, 436, 382, 359, 360, - 300, 0, 420, 334, 350, 331, 398, 0, 457, 485, - 330, 476, 0, 468, 303, 0, 467, 397, 454, 459, - 383, 376, 0, 302, 456, 381, 375, 363, 340, 501, - 364, 365, 354, 409, 373, 410, 355, 387, 386, 388, - 0, 0, 0, 0, 0, 496, 497, 0, 0, 645, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 627, 0, 0, 631, 0, 470, 0, 0, 0, - 0, 0, 0, 440, 0, 0, 366, 0, 0, 0, - 486, 0, 423, 403, 659, 0, 0, 421, 371, 455, - 411, 461, 442, 469, 417, 412, 294, 443, 333, 384, - 306, 308, 328, 335, 337, 341, 342, 393, 394, 406, - 428, 445, 446, 447, 332, 316, 422, 317, 352, 318, - 295, 324, 322, 325, 430, 326, 297, 407, 451, 0, - 347, 418, 379, 298, 378, 408, 450, 449, 307, 477, - 483, 484, 573, 0, 489, 660, 661, 662, 498, 0, - 413, 503, 504, 505, 507, 508, 509, 510, 574, 591, - 558, 528, 491, 582, 525, 529, 530, 357, 594, 0, - 0, 0, 482, 367, 368, 0, 339, 338, 380, 416, - 345, 291, 292, 655, 329, 399, 596, 629, 630, 521, - 0, 583, 522, 531, 321, 555, 567, 566, 395, 481, - 0, 578, 581, 511, 654, 0, 575, 590, 658, 589, - 651, 405, 0, 427, 587, 534, 0, 579, 553, 0, - 580, 549, 584, 0, 523, 0, 435, 463, 475, 492, - 495, 524, 609, 610, 611, 296, 494, 613, 614, 615, - 616, 617, 618, 619, 612, 466, 556, 533, 559, 474, - 536, 535, 0, 0, 570, 490, 571, 572, 389, 390, - 391, 392, 349, 597, 314, 493, 415, 0, 557, 0, - 0, 0, 0, 0, 0, 0, 0, 562, 563, 560, - 663, 0, 620, 621, 0, 0, 487, 488, 344, 351, - 506, 353, 313, 404, 346, 472, 361, 0, 499, 564, - 500, 623, 626, 624, 625, 396, 356, 358, 431, 362, - 372, 419, 471, 402, 424, 311, 462, 433, 377, 550, - 577, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 281, 282, 283, 284, 0, 0, 0, 479, 480, + 481, 503, 0, 465, 527, 651, 0, 0, 0, 0, + 0, 0, 0, 577, 589, 623, 0, 633, 634, 636, + 638, 637, 640, 439, 440, 0, 642, 643, 644, 641, + 375, 426, 445, 433, 0, 657, 518, 519, 658, 629, + 402, 0, 0, 533, 566, 555, 639, 521, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 337, 0, + 0, 370, 570, 552, 562, 553, 538, 539, 540, 547, + 349, 541, 542, 543, 513, 544, 514, 545, 546, 0, + 569, 520, 435, 386, 587, 586, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 228, 0, 0, 1555, + 0, 0, 0, 310, 229, 515, 635, 517, 516, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 313, 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, 0, 0, 1765, 0, 0, 0, 0, 0, 0, + 300, 442, 461, 311, 430, 474, 316, 438, 453, 306, + 401, 427, 0, 0, 302, 459, 437, 383, 360, 361, + 301, 0, 421, 335, 351, 332, 399, 0, 458, 486, + 331, 477, 0, 469, 304, 0, 468, 398, 455, 460, + 384, 377, 0, 303, 457, 382, 376, 364, 341, 502, + 365, 366, 355, 410, 374, 411, 356, 388, 387, 389, + 0, 0, 0, 0, 0, 497, 498, 0, 0, 646, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 628, 0, 0, 632, 0, 471, 0, 0, 0, + 0, 0, 0, 441, 0, 0, 367, 0, 0, 0, + 487, 0, 424, 404, 660, 0, 0, 422, 372, 456, + 412, 462, 443, 470, 418, 413, 294, 444, 334, 385, + 307, 309, 329, 336, 338, 342, 343, 394, 395, 407, + 429, 446, 447, 448, 333, 317, 423, 318, 353, 319, + 295, 325, 323, 326, 431, 327, 297, 408, 452, 0, + 348, 419, 380, 298, 379, 409, 451, 450, 308, 478, + 484, 485, 574, 0, 490, 661, 662, 663, 499, 0, + 414, 504, 505, 506, 508, 509, 510, 511, 575, 592, + 559, 529, 492, 583, 526, 530, 531, 358, 595, 0, + 0, 0, 483, 368, 369, 0, 340, 339, 381, 417, + 299, 346, 291, 292, 656, 330, 400, 597, 630, 631, + 522, 0, 584, 523, 532, 322, 556, 568, 567, 396, + 482, 0, 579, 582, 512, 655, 0, 576, 591, 659, + 590, 652, 406, 0, 428, 588, 535, 0, 580, 554, + 0, 581, 550, 585, 0, 524, 0, 436, 464, 476, + 493, 496, 525, 610, 611, 612, 296, 495, 614, 615, + 616, 617, 618, 619, 620, 613, 467, 557, 534, 560, + 475, 537, 536, 0, 0, 571, 491, 572, 573, 390, + 391, 392, 393, 350, 598, 315, 494, 416, 0, 558, + 0, 0, 0, 0, 0, 0, 0, 0, 563, 564, + 561, 664, 0, 621, 622, 0, 0, 488, 489, 345, + 352, 507, 354, 314, 405, 347, 473, 362, 0, 500, + 565, 501, 624, 627, 625, 626, 397, 357, 359, 432, + 363, 373, 420, 472, 403, 425, 312, 463, 434, 378, + 551, 578, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 280, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 606, 605, + 604, 603, 602, 601, 600, 599, 0, 0, 548, 449, + 324, 285, 320, 321, 328, 653, 650, 454, 654, 0, + 293, 528, 371, 0, 415, 344, 593, 594, 0, 645, + 241, 242, 243, 244, 245, 246, 247, 248, 286, 249, + 250, 251, 252, 253, 254, 255, 258, 259, 260, 261, + 262, 263, 264, 265, 596, 256, 257, 266, 267, 268, + 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, + 279, 0, 0, 0, 287, 288, 289, 290, 0, 0, + 281, 282, 283, 284, 0, 0, 0, 479, 480, 481, + 503, 0, 465, 527, 651, 0, 0, 0, 0, 0, + 0, 0, 577, 589, 623, 0, 633, 634, 636, 638, + 637, 640, 439, 440, 0, 642, 643, 644, 641, 375, + 426, 445, 433, 0, 657, 518, 519, 658, 629, 402, + 0, 0, 533, 566, 555, 639, 521, 0, 0, 0, + 0, 0, 2528, 0, 0, 0, 0, 337, 0, 0, + 370, 570, 552, 562, 553, 538, 539, 540, 547, 349, + 541, 542, 543, 513, 544, 514, 545, 546, 0, 569, + 520, 435, 386, 587, 586, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 228, 0, 0, 2530, 0, + 0, 0, 310, 229, 515, 635, 517, 516, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 313, 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, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 300, + 442, 461, 311, 430, 474, 316, 438, 453, 306, 401, + 427, 0, 0, 302, 459, 437, 383, 360, 361, 301, + 0, 421, 335, 351, 332, 399, 0, 458, 486, 331, + 477, 0, 469, 304, 0, 468, 398, 455, 460, 384, + 377, 0, 303, 457, 382, 376, 364, 341, 502, 365, + 366, 355, 410, 374, 411, 356, 388, 387, 389, 0, + 0, 0, 0, 0, 497, 498, 0, 0, 646, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 628, 0, 0, 632, 0, 471, 0, 0, 0, 0, + 0, 0, 441, 0, 0, 367, 0, 0, 0, 487, + 0, 424, 404, 660, 0, 0, 422, 372, 456, 412, + 462, 443, 470, 418, 413, 294, 444, 334, 385, 307, + 309, 329, 336, 338, 342, 343, 394, 395, 407, 429, + 446, 447, 448, 333, 317, 423, 318, 353, 319, 295, + 325, 323, 326, 431, 327, 297, 408, 452, 0, 348, + 419, 380, 298, 379, 409, 451, 450, 308, 478, 484, + 485, 574, 0, 490, 661, 662, 663, 499, 0, 414, + 504, 505, 506, 508, 509, 510, 511, 575, 592, 559, + 529, 492, 583, 526, 530, 531, 358, 595, 0, 0, + 0, 483, 368, 369, 0, 340, 339, 381, 417, 299, + 346, 291, 292, 656, 330, 400, 597, 630, 631, 522, + 0, 584, 523, 532, 322, 556, 568, 567, 396, 482, + 0, 579, 582, 512, 655, 0, 576, 591, 659, 590, + 652, 406, 0, 428, 588, 535, 0, 580, 554, 0, + 581, 550, 585, 0, 524, 0, 436, 464, 476, 493, + 496, 525, 610, 611, 612, 296, 495, 614, 615, 616, + 617, 618, 619, 620, 613, 467, 557, 534, 560, 475, + 537, 536, 0, 0, 571, 491, 572, 573, 390, 391, + 392, 393, 350, 598, 315, 494, 416, 0, 558, 0, + 0, 0, 0, 0, 0, 0, 0, 563, 564, 561, + 664, 0, 621, 622, 0, 0, 488, 489, 345, 352, + 507, 354, 314, 405, 347, 473, 362, 0, 500, 565, + 501, 624, 627, 625, 626, 397, 357, 359, 432, 363, + 373, 420, 472, 403, 425, 312, 463, 434, 378, 551, + 578, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 280, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 605, 604, 603, - 602, 601, 600, 599, 598, 0, 0, 547, 448, 323, - 285, 319, 320, 327, 652, 649, 453, 653, 0, 293, - 527, 370, 0, 414, 343, 592, 593, 0, 644, 241, + 0, 0, 0, 0, 0, 0, 0, 606, 605, 604, + 603, 602, 601, 600, 599, 0, 0, 548, 449, 324, + 285, 320, 321, 328, 653, 650, 454, 654, 0, 293, + 528, 371, 0, 415, 344, 593, 594, 0, 645, 241, 242, 243, 244, 245, 246, 247, 248, 286, 249, 250, 251, 252, 253, 254, 255, 258, 259, 260, 261, 262, - 263, 264, 265, 595, 256, 257, 266, 267, 268, 269, + 263, 264, 265, 596, 256, 257, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 0, 0, 0, 287, 288, 289, 290, 0, 0, 281, - 282, 283, 284, 0, 0, 0, 478, 479, 480, 502, - 0, 464, 526, 650, 0, 0, 0, 0, 0, 0, - 0, 576, 588, 622, 0, 632, 633, 635, 637, 636, - 639, 438, 439, 0, 641, 642, 643, 640, 374, 425, - 444, 432, 0, 656, 517, 518, 657, 628, 401, 0, - 0, 532, 565, 554, 638, 520, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 336, 0, 0, 369, - 569, 551, 561, 552, 537, 538, 539, 546, 348, 540, - 541, 542, 512, 543, 513, 544, 545, 0, 568, 519, - 434, 385, 586, 585, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 228, 0, 0, 1554, 0, 0, - 0, 309, 229, 514, 634, 516, 515, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 312, 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, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 299, 441, - 460, 310, 429, 473, 315, 437, 452, 305, 400, 426, - 0, 0, 301, 458, 436, 382, 359, 360, 300, 0, - 420, 334, 350, 331, 398, 0, 457, 485, 330, 476, - 0, 468, 303, 0, 467, 397, 454, 459, 383, 376, - 0, 302, 456, 381, 375, 363, 340, 501, 364, 365, - 354, 409, 373, 410, 355, 387, 386, 388, 0, 0, - 0, 0, 0, 496, 497, 0, 0, 645, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 627, - 0, 0, 631, 0, 470, 0, 0, 0, 0, 0, - 0, 440, 0, 0, 366, 0, 0, 0, 486, 0, - 423, 403, 659, 0, 0, 421, 371, 455, 411, 461, - 442, 469, 417, 412, 294, 443, 333, 384, 306, 308, - 328, 335, 337, 341, 342, 393, 394, 406, 428, 445, - 446, 447, 332, 316, 422, 317, 352, 318, 295, 324, - 322, 325, 430, 326, 297, 407, 451, 0, 347, 418, - 379, 298, 378, 408, 450, 449, 307, 477, 483, 484, - 573, 0, 489, 660, 661, 662, 498, 0, 413, 503, - 504, 505, 507, 508, 509, 510, 574, 591, 558, 528, - 491, 582, 525, 529, 530, 357, 594, 0, 0, 0, - 482, 367, 368, 0, 339, 338, 380, 416, 345, 291, - 292, 655, 329, 399, 596, 629, 630, 521, 0, 583, - 522, 531, 321, 555, 567, 566, 395, 481, 0, 578, - 581, 511, 654, 0, 575, 590, 658, 589, 651, 405, - 0, 427, 587, 534, 0, 579, 553, 0, 580, 549, - 584, 0, 523, 0, 435, 463, 475, 492, 495, 524, - 609, 610, 611, 296, 494, 613, 614, 615, 616, 617, - 618, 619, 612, 466, 556, 533, 559, 474, 536, 535, - 0, 0, 570, 490, 571, 572, 389, 390, 391, 392, - 349, 597, 314, 493, 415, 0, 557, 0, 0, 0, - 0, 0, 0, 0, 0, 562, 563, 560, 663, 0, - 620, 621, 0, 0, 487, 488, 344, 351, 506, 353, - 313, 404, 346, 472, 361, 0, 499, 564, 500, 623, - 626, 624, 625, 396, 356, 358, 431, 362, 372, 419, - 471, 402, 424, 311, 462, 433, 377, 550, 577, 0, + 282, 283, 284, 0, 0, 0, 479, 480, 481, 503, + 0, 465, 527, 651, 0, 0, 0, 0, 0, 0, + 0, 577, 589, 623, 0, 633, 634, 636, 638, 637, + 640, 439, 440, 0, 642, 643, 644, 641, 375, 426, + 445, 433, 0, 657, 518, 519, 658, 629, 402, 0, + 0, 533, 566, 555, 639, 521, 0, 0, 0, 0, + 0, 2136, 0, 0, 0, 0, 337, 0, 0, 370, + 570, 552, 562, 553, 538, 539, 540, 547, 349, 541, + 542, 543, 513, 544, 514, 545, 546, 0, 569, 520, + 435, 386, 587, 586, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 228, 0, 0, 2137, 0, 0, + 0, 310, 229, 515, 635, 517, 516, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 313, 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, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 300, 442, + 461, 311, 430, 474, 316, 438, 453, 306, 401, 427, + 0, 0, 302, 459, 437, 383, 360, 361, 301, 0, + 421, 335, 351, 332, 399, 0, 458, 486, 331, 477, + 0, 469, 304, 0, 468, 398, 455, 460, 384, 377, + 0, 303, 457, 382, 376, 364, 341, 502, 365, 366, + 355, 410, 374, 411, 356, 388, 387, 389, 0, 0, + 0, 0, 0, 497, 498, 0, 0, 646, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 628, + 0, 0, 632, 0, 471, 0, 0, 0, 0, 0, + 0, 441, 0, 0, 367, 0, 0, 0, 487, 0, + 424, 404, 660, 0, 0, 422, 372, 456, 412, 462, + 443, 470, 418, 413, 294, 444, 334, 385, 307, 309, + 329, 336, 338, 342, 343, 394, 395, 407, 429, 446, + 447, 448, 333, 317, 423, 318, 353, 319, 295, 325, + 323, 326, 431, 327, 297, 408, 452, 0, 348, 419, + 380, 298, 379, 409, 451, 450, 308, 478, 484, 485, + 574, 0, 490, 661, 662, 663, 499, 0, 414, 504, + 505, 506, 508, 509, 510, 511, 575, 592, 559, 529, + 492, 583, 526, 530, 531, 358, 595, 0, 0, 0, + 483, 368, 369, 0, 340, 339, 381, 417, 299, 346, + 291, 292, 656, 330, 400, 597, 630, 631, 522, 0, + 584, 523, 532, 322, 556, 568, 567, 396, 482, 0, + 579, 582, 512, 655, 0, 576, 591, 659, 590, 652, + 406, 0, 428, 588, 535, 0, 580, 554, 0, 581, + 550, 585, 0, 524, 0, 436, 464, 476, 493, 496, + 525, 610, 611, 612, 296, 495, 614, 615, 616, 617, + 618, 619, 620, 613, 467, 557, 534, 560, 475, 537, + 536, 0, 0, 571, 491, 572, 573, 390, 391, 392, + 393, 350, 598, 315, 494, 416, 0, 558, 0, 0, + 0, 0, 0, 0, 0, 0, 563, 564, 561, 664, + 0, 621, 622, 0, 0, 488, 489, 345, 352, 507, + 354, 314, 405, 347, 473, 362, 0, 500, 565, 501, + 624, 627, 625, 626, 397, 357, 359, 432, 363, 373, + 420, 472, 403, 425, 312, 463, 434, 378, 551, 578, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 280, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 606, 605, 604, 603, + 602, 601, 600, 599, 0, 0, 548, 449, 324, 285, + 320, 321, 328, 653, 650, 454, 654, 0, 293, 528, + 371, 0, 415, 344, 593, 594, 0, 645, 241, 242, + 243, 244, 245, 246, 247, 248, 286, 249, 250, 251, + 252, 253, 254, 255, 258, 259, 260, 261, 262, 263, + 264, 265, 596, 256, 257, 266, 267, 268, 269, 270, + 271, 272, 273, 274, 275, 276, 277, 278, 279, 0, + 0, 0, 287, 288, 289, 290, 0, 0, 281, 282, + 283, 284, 0, 0, 0, 479, 480, 481, 503, 0, + 465, 527, 651, 0, 0, 0, 0, 0, 0, 0, + 577, 589, 623, 0, 633, 634, 636, 638, 637, 640, + 439, 440, 0, 642, 643, 644, 641, 375, 426, 445, + 433, 0, 657, 518, 519, 658, 629, 402, 0, 0, + 533, 566, 555, 639, 521, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 337, 0, 0, 370, 570, + 552, 562, 553, 538, 539, 540, 547, 349, 541, 542, + 543, 513, 544, 514, 545, 546, 0, 569, 520, 435, + 386, 587, 586, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 228, 0, 0, 3197, 3199, 0, 0, + 310, 229, 515, 635, 517, 516, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 313, 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, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 300, 442, 461, + 311, 430, 474, 316, 438, 453, 306, 401, 427, 0, + 0, 302, 459, 437, 383, 360, 361, 301, 0, 421, + 335, 351, 332, 399, 0, 458, 486, 331, 477, 0, + 469, 304, 0, 468, 398, 455, 460, 384, 377, 0, + 303, 457, 382, 376, 364, 341, 502, 365, 366, 355, + 410, 374, 411, 356, 388, 387, 389, 0, 0, 0, + 0, 0, 497, 498, 0, 0, 646, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 628, 0, + 0, 632, 0, 471, 0, 0, 0, 0, 0, 0, + 441, 0, 0, 367, 0, 0, 0, 487, 0, 424, + 404, 660, 0, 0, 422, 372, 456, 412, 462, 443, + 470, 418, 413, 294, 444, 334, 385, 307, 309, 329, + 336, 338, 342, 343, 394, 395, 407, 429, 446, 447, + 448, 333, 317, 423, 318, 353, 319, 295, 325, 323, + 326, 431, 327, 297, 408, 452, 0, 348, 419, 380, + 298, 379, 409, 451, 450, 308, 478, 484, 485, 574, + 0, 490, 661, 662, 663, 499, 0, 414, 504, 505, + 506, 508, 509, 510, 511, 575, 592, 559, 529, 492, + 583, 526, 530, 531, 358, 595, 0, 0, 0, 483, + 368, 369, 0, 340, 339, 381, 417, 299, 346, 291, + 292, 656, 330, 400, 597, 630, 631, 522, 0, 584, + 523, 532, 322, 556, 568, 567, 396, 482, 0, 579, + 582, 512, 655, 0, 576, 591, 659, 590, 652, 406, + 0, 428, 588, 535, 0, 580, 554, 0, 581, 550, + 585, 0, 524, 0, 436, 464, 476, 493, 496, 525, + 610, 611, 612, 296, 495, 614, 615, 616, 617, 618, + 619, 620, 613, 467, 557, 534, 560, 475, 537, 536, + 0, 0, 571, 491, 572, 573, 390, 391, 392, 393, + 350, 598, 315, 494, 416, 0, 558, 0, 0, 0, + 0, 0, 0, 0, 0, 563, 564, 561, 664, 0, + 621, 622, 0, 0, 488, 489, 345, 352, 507, 354, + 314, 405, 347, 473, 362, 0, 500, 565, 501, 624, + 627, 625, 626, 397, 357, 359, 432, 363, 373, 420, + 472, 403, 425, 312, 463, 434, 378, 551, 578, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 280, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 605, 604, 603, 602, 601, - 600, 599, 598, 0, 0, 547, 448, 323, 285, 319, - 320, 327, 652, 649, 453, 653, 0, 293, 527, 370, - 0, 414, 343, 592, 593, 0, 644, 241, 242, 243, + 0, 0, 0, 0, 0, 606, 605, 604, 603, 602, + 601, 600, 599, 0, 0, 548, 449, 324, 285, 320, + 321, 328, 653, 650, 454, 654, 0, 293, 528, 371, + 0, 415, 344, 593, 594, 0, 645, 241, 242, 243, 244, 245, 246, 247, 248, 286, 249, 250, 251, 252, 253, 254, 255, 258, 259, 260, 261, 262, 263, 264, - 265, 595, 256, 257, 266, 267, 268, 269, 270, 271, + 265, 596, 256, 257, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 0, 0, 0, 287, 288, 289, 290, 0, 0, 281, 282, 283, - 284, 0, 0, 0, 478, 479, 480, 502, 0, 464, - 526, 650, 0, 0, 0, 0, 0, 0, 0, 576, - 588, 622, 0, 632, 633, 635, 637, 636, 639, 438, - 439, 0, 641, 642, 643, 640, 374, 425, 444, 432, - 0, 656, 517, 518, 657, 628, 401, 0, 0, 532, - 565, 554, 638, 520, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 336, 0, 0, 369, 569, 551, - 561, 552, 537, 538, 539, 546, 348, 540, 541, 542, - 512, 543, 513, 544, 545, 0, 568, 519, 434, 385, - 586, 585, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 228, 0, 0, 2529, 0, 0, 0, 309, - 229, 514, 634, 516, 515, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 312, 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, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 299, 441, 460, 310, - 429, 473, 315, 437, 452, 305, 400, 426, 0, 0, - 301, 458, 436, 382, 359, 360, 300, 0, 420, 334, - 350, 331, 398, 0, 457, 485, 330, 476, 0, 468, - 303, 0, 467, 397, 454, 459, 383, 376, 0, 302, - 456, 381, 375, 363, 340, 501, 364, 365, 354, 409, - 373, 410, 355, 387, 386, 388, 0, 0, 0, 0, - 0, 496, 497, 0, 0, 645, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 627, 0, 0, - 631, 0, 470, 0, 0, 0, 0, 0, 0, 440, - 0, 0, 366, 0, 0, 0, 486, 0, 423, 403, - 659, 0, 0, 421, 371, 455, 411, 461, 442, 469, - 417, 412, 294, 443, 333, 384, 306, 308, 328, 335, - 337, 341, 342, 393, 394, 406, 428, 445, 446, 447, - 332, 316, 422, 317, 352, 318, 295, 324, 322, 325, - 430, 326, 297, 407, 451, 0, 347, 418, 379, 298, - 378, 408, 450, 449, 307, 477, 483, 484, 573, 0, - 489, 660, 661, 662, 498, 0, 413, 503, 504, 505, - 507, 508, 509, 510, 574, 591, 558, 528, 491, 582, - 525, 529, 530, 357, 594, 0, 0, 0, 482, 367, - 368, 0, 339, 338, 380, 416, 345, 291, 292, 655, - 329, 399, 596, 629, 630, 521, 0, 583, 522, 531, - 321, 555, 567, 566, 395, 481, 0, 578, 581, 511, - 654, 0, 575, 590, 658, 589, 651, 405, 0, 427, - 587, 534, 0, 579, 553, 0, 580, 549, 584, 0, - 523, 0, 435, 463, 475, 492, 495, 524, 609, 610, - 611, 296, 494, 613, 614, 615, 616, 617, 618, 619, - 612, 466, 556, 533, 559, 474, 536, 535, 0, 0, - 570, 490, 571, 572, 389, 390, 391, 392, 349, 597, - 314, 493, 415, 0, 557, 0, 0, 0, 0, 0, - 0, 0, 0, 562, 563, 560, 663, 0, 620, 621, - 0, 0, 487, 488, 344, 351, 506, 353, 313, 404, - 346, 472, 361, 0, 499, 564, 500, 623, 626, 624, - 625, 396, 356, 358, 431, 362, 372, 419, 471, 402, - 424, 311, 462, 433, 377, 550, 577, 0, 0, 0, + 284, 0, 0, 0, 479, 480, 481, 503, 0, 465, + 527, 651, 0, 0, 0, 0, 0, 0, 0, 577, + 589, 623, 0, 633, 634, 636, 638, 637, 640, 439, + 440, 0, 642, 643, 644, 641, 375, 426, 445, 433, + 0, 657, 518, 519, 658, 629, 402, 0, 0, 533, + 566, 555, 639, 521, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 337, 2551, 0, 370, 570, 552, + 562, 553, 538, 539, 540, 547, 349, 541, 542, 543, + 513, 544, 514, 545, 546, 0, 569, 520, 435, 386, + 587, 586, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 228, 0, 0, 1555, 0, 0, 0, 310, + 229, 515, 635, 517, 516, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 313, 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, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 300, 442, 461, 311, + 430, 474, 316, 438, 453, 306, 401, 427, 0, 0, + 302, 459, 437, 383, 360, 361, 301, 0, 421, 335, + 351, 332, 399, 0, 458, 486, 331, 477, 0, 469, + 304, 0, 468, 398, 455, 460, 384, 377, 0, 303, + 457, 382, 376, 364, 341, 502, 365, 366, 355, 410, + 374, 411, 356, 388, 387, 389, 0, 0, 0, 0, + 0, 497, 498, 0, 0, 646, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 628, 0, 0, + 632, 0, 471, 0, 0, 0, 0, 0, 0, 441, + 0, 0, 367, 0, 0, 0, 487, 0, 424, 404, + 660, 0, 0, 422, 372, 456, 412, 462, 443, 470, + 418, 413, 294, 444, 334, 385, 307, 309, 329, 336, + 338, 342, 343, 394, 395, 407, 429, 446, 447, 448, + 333, 317, 423, 318, 353, 319, 295, 325, 323, 326, + 431, 327, 297, 408, 452, 0, 348, 419, 380, 298, + 379, 409, 451, 450, 308, 478, 484, 485, 574, 0, + 490, 661, 662, 663, 499, 0, 414, 504, 505, 506, + 508, 509, 510, 511, 575, 592, 559, 529, 492, 583, + 526, 530, 531, 358, 595, 0, 0, 0, 483, 368, + 369, 0, 340, 339, 381, 417, 299, 346, 291, 292, + 656, 330, 400, 597, 630, 631, 522, 0, 584, 523, + 532, 322, 556, 568, 567, 396, 482, 0, 579, 582, + 512, 655, 0, 576, 591, 659, 590, 652, 406, 0, + 428, 588, 535, 0, 580, 554, 0, 581, 550, 585, + 0, 524, 0, 436, 464, 476, 493, 496, 525, 610, + 611, 612, 296, 495, 614, 615, 616, 617, 618, 619, + 620, 613, 467, 557, 534, 560, 475, 537, 536, 0, + 0, 571, 491, 572, 573, 390, 391, 392, 393, 350, + 598, 315, 494, 416, 0, 558, 0, 0, 0, 0, + 0, 0, 0, 0, 563, 564, 561, 664, 0, 621, + 622, 0, 0, 488, 489, 345, 352, 507, 354, 314, + 405, 347, 473, 362, 0, 500, 565, 501, 624, 627, + 625, 626, 397, 357, 359, 432, 363, 373, 420, 472, + 403, 425, 312, 463, 434, 378, 551, 578, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 280, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 606, 605, 604, 603, 602, 601, + 600, 599, 0, 0, 548, 449, 324, 285, 320, 321, + 328, 653, 650, 454, 654, 0, 293, 528, 371, 0, + 415, 344, 593, 594, 0, 645, 241, 242, 243, 244, + 245, 246, 247, 248, 286, 249, 250, 251, 252, 253, + 254, 255, 258, 259, 260, 261, 262, 263, 264, 265, + 596, 256, 257, 266, 267, 268, 269, 270, 271, 272, + 273, 274, 275, 276, 277, 278, 279, 0, 0, 0, + 287, 288, 289, 290, 0, 0, 281, 282, 283, 284, + 0, 0, 0, 479, 480, 481, 503, 0, 465, 527, + 651, 0, 0, 0, 0, 0, 0, 0, 577, 589, + 623, 0, 633, 634, 636, 638, 637, 640, 439, 440, + 0, 642, 643, 644, 641, 375, 426, 445, 433, 0, + 657, 518, 519, 658, 629, 402, 0, 0, 533, 566, + 555, 639, 521, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 671, 337, 0, 0, 370, 570, 552, 562, + 553, 538, 539, 540, 547, 349, 541, 542, 543, 513, + 544, 514, 545, 546, 0, 569, 520, 435, 386, 587, + 586, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 228, 0, 0, 0, 0, 0, 0, 310, 229, + 515, 635, 517, 516, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 313, 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, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 300, 442, 461, 311, 430, + 474, 316, 438, 453, 306, 401, 427, 0, 0, 302, + 459, 437, 383, 360, 361, 301, 0, 421, 335, 351, + 332, 399, 0, 458, 486, 331, 477, 0, 469, 304, + 0, 468, 398, 455, 460, 384, 377, 0, 303, 457, + 382, 376, 364, 341, 502, 365, 366, 355, 410, 374, + 411, 356, 388, 387, 389, 0, 0, 0, 0, 0, + 497, 498, 0, 0, 646, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 628, 0, 0, 632, + 0, 471, 0, 670, 0, 0, 0, 0, 441, 0, + 0, 367, 0, 0, 0, 487, 0, 424, 404, 660, + 0, 0, 422, 372, 456, 412, 462, 443, 470, 418, + 413, 294, 444, 334, 385, 307, 309, 329, 336, 338, + 342, 343, 394, 395, 407, 429, 446, 447, 448, 333, + 317, 423, 318, 353, 319, 295, 325, 323, 326, 431, + 327, 297, 408, 452, 0, 348, 419, 380, 298, 379, + 409, 451, 450, 308, 478, 484, 485, 574, 0, 490, + 661, 662, 663, 499, 0, 414, 504, 505, 506, 508, + 509, 510, 511, 575, 592, 559, 529, 492, 583, 526, + 530, 531, 358, 595, 0, 0, 0, 483, 368, 369, + 0, 340, 339, 381, 417, 299, 346, 291, 292, 656, + 330, 400, 597, 630, 631, 522, 0, 584, 523, 532, + 322, 556, 568, 567, 396, 482, 0, 579, 582, 512, + 655, 0, 576, 591, 659, 590, 652, 406, 0, 428, + 588, 535, 0, 580, 554, 0, 581, 550, 585, 0, + 524, 0, 436, 464, 476, 493, 496, 525, 610, 611, + 612, 296, 495, 614, 615, 616, 617, 618, 619, 620, + 613, 467, 557, 534, 560, 475, 537, 536, 0, 0, + 571, 491, 572, 573, 390, 391, 392, 393, 350, 598, + 315, 494, 416, 0, 558, 0, 0, 0, 0, 0, + 0, 0, 0, 563, 564, 561, 664, 0, 621, 622, + 0, 0, 488, 489, 345, 352, 507, 354, 314, 405, + 347, 473, 362, 0, 500, 565, 501, 624, 627, 625, + 626, 397, 357, 359, 432, 363, 373, 420, 472, 403, + 425, 312, 463, 434, 378, 551, 578, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 280, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 605, 604, 603, 602, 601, 600, 599, - 598, 0, 0, 547, 448, 323, 285, 319, 320, 327, - 652, 649, 453, 653, 0, 293, 527, 370, 0, 414, - 343, 592, 593, 0, 644, 241, 242, 243, 244, 245, + 0, 0, 0, 606, 605, 604, 603, 602, 601, 600, + 599, 0, 0, 548, 449, 324, 285, 320, 321, 328, + 653, 650, 454, 654, 0, 293, 528, 371, 0, 415, + 344, 593, 594, 0, 645, 241, 242, 243, 244, 245, 246, 247, 248, 286, 249, 250, 251, 252, 253, 254, - 255, 258, 259, 260, 261, 262, 263, 264, 265, 595, + 255, 258, 259, 260, 261, 262, 263, 264, 265, 596, 256, 257, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 0, 0, 0, 287, 288, 289, 290, 0, 0, 281, 282, 283, 284, 0, - 0, 0, 478, 479, 480, 502, 0, 464, 526, 650, - 0, 0, 0, 0, 0, 0, 0, 576, 588, 622, - 0, 632, 633, 635, 637, 636, 639, 438, 439, 0, - 641, 642, 643, 640, 374, 425, 444, 432, 0, 656, - 517, 518, 657, 628, 401, 0, 0, 532, 565, 554, - 638, 520, 0, 0, 2895, 0, 0, 0, 0, 0, - 0, 0, 336, 0, 0, 369, 569, 551, 561, 552, - 537, 538, 539, 546, 348, 540, 541, 542, 512, 543, - 513, 544, 545, 0, 568, 519, 434, 385, 586, 585, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 228, 0, 0, 0, 0, 0, 0, 309, 229, 514, - 634, 516, 515, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 312, 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, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 299, 441, 460, 310, 429, 473, - 315, 437, 452, 305, 400, 426, 0, 0, 301, 458, - 436, 382, 359, 360, 300, 0, 420, 334, 350, 331, - 398, 0, 457, 485, 330, 476, 0, 468, 303, 0, - 467, 397, 454, 459, 383, 376, 0, 302, 456, 381, - 375, 363, 340, 501, 364, 365, 354, 409, 373, 410, - 355, 387, 386, 388, 0, 0, 0, 0, 0, 496, - 497, 0, 0, 645, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 627, 0, 0, 631, 0, - 470, 0, 0, 0, 0, 0, 0, 440, 0, 0, - 366, 0, 0, 0, 486, 0, 423, 403, 659, 0, - 0, 421, 371, 455, 411, 461, 442, 469, 417, 412, - 294, 443, 333, 384, 306, 308, 328, 335, 337, 341, - 342, 393, 394, 406, 428, 445, 446, 447, 332, 316, - 422, 317, 352, 318, 295, 324, 322, 325, 430, 326, - 297, 407, 451, 0, 347, 418, 379, 298, 378, 408, - 450, 449, 307, 477, 483, 484, 573, 0, 489, 660, - 661, 662, 498, 0, 413, 503, 504, 505, 507, 508, - 509, 510, 574, 591, 558, 528, 491, 582, 525, 529, - 530, 357, 594, 0, 0, 0, 482, 367, 368, 0, - 339, 338, 380, 416, 345, 291, 292, 655, 329, 399, - 596, 629, 630, 521, 0, 583, 522, 531, 321, 555, - 567, 566, 395, 481, 0, 578, 581, 511, 654, 0, - 575, 590, 658, 589, 651, 405, 0, 427, 587, 534, - 0, 579, 553, 0, 580, 549, 584, 0, 523, 0, - 435, 463, 475, 492, 495, 524, 609, 610, 611, 296, - 494, 613, 614, 615, 616, 617, 618, 619, 612, 466, - 556, 533, 559, 474, 536, 535, 0, 0, 570, 490, - 571, 572, 389, 390, 391, 392, 349, 597, 314, 493, - 415, 0, 557, 0, 0, 0, 0, 0, 0, 0, - 0, 562, 563, 560, 663, 0, 620, 621, 0, 0, - 487, 488, 344, 351, 506, 353, 313, 404, 346, 472, - 361, 0, 499, 564, 500, 623, 626, 624, 625, 396, - 356, 358, 431, 362, 372, 419, 471, 402, 424, 311, - 462, 433, 377, 550, 577, 0, 0, 0, 0, 0, + 0, 0, 479, 480, 481, 503, 0, 465, 527, 651, + 0, 0, 0, 0, 0, 0, 0, 577, 589, 623, + 0, 633, 634, 636, 638, 637, 640, 439, 440, 0, + 642, 643, 644, 641, 375, 426, 445, 433, 0, 657, + 518, 519, 658, 629, 402, 0, 0, 533, 566, 555, + 639, 521, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 337, 0, 0, 370, 570, 552, 562, 553, + 538, 539, 540, 547, 349, 541, 542, 543, 513, 544, + 514, 545, 546, 0, 569, 520, 435, 386, 587, 586, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 228, 854, 0, 0, 0, 0, 0, 310, 229, 515, + 635, 517, 516, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 313, 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, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 300, 442, 461, 311, 430, 474, + 316, 438, 453, 306, 401, 427, 0, 0, 302, 459, + 437, 383, 360, 361, 301, 0, 421, 335, 351, 332, + 399, 0, 458, 486, 331, 477, 0, 469, 304, 0, + 468, 398, 455, 460, 384, 377, 0, 303, 457, 382, + 376, 364, 341, 502, 365, 366, 355, 410, 374, 411, + 356, 388, 387, 389, 0, 0, 0, 0, 0, 497, + 498, 0, 0, 646, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 628, 0, 0, 632, 0, + 471, 0, 0, 0, 0, 0, 0, 441, 0, 0, + 367, 0, 0, 0, 487, 0, 424, 404, 660, 0, + 0, 422, 372, 456, 412, 462, 443, 470, 418, 413, + 294, 444, 334, 385, 307, 309, 329, 336, 338, 342, + 343, 394, 395, 407, 429, 446, 447, 448, 333, 317, + 423, 318, 353, 319, 295, 325, 323, 326, 431, 327, + 297, 408, 452, 0, 348, 419, 380, 298, 379, 409, + 451, 450, 308, 478, 484, 485, 574, 0, 490, 661, + 662, 663, 499, 0, 414, 504, 505, 506, 508, 509, + 510, 511, 575, 592, 559, 529, 492, 583, 526, 530, + 531, 358, 595, 0, 0, 0, 483, 368, 369, 0, + 340, 339, 381, 417, 299, 346, 291, 292, 656, 330, + 400, 597, 630, 631, 522, 0, 584, 523, 532, 322, + 556, 568, 567, 396, 482, 0, 579, 582, 512, 655, + 0, 576, 591, 659, 590, 652, 406, 0, 428, 588, + 535, 0, 580, 554, 0, 581, 550, 585, 0, 524, + 0, 436, 464, 476, 493, 496, 525, 610, 611, 612, + 296, 495, 614, 615, 616, 617, 618, 619, 620, 613, + 467, 557, 534, 560, 475, 537, 536, 0, 0, 571, + 491, 572, 573, 390, 391, 392, 393, 350, 598, 315, + 494, 416, 0, 558, 0, 0, 0, 0, 0, 0, + 0, 0, 563, 564, 561, 664, 0, 621, 622, 0, + 0, 488, 489, 345, 352, 507, 354, 314, 405, 347, + 473, 362, 0, 500, 565, 501, 624, 627, 625, 626, + 397, 357, 359, 432, 363, 373, 420, 472, 403, 425, + 312, 463, 434, 378, 551, 578, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 280, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 606, 605, 604, 603, 602, 601, 600, 599, + 0, 0, 548, 449, 324, 285, 320, 321, 328, 653, + 650, 454, 654, 0, 293, 528, 371, 0, 415, 344, + 593, 594, 0, 645, 241, 242, 243, 244, 245, 246, + 247, 248, 286, 249, 250, 251, 252, 253, 254, 255, + 258, 259, 260, 261, 262, 263, 264, 265, 596, 256, + 257, 266, 267, 268, 269, 270, 271, 272, 273, 274, + 275, 276, 277, 278, 279, 0, 0, 0, 287, 288, + 289, 290, 0, 0, 281, 282, 283, 284, 0, 0, + 0, 479, 480, 481, 503, 0, 465, 527, 651, 0, + 0, 0, 0, 0, 0, 0, 577, 589, 623, 0, + 633, 634, 636, 638, 637, 640, 439, 440, 0, 642, + 643, 644, 641, 375, 426, 445, 433, 0, 657, 518, + 519, 658, 629, 402, 0, 0, 533, 566, 555, 639, + 521, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 337, 0, 0, 370, 570, 552, 562, 553, 538, + 539, 540, 547, 349, 541, 542, 543, 513, 544, 514, + 545, 546, 0, 569, 520, 435, 386, 587, 586, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 4045, 0, 0, 228, + 0, 0, 0, 0, 0, 0, 310, 229, 515, 635, + 517, 516, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 313, 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, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 300, 442, 461, 311, 430, 474, 316, + 438, 453, 306, 401, 427, 0, 0, 302, 459, 437, + 383, 360, 361, 301, 0, 421, 335, 351, 332, 399, + 0, 458, 486, 331, 477, 0, 469, 304, 0, 468, + 398, 455, 460, 384, 377, 0, 303, 457, 382, 376, + 364, 341, 502, 365, 366, 355, 410, 374, 411, 356, + 388, 387, 389, 0, 0, 0, 0, 0, 497, 498, + 0, 0, 646, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 628, 0, 0, 632, 0, 471, + 0, 0, 0, 0, 0, 0, 441, 0, 0, 367, + 0, 0, 0, 487, 0, 424, 404, 660, 0, 0, + 422, 372, 456, 412, 462, 443, 470, 418, 413, 294, + 444, 334, 385, 307, 309, 329, 336, 338, 342, 343, + 394, 395, 407, 429, 446, 447, 448, 333, 317, 423, + 318, 353, 319, 295, 325, 323, 326, 431, 327, 297, + 408, 452, 0, 348, 419, 380, 298, 379, 409, 451, + 450, 308, 478, 484, 485, 574, 0, 490, 661, 662, + 663, 499, 0, 414, 504, 505, 506, 508, 509, 510, + 511, 575, 592, 559, 529, 492, 583, 526, 530, 531, + 358, 595, 0, 0, 0, 483, 368, 369, 0, 340, + 339, 381, 417, 299, 346, 291, 292, 656, 330, 400, + 597, 630, 631, 522, 0, 584, 523, 532, 322, 556, + 568, 567, 396, 482, 0, 579, 582, 512, 655, 0, + 576, 591, 659, 590, 652, 406, 0, 428, 588, 535, + 0, 580, 554, 0, 581, 550, 585, 0, 524, 0, + 436, 464, 476, 493, 496, 525, 610, 611, 612, 296, + 495, 614, 615, 616, 617, 618, 619, 620, 613, 467, + 557, 534, 560, 475, 537, 536, 0, 0, 571, 491, + 572, 573, 390, 391, 392, 393, 350, 598, 315, 494, + 416, 0, 558, 0, 0, 0, 0, 0, 0, 0, + 0, 563, 564, 561, 664, 0, 621, 622, 0, 0, + 488, 489, 345, 352, 507, 354, 314, 405, 347, 473, + 362, 0, 500, 565, 501, 624, 627, 625, 626, 397, + 357, 359, 432, 363, 373, 420, 472, 403, 425, 312, + 463, 434, 378, 551, 578, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 280, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 605, 604, 603, 602, 601, 600, 599, 598, 0, - 0, 547, 448, 323, 285, 319, 320, 327, 652, 649, - 453, 653, 0, 293, 527, 370, 0, 414, 343, 592, - 593, 0, 644, 241, 242, 243, 244, 245, 246, 247, + 0, 606, 605, 604, 603, 602, 601, 600, 599, 0, + 0, 548, 449, 324, 285, 320, 321, 328, 653, 650, + 454, 654, 0, 293, 528, 371, 0, 415, 344, 593, + 594, 0, 645, 241, 242, 243, 244, 245, 246, 247, 248, 286, 249, 250, 251, 252, 253, 254, 255, 258, - 259, 260, 261, 262, 263, 264, 265, 595, 256, 257, + 259, 260, 261, 262, 263, 264, 265, 596, 256, 257, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 0, 0, 0, 287, 288, 289, 290, 0, 0, 281, 282, 283, 284, 0, 0, 0, - 478, 479, 480, 502, 0, 464, 526, 650, 0, 0, - 0, 0, 0, 0, 0, 576, 588, 622, 0, 632, - 633, 635, 637, 636, 639, 438, 439, 0, 641, 642, - 643, 640, 374, 425, 444, 432, 0, 656, 517, 518, - 657, 628, 401, 0, 0, 532, 565, 554, 638, 520, + 479, 480, 481, 503, 0, 465, 527, 651, 0, 0, + 0, 0, 0, 0, 0, 577, 589, 623, 0, 633, + 634, 636, 638, 637, 640, 439, 440, 0, 642, 643, + 644, 641, 375, 426, 445, 433, 0, 657, 518, 519, + 658, 629, 402, 0, 0, 533, 566, 555, 639, 521, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 336, 0, 0, 369, 569, 551, 561, 552, 537, 538, - 539, 546, 348, 540, 541, 542, 512, 543, 513, 544, - 545, 0, 568, 519, 434, 385, 586, 585, 0, 0, + 337, 0, 0, 370, 570, 552, 562, 553, 538, 539, + 540, 547, 349, 541, 542, 543, 513, 544, 514, 545, + 546, 0, 569, 520, 435, 386, 587, 586, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 228, 0, - 0, 0, 0, 0, 0, 309, 229, 514, 634, 516, - 515, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 312, 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, 2205, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 299, 441, 460, 310, 429, 473, 315, 437, - 452, 305, 400, 426, 0, 0, 301, 458, 436, 382, - 359, 360, 300, 0, 420, 334, 350, 331, 398, 0, - 457, 485, 330, 476, 0, 468, 303, 0, 467, 397, - 454, 459, 383, 376, 0, 302, 456, 381, 375, 363, - 340, 501, 364, 365, 354, 409, 373, 410, 355, 387, - 386, 388, 0, 0, 0, 0, 0, 496, 497, 0, - 0, 645, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 627, 0, 0, 631, 0, 470, 0, - 0, 0, 0, 0, 0, 440, 0, 0, 366, 0, - 0, 0, 486, 0, 423, 403, 659, 0, 0, 421, - 371, 455, 411, 461, 442, 469, 417, 412, 294, 443, - 333, 384, 306, 308, 328, 335, 337, 341, 342, 393, - 394, 406, 428, 445, 446, 447, 332, 316, 422, 317, - 352, 318, 295, 324, 322, 325, 430, 326, 297, 407, - 451, 0, 347, 418, 379, 298, 378, 408, 450, 449, - 307, 477, 483, 484, 573, 0, 489, 660, 661, 662, - 498, 0, 413, 503, 504, 505, 507, 508, 509, 510, - 574, 591, 558, 528, 491, 582, 525, 529, 530, 357, - 594, 0, 0, 0, 482, 367, 368, 0, 339, 338, - 380, 416, 345, 291, 292, 655, 329, 399, 596, 629, - 630, 521, 0, 583, 522, 531, 321, 555, 567, 566, - 395, 481, 0, 578, 581, 511, 654, 0, 575, 590, - 658, 589, 651, 405, 0, 427, 587, 534, 0, 579, - 553, 0, 580, 549, 584, 0, 523, 0, 435, 463, - 475, 492, 495, 524, 609, 610, 611, 296, 494, 613, - 614, 615, 616, 617, 618, 619, 612, 466, 556, 533, - 559, 474, 536, 535, 0, 0, 570, 490, 571, 572, - 389, 390, 391, 392, 349, 597, 314, 493, 415, 0, - 557, 0, 0, 0, 0, 0, 0, 0, 0, 562, - 563, 560, 663, 0, 620, 621, 0, 0, 487, 488, - 344, 351, 506, 353, 313, 404, 346, 472, 361, 0, - 499, 564, 500, 623, 626, 624, 625, 396, 356, 358, - 431, 362, 372, 419, 471, 402, 424, 311, 462, 433, - 377, 550, 577, 0, 0, 0, 0, 0, 0, 0, + 0, 3803, 0, 0, 0, 310, 229, 515, 635, 517, + 516, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 313, 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, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 300, 442, 461, 311, 430, 474, 316, 438, + 453, 306, 401, 427, 0, 0, 302, 459, 437, 383, + 360, 361, 301, 0, 421, 335, 351, 332, 399, 0, + 458, 486, 331, 477, 0, 469, 304, 0, 468, 398, + 455, 460, 384, 377, 0, 303, 457, 382, 376, 364, + 341, 502, 365, 366, 355, 410, 374, 411, 356, 388, + 387, 389, 0, 0, 0, 0, 0, 497, 498, 0, + 0, 646, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 628, 0, 0, 632, 0, 471, 0, + 0, 0, 0, 0, 0, 441, 0, 0, 367, 0, + 0, 0, 487, 0, 424, 404, 660, 0, 0, 422, + 372, 456, 412, 462, 443, 470, 418, 413, 294, 444, + 334, 385, 307, 309, 329, 336, 338, 342, 343, 394, + 395, 407, 429, 446, 447, 448, 333, 317, 423, 318, + 353, 319, 295, 325, 323, 326, 431, 327, 297, 408, + 452, 0, 348, 419, 380, 298, 379, 409, 451, 450, + 308, 478, 484, 485, 574, 0, 490, 661, 662, 663, + 499, 0, 414, 504, 505, 506, 508, 509, 510, 511, + 575, 592, 559, 529, 492, 583, 526, 530, 531, 358, + 595, 0, 0, 0, 483, 368, 369, 0, 340, 339, + 381, 417, 299, 346, 291, 292, 656, 330, 400, 597, + 630, 631, 522, 0, 584, 523, 532, 322, 556, 568, + 567, 396, 482, 0, 579, 582, 512, 655, 0, 576, + 591, 659, 590, 652, 406, 0, 428, 588, 535, 0, + 580, 554, 0, 581, 550, 585, 0, 524, 0, 436, + 464, 476, 493, 496, 525, 610, 611, 612, 296, 495, + 614, 615, 616, 617, 618, 619, 620, 613, 467, 557, + 534, 560, 475, 537, 536, 0, 0, 571, 491, 572, + 573, 390, 391, 392, 393, 350, 598, 315, 494, 416, + 0, 558, 0, 0, 0, 0, 0, 0, 0, 0, + 563, 564, 561, 664, 0, 621, 622, 0, 0, 488, + 489, 345, 352, 507, 354, 314, 405, 347, 473, 362, + 0, 500, 565, 501, 624, 627, 625, 626, 397, 357, + 359, 432, 363, 373, 420, 472, 403, 425, 312, 463, + 434, 378, 551, 578, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 280, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 606, 605, 604, 603, 602, 601, 600, 599, 0, 0, + 548, 449, 324, 285, 320, 321, 328, 653, 650, 454, + 654, 0, 293, 528, 371, 0, 415, 344, 593, 594, + 0, 645, 241, 242, 243, 244, 245, 246, 247, 248, + 286, 249, 250, 251, 252, 253, 254, 255, 258, 259, + 260, 261, 262, 263, 264, 265, 596, 256, 257, 266, + 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, + 277, 278, 279, 0, 0, 0, 287, 288, 289, 290, + 0, 0, 281, 282, 283, 284, 0, 0, 0, 479, + 480, 481, 503, 0, 465, 527, 651, 0, 0, 0, + 0, 0, 0, 0, 577, 589, 623, 0, 633, 634, + 636, 638, 637, 640, 439, 440, 0, 642, 643, 644, + 641, 375, 426, 445, 433, 0, 657, 518, 519, 658, + 629, 402, 0, 0, 533, 566, 555, 639, 521, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 337, + 0, 0, 370, 570, 552, 562, 553, 538, 539, 540, + 547, 349, 541, 542, 543, 513, 544, 514, 545, 546, + 0, 569, 520, 435, 386, 587, 586, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 228, 0, 0, + 0, 0, 0, 0, 310, 229, 515, 635, 517, 516, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 313, + 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, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 300, 442, 461, 311, 430, 474, 316, 438, 453, + 306, 401, 427, 0, 0, 302, 459, 437, 383, 360, + 361, 301, 0, 421, 335, 351, 332, 399, 0, 458, + 486, 331, 477, 0, 469, 304, 0, 468, 398, 455, + 460, 384, 377, 0, 303, 457, 382, 376, 364, 341, + 502, 365, 366, 355, 410, 374, 411, 356, 388, 387, + 389, 0, 0, 0, 0, 0, 497, 498, 0, 0, + 646, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 628, 0, 0, 632, 0, 471, 0, 0, + 0, 3937, 0, 0, 441, 0, 0, 367, 0, 0, + 0, 487, 0, 424, 404, 660, 0, 0, 422, 372, + 456, 412, 462, 443, 470, 418, 413, 294, 444, 334, + 385, 307, 309, 329, 336, 338, 342, 343, 394, 395, + 407, 429, 446, 447, 448, 333, 317, 423, 318, 353, + 319, 295, 325, 323, 326, 431, 327, 297, 408, 452, + 0, 348, 419, 380, 298, 379, 409, 451, 450, 308, + 478, 484, 485, 574, 0, 490, 661, 662, 663, 499, + 0, 414, 504, 505, 506, 508, 509, 510, 511, 575, + 592, 559, 529, 492, 583, 526, 530, 531, 358, 595, + 0, 0, 0, 483, 368, 369, 0, 340, 339, 381, + 417, 299, 346, 291, 292, 656, 330, 400, 597, 630, + 631, 522, 0, 584, 523, 532, 322, 556, 568, 567, + 396, 482, 0, 579, 582, 512, 655, 0, 576, 591, + 659, 590, 652, 406, 0, 428, 588, 535, 0, 580, + 554, 0, 581, 550, 585, 0, 524, 0, 436, 464, + 476, 493, 496, 525, 610, 611, 612, 296, 495, 614, + 615, 616, 617, 618, 619, 620, 613, 467, 557, 534, + 560, 475, 537, 536, 0, 0, 571, 491, 572, 573, + 390, 391, 392, 393, 350, 598, 315, 494, 416, 0, + 558, 0, 0, 0, 0, 0, 0, 0, 0, 563, + 564, 561, 664, 0, 621, 622, 0, 0, 488, 489, + 345, 352, 507, 354, 314, 405, 347, 473, 362, 0, + 500, 565, 501, 624, 627, 625, 626, 397, 357, 359, + 432, 363, 373, 420, 472, 403, 425, 312, 463, 434, + 378, 551, 578, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 280, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 605, - 604, 603, 602, 601, 600, 599, 598, 0, 0, 547, - 448, 323, 285, 319, 320, 327, 652, 649, 453, 653, - 0, 293, 527, 370, 0, 414, 343, 592, 593, 0, - 644, 241, 242, 243, 244, 245, 246, 247, 248, 286, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 606, + 605, 604, 603, 602, 601, 600, 599, 0, 0, 548, + 449, 324, 285, 320, 321, 328, 653, 650, 454, 654, + 0, 293, 528, 371, 0, 415, 344, 593, 594, 0, + 645, 241, 242, 243, 244, 245, 246, 247, 248, 286, 249, 250, 251, 252, 253, 254, 255, 258, 259, 260, - 261, 262, 263, 264, 265, 595, 256, 257, 266, 267, + 261, 262, 263, 264, 265, 596, 256, 257, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 0, 0, 0, 287, 288, 289, 290, 0, - 0, 281, 282, 283, 284, 0, 0, 0, 478, 479, - 480, 502, 0, 464, 526, 650, 0, 0, 0, 0, - 0, 0, 0, 576, 588, 622, 0, 632, 633, 635, - 637, 636, 639, 438, 439, 0, 641, 642, 643, 640, - 374, 425, 444, 432, 0, 656, 517, 518, 657, 628, - 401, 0, 0, 532, 565, 554, 638, 520, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 336, 0, - 0, 369, 569, 551, 561, 552, 537, 538, 539, 546, - 348, 540, 541, 542, 512, 543, 513, 544, 545, 0, - 568, 519, 434, 385, 586, 585, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 228, 0, 0, 2646, - 0, 0, 0, 309, 229, 514, 634, 516, 515, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 312, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 299, 441, 460, 310, 429, 473, 315, 437, 452, 305, - 400, 426, 0, 0, 301, 458, 436, 382, 359, 360, - 300, 0, 420, 334, 350, 331, 398, 0, 457, 485, - 330, 476, 0, 468, 303, 0, 467, 397, 454, 459, - 383, 376, 0, 302, 456, 381, 375, 363, 340, 501, - 364, 365, 354, 409, 373, 410, 355, 387, 386, 388, - 0, 0, 0, 0, 0, 496, 497, 0, 0, 645, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 627, 0, 0, 631, 0, 470, 0, 0, 0, - 0, 0, 0, 440, 0, 0, 366, 0, 0, 0, - 486, 0, 423, 403, 659, 0, 0, 421, 371, 455, - 411, 461, 442, 469, 417, 412, 294, 443, 333, 384, - 306, 308, 328, 335, 337, 341, 342, 393, 394, 406, - 428, 445, 446, 447, 332, 316, 422, 317, 352, 318, - 295, 324, 322, 325, 430, 326, 297, 407, 451, 0, - 347, 418, 379, 298, 378, 408, 450, 449, 307, 477, - 483, 484, 573, 0, 489, 660, 661, 662, 498, 0, - 413, 503, 504, 505, 507, 508, 509, 510, 574, 591, - 558, 528, 491, 582, 525, 529, 530, 357, 594, 0, - 0, 0, 482, 367, 368, 0, 339, 338, 380, 416, - 345, 291, 292, 655, 329, 399, 596, 629, 630, 521, - 0, 583, 522, 531, 321, 555, 567, 566, 395, 481, - 0, 578, 581, 511, 654, 0, 575, 590, 658, 589, - 651, 405, 0, 427, 587, 534, 0, 579, 553, 0, - 580, 549, 584, 0, 523, 0, 435, 463, 475, 492, - 495, 524, 609, 610, 611, 296, 494, 613, 614, 615, - 616, 617, 618, 619, 612, 466, 556, 533, 559, 474, - 536, 535, 0, 0, 570, 490, 571, 572, 389, 390, - 391, 392, 349, 597, 314, 493, 415, 0, 557, 0, - 0, 0, 0, 0, 0, 0, 0, 562, 563, 560, - 663, 0, 620, 621, 0, 0, 487, 488, 344, 351, - 506, 353, 313, 404, 346, 472, 361, 0, 499, 564, - 500, 623, 626, 624, 625, 396, 356, 358, 431, 362, - 372, 419, 471, 402, 424, 311, 462, 433, 377, 550, - 577, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 281, 282, 283, 284, 0, 0, 0, 479, 480, + 481, 503, 0, 465, 527, 651, 0, 0, 0, 0, + 0, 0, 0, 577, 589, 623, 0, 633, 634, 636, + 638, 637, 640, 439, 440, 0, 642, 643, 644, 641, + 375, 426, 445, 433, 0, 657, 518, 519, 658, 629, + 402, 0, 0, 533, 566, 555, 639, 521, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 337, 0, + 0, 370, 570, 552, 562, 553, 538, 539, 540, 547, + 349, 541, 542, 543, 513, 544, 514, 545, 546, 0, + 569, 520, 435, 386, 587, 586, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1779, 0, 0, 228, 0, 0, 0, + 0, 0, 0, 310, 229, 515, 635, 517, 516, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 313, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 300, 442, 461, 311, 430, 474, 316, 438, 453, 306, + 401, 427, 0, 0, 302, 459, 437, 383, 360, 361, + 301, 0, 421, 335, 351, 332, 399, 0, 458, 486, + 331, 477, 0, 469, 304, 0, 468, 398, 455, 460, + 384, 377, 0, 303, 457, 382, 376, 364, 341, 502, + 365, 366, 355, 410, 374, 411, 356, 388, 387, 389, + 0, 0, 0, 0, 0, 497, 498, 0, 0, 646, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 628, 0, 0, 632, 0, 471, 0, 0, 0, + 0, 0, 0, 441, 0, 0, 367, 0, 0, 0, + 487, 0, 424, 404, 660, 0, 0, 422, 372, 456, + 412, 462, 443, 470, 418, 413, 294, 444, 334, 385, + 307, 309, 329, 336, 338, 342, 343, 394, 395, 407, + 429, 446, 447, 448, 333, 317, 423, 318, 353, 319, + 295, 325, 323, 326, 431, 327, 297, 408, 452, 0, + 348, 419, 380, 298, 379, 409, 451, 450, 308, 478, + 484, 485, 574, 0, 490, 661, 662, 663, 499, 0, + 414, 504, 505, 506, 508, 509, 510, 511, 575, 592, + 559, 529, 492, 583, 526, 530, 531, 358, 595, 0, + 0, 0, 483, 368, 369, 0, 340, 339, 381, 417, + 299, 346, 291, 292, 656, 330, 400, 597, 630, 631, + 522, 0, 584, 523, 532, 322, 556, 568, 567, 396, + 482, 0, 579, 582, 512, 655, 0, 576, 591, 659, + 590, 652, 406, 0, 428, 588, 535, 0, 580, 554, + 0, 581, 550, 585, 0, 524, 0, 436, 464, 476, + 493, 496, 525, 610, 611, 612, 296, 495, 614, 615, + 616, 617, 618, 619, 620, 613, 467, 557, 534, 560, + 475, 537, 536, 0, 0, 571, 491, 572, 573, 390, + 391, 392, 393, 350, 598, 315, 494, 416, 0, 558, + 0, 0, 0, 0, 0, 0, 0, 0, 563, 564, + 561, 664, 0, 621, 622, 0, 0, 488, 489, 345, + 352, 507, 354, 314, 405, 347, 473, 362, 0, 500, + 565, 501, 624, 627, 625, 626, 397, 357, 359, 432, + 363, 373, 420, 472, 403, 425, 312, 463, 434, 378, + 551, 578, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 280, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 606, 605, + 604, 603, 602, 601, 600, 599, 0, 0, 548, 449, + 324, 285, 320, 321, 328, 653, 650, 454, 654, 0, + 293, 528, 371, 0, 415, 344, 593, 594, 0, 645, + 241, 242, 243, 244, 245, 246, 247, 248, 286, 249, + 250, 251, 252, 253, 254, 255, 258, 259, 260, 261, + 262, 263, 264, 265, 596, 256, 257, 266, 267, 268, + 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, + 279, 0, 0, 0, 287, 288, 289, 290, 0, 0, + 281, 282, 283, 284, 0, 0, 0, 479, 480, 481, + 503, 0, 465, 527, 651, 0, 0, 0, 0, 0, + 0, 0, 577, 589, 623, 0, 633, 634, 636, 638, + 637, 640, 439, 440, 0, 642, 643, 644, 641, 375, + 426, 445, 433, 0, 657, 518, 519, 658, 629, 402, + 0, 0, 533, 566, 555, 639, 521, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 337, 0, 0, + 370, 570, 552, 562, 553, 538, 539, 540, 547, 349, + 541, 542, 543, 513, 544, 514, 545, 546, 0, 569, + 520, 435, 386, 587, 586, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 3818, 0, 228, 0, 0, 0, 0, + 0, 0, 310, 229, 515, 635, 517, 516, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 313, 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, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 300, + 442, 461, 311, 430, 474, 316, 438, 453, 306, 401, + 427, 0, 0, 302, 459, 437, 383, 360, 361, 301, + 0, 421, 335, 351, 332, 399, 0, 458, 486, 331, + 477, 0, 469, 304, 0, 468, 398, 455, 460, 384, + 377, 0, 303, 457, 382, 376, 364, 341, 502, 365, + 366, 355, 410, 374, 411, 356, 388, 387, 389, 0, + 0, 0, 0, 0, 497, 498, 0, 0, 646, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 628, 0, 0, 632, 0, 471, 0, 0, 0, 0, + 0, 0, 441, 0, 0, 367, 0, 0, 0, 487, + 0, 424, 404, 660, 0, 0, 422, 372, 456, 412, + 462, 443, 470, 418, 413, 294, 444, 334, 385, 307, + 309, 329, 336, 338, 342, 343, 394, 395, 407, 429, + 446, 447, 448, 333, 317, 423, 318, 353, 319, 295, + 325, 323, 326, 431, 327, 297, 408, 452, 0, 348, + 419, 380, 298, 379, 409, 451, 450, 308, 478, 484, + 485, 574, 0, 490, 661, 662, 663, 499, 0, 414, + 504, 505, 506, 508, 509, 510, 511, 575, 592, 559, + 529, 492, 583, 526, 530, 531, 358, 595, 0, 0, + 0, 483, 368, 369, 0, 340, 339, 381, 417, 299, + 346, 291, 292, 656, 330, 400, 597, 630, 631, 522, + 0, 584, 523, 532, 322, 556, 568, 567, 396, 482, + 0, 579, 582, 512, 655, 0, 576, 591, 659, 590, + 652, 406, 0, 428, 588, 535, 0, 580, 554, 0, + 581, 550, 585, 0, 524, 0, 436, 464, 476, 493, + 496, 525, 610, 611, 612, 296, 495, 614, 615, 616, + 617, 618, 619, 620, 613, 467, 557, 534, 560, 475, + 537, 536, 0, 0, 571, 491, 572, 573, 390, 391, + 392, 393, 350, 598, 315, 494, 416, 0, 558, 0, + 0, 0, 0, 0, 0, 0, 0, 563, 564, 561, + 664, 0, 621, 622, 0, 0, 488, 489, 345, 352, + 507, 354, 314, 405, 347, 473, 362, 0, 500, 565, + 501, 624, 627, 625, 626, 397, 357, 359, 432, 363, + 373, 420, 472, 403, 425, 312, 463, 434, 378, 551, + 578, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 280, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 605, 604, 603, - 602, 601, 600, 599, 598, 0, 0, 547, 448, 323, - 285, 319, 320, 327, 652, 649, 453, 653, 0, 293, - 527, 370, 0, 414, 343, 592, 593, 0, 644, 241, + 0, 0, 0, 0, 0, 0, 0, 606, 605, 604, + 603, 602, 601, 600, 599, 0, 0, 548, 449, 324, + 285, 320, 321, 328, 653, 650, 454, 654, 0, 293, + 528, 371, 0, 415, 344, 593, 594, 0, 645, 241, 242, 243, 244, 245, 246, 247, 248, 286, 249, 250, 251, 252, 253, 254, 255, 258, 259, 260, 261, 262, - 263, 264, 265, 595, 256, 257, 266, 267, 268, 269, + 263, 264, 265, 596, 256, 257, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 0, 0, 0, 287, 288, 289, 290, 0, 0, 281, - 282, 283, 284, 0, 0, 0, 478, 479, 480, 502, - 0, 464, 526, 650, 0, 0, 0, 0, 0, 0, - 0, 576, 588, 622, 0, 632, 633, 635, 637, 636, - 639, 438, 439, 0, 641, 642, 643, 640, 374, 425, - 444, 432, 0, 656, 517, 518, 657, 628, 401, 0, - 0, 532, 565, 554, 638, 520, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 336, 0, 0, 369, - 569, 551, 561, 552, 537, 538, 539, 546, 348, 540, - 541, 542, 512, 543, 513, 544, 545, 0, 568, 519, - 434, 385, 586, 585, 0, 0, 0, 0, 0, 0, + 282, 283, 284, 0, 0, 0, 479, 480, 481, 503, + 0, 465, 527, 651, 0, 0, 0, 0, 0, 0, + 0, 577, 589, 623, 0, 633, 634, 636, 638, 637, + 640, 439, 440, 0, 642, 643, 644, 641, 375, 426, + 445, 433, 0, 657, 518, 519, 658, 629, 402, 0, + 0, 533, 566, 555, 639, 521, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 337, 0, 0, 370, + 570, 552, 562, 553, 538, 539, 540, 547, 349, 541, + 542, 543, 513, 544, 514, 545, 546, 0, 569, 520, + 435, 386, 587, 586, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 228, 0, 0, 0, 0, 0, - 0, 309, 229, 514, 634, 516, 515, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 312, 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, 2608, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 299, 441, - 460, 310, 429, 473, 315, 437, 452, 305, 400, 426, - 0, 0, 301, 458, 436, 382, 359, 360, 300, 0, - 420, 334, 350, 331, 398, 0, 457, 485, 330, 476, - 0, 468, 303, 0, 467, 397, 454, 459, 383, 376, - 0, 302, 456, 381, 375, 363, 340, 501, 364, 365, - 354, 409, 373, 410, 355, 387, 386, 388, 0, 0, - 0, 0, 0, 496, 497, 0, 0, 645, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 627, - 0, 0, 631, 0, 470, 0, 0, 0, 0, 0, - 0, 440, 0, 0, 366, 0, 0, 0, 486, 0, - 423, 403, 659, 0, 0, 421, 371, 455, 411, 461, - 442, 469, 417, 412, 294, 443, 333, 384, 306, 308, - 328, 335, 337, 341, 342, 393, 394, 406, 428, 445, - 446, 447, 332, 316, 422, 317, 352, 318, 295, 324, - 322, 325, 430, 326, 297, 407, 451, 0, 347, 418, - 379, 298, 378, 408, 450, 449, 307, 477, 483, 484, - 573, 0, 489, 660, 661, 662, 498, 0, 413, 503, - 504, 505, 507, 508, 509, 510, 574, 591, 558, 528, - 491, 582, 525, 529, 530, 357, 594, 0, 0, 0, - 482, 367, 368, 0, 339, 338, 380, 416, 345, 291, - 292, 655, 329, 399, 596, 629, 630, 521, 0, 583, - 522, 531, 321, 555, 567, 566, 395, 481, 0, 578, - 581, 511, 654, 0, 575, 590, 658, 589, 651, 405, - 0, 427, 587, 534, 0, 579, 553, 0, 580, 549, - 584, 0, 523, 0, 435, 463, 475, 492, 495, 524, - 609, 610, 611, 296, 494, 613, 614, 615, 616, 617, - 618, 619, 612, 466, 556, 533, 559, 474, 536, 535, - 0, 0, 570, 490, 571, 572, 389, 390, 391, 392, - 349, 597, 314, 493, 415, 0, 557, 0, 0, 0, - 0, 0, 0, 0, 0, 562, 563, 560, 663, 0, - 620, 621, 0, 0, 487, 488, 344, 351, 506, 353, - 313, 404, 346, 472, 361, 0, 499, 564, 500, 623, - 626, 624, 625, 396, 356, 358, 431, 362, 372, 419, - 471, 402, 424, 311, 462, 433, 377, 550, 577, 0, + 0, 310, 229, 515, 635, 517, 516, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 313, 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, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 300, 442, + 461, 311, 430, 474, 316, 438, 453, 306, 401, 427, + 0, 0, 302, 459, 437, 383, 360, 361, 301, 0, + 421, 335, 351, 332, 399, 0, 458, 486, 331, 477, + 0, 469, 304, 0, 468, 398, 455, 460, 384, 377, + 0, 303, 457, 382, 376, 364, 341, 502, 365, 366, + 355, 410, 374, 411, 356, 388, 387, 389, 0, 0, + 0, 0, 0, 497, 498, 0, 0, 646, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 628, + 0, 0, 632, 0, 471, 0, 0, 0, 3729, 0, + 0, 441, 0, 0, 367, 0, 0, 0, 487, 0, + 424, 404, 660, 0, 0, 422, 372, 456, 412, 462, + 443, 470, 418, 413, 294, 444, 334, 385, 307, 309, + 329, 336, 338, 342, 343, 394, 395, 407, 429, 446, + 447, 448, 333, 317, 423, 318, 353, 319, 295, 325, + 323, 326, 431, 327, 297, 408, 452, 0, 348, 419, + 380, 298, 379, 409, 451, 450, 308, 478, 484, 485, + 574, 0, 490, 661, 662, 663, 499, 0, 414, 504, + 505, 506, 508, 509, 510, 511, 575, 592, 559, 529, + 492, 583, 526, 530, 531, 358, 595, 0, 0, 0, + 483, 368, 369, 0, 340, 339, 381, 417, 299, 346, + 291, 292, 656, 330, 400, 597, 630, 631, 522, 0, + 584, 523, 532, 322, 556, 568, 567, 396, 482, 0, + 579, 582, 512, 655, 0, 576, 591, 659, 590, 652, + 406, 0, 428, 588, 535, 0, 580, 554, 0, 581, + 550, 585, 0, 524, 0, 436, 464, 476, 493, 496, + 525, 610, 611, 612, 296, 495, 614, 615, 616, 617, + 618, 619, 620, 613, 467, 557, 534, 560, 475, 537, + 536, 0, 0, 571, 491, 572, 573, 390, 391, 392, + 393, 350, 598, 315, 494, 416, 0, 558, 0, 0, + 0, 0, 0, 0, 0, 0, 563, 564, 561, 664, + 0, 621, 622, 0, 0, 488, 489, 345, 352, 507, + 354, 314, 405, 347, 473, 362, 0, 500, 565, 501, + 624, 627, 625, 626, 397, 357, 359, 432, 363, 373, + 420, 472, 403, 425, 312, 463, 434, 378, 551, 578, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 280, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 606, 605, 604, 603, + 602, 601, 600, 599, 0, 0, 548, 449, 324, 285, + 320, 321, 328, 653, 650, 454, 654, 0, 293, 528, + 371, 0, 415, 344, 593, 594, 0, 645, 241, 242, + 243, 244, 245, 246, 247, 248, 286, 249, 250, 251, + 252, 253, 254, 255, 258, 259, 260, 261, 262, 263, + 264, 265, 596, 256, 257, 266, 267, 268, 269, 270, + 271, 272, 273, 274, 275, 276, 277, 278, 279, 0, + 0, 0, 287, 288, 289, 290, 0, 0, 281, 282, + 283, 284, 0, 0, 0, 479, 480, 481, 503, 0, + 465, 527, 651, 0, 0, 0, 0, 0, 0, 0, + 577, 589, 623, 0, 633, 634, 636, 638, 637, 640, + 439, 440, 0, 642, 643, 644, 641, 375, 426, 445, + 433, 0, 657, 518, 519, 658, 629, 402, 0, 0, + 533, 566, 555, 639, 521, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 337, 0, 0, 370, 570, + 552, 562, 553, 538, 539, 540, 547, 349, 541, 542, + 543, 513, 544, 514, 545, 546, 0, 569, 520, 435, + 386, 587, 586, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 228, 0, 0, 3229, 0, 0, 0, + 310, 229, 515, 635, 517, 516, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 313, 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, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 300, 442, 461, + 311, 430, 474, 316, 438, 453, 306, 401, 427, 0, + 0, 302, 459, 437, 383, 360, 361, 301, 0, 421, + 335, 351, 332, 399, 0, 458, 486, 331, 477, 0, + 469, 304, 0, 468, 398, 455, 460, 384, 377, 0, + 303, 457, 382, 376, 364, 341, 502, 365, 366, 355, + 410, 374, 411, 356, 388, 387, 389, 0, 0, 0, + 0, 0, 497, 498, 0, 0, 646, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 628, 0, + 0, 632, 0, 471, 0, 0, 0, 0, 0, 0, + 441, 0, 0, 367, 0, 0, 0, 487, 0, 424, + 404, 660, 0, 0, 422, 372, 456, 412, 462, 443, + 470, 418, 413, 294, 444, 334, 385, 307, 309, 329, + 336, 338, 342, 343, 394, 395, 407, 429, 446, 447, + 448, 333, 317, 423, 318, 353, 319, 295, 325, 323, + 326, 431, 327, 297, 408, 452, 0, 348, 419, 380, + 298, 379, 409, 451, 450, 308, 478, 484, 485, 574, + 0, 490, 661, 662, 663, 499, 0, 414, 504, 505, + 506, 508, 509, 510, 511, 575, 592, 559, 529, 492, + 583, 526, 530, 531, 358, 595, 0, 0, 0, 483, + 368, 369, 0, 340, 339, 381, 417, 299, 346, 291, + 292, 656, 330, 400, 597, 630, 631, 522, 0, 584, + 523, 532, 322, 556, 568, 567, 396, 482, 0, 579, + 582, 512, 655, 0, 576, 591, 659, 590, 652, 406, + 0, 428, 588, 535, 0, 580, 554, 0, 581, 550, + 585, 0, 524, 0, 436, 464, 476, 493, 496, 525, + 610, 611, 612, 296, 495, 614, 615, 616, 617, 618, + 619, 620, 613, 467, 557, 534, 560, 475, 537, 536, + 0, 0, 571, 491, 572, 573, 390, 391, 392, 393, + 350, 598, 315, 494, 416, 0, 558, 0, 0, 0, + 0, 0, 0, 0, 0, 563, 564, 561, 664, 0, + 621, 622, 0, 0, 488, 489, 345, 352, 507, 354, + 314, 405, 347, 473, 362, 0, 500, 565, 501, 624, + 627, 625, 626, 397, 357, 359, 432, 363, 373, 420, + 472, 403, 425, 312, 463, 434, 378, 551, 578, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 280, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 605, 604, 603, 602, 601, - 600, 599, 598, 0, 0, 547, 448, 323, 285, 319, - 320, 327, 652, 649, 453, 653, 0, 293, 527, 370, - 0, 414, 343, 592, 593, 0, 644, 241, 242, 243, + 0, 0, 0, 0, 0, 606, 605, 604, 603, 602, + 601, 600, 599, 0, 0, 548, 449, 324, 285, 320, + 321, 328, 653, 650, 454, 654, 0, 293, 528, 371, + 0, 415, 344, 593, 594, 0, 645, 241, 242, 243, 244, 245, 246, 247, 248, 286, 249, 250, 251, 252, 253, 254, 255, 258, 259, 260, 261, 262, 263, 264, - 265, 595, 256, 257, 266, 267, 268, 269, 270, 271, + 265, 596, 256, 257, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 0, 0, 0, 287, 288, 289, 290, 0, 0, 281, 282, 283, - 284, 0, 0, 0, 478, 479, 480, 502, 0, 464, - 526, 650, 0, 0, 0, 0, 0, 0, 0, 576, - 588, 622, 0, 632, 633, 635, 637, 636, 639, 438, - 439, 0, 641, 642, 643, 640, 374, 425, 444, 432, - 0, 656, 517, 518, 657, 628, 401, 0, 0, 532, - 565, 554, 638, 520, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 336, 0, 0, 369, 569, 551, - 561, 552, 537, 538, 539, 546, 348, 540, 541, 542, - 512, 543, 513, 544, 545, 0, 568, 519, 434, 385, - 586, 585, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 228, 0, 0, 2606, 0, 0, 0, 309, - 229, 514, 634, 516, 515, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 312, 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, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 299, 441, 460, 310, - 429, 473, 315, 437, 452, 305, 400, 426, 0, 0, - 301, 458, 436, 382, 359, 360, 300, 0, 420, 334, - 350, 331, 398, 0, 457, 485, 330, 476, 0, 468, - 303, 0, 467, 397, 454, 459, 383, 376, 0, 302, - 456, 381, 375, 363, 340, 501, 364, 365, 354, 409, - 373, 410, 355, 387, 386, 388, 0, 0, 0, 0, - 0, 496, 497, 0, 0, 645, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 627, 0, 0, - 631, 0, 470, 0, 0, 0, 0, 0, 0, 440, - 0, 0, 366, 0, 0, 0, 486, 0, 423, 403, - 659, 0, 0, 421, 371, 455, 411, 461, 442, 469, - 417, 412, 294, 443, 333, 384, 306, 308, 328, 335, - 337, 341, 342, 393, 394, 406, 428, 445, 446, 447, - 332, 316, 422, 317, 352, 318, 295, 324, 322, 325, - 430, 326, 297, 407, 451, 0, 347, 418, 379, 298, - 378, 408, 450, 449, 307, 477, 483, 484, 573, 0, - 489, 660, 661, 662, 498, 0, 413, 503, 504, 505, - 507, 508, 509, 510, 574, 591, 558, 528, 491, 582, - 525, 529, 530, 357, 594, 0, 0, 0, 482, 367, - 368, 0, 339, 338, 380, 416, 345, 291, 292, 655, - 329, 399, 596, 629, 630, 521, 0, 583, 522, 531, - 321, 555, 567, 566, 395, 481, 0, 578, 581, 511, - 654, 0, 575, 590, 658, 589, 651, 405, 0, 427, - 587, 534, 0, 579, 553, 0, 580, 549, 584, 0, - 523, 0, 435, 463, 475, 492, 495, 524, 609, 610, - 611, 296, 494, 613, 614, 615, 616, 617, 618, 619, - 612, 466, 556, 533, 559, 474, 536, 535, 0, 0, - 570, 490, 571, 572, 389, 390, 391, 392, 349, 597, - 314, 493, 415, 0, 557, 0, 0, 0, 0, 0, - 0, 0, 0, 562, 563, 560, 663, 0, 620, 621, - 0, 0, 487, 488, 344, 351, 506, 353, 313, 404, - 346, 472, 361, 0, 499, 564, 500, 623, 626, 624, - 625, 396, 356, 358, 431, 362, 372, 419, 471, 402, - 424, 311, 462, 433, 377, 550, 577, 0, 0, 0, + 284, 0, 0, 0, 479, 480, 481, 503, 0, 465, + 527, 651, 0, 0, 0, 0, 0, 0, 0, 577, + 589, 623, 0, 633, 634, 636, 638, 637, 640, 439, + 440, 0, 642, 643, 644, 641, 375, 426, 445, 433, + 0, 657, 518, 519, 658, 629, 402, 0, 0, 533, + 566, 555, 639, 521, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 337, 0, 0, 370, 570, 552, + 562, 553, 538, 539, 540, 547, 349, 541, 542, 543, + 513, 544, 514, 545, 546, 0, 569, 520, 435, 386, + 587, 586, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 228, 0, 0, 0, 0, 0, 0, 310, + 229, 515, 635, 517, 516, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 313, 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, + 3247, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 300, 442, 461, 311, + 430, 474, 316, 438, 453, 306, 401, 427, 0, 0, + 302, 459, 437, 383, 360, 361, 301, 0, 421, 335, + 351, 332, 399, 0, 458, 486, 331, 477, 0, 469, + 304, 0, 468, 398, 455, 460, 384, 377, 0, 303, + 457, 382, 376, 364, 341, 502, 365, 366, 355, 410, + 374, 411, 356, 388, 387, 389, 0, 0, 0, 0, + 0, 497, 498, 0, 0, 646, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 628, 0, 0, + 632, 0, 471, 0, 0, 0, 0, 0, 0, 441, + 0, 0, 367, 0, 0, 0, 487, 0, 424, 404, + 660, 0, 0, 422, 372, 456, 412, 462, 443, 470, + 418, 413, 294, 444, 334, 385, 307, 309, 329, 336, + 338, 342, 343, 394, 395, 407, 429, 446, 447, 448, + 333, 317, 423, 318, 353, 319, 295, 325, 323, 326, + 431, 327, 297, 408, 452, 0, 348, 419, 380, 298, + 379, 409, 451, 450, 308, 478, 484, 485, 574, 0, + 490, 661, 662, 663, 499, 0, 414, 504, 505, 506, + 508, 509, 510, 511, 575, 592, 559, 529, 492, 583, + 526, 530, 531, 358, 595, 0, 0, 0, 483, 368, + 369, 0, 340, 339, 381, 417, 299, 346, 291, 292, + 656, 330, 400, 597, 630, 631, 522, 0, 584, 523, + 532, 322, 556, 568, 567, 396, 482, 0, 579, 582, + 512, 655, 0, 576, 591, 659, 590, 652, 406, 0, + 428, 588, 535, 0, 580, 554, 0, 581, 550, 585, + 0, 524, 0, 436, 464, 476, 493, 496, 525, 610, + 611, 612, 296, 495, 614, 615, 616, 617, 618, 619, + 620, 613, 467, 557, 534, 560, 475, 537, 536, 0, + 0, 571, 491, 572, 573, 390, 391, 392, 393, 350, + 598, 315, 494, 416, 0, 558, 0, 0, 0, 0, + 0, 0, 0, 0, 563, 564, 561, 664, 0, 621, + 622, 0, 0, 488, 489, 345, 352, 507, 354, 314, + 405, 347, 473, 362, 0, 500, 565, 501, 624, 627, + 625, 626, 397, 357, 359, 432, 363, 373, 420, 472, + 403, 425, 312, 463, 434, 378, 551, 578, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 280, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 606, 605, 604, 603, 602, 601, + 600, 599, 0, 0, 548, 449, 324, 285, 320, 321, + 328, 653, 650, 454, 654, 0, 293, 528, 371, 0, + 415, 344, 593, 594, 0, 645, 241, 242, 243, 244, + 245, 246, 247, 248, 286, 249, 250, 251, 252, 253, + 254, 255, 258, 259, 260, 261, 262, 263, 264, 265, + 596, 256, 257, 266, 267, 268, 269, 270, 271, 272, + 273, 274, 275, 276, 277, 278, 279, 0, 0, 0, + 287, 288, 289, 290, 0, 0, 281, 282, 283, 284, + 0, 0, 0, 479, 480, 481, 503, 0, 465, 527, + 651, 0, 0, 0, 0, 0, 0, 0, 577, 589, + 623, 0, 633, 634, 636, 638, 637, 640, 439, 440, + 0, 642, 643, 644, 641, 375, 426, 445, 433, 0, + 657, 518, 519, 658, 629, 402, 0, 0, 533, 566, + 555, 639, 521, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 337, 0, 0, 370, 570, 552, 562, + 553, 538, 539, 540, 547, 349, 541, 542, 543, 513, + 544, 514, 545, 546, 0, 569, 520, 435, 386, 587, + 586, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 2068, 0, + 0, 228, 0, 0, 0, 0, 0, 0, 310, 229, + 515, 635, 517, 516, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 313, 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, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 300, 442, 461, 311, 430, + 474, 316, 438, 453, 306, 401, 427, 0, 0, 302, + 459, 437, 383, 360, 361, 301, 0, 421, 335, 351, + 332, 399, 0, 458, 486, 331, 477, 0, 469, 304, + 0, 468, 398, 455, 460, 384, 377, 0, 303, 457, + 382, 376, 364, 341, 502, 365, 366, 355, 410, 374, + 411, 356, 388, 387, 389, 0, 0, 0, 0, 0, + 497, 498, 0, 0, 646, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 628, 0, 0, 632, + 0, 471, 0, 0, 0, 0, 0, 0, 441, 0, + 0, 367, 0, 0, 0, 487, 0, 424, 404, 660, + 0, 0, 422, 372, 456, 412, 462, 443, 470, 418, + 413, 294, 444, 334, 385, 307, 309, 329, 336, 338, + 342, 343, 394, 395, 407, 429, 446, 447, 448, 333, + 317, 423, 318, 353, 319, 295, 325, 323, 326, 431, + 327, 297, 408, 452, 0, 348, 419, 380, 298, 379, + 409, 451, 450, 308, 478, 484, 485, 574, 0, 490, + 661, 662, 663, 499, 0, 414, 504, 505, 506, 508, + 509, 510, 511, 575, 592, 559, 529, 492, 583, 526, + 530, 531, 358, 595, 0, 0, 0, 483, 368, 369, + 0, 340, 339, 381, 417, 299, 346, 291, 292, 656, + 330, 400, 597, 630, 631, 522, 0, 584, 523, 532, + 322, 556, 568, 567, 396, 482, 0, 579, 582, 512, + 655, 0, 576, 591, 659, 590, 652, 406, 0, 428, + 588, 535, 0, 580, 554, 0, 581, 550, 585, 0, + 524, 0, 436, 464, 476, 493, 496, 525, 610, 611, + 612, 296, 495, 614, 615, 616, 617, 618, 619, 620, + 613, 467, 557, 534, 560, 475, 537, 536, 0, 0, + 571, 491, 572, 573, 390, 391, 392, 393, 350, 598, + 315, 494, 416, 0, 558, 0, 0, 0, 0, 0, + 0, 0, 0, 563, 564, 561, 664, 0, 621, 622, + 0, 0, 488, 489, 345, 352, 507, 354, 314, 405, + 347, 473, 362, 0, 500, 565, 501, 624, 627, 625, + 626, 397, 357, 359, 432, 363, 373, 420, 472, 403, + 425, 312, 463, 434, 378, 551, 578, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 280, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 605, 604, 603, 602, 601, 600, 599, - 598, 0, 0, 547, 448, 323, 285, 319, 320, 327, - 652, 649, 453, 653, 0, 293, 527, 370, 0, 414, - 343, 592, 593, 0, 644, 241, 242, 243, 244, 245, + 0, 0, 0, 606, 605, 604, 603, 602, 601, 600, + 599, 0, 0, 548, 449, 324, 285, 320, 321, 328, + 653, 650, 454, 654, 0, 293, 528, 371, 0, 415, + 344, 593, 594, 0, 645, 241, 242, 243, 244, 245, 246, 247, 248, 286, 249, 250, 251, 252, 253, 254, - 255, 258, 259, 260, 261, 262, 263, 264, 265, 595, + 255, 258, 259, 260, 261, 262, 263, 264, 265, 596, 256, 257, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 0, 0, 0, 287, 288, 289, 290, 0, 0, 281, 282, 283, 284, 0, - 0, 0, 478, 479, 480, 502, 0, 464, 526, 650, - 0, 0, 0, 0, 0, 0, 0, 576, 588, 622, - 0, 632, 633, 635, 637, 636, 639, 438, 439, 0, - 641, 642, 643, 640, 374, 425, 444, 432, 2375, 656, - 517, 518, 657, 628, 401, 0, 0, 532, 565, 554, - 638, 520, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 336, 0, 0, 369, 569, 551, 561, 552, - 537, 538, 539, 546, 348, 540, 541, 542, 512, 543, - 513, 544, 545, 0, 568, 519, 434, 385, 586, 585, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 228, 0, 0, 0, 0, 0, 0, 309, 229, 514, - 634, 516, 515, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 312, 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, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 299, 441, 460, 310, 429, 473, - 315, 437, 452, 305, 400, 426, 0, 0, 301, 458, - 436, 382, 359, 360, 300, 0, 420, 334, 350, 331, - 398, 0, 457, 485, 330, 476, 0, 468, 303, 0, - 467, 397, 454, 459, 383, 376, 0, 302, 456, 381, - 375, 363, 340, 501, 364, 365, 354, 409, 373, 410, - 355, 387, 386, 388, 0, 0, 0, 0, 0, 496, - 497, 0, 0, 645, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 627, 0, 0, 631, 0, - 470, 0, 0, 0, 0, 0, 0, 440, 0, 0, - 366, 0, 0, 0, 486, 0, 423, 403, 659, 0, - 0, 421, 371, 455, 411, 461, 442, 469, 417, 412, - 294, 443, 333, 384, 306, 308, 328, 335, 337, 341, - 342, 393, 394, 406, 428, 445, 446, 447, 332, 316, - 422, 317, 352, 318, 295, 324, 322, 325, 430, 326, - 297, 407, 451, 0, 347, 418, 379, 298, 378, 408, - 450, 449, 307, 477, 483, 484, 573, 0, 489, 660, - 661, 662, 498, 0, 413, 503, 504, 505, 507, 508, - 509, 510, 574, 591, 558, 528, 491, 582, 525, 529, - 530, 357, 594, 0, 0, 0, 482, 367, 368, 0, - 339, 338, 380, 416, 345, 291, 292, 655, 329, 399, - 596, 629, 630, 521, 0, 583, 522, 531, 321, 555, - 567, 566, 395, 481, 0, 578, 581, 511, 654, 0, - 575, 590, 658, 589, 651, 405, 0, 427, 587, 534, - 0, 579, 553, 0, 580, 549, 584, 0, 523, 0, - 435, 463, 475, 492, 495, 524, 609, 610, 611, 296, - 494, 613, 614, 615, 616, 617, 618, 619, 612, 466, - 556, 533, 559, 474, 536, 535, 0, 0, 570, 490, - 571, 572, 389, 390, 391, 392, 349, 597, 314, 493, - 415, 0, 557, 0, 0, 0, 0, 0, 0, 0, - 0, 562, 563, 560, 663, 0, 620, 621, 0, 0, - 487, 488, 344, 351, 506, 353, 313, 404, 346, 472, - 361, 0, 499, 564, 500, 623, 626, 624, 625, 396, - 356, 358, 431, 362, 372, 419, 471, 402, 424, 311, - 462, 433, 377, 550, 577, 0, 0, 0, 0, 0, + 0, 0, 479, 480, 481, 503, 0, 465, 527, 651, + 0, 0, 0, 0, 0, 0, 0, 577, 589, 623, + 0, 633, 634, 636, 638, 637, 640, 439, 440, 0, + 642, 643, 644, 641, 375, 426, 445, 433, 0, 657, + 518, 519, 658, 629, 402, 0, 0, 533, 566, 555, + 639, 521, 0, 0, 3444, 0, 0, 0, 0, 0, + 0, 0, 337, 0, 0, 370, 570, 552, 562, 553, + 538, 539, 540, 547, 349, 541, 542, 543, 513, 544, + 514, 545, 546, 0, 569, 520, 435, 386, 587, 586, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 228, 0, 0, 0, 0, 0, 0, 310, 229, 515, + 635, 517, 516, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 313, 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, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 300, 442, 461, 311, 430, 474, + 316, 438, 453, 306, 401, 427, 0, 0, 302, 459, + 437, 383, 360, 361, 301, 0, 421, 335, 351, 332, + 399, 0, 458, 486, 331, 477, 0, 469, 304, 0, + 468, 398, 455, 460, 384, 377, 0, 303, 457, 382, + 376, 364, 341, 502, 365, 366, 355, 410, 374, 411, + 356, 388, 387, 389, 0, 0, 0, 0, 0, 497, + 498, 0, 0, 646, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 628, 0, 0, 632, 0, + 471, 0, 0, 0, 0, 0, 0, 441, 0, 0, + 367, 0, 0, 0, 487, 0, 424, 404, 660, 0, + 0, 422, 372, 456, 412, 462, 443, 470, 418, 413, + 294, 444, 334, 385, 307, 309, 329, 336, 338, 342, + 343, 394, 395, 407, 429, 446, 447, 448, 333, 317, + 423, 318, 353, 319, 295, 325, 323, 326, 431, 327, + 297, 408, 452, 0, 348, 419, 380, 298, 379, 409, + 451, 450, 308, 478, 484, 485, 574, 0, 490, 661, + 662, 663, 499, 0, 414, 504, 505, 506, 508, 509, + 510, 511, 575, 592, 559, 529, 492, 583, 526, 530, + 531, 358, 595, 0, 0, 0, 483, 368, 369, 0, + 340, 339, 381, 417, 299, 346, 291, 292, 656, 330, + 400, 597, 630, 631, 522, 0, 584, 523, 532, 322, + 556, 568, 567, 396, 482, 0, 579, 582, 512, 655, + 0, 576, 591, 659, 590, 652, 406, 0, 428, 588, + 535, 0, 580, 554, 0, 581, 550, 585, 0, 524, + 0, 436, 464, 476, 493, 496, 525, 610, 611, 612, + 296, 495, 614, 615, 616, 617, 618, 619, 620, 613, + 467, 557, 534, 560, 475, 537, 536, 0, 0, 571, + 491, 572, 573, 390, 391, 392, 393, 350, 598, 315, + 494, 416, 0, 558, 0, 0, 0, 0, 0, 0, + 0, 0, 563, 564, 561, 664, 0, 621, 622, 0, + 0, 488, 489, 345, 352, 507, 354, 314, 405, 347, + 473, 362, 0, 500, 565, 501, 624, 627, 625, 626, + 397, 357, 359, 432, 363, 373, 420, 472, 403, 425, + 312, 463, 434, 378, 551, 578, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 280, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 606, 605, 604, 603, 602, 601, 600, 599, + 0, 0, 548, 449, 324, 285, 320, 321, 328, 653, + 650, 454, 654, 0, 293, 528, 371, 0, 415, 344, + 593, 594, 0, 645, 241, 242, 243, 244, 245, 246, + 247, 248, 286, 249, 250, 251, 252, 253, 254, 255, + 258, 259, 260, 261, 262, 263, 264, 265, 596, 256, + 257, 266, 267, 268, 269, 270, 271, 272, 273, 274, + 275, 276, 277, 278, 279, 0, 0, 0, 287, 288, + 289, 290, 0, 0, 281, 282, 283, 284, 0, 0, + 0, 479, 480, 481, 503, 0, 465, 527, 651, 0, + 0, 0, 0, 0, 0, 0, 577, 589, 623, 0, + 633, 634, 636, 638, 637, 640, 439, 440, 0, 642, + 643, 644, 641, 375, 426, 445, 433, 0, 657, 518, + 519, 658, 629, 402, 0, 0, 533, 566, 555, 639, + 521, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 337, 0, 0, 370, 570, 552, 562, 553, 538, + 539, 540, 547, 349, 541, 542, 543, 513, 544, 514, + 545, 546, 0, 569, 520, 435, 386, 587, 586, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 228, + 0, 0, 0, 0, 0, 0, 310, 229, 515, 635, + 517, 516, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 313, 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, 3357, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 300, 442, 461, 311, 430, 474, 316, + 438, 453, 306, 401, 427, 0, 0, 302, 459, 437, + 383, 360, 361, 301, 0, 421, 335, 351, 332, 399, + 0, 458, 486, 331, 477, 0, 469, 304, 0, 468, + 398, 455, 460, 384, 377, 0, 303, 457, 382, 376, + 364, 341, 502, 365, 366, 355, 410, 374, 411, 356, + 388, 387, 389, 0, 0, 0, 0, 0, 497, 498, + 0, 0, 646, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 628, 0, 0, 632, 0, 471, + 0, 0, 0, 0, 0, 0, 441, 0, 0, 367, + 0, 0, 0, 487, 0, 424, 404, 660, 0, 0, + 422, 372, 456, 412, 462, 443, 470, 418, 413, 294, + 444, 334, 385, 307, 309, 329, 336, 338, 342, 343, + 394, 395, 407, 429, 446, 447, 448, 333, 317, 423, + 318, 353, 319, 295, 325, 323, 326, 431, 327, 297, + 408, 452, 0, 348, 419, 380, 298, 379, 409, 451, + 450, 308, 478, 484, 485, 574, 0, 490, 661, 662, + 663, 499, 0, 414, 504, 505, 506, 508, 509, 510, + 511, 575, 592, 559, 529, 492, 583, 526, 530, 531, + 358, 595, 0, 0, 0, 483, 368, 369, 0, 340, + 339, 381, 417, 299, 346, 291, 292, 656, 330, 400, + 597, 630, 631, 522, 0, 584, 523, 532, 322, 556, + 568, 567, 396, 482, 0, 579, 582, 512, 655, 0, + 576, 591, 659, 590, 652, 406, 0, 428, 588, 535, + 0, 580, 554, 0, 581, 550, 585, 0, 524, 0, + 436, 464, 476, 493, 496, 525, 610, 611, 612, 296, + 495, 614, 615, 616, 617, 618, 619, 620, 613, 467, + 557, 534, 560, 475, 537, 536, 0, 0, 571, 491, + 572, 573, 390, 391, 392, 393, 350, 598, 315, 494, + 416, 0, 558, 0, 0, 0, 0, 0, 0, 0, + 0, 563, 564, 561, 664, 0, 621, 622, 0, 0, + 488, 489, 345, 352, 507, 354, 314, 405, 347, 473, + 362, 0, 500, 565, 501, 624, 627, 625, 626, 397, + 357, 359, 432, 363, 373, 420, 472, 403, 425, 312, + 463, 434, 378, 551, 578, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 280, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 605, 604, 603, 602, 601, 600, 599, 598, 0, - 0, 547, 448, 323, 285, 319, 320, 327, 652, 649, - 453, 653, 0, 293, 527, 370, 0, 414, 343, 592, - 593, 0, 644, 241, 242, 243, 244, 245, 246, 247, + 0, 606, 605, 604, 603, 602, 601, 600, 599, 0, + 0, 548, 449, 324, 285, 320, 321, 328, 653, 650, + 454, 654, 0, 293, 528, 371, 0, 415, 344, 593, + 594, 0, 645, 241, 242, 243, 244, 245, 246, 247, 248, 286, 249, 250, 251, 252, 253, 254, 255, 258, - 259, 260, 261, 262, 263, 264, 265, 595, 256, 257, + 259, 260, 261, 262, 263, 264, 265, 596, 256, 257, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 0, 0, 0, 287, 288, 289, 290, 0, 0, 281, 282, 283, 284, 0, 0, 0, - 478, 479, 480, 502, 0, 464, 526, 650, 0, 0, - 0, 0, 0, 0, 0, 576, 588, 622, 0, 632, - 633, 635, 637, 636, 639, 438, 439, 0, 641, 642, - 643, 640, 374, 425, 444, 432, 0, 656, 517, 518, - 657, 628, 401, 0, 0, 532, 565, 554, 638, 520, + 479, 480, 481, 503, 0, 465, 527, 651, 0, 0, + 0, 0, 0, 0, 0, 577, 589, 623, 0, 633, + 634, 636, 638, 637, 640, 439, 440, 0, 642, 643, + 644, 641, 375, 426, 445, 433, 0, 657, 518, 519, + 658, 629, 402, 0, 0, 533, 566, 555, 639, 521, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 336, 0, 0, 369, 569, 551, 561, 552, 537, 538, - 539, 546, 348, 540, 541, 542, 512, 543, 513, 544, - 545, 0, 568, 519, 434, 385, 586, 585, 0, 0, + 337, 0, 0, 370, 570, 552, 562, 553, 538, 539, + 540, 547, 349, 541, 542, 543, 513, 544, 514, 545, + 546, 0, 569, 520, 435, 386, 587, 586, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 228, 0, - 0, 0, 1918, 0, 0, 309, 229, 514, 634, 516, - 515, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 312, 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, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 299, 441, 460, 310, 429, 473, 315, 437, - 452, 305, 400, 426, 0, 0, 301, 458, 436, 382, - 359, 360, 300, 0, 420, 334, 350, 331, 398, 0, - 457, 485, 330, 476, 0, 468, 303, 0, 467, 397, - 454, 459, 383, 376, 0, 302, 456, 381, 375, 363, - 340, 501, 364, 365, 354, 409, 373, 410, 355, 387, - 386, 388, 0, 0, 0, 0, 0, 496, 497, 0, - 0, 645, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 627, 0, 0, 631, 0, 470, 0, - 0, 0, 0, 0, 0, 440, 0, 0, 366, 0, - 0, 0, 486, 0, 423, 403, 659, 0, 0, 421, - 371, 455, 411, 461, 442, 469, 417, 412, 294, 443, - 333, 384, 306, 308, 328, 335, 337, 341, 342, 393, - 394, 406, 428, 445, 446, 447, 332, 316, 422, 317, - 352, 318, 295, 324, 322, 325, 430, 326, 297, 407, - 451, 0, 347, 418, 379, 298, 378, 408, 450, 449, - 307, 477, 483, 484, 573, 0, 489, 660, 661, 662, - 498, 0, 413, 503, 504, 505, 507, 508, 509, 510, - 574, 591, 558, 528, 491, 582, 525, 529, 530, 357, - 594, 0, 0, 0, 482, 367, 368, 0, 339, 338, - 380, 416, 345, 291, 292, 655, 329, 399, 596, 629, - 630, 521, 0, 583, 522, 531, 321, 555, 567, 566, - 395, 481, 0, 578, 581, 511, 654, 0, 575, 590, - 658, 589, 651, 405, 0, 427, 587, 534, 0, 579, - 553, 0, 580, 549, 584, 0, 523, 0, 435, 463, - 475, 492, 495, 524, 609, 610, 611, 296, 494, 613, - 614, 615, 616, 617, 618, 619, 612, 466, 556, 533, - 559, 474, 536, 535, 0, 0, 570, 490, 571, 572, - 389, 390, 391, 392, 349, 597, 314, 493, 415, 0, - 557, 0, 0, 0, 0, 0, 0, 0, 0, 562, - 563, 560, 663, 0, 620, 621, 0, 0, 487, 488, - 344, 351, 506, 353, 313, 404, 346, 472, 361, 0, - 499, 564, 500, 623, 626, 624, 625, 396, 356, 358, - 431, 362, 372, 419, 471, 402, 424, 311, 462, 433, - 377, 550, 577, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 310, 229, 515, 635, 517, + 516, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 313, 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, 3086, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 300, 442, 461, 311, 430, 474, 316, 438, + 453, 306, 401, 427, 0, 0, 302, 459, 437, 383, + 360, 361, 301, 0, 421, 335, 351, 332, 399, 0, + 458, 486, 331, 477, 0, 469, 304, 0, 468, 398, + 455, 460, 384, 377, 0, 303, 457, 382, 376, 364, + 341, 502, 365, 366, 355, 410, 374, 411, 356, 388, + 387, 389, 0, 0, 0, 0, 0, 497, 498, 0, + 0, 646, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 628, 0, 0, 632, 0, 471, 0, + 0, 0, 0, 0, 0, 441, 0, 0, 367, 0, + 0, 0, 487, 0, 424, 404, 660, 0, 0, 422, + 372, 456, 412, 462, 443, 470, 418, 413, 294, 444, + 334, 385, 307, 309, 329, 336, 338, 342, 343, 394, + 395, 407, 429, 446, 447, 448, 333, 317, 423, 318, + 353, 319, 295, 325, 323, 326, 431, 327, 297, 408, + 452, 0, 348, 419, 380, 298, 379, 409, 451, 450, + 308, 478, 484, 485, 574, 0, 490, 661, 662, 663, + 499, 0, 414, 504, 505, 506, 508, 509, 510, 511, + 575, 592, 559, 529, 492, 583, 526, 530, 531, 358, + 595, 0, 0, 0, 483, 368, 369, 0, 340, 339, + 381, 417, 299, 346, 291, 292, 656, 330, 400, 597, + 630, 631, 522, 0, 584, 523, 532, 322, 556, 568, + 567, 396, 482, 0, 579, 582, 512, 655, 0, 576, + 591, 659, 590, 652, 406, 0, 428, 588, 535, 0, + 580, 554, 0, 581, 550, 585, 0, 524, 0, 436, + 464, 476, 493, 496, 525, 610, 611, 612, 296, 495, + 614, 615, 616, 617, 618, 619, 620, 613, 467, 557, + 534, 560, 475, 537, 536, 0, 0, 571, 491, 572, + 573, 390, 391, 392, 393, 350, 598, 315, 494, 416, + 0, 558, 0, 0, 0, 0, 0, 0, 0, 0, + 563, 564, 561, 664, 0, 621, 622, 0, 0, 488, + 489, 345, 352, 507, 354, 314, 405, 347, 473, 362, + 0, 500, 565, 501, 624, 627, 625, 626, 397, 357, + 359, 432, 363, 373, 420, 472, 403, 425, 312, 463, + 434, 378, 551, 578, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 280, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 606, 605, 604, 603, 602, 601, 600, 599, 0, 0, + 548, 449, 324, 285, 320, 321, 328, 653, 650, 454, + 654, 0, 293, 528, 371, 0, 415, 344, 593, 594, + 0, 645, 241, 242, 243, 244, 245, 246, 247, 248, + 286, 249, 250, 251, 252, 253, 254, 255, 258, 259, + 260, 261, 262, 263, 264, 265, 596, 256, 257, 266, + 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, + 277, 278, 279, 0, 0, 0, 287, 288, 289, 290, + 0, 0, 281, 282, 283, 284, 0, 0, 0, 479, + 480, 481, 503, 0, 465, 527, 651, 0, 0, 0, + 0, 0, 0, 0, 577, 589, 623, 0, 633, 634, + 636, 638, 637, 640, 439, 440, 0, 642, 643, 644, + 641, 375, 426, 445, 433, 0, 657, 518, 519, 658, + 629, 402, 0, 0, 533, 566, 555, 639, 521, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 337, + 0, 0, 370, 570, 552, 562, 553, 538, 539, 540, + 547, 349, 541, 542, 543, 513, 544, 514, 545, 546, + 0, 569, 520, 435, 386, 587, 586, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 228, 0, 0, + 1555, 0, 0, 0, 310, 229, 515, 635, 517, 516, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 313, + 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, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 300, 442, 461, 311, 430, 474, 316, 438, 453, + 306, 401, 427, 0, 0, 302, 459, 437, 383, 360, + 361, 301, 0, 421, 335, 351, 332, 399, 0, 458, + 486, 331, 477, 0, 469, 304, 0, 468, 398, 455, + 460, 384, 377, 0, 303, 457, 382, 376, 364, 341, + 502, 365, 366, 355, 410, 374, 411, 356, 388, 387, + 389, 0, 0, 0, 0, 0, 497, 498, 0, 0, + 646, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 628, 0, 0, 632, 0, 471, 0, 0, + 0, 0, 0, 0, 441, 0, 0, 367, 0, 0, + 0, 487, 0, 424, 404, 660, 0, 0, 422, 372, + 456, 412, 462, 443, 470, 418, 413, 294, 444, 334, + 385, 307, 309, 329, 336, 338, 342, 343, 394, 395, + 407, 429, 446, 447, 448, 333, 317, 423, 318, 353, + 319, 295, 325, 323, 326, 431, 327, 297, 408, 452, + 0, 348, 419, 380, 298, 379, 409, 451, 450, 308, + 478, 484, 485, 574, 0, 490, 661, 662, 663, 499, + 0, 414, 504, 505, 506, 508, 509, 510, 511, 575, + 592, 559, 529, 492, 583, 526, 530, 531, 358, 595, + 0, 0, 0, 483, 368, 369, 0, 340, 339, 381, + 417, 299, 346, 291, 292, 656, 330, 400, 597, 630, + 631, 522, 0, 584, 523, 532, 322, 556, 568, 567, + 396, 482, 0, 579, 582, 512, 655, 0, 576, 591, + 659, 590, 652, 406, 0, 428, 588, 535, 0, 580, + 554, 0, 581, 550, 585, 0, 524, 0, 436, 464, + 476, 493, 496, 525, 610, 611, 612, 296, 495, 614, + 615, 616, 617, 618, 619, 620, 613, 467, 557, 534, + 560, 475, 537, 536, 0, 0, 571, 491, 572, 573, + 390, 391, 392, 393, 350, 598, 315, 494, 416, 0, + 558, 0, 0, 0, 0, 0, 0, 0, 0, 563, + 564, 561, 664, 0, 621, 622, 0, 0, 488, 489, + 345, 352, 507, 354, 314, 405, 347, 473, 362, 0, + 500, 565, 501, 624, 627, 625, 626, 397, 357, 359, + 432, 363, 373, 420, 472, 403, 425, 312, 463, 434, + 378, 551, 578, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 280, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 605, - 604, 603, 602, 601, 600, 599, 598, 0, 0, 547, - 448, 323, 285, 319, 320, 327, 652, 649, 453, 653, - 0, 293, 527, 370, 0, 414, 343, 592, 593, 0, - 644, 241, 242, 243, 244, 245, 246, 247, 248, 286, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 606, + 605, 604, 603, 602, 601, 600, 599, 0, 0, 548, + 449, 324, 285, 320, 321, 328, 653, 650, 454, 654, + 0, 293, 528, 371, 0, 415, 344, 593, 594, 0, + 645, 241, 242, 243, 244, 245, 246, 247, 248, 286, 249, 250, 251, 252, 253, 254, 255, 258, 259, 260, - 261, 262, 263, 264, 265, 595, 256, 257, 266, 267, + 261, 262, 263, 264, 265, 596, 256, 257, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 0, 0, 0, 287, 288, 289, 290, 0, - 0, 281, 282, 283, 284, 0, 0, 0, 478, 479, - 480, 502, 0, 464, 526, 650, 0, 0, 0, 0, - 0, 0, 0, 576, 588, 622, 0, 632, 633, 635, - 637, 636, 639, 438, 439, 0, 641, 642, 643, 640, - 374, 425, 444, 432, 0, 656, 517, 518, 657, 628, - 401, 0, 0, 532, 565, 554, 638, 520, 0, 2049, - 0, 0, 0, 0, 0, 0, 0, 0, 336, 0, - 0, 369, 569, 551, 561, 552, 537, 538, 539, 546, - 348, 540, 541, 542, 512, 543, 513, 544, 545, 0, - 568, 519, 434, 385, 586, 585, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 228, 0, 0, 0, - 0, 0, 0, 309, 229, 514, 634, 516, 515, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 312, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 299, 441, 460, 310, 429, 473, 315, 437, 452, 305, - 400, 426, 0, 0, 301, 458, 436, 382, 359, 360, - 300, 0, 420, 334, 350, 331, 398, 0, 457, 485, - 330, 476, 0, 468, 303, 0, 467, 397, 454, 459, - 383, 376, 0, 302, 456, 381, 375, 363, 340, 501, - 364, 365, 354, 409, 373, 410, 355, 387, 386, 388, - 0, 0, 0, 0, 0, 496, 497, 0, 0, 645, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 627, 0, 0, 631, 0, 470, 0, 0, 0, - 0, 0, 0, 440, 0, 0, 366, 0, 0, 0, - 486, 0, 423, 403, 659, 0, 0, 421, 371, 455, - 411, 461, 442, 469, 417, 412, 294, 443, 333, 384, - 306, 308, 328, 335, 337, 341, 342, 393, 394, 406, - 428, 445, 446, 447, 332, 316, 422, 317, 352, 318, - 295, 324, 322, 325, 430, 326, 297, 407, 451, 0, - 347, 418, 379, 298, 378, 408, 450, 449, 307, 477, - 483, 484, 573, 0, 489, 660, 661, 662, 498, 0, - 413, 503, 504, 505, 507, 508, 509, 510, 574, 591, - 558, 528, 491, 582, 525, 529, 530, 357, 594, 0, - 0, 0, 482, 367, 368, 0, 339, 338, 380, 416, - 345, 291, 292, 655, 329, 399, 596, 629, 630, 521, - 0, 583, 522, 531, 321, 555, 567, 566, 395, 481, - 0, 578, 581, 511, 654, 0, 575, 590, 658, 589, - 651, 405, 0, 427, 587, 534, 0, 579, 553, 0, - 580, 549, 584, 0, 523, 0, 435, 463, 475, 492, - 495, 524, 609, 610, 611, 296, 494, 613, 614, 615, - 616, 617, 618, 619, 612, 466, 556, 533, 559, 474, - 536, 535, 0, 0, 570, 490, 571, 572, 389, 390, - 391, 392, 349, 597, 314, 493, 415, 0, 557, 0, - 0, 0, 0, 0, 0, 0, 0, 562, 563, 560, - 663, 0, 620, 621, 0, 0, 487, 488, 344, 351, - 506, 353, 313, 404, 346, 472, 361, 0, 499, 564, - 500, 623, 626, 624, 625, 396, 356, 358, 431, 362, - 372, 419, 471, 402, 424, 311, 462, 433, 377, 550, - 577, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 281, 282, 283, 284, 0, 0, 0, 479, 480, + 481, 503, 0, 465, 527, 651, 0, 0, 0, 0, + 0, 0, 0, 577, 589, 623, 0, 633, 634, 636, + 638, 637, 640, 439, 440, 0, 642, 643, 644, 641, + 375, 426, 445, 433, 0, 657, 518, 519, 658, 629, + 402, 0, 0, 533, 566, 555, 639, 521, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 337, 0, + 0, 370, 570, 552, 562, 553, 538, 539, 540, 547, + 349, 541, 542, 543, 513, 544, 514, 545, 546, 0, + 569, 520, 435, 386, 587, 586, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 228, 0, 0, 2530, + 0, 0, 0, 310, 229, 515, 635, 517, 516, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 313, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 300, 442, 461, 311, 430, 474, 316, 438, 453, 306, + 401, 427, 0, 0, 302, 459, 437, 383, 360, 361, + 301, 0, 421, 335, 351, 332, 399, 0, 458, 486, + 331, 477, 0, 469, 304, 0, 468, 398, 455, 460, + 384, 377, 0, 303, 457, 382, 376, 364, 341, 502, + 365, 366, 355, 410, 374, 411, 356, 388, 387, 389, + 0, 0, 0, 0, 0, 497, 498, 0, 0, 646, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 628, 0, 0, 632, 0, 471, 0, 0, 0, + 0, 0, 0, 441, 0, 0, 367, 0, 0, 0, + 487, 0, 424, 404, 660, 0, 0, 422, 372, 456, + 412, 462, 443, 470, 418, 413, 294, 444, 334, 385, + 307, 309, 329, 336, 338, 342, 343, 394, 395, 407, + 429, 446, 447, 448, 333, 317, 423, 318, 353, 319, + 295, 325, 323, 326, 431, 327, 297, 408, 452, 0, + 348, 419, 380, 298, 379, 409, 451, 450, 308, 478, + 484, 485, 574, 0, 490, 661, 662, 663, 499, 0, + 414, 504, 505, 506, 508, 509, 510, 511, 575, 592, + 559, 529, 492, 583, 526, 530, 531, 358, 595, 0, + 0, 0, 483, 368, 369, 0, 340, 339, 381, 417, + 299, 346, 291, 292, 656, 330, 400, 597, 630, 631, + 522, 0, 584, 523, 532, 322, 556, 568, 567, 396, + 482, 0, 579, 582, 512, 655, 0, 576, 591, 659, + 590, 652, 406, 0, 428, 588, 535, 0, 580, 554, + 0, 581, 550, 585, 0, 524, 0, 436, 464, 476, + 493, 496, 525, 610, 611, 612, 296, 495, 614, 615, + 616, 617, 618, 619, 620, 613, 467, 557, 534, 560, + 475, 537, 536, 0, 0, 571, 491, 572, 573, 390, + 391, 392, 393, 350, 598, 315, 494, 416, 0, 558, + 0, 0, 0, 0, 0, 0, 0, 0, 563, 564, + 561, 664, 0, 621, 622, 0, 0, 488, 489, 345, + 352, 507, 354, 314, 405, 347, 473, 362, 0, 500, + 565, 501, 624, 627, 625, 626, 397, 357, 359, 432, + 363, 373, 420, 472, 403, 425, 312, 463, 434, 378, + 551, 578, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 280, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 606, 605, + 604, 603, 602, 601, 600, 599, 0, 0, 548, 449, + 324, 285, 320, 321, 328, 653, 650, 454, 654, 0, + 293, 528, 371, 0, 415, 344, 593, 594, 0, 645, + 241, 242, 243, 244, 245, 246, 247, 248, 286, 249, + 250, 251, 252, 253, 254, 255, 258, 259, 260, 261, + 262, 263, 264, 265, 596, 256, 257, 266, 267, 268, + 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, + 279, 0, 0, 0, 287, 288, 289, 290, 0, 0, + 281, 282, 283, 284, 0, 0, 0, 479, 480, 481, + 503, 0, 465, 527, 651, 0, 0, 0, 0, 0, + 0, 0, 577, 589, 623, 0, 633, 634, 636, 638, + 637, 640, 439, 440, 0, 642, 643, 644, 641, 375, + 426, 445, 433, 0, 657, 518, 519, 658, 629, 402, + 0, 0, 533, 566, 555, 639, 521, 0, 0, 2896, + 0, 0, 0, 0, 0, 0, 0, 337, 0, 0, + 370, 570, 552, 562, 553, 538, 539, 540, 547, 349, + 541, 542, 543, 513, 544, 514, 545, 546, 0, 569, + 520, 435, 386, 587, 586, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 228, 0, 0, 0, 0, + 0, 0, 310, 229, 515, 635, 517, 516, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 313, 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, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 300, + 442, 461, 311, 430, 474, 316, 438, 453, 306, 401, + 427, 0, 0, 302, 459, 437, 383, 360, 361, 301, + 0, 421, 335, 351, 332, 399, 0, 458, 486, 331, + 477, 0, 469, 304, 0, 468, 398, 455, 460, 384, + 377, 0, 303, 457, 382, 376, 364, 341, 502, 365, + 366, 355, 410, 374, 411, 356, 388, 387, 389, 0, + 0, 0, 0, 0, 497, 498, 0, 0, 646, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 628, 0, 0, 632, 0, 471, 0, 0, 0, 0, + 0, 0, 441, 0, 0, 367, 0, 0, 0, 487, + 0, 424, 404, 660, 0, 0, 422, 372, 456, 412, + 462, 443, 470, 418, 413, 294, 444, 334, 385, 307, + 309, 329, 336, 338, 342, 343, 394, 395, 407, 429, + 446, 447, 448, 333, 317, 423, 318, 353, 319, 295, + 325, 323, 326, 431, 327, 297, 408, 452, 0, 348, + 419, 380, 298, 379, 409, 451, 450, 308, 478, 484, + 485, 574, 0, 490, 661, 662, 663, 499, 0, 414, + 504, 505, 506, 508, 509, 510, 511, 575, 592, 559, + 529, 492, 583, 526, 530, 531, 358, 595, 0, 0, + 0, 483, 368, 369, 0, 340, 339, 381, 417, 299, + 346, 291, 292, 656, 330, 400, 597, 630, 631, 522, + 0, 584, 523, 532, 322, 556, 568, 567, 396, 482, + 0, 579, 582, 512, 655, 0, 576, 591, 659, 590, + 652, 406, 0, 428, 588, 535, 0, 580, 554, 0, + 581, 550, 585, 0, 524, 0, 436, 464, 476, 493, + 496, 525, 610, 611, 612, 296, 495, 614, 615, 616, + 617, 618, 619, 620, 613, 467, 557, 534, 560, 475, + 537, 536, 0, 0, 571, 491, 572, 573, 390, 391, + 392, 393, 350, 598, 315, 494, 416, 0, 558, 0, + 0, 0, 0, 0, 0, 0, 0, 563, 564, 561, + 664, 0, 621, 622, 0, 0, 488, 489, 345, 352, + 507, 354, 314, 405, 347, 473, 362, 0, 500, 565, + 501, 624, 627, 625, 626, 397, 357, 359, 432, 363, + 373, 420, 472, 403, 425, 312, 463, 434, 378, 551, + 578, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 280, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 605, 604, 603, - 602, 601, 600, 599, 598, 0, 0, 547, 448, 323, - 285, 319, 320, 327, 652, 649, 453, 653, 0, 293, - 527, 370, 0, 414, 343, 592, 593, 0, 644, 241, + 0, 0, 0, 0, 0, 0, 0, 606, 605, 604, + 603, 602, 601, 600, 599, 0, 0, 548, 449, 324, + 285, 320, 321, 328, 653, 650, 454, 654, 0, 293, + 528, 371, 0, 415, 344, 593, 594, 0, 645, 241, 242, 243, 244, 245, 246, 247, 248, 286, 249, 250, 251, 252, 253, 254, 255, 258, 259, 260, 261, 262, - 263, 264, 265, 595, 256, 257, 266, 267, 268, 269, + 263, 264, 265, 596, 256, 257, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 0, 0, 0, 287, 288, 289, 290, 0, 0, 281, - 282, 283, 284, 0, 0, 0, 478, 479, 480, 502, - 0, 464, 526, 650, 0, 0, 0, 0, 0, 0, - 0, 576, 588, 622, 0, 632, 633, 635, 637, 636, - 639, 438, 439, 0, 641, 642, 643, 640, 374, 425, - 444, 432, 0, 656, 517, 518, 657, 628, 401, 0, - 0, 532, 565, 554, 638, 520, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 336, 0, 0, 369, - 569, 551, 561, 552, 537, 538, 539, 546, 348, 540, - 541, 542, 512, 543, 513, 544, 545, 0, 568, 519, - 434, 385, 586, 585, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 228, 0, 0, 1554, 0, 0, - 0, 309, 229, 514, 634, 516, 515, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 312, 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, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 299, 441, - 460, 310, 429, 473, 315, 437, 452, 305, 400, 426, - 0, 0, 301, 458, 436, 382, 359, 360, 300, 0, - 420, 334, 350, 331, 398, 0, 457, 485, 330, 476, - 0, 468, 303, 0, 467, 397, 454, 459, 383, 376, - 0, 302, 456, 381, 375, 363, 340, 501, 364, 365, - 354, 409, 373, 410, 355, 387, 386, 388, 0, 0, - 0, 0, 0, 496, 497, 0, 0, 645, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 627, - 0, 0, 631, 0, 470, 0, 0, 0, 0, 0, - 0, 440, 0, 0, 366, 0, 0, 0, 486, 0, - 423, 403, 659, 0, 0, 421, 371, 455, 411, 461, - 442, 469, 1954, 412, 294, 443, 333, 384, 306, 308, - 328, 335, 337, 341, 342, 393, 394, 406, 428, 445, - 446, 447, 332, 316, 422, 317, 352, 318, 295, 324, - 322, 325, 430, 326, 297, 407, 451, 0, 347, 418, - 379, 298, 378, 408, 450, 449, 307, 477, 483, 484, - 573, 0, 489, 660, 661, 662, 498, 0, 413, 503, - 504, 505, 507, 508, 509, 510, 574, 591, 558, 528, - 491, 582, 525, 529, 530, 357, 594, 0, 0, 0, - 482, 367, 368, 0, 339, 338, 380, 416, 345, 291, - 292, 655, 329, 399, 596, 629, 630, 521, 0, 583, - 522, 531, 321, 555, 567, 566, 395, 481, 0, 578, - 581, 511, 654, 0, 575, 590, 658, 589, 651, 405, - 0, 427, 587, 534, 0, 579, 553, 0, 580, 549, - 584, 0, 523, 0, 435, 463, 475, 492, 495, 524, - 609, 610, 611, 296, 494, 613, 614, 615, 616, 617, - 618, 619, 612, 466, 556, 533, 559, 474, 536, 535, - 0, 0, 570, 490, 571, 572, 389, 390, 391, 392, - 349, 597, 314, 493, 415, 0, 557, 0, 0, 0, - 0, 0, 0, 0, 0, 562, 563, 560, 663, 0, - 620, 621, 0, 0, 487, 488, 344, 351, 506, 353, - 313, 404, 346, 472, 361, 0, 499, 564, 500, 623, - 626, 624, 625, 396, 356, 358, 431, 362, 372, 419, - 471, 402, 424, 311, 462, 433, 377, 550, 577, 0, + 282, 283, 284, 0, 0, 0, 479, 480, 481, 503, + 0, 465, 527, 651, 0, 0, 0, 0, 0, 0, + 0, 577, 589, 623, 0, 633, 634, 636, 638, 637, + 640, 439, 440, 0, 642, 643, 644, 641, 375, 426, + 445, 433, 0, 657, 518, 519, 658, 629, 402, 0, + 0, 533, 566, 555, 639, 521, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 337, 0, 0, 370, + 570, 552, 562, 553, 538, 539, 540, 547, 349, 541, + 542, 543, 513, 544, 514, 545, 546, 0, 569, 520, + 435, 386, 587, 586, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 228, 0, 0, 0, 0, 0, + 0, 310, 229, 515, 635, 517, 516, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 313, 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, 2206, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 300, 442, + 461, 311, 430, 474, 316, 438, 453, 306, 401, 427, + 0, 0, 302, 459, 437, 383, 360, 361, 301, 0, + 421, 335, 351, 332, 399, 0, 458, 486, 331, 477, + 0, 469, 304, 0, 468, 398, 455, 460, 384, 377, + 0, 303, 457, 382, 376, 364, 341, 502, 365, 366, + 355, 410, 374, 411, 356, 388, 387, 389, 0, 0, + 0, 0, 0, 497, 498, 0, 0, 646, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 628, + 0, 0, 632, 0, 471, 0, 0, 0, 0, 0, + 0, 441, 0, 0, 367, 0, 0, 0, 487, 0, + 424, 404, 660, 0, 0, 422, 372, 456, 412, 462, + 443, 470, 418, 413, 294, 444, 334, 385, 307, 309, + 329, 336, 338, 342, 343, 394, 395, 407, 429, 446, + 447, 448, 333, 317, 423, 318, 353, 319, 295, 325, + 323, 326, 431, 327, 297, 408, 452, 0, 348, 419, + 380, 298, 379, 409, 451, 450, 308, 478, 484, 485, + 574, 0, 490, 661, 662, 663, 499, 0, 414, 504, + 505, 506, 508, 509, 510, 511, 575, 592, 559, 529, + 492, 583, 526, 530, 531, 358, 595, 0, 0, 0, + 483, 368, 369, 0, 340, 339, 381, 417, 299, 346, + 291, 292, 656, 330, 400, 597, 630, 631, 522, 0, + 584, 523, 532, 322, 556, 568, 567, 396, 482, 0, + 579, 582, 512, 655, 0, 576, 591, 659, 590, 652, + 406, 0, 428, 588, 535, 0, 580, 554, 0, 581, + 550, 585, 0, 524, 0, 436, 464, 476, 493, 496, + 525, 610, 611, 612, 296, 495, 614, 615, 616, 617, + 618, 619, 620, 613, 467, 557, 534, 560, 475, 537, + 536, 0, 0, 571, 491, 572, 573, 390, 391, 392, + 393, 350, 598, 315, 494, 416, 0, 558, 0, 0, + 0, 0, 0, 0, 0, 0, 563, 564, 561, 664, + 0, 621, 622, 0, 0, 488, 489, 345, 352, 507, + 354, 314, 405, 347, 473, 362, 0, 500, 565, 501, + 624, 627, 625, 626, 397, 357, 359, 432, 363, 373, + 420, 472, 403, 425, 312, 463, 434, 378, 551, 578, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 280, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 606, 605, 604, 603, + 602, 601, 600, 599, 0, 0, 548, 449, 324, 285, + 320, 321, 328, 653, 650, 454, 654, 0, 293, 528, + 371, 0, 415, 344, 593, 594, 0, 645, 241, 242, + 243, 244, 245, 246, 247, 248, 286, 249, 250, 251, + 252, 253, 254, 255, 258, 259, 260, 261, 262, 263, + 264, 265, 596, 256, 257, 266, 267, 268, 269, 270, + 271, 272, 273, 274, 275, 276, 277, 278, 279, 0, + 0, 0, 287, 288, 289, 290, 0, 0, 281, 282, + 283, 284, 0, 0, 0, 479, 480, 481, 503, 0, + 465, 527, 651, 0, 0, 0, 0, 0, 0, 0, + 577, 589, 623, 0, 633, 634, 636, 638, 637, 640, + 439, 440, 0, 642, 643, 644, 641, 375, 426, 445, + 433, 0, 657, 518, 519, 658, 629, 402, 0, 0, + 533, 566, 555, 639, 521, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 337, 0, 0, 370, 570, + 552, 562, 553, 538, 539, 540, 547, 349, 541, 542, + 543, 513, 544, 514, 545, 546, 0, 569, 520, 435, + 386, 587, 586, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 228, 0, 0, 2647, 0, 0, 0, + 310, 229, 515, 635, 517, 516, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 313, 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, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 300, 442, 461, + 311, 430, 474, 316, 438, 453, 306, 401, 427, 0, + 0, 302, 459, 437, 383, 360, 361, 301, 0, 421, + 335, 351, 332, 399, 0, 458, 486, 331, 477, 0, + 469, 304, 0, 468, 398, 455, 460, 384, 377, 0, + 303, 457, 382, 376, 364, 341, 502, 365, 366, 355, + 410, 374, 411, 356, 388, 387, 389, 0, 0, 0, + 0, 0, 497, 498, 0, 0, 646, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 628, 0, + 0, 632, 0, 471, 0, 0, 0, 0, 0, 0, + 441, 0, 0, 367, 0, 0, 0, 487, 0, 424, + 404, 660, 0, 0, 422, 372, 456, 412, 462, 443, + 470, 418, 413, 294, 444, 334, 385, 307, 309, 329, + 336, 338, 342, 343, 394, 395, 407, 429, 446, 447, + 448, 333, 317, 423, 318, 353, 319, 295, 325, 323, + 326, 431, 327, 297, 408, 452, 0, 348, 419, 380, + 298, 379, 409, 451, 450, 308, 478, 484, 485, 574, + 0, 490, 661, 662, 663, 499, 0, 414, 504, 505, + 506, 508, 509, 510, 511, 575, 592, 559, 529, 492, + 583, 526, 530, 531, 358, 595, 0, 0, 0, 483, + 368, 369, 0, 340, 339, 381, 417, 299, 346, 291, + 292, 656, 330, 400, 597, 630, 631, 522, 0, 584, + 523, 532, 322, 556, 568, 567, 396, 482, 0, 579, + 582, 512, 655, 0, 576, 591, 659, 590, 652, 406, + 0, 428, 588, 535, 0, 580, 554, 0, 581, 550, + 585, 0, 524, 0, 436, 464, 476, 493, 496, 525, + 610, 611, 612, 296, 495, 614, 615, 616, 617, 618, + 619, 620, 613, 467, 557, 534, 560, 475, 537, 536, + 0, 0, 571, 491, 572, 573, 390, 391, 392, 393, + 350, 598, 315, 494, 416, 0, 558, 0, 0, 0, + 0, 0, 0, 0, 0, 563, 564, 561, 664, 0, + 621, 622, 0, 0, 488, 489, 345, 352, 507, 354, + 314, 405, 347, 473, 362, 0, 500, 565, 501, 624, + 627, 625, 626, 397, 357, 359, 432, 363, 373, 420, + 472, 403, 425, 312, 463, 434, 378, 551, 578, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 280, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 605, 604, 603, 602, 601, - 600, 599, 598, 0, 0, 547, 448, 323, 285, 319, - 320, 327, 652, 649, 453, 653, 0, 293, 527, 370, - 0, 414, 343, 592, 593, 0, 644, 241, 242, 243, + 0, 0, 0, 0, 0, 606, 605, 604, 603, 602, + 601, 600, 599, 0, 0, 548, 449, 324, 285, 320, + 321, 328, 653, 650, 454, 654, 0, 293, 528, 371, + 0, 415, 344, 593, 594, 0, 645, 241, 242, 243, 244, 245, 246, 247, 248, 286, 249, 250, 251, 252, 253, 254, 255, 258, 259, 260, 261, 262, 263, 264, - 265, 595, 256, 257, 266, 267, 268, 269, 270, 271, + 265, 596, 256, 257, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 0, 0, 0, 287, 288, 289, 290, 0, 0, 281, 282, 283, - 284, 0, 0, 0, 478, 479, 480, 502, 0, 464, - 526, 650, 0, 0, 0, 0, 0, 0, 0, 576, - 588, 622, 0, 632, 633, 635, 637, 636, 639, 438, - 439, 0, 641, 642, 643, 640, 374, 425, 444, 432, - 0, 656, 517, 518, 657, 628, 401, 0, 0, 532, - 565, 554, 638, 520, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 336, 0, 0, 369, 569, 551, - 561, 552, 537, 538, 539, 546, 348, 540, 541, 542, - 512, 543, 513, 544, 545, 0, 568, 519, 434, 385, - 586, 585, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 228, 0, 0, 0, 0, 0, 0, 309, - 229, 514, 634, 516, 515, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 312, 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, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 299, 441, 460, 310, - 429, 473, 315, 437, 452, 305, 400, 426, 0, 0, - 301, 458, 436, 382, 359, 360, 300, 0, 420, 334, - 350, 331, 398, 0, 457, 485, 330, 476, 0, 468, - 303, 0, 467, 397, 454, 459, 383, 376, 0, 302, - 456, 381, 375, 363, 340, 501, 364, 365, 354, 409, - 373, 410, 355, 387, 386, 388, 0, 0, 0, 0, - 0, 496, 497, 0, 0, 645, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 627, 0, 0, - 631, 0, 470, 0, 0, 1583, 0, 0, 0, 440, - 0, 0, 366, 0, 0, 0, 486, 0, 423, 403, - 659, 0, 0, 421, 371, 455, 411, 461, 442, 469, - 417, 412, 294, 443, 333, 384, 306, 308, 328, 335, - 337, 341, 342, 393, 394, 406, 428, 445, 446, 447, - 332, 316, 422, 317, 352, 318, 295, 324, 322, 325, - 430, 326, 297, 407, 451, 0, 347, 418, 379, 298, - 378, 408, 450, 449, 307, 477, 483, 484, 573, 0, - 489, 660, 661, 662, 498, 0, 413, 503, 504, 505, - 507, 508, 509, 510, 574, 591, 558, 528, 491, 582, - 525, 529, 530, 357, 594, 0, 0, 0, 482, 367, - 368, 0, 339, 338, 380, 416, 345, 291, 292, 655, - 329, 399, 596, 629, 630, 521, 0, 583, 522, 531, - 321, 555, 567, 566, 395, 481, 0, 578, 581, 511, - 654, 0, 575, 590, 658, 589, 651, 405, 0, 427, - 587, 534, 0, 579, 553, 0, 580, 549, 584, 0, - 523, 0, 435, 463, 475, 492, 495, 524, 609, 610, - 611, 296, 494, 613, 614, 615, 616, 617, 618, 619, - 612, 466, 556, 533, 559, 474, 536, 535, 0, 0, - 570, 490, 571, 572, 389, 390, 391, 392, 349, 597, - 314, 493, 415, 0, 557, 0, 0, 0, 0, 0, - 0, 0, 0, 562, 563, 560, 663, 0, 620, 621, - 0, 0, 487, 488, 344, 351, 506, 353, 313, 404, - 346, 472, 361, 0, 499, 564, 500, 623, 626, 624, - 625, 396, 356, 358, 431, 362, 372, 419, 471, 402, - 424, 311, 462, 433, 377, 550, 577, 0, 0, 0, + 284, 0, 0, 0, 479, 480, 481, 503, 0, 465, + 527, 651, 0, 0, 0, 0, 0, 0, 0, 577, + 589, 623, 0, 633, 634, 636, 638, 637, 640, 439, + 440, 0, 642, 643, 644, 641, 375, 426, 445, 433, + 0, 657, 518, 519, 658, 629, 402, 0, 0, 533, + 566, 555, 639, 521, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 337, 0, 0, 370, 570, 552, + 562, 553, 538, 539, 540, 547, 349, 541, 542, 543, + 513, 544, 514, 545, 546, 0, 569, 520, 435, 386, + 587, 586, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 228, 0, 0, 0, 0, 0, 0, 310, + 229, 515, 635, 517, 516, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 313, 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, + 2609, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 300, 442, 461, 311, + 430, 474, 316, 438, 453, 306, 401, 427, 0, 0, + 302, 459, 437, 383, 360, 361, 301, 0, 421, 335, + 351, 332, 399, 0, 458, 486, 331, 477, 0, 469, + 304, 0, 468, 398, 455, 460, 384, 377, 0, 303, + 457, 382, 376, 364, 341, 502, 365, 366, 355, 410, + 374, 411, 356, 388, 387, 389, 0, 0, 0, 0, + 0, 497, 498, 0, 0, 646, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 628, 0, 0, + 632, 0, 471, 0, 0, 0, 0, 0, 0, 441, + 0, 0, 367, 0, 0, 0, 487, 0, 424, 404, + 660, 0, 0, 422, 372, 456, 412, 462, 443, 470, + 418, 413, 294, 444, 334, 385, 307, 309, 329, 336, + 338, 342, 343, 394, 395, 407, 429, 446, 447, 448, + 333, 317, 423, 318, 353, 319, 295, 325, 323, 326, + 431, 327, 297, 408, 452, 0, 348, 419, 380, 298, + 379, 409, 451, 450, 308, 478, 484, 485, 574, 0, + 490, 661, 662, 663, 499, 0, 414, 504, 505, 506, + 508, 509, 510, 511, 575, 592, 559, 529, 492, 583, + 526, 530, 531, 358, 595, 0, 0, 0, 483, 368, + 369, 0, 340, 339, 381, 417, 299, 346, 291, 292, + 656, 330, 400, 597, 630, 631, 522, 0, 584, 523, + 532, 322, 556, 568, 567, 396, 482, 0, 579, 582, + 512, 655, 0, 576, 591, 659, 590, 652, 406, 0, + 428, 588, 535, 0, 580, 554, 0, 581, 550, 585, + 0, 524, 0, 436, 464, 476, 493, 496, 525, 610, + 611, 612, 296, 495, 614, 615, 616, 617, 618, 619, + 620, 613, 467, 557, 534, 560, 475, 537, 536, 0, + 0, 571, 491, 572, 573, 390, 391, 392, 393, 350, + 598, 315, 494, 416, 0, 558, 0, 0, 0, 0, + 0, 0, 0, 0, 563, 564, 561, 664, 0, 621, + 622, 0, 0, 488, 489, 345, 352, 507, 354, 314, + 405, 347, 473, 362, 0, 500, 565, 501, 624, 627, + 625, 626, 397, 357, 359, 432, 363, 373, 420, 472, + 403, 425, 312, 463, 434, 378, 551, 578, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 280, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 606, 605, 604, 603, 602, 601, + 600, 599, 0, 0, 548, 449, 324, 285, 320, 321, + 328, 653, 650, 454, 654, 0, 293, 528, 371, 0, + 415, 344, 593, 594, 0, 645, 241, 242, 243, 244, + 245, 246, 247, 248, 286, 249, 250, 251, 252, 253, + 254, 255, 258, 259, 260, 261, 262, 263, 264, 265, + 596, 256, 257, 266, 267, 268, 269, 270, 271, 272, + 273, 274, 275, 276, 277, 278, 279, 0, 0, 0, + 287, 288, 289, 290, 0, 0, 281, 282, 283, 284, + 0, 0, 0, 479, 480, 481, 503, 0, 465, 527, + 651, 0, 0, 0, 0, 0, 0, 0, 577, 589, + 623, 0, 633, 634, 636, 638, 637, 640, 439, 440, + 0, 642, 643, 644, 641, 375, 426, 445, 433, 0, + 657, 518, 519, 658, 629, 402, 0, 0, 533, 566, + 555, 639, 521, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 337, 0, 0, 370, 570, 552, 562, + 553, 538, 539, 540, 547, 349, 541, 542, 543, 513, + 544, 514, 545, 546, 0, 569, 520, 435, 386, 587, + 586, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 228, 0, 0, 2607, 0, 0, 0, 310, 229, + 515, 635, 517, 516, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 313, 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, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 300, 442, 461, 311, 430, + 474, 316, 438, 453, 306, 401, 427, 0, 0, 302, + 459, 437, 383, 360, 361, 301, 0, 421, 335, 351, + 332, 399, 0, 458, 486, 331, 477, 0, 469, 304, + 0, 468, 398, 455, 460, 384, 377, 0, 303, 457, + 382, 376, 364, 341, 502, 365, 366, 355, 410, 374, + 411, 356, 388, 387, 389, 0, 0, 0, 0, 0, + 497, 498, 0, 0, 646, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 628, 0, 0, 632, + 0, 471, 0, 0, 0, 0, 0, 0, 441, 0, + 0, 367, 0, 0, 0, 487, 0, 424, 404, 660, + 0, 0, 422, 372, 456, 412, 462, 443, 470, 418, + 413, 294, 444, 334, 385, 307, 309, 329, 336, 338, + 342, 343, 394, 395, 407, 429, 446, 447, 448, 333, + 317, 423, 318, 353, 319, 295, 325, 323, 326, 431, + 327, 297, 408, 452, 0, 348, 419, 380, 298, 379, + 409, 451, 450, 308, 478, 484, 485, 574, 0, 490, + 661, 662, 663, 499, 0, 414, 504, 505, 506, 508, + 509, 510, 511, 575, 592, 559, 529, 492, 583, 526, + 530, 531, 358, 595, 0, 0, 0, 483, 368, 369, + 0, 340, 339, 381, 417, 299, 346, 291, 292, 656, + 330, 400, 597, 630, 631, 522, 0, 584, 523, 532, + 322, 556, 568, 567, 396, 482, 0, 579, 582, 512, + 655, 0, 576, 591, 659, 590, 652, 406, 0, 428, + 588, 535, 0, 580, 554, 0, 581, 550, 585, 0, + 524, 0, 436, 464, 476, 493, 496, 525, 610, 611, + 612, 296, 495, 614, 615, 616, 617, 618, 619, 620, + 613, 467, 557, 534, 560, 475, 537, 536, 0, 0, + 571, 491, 572, 573, 390, 391, 392, 393, 350, 598, + 315, 494, 416, 0, 558, 0, 0, 0, 0, 0, + 0, 0, 0, 563, 564, 561, 664, 0, 621, 622, + 0, 0, 488, 489, 345, 352, 507, 354, 314, 405, + 347, 473, 362, 0, 500, 565, 501, 624, 627, 625, + 626, 397, 357, 359, 432, 363, 373, 420, 472, 403, + 425, 312, 463, 434, 378, 551, 578, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 280, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 605, 604, 603, 602, 601, 600, 599, - 598, 0, 0, 547, 448, 323, 285, 319, 320, 327, - 652, 649, 453, 653, 0, 293, 527, 370, 0, 414, - 343, 592, 593, 0, 644, 241, 242, 243, 244, 245, + 0, 0, 0, 606, 605, 604, 603, 602, 601, 600, + 599, 0, 0, 548, 449, 324, 285, 320, 321, 328, + 653, 650, 454, 654, 0, 293, 528, 371, 0, 415, + 344, 593, 594, 0, 645, 241, 242, 243, 244, 245, 246, 247, 248, 286, 249, 250, 251, 252, 253, 254, - 255, 258, 259, 260, 261, 262, 263, 264, 265, 595, + 255, 258, 259, 260, 261, 262, 263, 264, 265, 596, 256, 257, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 0, 0, 0, 287, 288, 289, 290, 0, 0, 281, 282, 283, 284, 0, - 0, 0, 478, 479, 480, 502, 0, 464, 526, 650, - 0, 0, 0, 0, 0, 0, 0, 576, 588, 622, - 0, 632, 633, 635, 637, 636, 639, 438, 439, 0, - 641, 642, 643, 640, 374, 425, 444, 432, 0, 656, - 517, 518, 657, 628, 401, 0, 0, 532, 565, 554, - 638, 520, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 670, 336, 0, 0, 369, 569, 551, 561, 552, - 537, 538, 539, 546, 348, 540, 541, 542, 512, 543, - 513, 544, 545, 0, 568, 519, 434, 385, 586, 585, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 228, 0, 0, 0, 0, 0, 0, 309, 229, 514, - 634, 516, 515, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 312, 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, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 299, 441, 460, 310, 429, 473, - 315, 437, 452, 305, 400, 426, 0, 0, 301, 458, - 436, 382, 359, 360, 300, 0, 420, 334, 350, 331, - 398, 0, 457, 485, 330, 476, 0, 468, 303, 0, - 467, 397, 454, 459, 383, 376, 0, 302, 456, 381, - 375, 363, 340, 501, 364, 365, 354, 409, 373, 410, - 355, 387, 386, 388, 0, 0, 0, 0, 0, 496, - 497, 0, 0, 645, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 627, 0, 0, 631, 0, - 470, 0, 0, 0, 0, 0, 0, 440, 0, 0, - 366, 0, 0, 0, 486, 0, 423, 403, 659, 0, - 0, 421, 371, 455, 411, 461, 442, 469, 417, 412, - 294, 443, 333, 384, 306, 308, 328, 335, 337, 341, - 342, 393, 394, 406, 428, 445, 446, 447, 332, 316, - 422, 317, 352, 318, 295, 324, 322, 325, 430, 326, - 297, 407, 451, 0, 347, 418, 379, 298, 378, 408, - 450, 449, 307, 477, 483, 484, 573, 0, 489, 660, - 661, 662, 498, 0, 413, 503, 504, 505, 507, 508, - 509, 510, 574, 591, 558, 528, 491, 582, 525, 529, - 530, 357, 594, 0, 0, 0, 482, 367, 368, 0, - 339, 338, 380, 416, 345, 291, 292, 655, 329, 399, - 596, 629, 630, 521, 0, 583, 522, 531, 321, 555, - 567, 566, 395, 481, 0, 578, 581, 511, 654, 0, - 575, 590, 658, 589, 651, 405, 0, 427, 587, 534, - 0, 579, 553, 0, 580, 549, 584, 0, 523, 0, - 435, 463, 475, 492, 495, 524, 609, 610, 611, 296, - 494, 613, 614, 615, 616, 617, 618, 619, 612, 466, - 556, 533, 559, 474, 536, 535, 0, 0, 570, 490, - 571, 572, 389, 390, 391, 392, 349, 597, 314, 493, - 415, 0, 557, 0, 0, 0, 0, 0, 0, 0, - 0, 562, 563, 560, 663, 0, 620, 621, 0, 0, - 487, 488, 344, 351, 506, 353, 313, 404, 346, 472, - 361, 0, 499, 564, 500, 623, 626, 624, 625, 396, - 356, 358, 431, 362, 372, 419, 471, 402, 424, 311, - 462, 433, 377, 550, 577, 0, 0, 0, 0, 0, + 0, 0, 479, 480, 481, 503, 0, 465, 527, 651, + 0, 0, 0, 0, 0, 0, 0, 577, 589, 623, + 0, 633, 634, 636, 638, 637, 640, 439, 440, 0, + 642, 643, 644, 641, 375, 426, 445, 433, 2376, 657, + 518, 519, 658, 629, 402, 0, 0, 533, 566, 555, + 639, 521, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 337, 0, 0, 370, 570, 552, 562, 553, + 538, 539, 540, 547, 349, 541, 542, 543, 513, 544, + 514, 545, 546, 0, 569, 520, 435, 386, 587, 586, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 228, 0, 0, 0, 0, 0, 0, 310, 229, 515, + 635, 517, 516, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 313, 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, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 300, 442, 461, 311, 430, 474, + 316, 438, 453, 306, 401, 427, 0, 0, 302, 459, + 437, 383, 360, 361, 301, 0, 421, 335, 351, 332, + 399, 0, 458, 486, 331, 477, 0, 469, 304, 0, + 468, 398, 455, 460, 384, 377, 0, 303, 457, 382, + 376, 364, 341, 502, 365, 366, 355, 410, 374, 411, + 356, 388, 387, 389, 0, 0, 0, 0, 0, 497, + 498, 0, 0, 646, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 628, 0, 0, 632, 0, + 471, 0, 0, 0, 0, 0, 0, 441, 0, 0, + 367, 0, 0, 0, 487, 0, 424, 404, 660, 0, + 0, 422, 372, 456, 412, 462, 443, 470, 418, 413, + 294, 444, 334, 385, 307, 309, 329, 336, 338, 342, + 343, 394, 395, 407, 429, 446, 447, 448, 333, 317, + 423, 318, 353, 319, 295, 325, 323, 326, 431, 327, + 297, 408, 452, 0, 348, 419, 380, 298, 379, 409, + 451, 450, 308, 478, 484, 485, 574, 0, 490, 661, + 662, 663, 499, 0, 414, 504, 505, 506, 508, 509, + 510, 511, 575, 592, 559, 529, 492, 583, 526, 530, + 531, 358, 595, 0, 0, 0, 483, 368, 369, 0, + 340, 339, 381, 417, 299, 346, 291, 292, 656, 330, + 400, 597, 630, 631, 522, 0, 584, 523, 532, 322, + 556, 568, 567, 396, 482, 0, 579, 582, 512, 655, + 0, 576, 591, 659, 590, 652, 406, 0, 428, 588, + 535, 0, 580, 554, 0, 581, 550, 585, 0, 524, + 0, 436, 464, 476, 493, 496, 525, 610, 611, 612, + 296, 495, 614, 615, 616, 617, 618, 619, 620, 613, + 467, 557, 534, 560, 475, 537, 536, 0, 0, 571, + 491, 572, 573, 390, 391, 392, 393, 350, 598, 315, + 494, 416, 0, 558, 0, 0, 0, 0, 0, 0, + 0, 0, 563, 564, 561, 664, 0, 621, 622, 0, + 0, 488, 489, 345, 352, 507, 354, 314, 405, 347, + 473, 362, 0, 500, 565, 501, 624, 627, 625, 626, + 397, 357, 359, 432, 363, 373, 420, 472, 403, 425, + 312, 463, 434, 378, 551, 578, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 280, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 606, 605, 604, 603, 602, 601, 600, 599, + 0, 0, 548, 449, 324, 285, 320, 321, 328, 653, + 650, 454, 654, 0, 293, 528, 371, 0, 415, 344, + 593, 594, 0, 645, 241, 242, 243, 244, 245, 246, + 247, 248, 286, 249, 250, 251, 252, 253, 254, 255, + 258, 259, 260, 261, 262, 263, 264, 265, 596, 256, + 257, 266, 267, 268, 269, 270, 271, 272, 273, 274, + 275, 276, 277, 278, 279, 0, 0, 0, 287, 288, + 289, 290, 0, 0, 281, 282, 283, 284, 0, 0, + 0, 479, 480, 481, 503, 0, 465, 527, 651, 0, + 0, 0, 0, 0, 0, 0, 577, 589, 623, 0, + 633, 634, 636, 638, 637, 640, 439, 440, 0, 642, + 643, 644, 641, 375, 426, 445, 433, 0, 657, 518, + 519, 658, 629, 402, 0, 0, 533, 566, 555, 639, + 521, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 337, 0, 0, 370, 570, 552, 562, 553, 538, + 539, 540, 547, 349, 541, 542, 543, 513, 544, 514, + 545, 546, 0, 569, 520, 435, 386, 587, 586, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 228, + 0, 0, 0, 1919, 0, 0, 310, 229, 515, 635, + 517, 516, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 313, 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, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 300, 442, 461, 311, 430, 474, 316, + 438, 453, 306, 401, 427, 0, 0, 302, 459, 437, + 383, 360, 361, 301, 0, 421, 335, 351, 332, 399, + 0, 458, 486, 331, 477, 0, 469, 304, 0, 468, + 398, 455, 460, 384, 377, 0, 303, 457, 382, 376, + 364, 341, 502, 365, 366, 355, 410, 374, 411, 356, + 388, 387, 389, 0, 0, 0, 0, 0, 497, 498, + 0, 0, 646, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 628, 0, 0, 632, 0, 471, + 0, 0, 0, 0, 0, 0, 441, 0, 0, 367, + 0, 0, 0, 487, 0, 424, 404, 660, 0, 0, + 422, 372, 456, 412, 462, 443, 470, 418, 413, 294, + 444, 334, 385, 307, 309, 329, 336, 338, 342, 343, + 394, 395, 407, 429, 446, 447, 448, 333, 317, 423, + 318, 353, 319, 295, 325, 323, 326, 431, 327, 297, + 408, 452, 0, 348, 419, 380, 298, 379, 409, 451, + 450, 308, 478, 484, 485, 574, 0, 490, 661, 662, + 663, 499, 0, 414, 504, 505, 506, 508, 509, 510, + 511, 575, 592, 559, 529, 492, 583, 526, 530, 531, + 358, 595, 0, 0, 0, 483, 368, 369, 0, 340, + 339, 381, 417, 299, 346, 291, 292, 656, 330, 400, + 597, 630, 631, 522, 0, 584, 523, 532, 322, 556, + 568, 567, 396, 482, 0, 579, 582, 512, 655, 0, + 576, 591, 659, 590, 652, 406, 0, 428, 588, 535, + 0, 580, 554, 0, 581, 550, 585, 0, 524, 0, + 436, 464, 476, 493, 496, 525, 610, 611, 612, 296, + 495, 614, 615, 616, 617, 618, 619, 620, 613, 467, + 557, 534, 560, 475, 537, 536, 0, 0, 571, 491, + 572, 573, 390, 391, 392, 393, 350, 598, 315, 494, + 416, 0, 558, 0, 0, 0, 0, 0, 0, 0, + 0, 563, 564, 561, 664, 0, 621, 622, 0, 0, + 488, 489, 345, 352, 507, 354, 314, 405, 347, 473, + 362, 0, 500, 565, 501, 624, 627, 625, 626, 397, + 357, 359, 432, 363, 373, 420, 472, 403, 425, 312, + 463, 434, 378, 551, 578, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 280, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 605, 604, 603, 602, 601, 600, 599, 598, 0, - 0, 547, 448, 323, 285, 319, 320, 327, 652, 649, - 453, 653, 0, 293, 527, 370, 0, 414, 343, 592, - 593, 0, 644, 241, 242, 243, 244, 245, 246, 247, + 0, 606, 605, 604, 603, 602, 601, 600, 599, 0, + 0, 548, 449, 324, 285, 320, 321, 328, 653, 650, + 454, 654, 0, 293, 528, 371, 0, 415, 344, 593, + 594, 0, 645, 241, 242, 243, 244, 245, 246, 247, 248, 286, 249, 250, 251, 252, 253, 254, 255, 258, - 259, 260, 261, 262, 263, 264, 265, 595, 256, 257, + 259, 260, 261, 262, 263, 264, 265, 596, 256, 257, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 0, 0, 0, 287, 288, 289, 290, 0, 0, 281, 282, 283, 284, 0, 0, 0, - 478, 479, 480, 502, 0, 464, 526, 650, 0, 0, - 0, 0, 0, 0, 0, 576, 588, 622, 0, 632, - 633, 635, 637, 636, 639, 438, 439, 0, 641, 642, - 643, 640, 374, 425, 444, 432, 0, 656, 517, 518, - 657, 628, 401, 0, 0, 532, 565, 554, 638, 520, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 336, 0, 0, 369, 569, 551, 561, 552, 537, 538, - 539, 546, 348, 540, 541, 542, 512, 543, 513, 544, - 545, 0, 568, 519, 434, 385, 586, 585, 0, 0, + 479, 480, 481, 503, 0, 465, 527, 651, 0, 0, + 0, 0, 0, 0, 0, 577, 589, 623, 0, 633, + 634, 636, 638, 637, 640, 439, 440, 0, 642, 643, + 644, 641, 375, 426, 445, 433, 0, 657, 518, 519, + 658, 629, 402, 0, 0, 533, 566, 555, 639, 521, + 0, 2050, 0, 0, 0, 0, 0, 0, 0, 0, + 337, 0, 0, 370, 570, 552, 562, 553, 538, 539, + 540, 547, 349, 541, 542, 543, 513, 544, 514, 545, + 546, 0, 569, 520, 435, 386, 587, 586, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 228, 0, - 0, 0, 0, 0, 0, 309, 229, 514, 634, 516, - 515, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 312, 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, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 299, 441, 460, 310, 429, 473, 315, 437, - 452, 305, 400, 426, 0, 0, 301, 458, 436, 382, - 359, 360, 300, 0, 420, 334, 350, 331, 398, 0, - 457, 485, 330, 476, 0, 468, 303, 0, 467, 397, - 454, 459, 383, 376, 0, 302, 456, 381, 375, 363, - 340, 501, 364, 365, 354, 409, 373, 410, 355, 387, - 386, 388, 0, 0, 0, 0, 0, 496, 497, 0, - 0, 645, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 627, 0, 680, 631, 0, 470, 0, - 0, 0, 0, 0, 0, 440, 0, 0, 366, 0, - 0, 0, 486, 0, 423, 403, 659, 0, 0, 421, - 371, 455, 411, 461, 442, 469, 417, 412, 294, 443, - 333, 384, 306, 308, 328, 335, 337, 341, 342, 393, - 394, 406, 428, 445, 446, 447, 332, 316, 422, 317, - 352, 318, 295, 324, 322, 325, 430, 326, 297, 407, - 451, 0, 347, 418, 379, 298, 378, 408, 450, 449, - 307, 477, 483, 484, 573, 0, 489, 660, 661, 662, - 498, 0, 413, 503, 504, 505, 507, 508, 509, 510, - 574, 591, 558, 528, 491, 582, 525, 529, 530, 357, - 594, 0, 0, 0, 482, 367, 368, 0, 339, 338, - 380, 416, 345, 291, 292, 655, 329, 399, 596, 629, - 630, 521, 0, 583, 522, 531, 321, 555, 567, 566, - 395, 481, 0, 578, 581, 511, 654, 0, 575, 590, - 658, 589, 651, 405, 0, 427, 587, 534, 0, 579, - 553, 0, 580, 549, 584, 0, 523, 0, 435, 463, - 475, 492, 495, 524, 609, 610, 611, 296, 494, 613, - 614, 615, 616, 617, 618, 619, 612, 466, 556, 533, - 559, 474, 536, 535, 0, 0, 570, 490, 571, 572, - 389, 390, 391, 392, 349, 597, 314, 493, 415, 0, - 557, 0, 0, 0, 0, 0, 0, 0, 0, 562, - 563, 560, 663, 0, 620, 621, 0, 0, 487, 488, - 344, 351, 506, 353, 313, 404, 346, 472, 361, 0, - 499, 564, 500, 623, 626, 624, 625, 396, 356, 358, - 431, 362, 372, 419, 471, 402, 424, 311, 462, 433, - 377, 550, 577, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 310, 229, 515, 635, 517, + 516, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 313, 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, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 300, 442, 461, 311, 430, 474, 316, 438, + 453, 306, 401, 427, 0, 0, 302, 459, 437, 383, + 360, 361, 301, 0, 421, 335, 351, 332, 399, 0, + 458, 486, 331, 477, 0, 469, 304, 0, 468, 398, + 455, 460, 384, 377, 0, 303, 457, 382, 376, 364, + 341, 502, 365, 366, 355, 410, 374, 411, 356, 388, + 387, 389, 0, 0, 0, 0, 0, 497, 498, 0, + 0, 646, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 628, 0, 0, 632, 0, 471, 0, + 0, 0, 0, 0, 0, 441, 0, 0, 367, 0, + 0, 0, 487, 0, 424, 404, 660, 0, 0, 422, + 372, 456, 412, 462, 443, 470, 418, 413, 294, 444, + 334, 385, 307, 309, 329, 336, 338, 342, 343, 394, + 395, 407, 429, 446, 447, 448, 333, 317, 423, 318, + 353, 319, 295, 325, 323, 326, 431, 327, 297, 408, + 452, 0, 348, 419, 380, 298, 379, 409, 451, 450, + 308, 478, 484, 485, 574, 0, 490, 661, 662, 663, + 499, 0, 414, 504, 505, 506, 508, 509, 510, 511, + 575, 592, 559, 529, 492, 583, 526, 530, 531, 358, + 595, 0, 0, 0, 483, 368, 369, 0, 340, 339, + 381, 417, 299, 346, 291, 292, 656, 330, 400, 597, + 630, 631, 522, 0, 584, 523, 532, 322, 556, 568, + 567, 396, 482, 0, 579, 582, 512, 655, 0, 576, + 591, 659, 590, 652, 406, 0, 428, 588, 535, 0, + 580, 554, 0, 581, 550, 585, 0, 524, 0, 436, + 464, 476, 493, 496, 525, 610, 611, 612, 296, 495, + 614, 615, 616, 617, 618, 619, 620, 613, 467, 557, + 534, 560, 475, 537, 536, 0, 0, 571, 491, 572, + 573, 390, 391, 392, 393, 350, 598, 315, 494, 416, + 0, 558, 0, 0, 0, 0, 0, 0, 0, 0, + 563, 564, 561, 664, 0, 621, 622, 0, 0, 488, + 489, 345, 352, 507, 354, 314, 405, 347, 473, 362, + 0, 500, 565, 501, 624, 627, 625, 626, 397, 357, + 359, 432, 363, 373, 420, 472, 403, 425, 312, 463, + 434, 378, 551, 578, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 280, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 606, 605, 604, 603, 602, 601, 600, 599, 0, 0, + 548, 449, 324, 285, 320, 321, 328, 653, 650, 454, + 654, 0, 293, 528, 371, 0, 415, 344, 593, 594, + 0, 645, 241, 242, 243, 244, 245, 246, 247, 248, + 286, 249, 250, 251, 252, 253, 254, 255, 258, 259, + 260, 261, 262, 263, 264, 265, 596, 256, 257, 266, + 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, + 277, 278, 279, 0, 0, 0, 287, 288, 289, 290, + 0, 0, 281, 282, 283, 284, 0, 0, 0, 479, + 480, 481, 503, 0, 465, 527, 651, 0, 0, 0, + 0, 0, 0, 0, 577, 589, 623, 0, 633, 634, + 636, 638, 637, 640, 439, 440, 0, 642, 643, 644, + 641, 375, 426, 445, 433, 0, 657, 518, 519, 658, + 629, 402, 0, 0, 533, 566, 555, 639, 521, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 337, + 0, 0, 370, 570, 552, 562, 553, 538, 539, 540, + 547, 349, 541, 542, 543, 513, 544, 514, 545, 546, + 0, 569, 520, 435, 386, 587, 586, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 228, 0, 0, + 1555, 0, 0, 0, 310, 229, 515, 635, 517, 516, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 313, + 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, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 300, 442, 461, 311, 430, 474, 316, 438, 453, + 306, 401, 427, 0, 0, 302, 459, 437, 383, 360, + 361, 301, 0, 421, 335, 351, 332, 399, 0, 458, + 486, 331, 477, 0, 469, 304, 0, 468, 398, 455, + 460, 384, 377, 0, 303, 457, 382, 376, 364, 341, + 502, 365, 366, 355, 410, 374, 411, 356, 388, 387, + 389, 0, 0, 0, 0, 0, 497, 498, 0, 0, + 646, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 628, 0, 0, 632, 0, 471, 0, 0, + 0, 0, 0, 0, 441, 0, 0, 367, 0, 0, + 0, 487, 0, 424, 404, 660, 0, 0, 422, 372, + 456, 412, 462, 443, 470, 1955, 413, 294, 444, 334, + 385, 307, 309, 329, 336, 338, 342, 343, 394, 395, + 407, 429, 446, 447, 448, 333, 317, 423, 318, 353, + 319, 295, 325, 323, 326, 431, 327, 297, 408, 452, + 0, 348, 419, 380, 298, 379, 409, 451, 450, 308, + 478, 484, 485, 574, 0, 490, 661, 662, 663, 499, + 0, 414, 504, 505, 506, 508, 509, 510, 511, 575, + 592, 559, 529, 492, 583, 526, 530, 531, 358, 595, + 0, 0, 0, 483, 368, 369, 0, 340, 339, 381, + 417, 299, 346, 291, 292, 656, 330, 400, 597, 630, + 631, 522, 0, 584, 523, 532, 322, 556, 568, 567, + 396, 482, 0, 579, 582, 512, 655, 0, 576, 591, + 659, 590, 652, 406, 0, 428, 588, 535, 0, 580, + 554, 0, 581, 550, 585, 0, 524, 0, 436, 464, + 476, 493, 496, 525, 610, 611, 612, 296, 495, 614, + 615, 616, 617, 618, 619, 620, 613, 467, 557, 534, + 560, 475, 537, 536, 0, 0, 571, 491, 572, 573, + 390, 391, 392, 393, 350, 598, 315, 494, 416, 0, + 558, 0, 0, 0, 0, 0, 0, 0, 0, 563, + 564, 561, 664, 0, 621, 622, 0, 0, 488, 489, + 345, 352, 507, 354, 314, 405, 347, 473, 362, 0, + 500, 565, 501, 624, 627, 625, 626, 397, 357, 359, + 432, 363, 373, 420, 472, 403, 425, 312, 463, 434, + 378, 551, 578, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 280, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 605, - 604, 603, 602, 601, 600, 599, 598, 0, 0, 547, - 448, 323, 285, 319, 320, 327, 652, 649, 453, 653, - 0, 293, 527, 370, 0, 414, 343, 592, 593, 0, - 644, 241, 242, 243, 244, 245, 246, 247, 248, 286, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 606, + 605, 604, 603, 602, 601, 600, 599, 0, 0, 548, + 449, 324, 285, 320, 321, 328, 653, 650, 454, 654, + 0, 293, 528, 371, 0, 415, 344, 593, 594, 0, + 645, 241, 242, 243, 244, 245, 246, 247, 248, 286, 249, 250, 251, 252, 253, 254, 255, 258, 259, 260, - 261, 262, 263, 264, 265, 595, 256, 257, 266, 267, + 261, 262, 263, 264, 265, 596, 256, 257, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 0, 0, 0, 287, 288, 289, 290, 0, - 0, 281, 282, 283, 284, 0, 0, 0, 478, 479, - 480, 502, 0, 464, 526, 650, 0, 0, 0, 0, - 0, 0, 0, 576, 588, 622, 0, 632, 633, 635, - 637, 636, 639, 438, 439, 0, 641, 642, 643, 640, - 374, 425, 444, 432, 0, 656, 517, 518, 657, 628, - 401, 0, 0, 532, 565, 554, 638, 520, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 336, 0, - 0, 369, 569, 551, 561, 552, 537, 538, 539, 546, - 348, 540, 541, 542, 512, 543, 513, 544, 545, 0, - 568, 519, 434, 385, 586, 585, 0, 0, 0, 0, + 0, 281, 282, 283, 284, 0, 0, 0, 479, 480, + 481, 503, 0, 465, 527, 651, 0, 0, 0, 0, + 0, 0, 0, 577, 589, 623, 0, 633, 634, 636, + 638, 637, 640, 439, 440, 0, 642, 643, 644, 641, + 375, 426, 445, 433, 0, 657, 518, 519, 658, 629, + 402, 0, 0, 533, 566, 555, 639, 521, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 337, 0, + 0, 370, 570, 552, 562, 553, 538, 539, 540, 547, + 349, 541, 542, 543, 513, 544, 514, 545, 546, 0, + 569, 520, 435, 386, 587, 586, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 228, 0, 0, 0, - 0, 0, 0, 309, 229, 514, 634, 516, 515, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 312, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 299, 441, 460, 310, 429, 473, 315, 437, 452, 305, - 400, 426, 0, 0, 301, 458, 436, 382, 359, 360, - 300, 0, 420, 334, 350, 331, 398, 0, 457, 485, - 330, 476, 0, 468, 303, 0, 467, 397, 454, 459, - 383, 376, 0, 302, 456, 381, 375, 363, 340, 501, - 364, 365, 354, 409, 373, 410, 355, 387, 386, 388, - 0, 0, 0, 0, 0, 496, 497, 0, 0, 645, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 627, 0, 0, 631, 0, 470, 0, 0, 0, - 0, 0, 0, 440, 0, 0, 366, 0, 0, 0, - 486, 0, 423, 403, 659, 0, 0, 421, 371, 455, - 411, 461, 442, 469, 417, 412, 294, 443, 333, 384, - 306, 308, 328, 335, 337, 341, 342, 393, 394, 406, - 428, 445, 446, 447, 332, 316, 422, 317, 352, 318, - 295, 324, 322, 325, 430, 326, 297, 407, 451, 0, - 347, 418, 379, 298, 378, 408, 450, 449, 307, 477, - 483, 484, 573, 0, 489, 660, 661, 662, 498, 0, - 413, 503, 504, 505, 507, 508, 509, 510, 574, 591, - 558, 528, 491, 582, 525, 529, 530, 357, 594, 0, - 0, 0, 482, 367, 368, 0, 339, 338, 380, 416, - 345, 291, 292, 655, 329, 399, 596, 629, 630, 521, - 0, 583, 522, 531, 321, 555, 567, 566, 395, 481, - 0, 578, 581, 511, 654, 0, 575, 590, 658, 589, - 651, 405, 0, 427, 587, 534, 0, 579, 553, 0, - 580, 549, 584, 0, 523, 0, 435, 463, 475, 492, - 495, 524, 609, 610, 611, 296, 494, 613, 614, 615, - 616, 617, 618, 619, 612, 466, 556, 533, 559, 474, - 536, 535, 0, 0, 570, 490, 571, 572, 389, 390, - 391, 392, 349, 597, 314, 493, 415, 0, 557, 0, - 0, 0, 0, 0, 0, 0, 0, 562, 563, 560, - 663, 0, 620, 621, 0, 0, 487, 488, 344, 351, - 506, 353, 313, 404, 346, 472, 361, 0, 499, 564, - 500, 623, 626, 624, 625, 396, 356, 358, 431, 362, - 372, 419, 471, 402, 424, 311, 462, 433, 377, 550, - 577, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 310, 229, 515, 635, 517, 516, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 313, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 300, 442, 461, 311, 430, 474, 316, 438, 453, 306, + 401, 427, 0, 0, 302, 459, 437, 383, 360, 361, + 301, 0, 421, 335, 351, 332, 399, 0, 458, 486, + 331, 477, 0, 469, 304, 0, 468, 398, 455, 460, + 384, 377, 0, 303, 457, 382, 376, 364, 341, 502, + 365, 366, 355, 410, 374, 411, 356, 388, 387, 389, + 0, 0, 0, 0, 0, 497, 498, 0, 0, 646, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 628, 0, 0, 632, 0, 471, 0, 0, 1584, + 0, 0, 0, 441, 0, 0, 367, 0, 0, 0, + 487, 0, 424, 404, 660, 0, 0, 422, 372, 456, + 412, 462, 443, 470, 418, 413, 294, 444, 334, 385, + 307, 309, 329, 336, 338, 342, 343, 394, 395, 407, + 429, 446, 447, 448, 333, 317, 423, 318, 353, 319, + 295, 325, 323, 326, 431, 327, 297, 408, 452, 0, + 348, 419, 380, 298, 379, 409, 451, 450, 308, 478, + 484, 485, 574, 0, 490, 661, 662, 663, 499, 0, + 414, 504, 505, 506, 508, 509, 510, 511, 575, 592, + 559, 529, 492, 583, 526, 530, 531, 358, 595, 0, + 0, 0, 483, 368, 369, 0, 340, 339, 381, 417, + 299, 346, 291, 292, 656, 330, 400, 597, 630, 631, + 522, 0, 584, 523, 532, 322, 556, 568, 567, 396, + 482, 0, 579, 582, 512, 655, 0, 576, 591, 659, + 590, 652, 406, 0, 428, 588, 535, 0, 580, 554, + 0, 581, 550, 585, 0, 524, 0, 436, 464, 476, + 493, 496, 525, 610, 611, 612, 296, 495, 614, 615, + 616, 617, 618, 619, 620, 613, 467, 557, 534, 560, + 475, 537, 536, 0, 0, 571, 491, 572, 573, 390, + 391, 392, 393, 350, 598, 315, 494, 416, 0, 558, + 0, 0, 0, 0, 0, 0, 0, 0, 563, 564, + 561, 664, 0, 621, 622, 0, 0, 488, 489, 345, + 352, 507, 354, 314, 405, 347, 473, 362, 0, 500, + 565, 501, 624, 627, 625, 626, 397, 357, 359, 432, + 363, 373, 420, 472, 403, 425, 312, 463, 434, 378, + 551, 578, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 280, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 606, 605, + 604, 603, 602, 601, 600, 599, 0, 0, 548, 449, + 324, 285, 320, 321, 328, 653, 650, 454, 654, 0, + 293, 528, 371, 0, 415, 344, 593, 594, 0, 645, + 241, 242, 243, 244, 245, 246, 247, 248, 286, 249, + 250, 251, 252, 253, 254, 255, 258, 259, 260, 261, + 262, 263, 264, 265, 596, 256, 257, 266, 267, 268, + 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, + 279, 0, 0, 0, 287, 288, 289, 290, 0, 0, + 281, 282, 283, 284, 0, 0, 0, 479, 480, 481, + 503, 0, 465, 527, 651, 0, 0, 0, 0, 0, + 0, 0, 577, 589, 623, 0, 633, 634, 636, 638, + 637, 640, 439, 440, 0, 642, 643, 644, 641, 375, + 426, 445, 433, 0, 657, 518, 519, 658, 629, 402, + 0, 0, 533, 566, 555, 639, 521, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 671, 337, 0, 0, + 370, 570, 552, 562, 553, 538, 539, 540, 547, 349, + 541, 542, 543, 513, 544, 514, 545, 546, 0, 569, + 520, 435, 386, 587, 586, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 228, 0, 0, 0, 0, + 0, 0, 310, 229, 515, 635, 517, 516, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 313, 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, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 300, + 442, 461, 311, 430, 474, 316, 438, 453, 306, 401, + 427, 0, 0, 302, 459, 437, 383, 360, 361, 301, + 0, 421, 335, 351, 332, 399, 0, 458, 486, 331, + 477, 0, 469, 304, 0, 468, 398, 455, 460, 384, + 377, 0, 303, 457, 382, 376, 364, 341, 502, 365, + 366, 355, 410, 374, 411, 356, 388, 387, 389, 0, + 0, 0, 0, 0, 497, 498, 0, 0, 646, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 628, 0, 0, 632, 0, 471, 0, 0, 0, 0, + 0, 0, 441, 0, 0, 367, 0, 0, 0, 487, + 0, 424, 404, 660, 0, 0, 422, 372, 456, 412, + 462, 443, 470, 418, 413, 294, 444, 334, 385, 307, + 309, 329, 336, 338, 342, 343, 394, 395, 407, 429, + 446, 447, 448, 333, 317, 423, 318, 353, 319, 295, + 325, 323, 326, 431, 327, 297, 408, 452, 0, 348, + 419, 380, 298, 379, 409, 451, 450, 308, 478, 484, + 485, 574, 0, 490, 661, 662, 663, 499, 0, 414, + 504, 505, 506, 508, 509, 510, 511, 575, 592, 559, + 529, 492, 583, 526, 530, 531, 358, 595, 0, 0, + 0, 483, 368, 369, 0, 340, 339, 381, 417, 299, + 346, 291, 292, 656, 330, 400, 597, 630, 631, 522, + 0, 584, 523, 532, 322, 556, 568, 567, 396, 482, + 0, 579, 582, 512, 655, 0, 576, 591, 659, 590, + 652, 406, 0, 428, 588, 535, 0, 580, 554, 0, + 581, 550, 585, 0, 524, 0, 436, 464, 476, 493, + 496, 525, 610, 611, 612, 296, 495, 614, 615, 616, + 617, 618, 619, 620, 613, 467, 557, 534, 560, 475, + 537, 536, 0, 0, 571, 491, 572, 573, 390, 391, + 392, 393, 350, 598, 315, 494, 416, 0, 558, 0, + 0, 0, 0, 0, 0, 0, 0, 563, 564, 561, + 664, 0, 621, 622, 0, 0, 488, 489, 345, 352, + 507, 354, 314, 405, 347, 473, 362, 0, 500, 565, + 501, 624, 627, 625, 626, 397, 357, 359, 432, 363, + 373, 420, 472, 403, 425, 312, 463, 434, 378, 551, + 578, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 280, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 605, 604, 603, - 602, 601, 600, 599, 598, 979, 0, 547, 448, 323, - 285, 319, 320, 327, 652, 649, 453, 653, 0, 293, - 527, 370, 0, 414, 343, 592, 593, 0, 644, 241, + 0, 0, 0, 0, 0, 0, 0, 606, 605, 604, + 603, 602, 601, 600, 599, 0, 0, 548, 449, 324, + 285, 320, 321, 328, 653, 650, 454, 654, 0, 293, + 528, 371, 0, 415, 344, 593, 594, 0, 645, 241, 242, 243, 244, 245, 246, 247, 248, 286, 249, 250, 251, 252, 253, 254, 255, 258, 259, 260, 261, 262, - 263, 264, 265, 595, 256, 257, 266, 267, 268, 269, + 263, 264, 265, 596, 256, 257, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 0, 0, 0, 287, 288, 289, 290, 0, 0, 281, - 282, 283, 284, 0, 0, 0, 478, 479, 480, 502, - 0, 464, 526, 650, 0, 0, 0, 0, 0, 0, - 0, 576, 588, 622, 0, 632, 633, 635, 637, 636, - 639, 438, 439, 0, 641, 642, 643, 640, 374, 425, - 444, 432, 0, 656, 517, 518, 657, 628, 401, 0, - 0, 532, 565, 554, 638, 520, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 336, 0, 0, 369, - 569, 551, 561, 552, 537, 538, 539, 546, 348, 540, - 541, 542, 512, 543, 513, 544, 545, 0, 568, 519, - 434, 385, 586, 585, 0, 0, 0, 0, 0, 0, + 282, 283, 284, 0, 0, 0, 479, 480, 481, 503, + 0, 465, 527, 651, 0, 0, 0, 0, 0, 0, + 0, 577, 589, 623, 0, 633, 634, 636, 638, 637, + 640, 439, 440, 0, 642, 643, 644, 641, 375, 426, + 445, 433, 0, 657, 518, 519, 658, 629, 402, 0, + 0, 533, 566, 555, 639, 521, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 337, 0, 0, 370, + 570, 552, 562, 553, 538, 539, 540, 547, 349, 541, + 542, 543, 513, 544, 514, 545, 546, 0, 569, 520, + 435, 386, 587, 586, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 228, 0, 0, 0, 0, 0, - 0, 309, 229, 514, 634, 516, 515, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 312, 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, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 299, 441, - 460, 310, 429, 473, 315, 437, 452, 305, 400, 426, - 0, 0, 301, 458, 436, 382, 359, 360, 300, 0, - 420, 334, 350, 331, 398, 0, 457, 485, 330, 476, - 0, 468, 303, 0, 467, 397, 454, 459, 383, 376, - 0, 302, 456, 381, 375, 363, 340, 501, 364, 365, - 354, 409, 373, 410, 355, 387, 386, 388, 0, 0, - 0, 0, 0, 496, 497, 0, 0, 645, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 627, - 0, 0, 631, 0, 470, 0, 0, 0, 0, 0, - 0, 440, 0, 0, 366, 0, 0, 0, 486, 0, - 423, 403, 659, 0, 0, 421, 371, 455, 411, 461, - 442, 469, 417, 412, 294, 443, 333, 384, 306, 308, - 328, 335, 337, 341, 342, 393, 394, 406, 428, 445, - 446, 447, 332, 316, 422, 317, 352, 318, 295, 324, - 322, 325, 430, 326, 297, 407, 451, 0, 347, 418, - 379, 298, 378, 408, 450, 449, 307, 477, 483, 484, - 573, 0, 489, 660, 661, 662, 498, 0, 413, 503, - 504, 505, 507, 508, 509, 510, 574, 591, 558, 528, - 491, 582, 525, 529, 530, 357, 594, 0, 0, 0, - 482, 367, 368, 0, 339, 338, 380, 416, 345, 291, - 292, 655, 329, 399, 596, 629, 630, 521, 0, 583, - 522, 531, 321, 555, 567, 566, 395, 481, 0, 578, - 581, 511, 654, 0, 575, 590, 658, 589, 651, 405, - 0, 427, 587, 534, 0, 579, 553, 0, 580, 549, - 584, 0, 523, 0, 435, 463, 475, 492, 495, 524, - 609, 610, 611, 296, 494, 613, 614, 615, 616, 617, - 618, 619, 612, 466, 556, 533, 559, 474, 536, 535, - 0, 0, 570, 490, 571, 572, 389, 390, 391, 392, - 349, 597, 314, 493, 415, 0, 557, 0, 0, 0, - 0, 0, 0, 0, 0, 562, 563, 560, 663, 0, - 620, 621, 0, 0, 487, 488, 344, 351, 506, 353, - 313, 404, 346, 472, 361, 0, 499, 564, 500, 623, - 626, 624, 625, 396, 356, 358, 431, 362, 372, 419, - 471, 402, 424, 311, 462, 433, 377, 550, 577, 0, + 0, 310, 229, 515, 635, 517, 516, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 313, 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, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 300, 442, + 461, 311, 430, 474, 316, 438, 453, 306, 401, 427, + 0, 0, 302, 459, 437, 383, 360, 361, 301, 0, + 421, 335, 351, 332, 399, 0, 458, 486, 331, 477, + 0, 469, 304, 0, 468, 398, 455, 460, 384, 377, + 0, 303, 457, 382, 376, 364, 341, 502, 365, 366, + 355, 410, 374, 411, 356, 388, 387, 389, 0, 0, + 0, 0, 0, 497, 498, 0, 0, 646, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 628, + 0, 681, 632, 0, 471, 0, 0, 0, 0, 0, + 0, 441, 0, 0, 367, 0, 0, 0, 487, 0, + 424, 404, 660, 0, 0, 422, 372, 456, 412, 462, + 443, 470, 418, 413, 294, 444, 334, 385, 307, 309, + 329, 336, 338, 342, 343, 394, 395, 407, 429, 446, + 447, 448, 333, 317, 423, 318, 353, 319, 295, 325, + 323, 326, 431, 327, 297, 408, 452, 0, 348, 419, + 380, 298, 379, 409, 451, 450, 308, 478, 484, 485, + 574, 0, 490, 661, 662, 663, 499, 0, 414, 504, + 505, 506, 508, 509, 510, 511, 575, 592, 559, 529, + 492, 583, 526, 530, 531, 358, 595, 0, 0, 0, + 483, 368, 369, 0, 340, 339, 381, 417, 299, 346, + 291, 292, 656, 330, 400, 597, 630, 631, 522, 0, + 584, 523, 532, 322, 556, 568, 567, 396, 482, 0, + 579, 582, 512, 655, 0, 576, 591, 659, 590, 652, + 406, 0, 428, 588, 535, 0, 580, 554, 0, 581, + 550, 585, 0, 524, 0, 436, 464, 476, 493, 496, + 525, 610, 611, 612, 296, 495, 614, 615, 616, 617, + 618, 619, 620, 613, 467, 557, 534, 560, 475, 537, + 536, 0, 0, 571, 491, 572, 573, 390, 391, 392, + 393, 350, 598, 315, 494, 416, 0, 558, 0, 0, + 0, 0, 0, 0, 0, 0, 563, 564, 561, 664, + 0, 621, 622, 0, 0, 488, 489, 345, 352, 507, + 354, 314, 405, 347, 473, 362, 0, 500, 565, 501, + 624, 627, 625, 626, 397, 357, 359, 432, 363, 373, + 420, 472, 403, 425, 312, 463, 434, 378, 551, 578, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 280, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 606, 605, 604, 603, + 602, 601, 600, 599, 0, 0, 548, 449, 324, 285, + 320, 321, 328, 653, 650, 454, 654, 0, 293, 528, + 371, 0, 415, 344, 593, 594, 0, 645, 241, 242, + 243, 244, 245, 246, 247, 248, 286, 249, 250, 251, + 252, 253, 254, 255, 258, 259, 260, 261, 262, 263, + 264, 265, 596, 256, 257, 266, 267, 268, 269, 270, + 271, 272, 273, 274, 275, 276, 277, 278, 279, 0, + 0, 0, 287, 288, 289, 290, 0, 0, 281, 282, + 283, 284, 0, 0, 0, 479, 480, 481, 503, 0, + 465, 527, 651, 0, 0, 0, 0, 0, 0, 0, + 577, 589, 623, 0, 633, 634, 636, 638, 637, 640, + 439, 440, 0, 642, 643, 644, 641, 375, 426, 445, + 433, 0, 657, 518, 519, 658, 629, 402, 0, 0, + 533, 566, 555, 639, 521, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 337, 0, 0, 370, 570, + 552, 562, 553, 538, 539, 540, 547, 349, 541, 542, + 543, 513, 544, 514, 545, 546, 0, 569, 520, 435, + 386, 587, 586, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 228, 0, 0, 0, 0, 0, 0, + 310, 229, 515, 635, 517, 516, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 313, 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, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 300, 442, 461, + 311, 430, 474, 316, 438, 453, 306, 401, 427, 0, + 0, 302, 459, 437, 383, 360, 361, 301, 0, 421, + 335, 351, 332, 399, 0, 458, 486, 331, 477, 0, + 469, 304, 0, 468, 398, 455, 460, 384, 377, 0, + 303, 457, 382, 376, 364, 341, 502, 365, 366, 355, + 410, 374, 411, 356, 388, 387, 389, 0, 0, 0, + 0, 0, 497, 498, 0, 0, 646, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 628, 0, + 0, 632, 0, 471, 0, 0, 0, 0, 0, 0, + 441, 0, 0, 367, 0, 0, 0, 487, 0, 424, + 404, 660, 0, 0, 422, 372, 456, 412, 462, 443, + 470, 418, 413, 294, 444, 334, 385, 307, 309, 329, + 336, 338, 342, 343, 394, 395, 407, 429, 446, 447, + 448, 333, 317, 423, 318, 353, 319, 295, 325, 323, + 326, 431, 327, 297, 408, 452, 0, 348, 419, 380, + 298, 379, 409, 451, 450, 308, 478, 484, 485, 574, + 0, 490, 661, 662, 663, 499, 0, 414, 504, 505, + 506, 508, 509, 510, 511, 575, 592, 559, 529, 492, + 583, 526, 530, 531, 358, 595, 0, 0, 0, 483, + 368, 369, 0, 340, 339, 381, 417, 299, 346, 291, + 292, 656, 330, 400, 597, 630, 631, 522, 0, 584, + 523, 532, 322, 556, 568, 567, 396, 482, 0, 579, + 582, 512, 655, 0, 576, 591, 659, 590, 652, 406, + 0, 428, 588, 535, 0, 580, 554, 0, 581, 550, + 585, 0, 524, 0, 436, 464, 476, 493, 496, 525, + 610, 611, 612, 296, 495, 614, 615, 616, 617, 618, + 619, 620, 613, 467, 557, 534, 560, 475, 537, 536, + 0, 0, 571, 491, 572, 573, 390, 391, 392, 393, + 350, 598, 315, 494, 416, 0, 558, 0, 0, 0, + 0, 0, 0, 0, 0, 563, 564, 561, 664, 0, + 621, 622, 0, 0, 488, 489, 345, 352, 507, 354, + 314, 405, 347, 473, 362, 0, 500, 565, 501, 624, + 627, 625, 626, 397, 357, 359, 432, 363, 373, 420, + 472, 403, 425, 312, 463, 434, 378, 551, 578, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 280, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 605, 604, 603, 602, 601, - 600, 599, 598, 0, 0, 547, 448, 323, 285, 319, - 320, 327, 652, 649, 453, 653, 0, 293, 527, 370, - 0, 414, 343, 592, 593, 0, 644, 241, 242, 243, + 0, 0, 0, 0, 0, 606, 605, 604, 603, 602, + 601, 600, 599, 980, 0, 548, 449, 324, 285, 320, + 321, 328, 653, 650, 454, 654, 0, 293, 528, 371, + 0, 415, 344, 593, 594, 0, 645, 241, 242, 243, 244, 245, 246, 247, 248, 286, 249, 250, 251, 252, 253, 254, 255, 258, 259, 260, 261, 262, 263, 264, - 265, 595, 256, 257, 266, 267, 268, 269, 270, 271, + 265, 596, 256, 257, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 0, 0, 0, 287, 288, 289, 290, 0, 0, 281, 282, 283, - 284, 0, 0, 0, 478, 479, 480, 502, 0, 464, - 526, 650, 0, 0, 0, 0, 0, 0, 0, 576, - 588, 622, 0, 632, 633, 635, 637, 636, 639, 438, - 439, 0, 641, 642, 643, 640, 374, 425, 444, 432, - 0, 656, 517, 518, 657, 628, 401, 0, 0, 532, - 565, 554, 638, 520, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 336, 0, 0, 369, 569, 551, - 561, 552, 537, 538, 539, 546, 348, 540, 541, 542, - 512, 543, 513, 544, 545, 0, 568, 519, 434, 385, - 586, 585, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 228, 0, 0, 0, 0, 0, 0, 309, - 229, 514, 634, 516, 515, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 312, 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, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 299, 441, 460, 310, - 429, 473, 315, 437, 452, 305, 400, 426, 0, 0, - 301, 458, 436, 382, 359, 360, 300, 0, 420, 334, - 350, 331, 398, 0, 457, 485, 330, 476, 0, 468, - 303, 0, 467, 397, 454, 459, 383, 376, 0, 302, - 456, 381, 375, 363, 340, 501, 364, 365, 354, 409, - 373, 410, 355, 387, 386, 388, 0, 0, 0, 0, - 0, 496, 497, 0, 0, 645, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 627, 0, 0, - 631, 0, 470, 0, 0, 0, 0, 0, 0, 440, - 0, 0, 366, 0, 0, 0, 486, 0, 423, 403, - 659, 0, 0, 421, 371, 455, 411, 461, 442, 469, - 417, 412, 294, 443, 333, 384, 306, 308, 328, 335, - 337, 341, 342, 393, 394, 406, 428, 445, 446, 447, - 332, 316, 422, 317, 352, 318, 295, 324, 322, 325, - 430, 326, 297, 407, 451, 0, 347, 3174, 379, 298, - 378, 408, 450, 449, 307, 477, 483, 484, 573, 0, - 489, 660, 661, 662, 498, 0, 413, 503, 504, 505, - 507, 508, 509, 510, 574, 591, 558, 528, 491, 582, - 525, 529, 530, 357, 594, 0, 0, 0, 482, 367, - 368, 0, 339, 338, 380, 416, 345, 291, 292, 655, - 329, 399, 596, 629, 630, 521, 0, 583, 522, 531, - 321, 555, 567, 566, 395, 481, 0, 578, 581, 511, - 654, 0, 575, 590, 658, 589, 651, 405, 0, 427, - 587, 534, 0, 579, 553, 0, 580, 549, 584, 0, - 523, 0, 435, 463, 475, 492, 495, 524, 609, 610, - 611, 296, 494, 613, 614, 615, 616, 617, 618, 619, - 612, 466, 556, 533, 559, 474, 536, 535, 0, 0, - 570, 490, 571, 572, 389, 390, 391, 392, 349, 597, - 314, 493, 415, 0, 557, 0, 0, 0, 0, 0, - 0, 0, 0, 562, 563, 560, 663, 0, 620, 621, - 0, 0, 487, 488, 344, 351, 506, 353, 313, 404, - 346, 472, 361, 0, 499, 564, 500, 623, 626, 624, - 625, 396, 356, 358, 431, 362, 372, 419, 471, 402, - 424, 311, 462, 433, 377, 550, 577, 0, 0, 0, + 284, 0, 0, 0, 479, 480, 481, 503, 0, 465, + 527, 651, 0, 0, 0, 0, 0, 0, 0, 577, + 589, 623, 0, 633, 634, 636, 638, 637, 640, 439, + 440, 0, 642, 643, 644, 641, 375, 426, 445, 433, + 0, 657, 518, 519, 658, 629, 402, 0, 0, 533, + 566, 555, 639, 521, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 337, 0, 0, 370, 570, 552, + 562, 553, 538, 539, 540, 547, 349, 541, 542, 543, + 513, 544, 514, 545, 546, 0, 569, 520, 435, 386, + 587, 586, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 228, 0, 0, 0, 0, 0, 0, 310, + 229, 515, 635, 517, 516, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 313, 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, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 300, 442, 461, 311, + 430, 474, 316, 438, 453, 306, 401, 427, 0, 0, + 302, 459, 437, 383, 360, 361, 301, 0, 421, 335, + 351, 332, 399, 0, 458, 486, 331, 477, 0, 469, + 304, 0, 468, 398, 455, 460, 384, 377, 0, 303, + 457, 382, 376, 364, 341, 502, 365, 366, 355, 410, + 374, 411, 356, 388, 387, 389, 0, 0, 0, 0, + 0, 497, 498, 0, 0, 646, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 628, 0, 0, + 632, 0, 471, 0, 0, 0, 0, 0, 0, 441, + 0, 0, 367, 0, 0, 0, 487, 0, 424, 404, + 660, 0, 0, 422, 372, 456, 412, 462, 443, 470, + 418, 413, 294, 444, 334, 385, 307, 309, 329, 336, + 338, 342, 343, 394, 395, 407, 429, 446, 447, 448, + 333, 317, 423, 318, 353, 319, 295, 325, 323, 326, + 431, 327, 297, 408, 452, 0, 348, 419, 380, 298, + 379, 409, 451, 450, 308, 478, 484, 485, 574, 0, + 490, 661, 662, 663, 499, 0, 414, 504, 505, 506, + 508, 509, 510, 511, 575, 592, 559, 529, 492, 583, + 526, 530, 531, 358, 595, 0, 0, 0, 483, 368, + 369, 0, 340, 339, 381, 417, 299, 346, 291, 292, + 656, 330, 400, 597, 630, 631, 522, 0, 584, 523, + 532, 322, 556, 568, 567, 396, 482, 0, 579, 582, + 512, 655, 0, 576, 591, 659, 590, 652, 406, 0, + 428, 588, 535, 0, 580, 554, 0, 581, 550, 585, + 0, 524, 0, 436, 464, 476, 493, 496, 525, 610, + 611, 612, 296, 495, 614, 615, 616, 617, 618, 619, + 620, 613, 467, 557, 534, 560, 475, 537, 536, 0, + 0, 571, 491, 572, 573, 390, 391, 392, 393, 350, + 598, 315, 494, 416, 0, 558, 0, 0, 0, 0, + 0, 0, 0, 0, 563, 564, 561, 664, 0, 621, + 622, 0, 0, 488, 489, 345, 352, 507, 354, 314, + 405, 347, 473, 362, 0, 500, 565, 501, 624, 627, + 625, 626, 397, 357, 359, 432, 363, 373, 420, 472, + 403, 425, 312, 463, 434, 378, 551, 578, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 280, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 606, 605, 604, 603, 602, 601, + 600, 599, 0, 0, 548, 449, 324, 285, 320, 321, + 328, 653, 650, 454, 654, 0, 293, 528, 371, 0, + 415, 344, 593, 594, 0, 645, 241, 242, 243, 244, + 245, 246, 247, 248, 286, 249, 250, 251, 252, 253, + 254, 255, 258, 259, 260, 261, 262, 263, 264, 265, + 596, 256, 257, 266, 267, 268, 269, 270, 271, 272, + 273, 274, 275, 276, 277, 278, 279, 0, 0, 0, + 287, 288, 289, 290, 0, 0, 281, 282, 283, 284, + 0, 0, 0, 479, 480, 481, 503, 0, 465, 527, + 651, 0, 0, 0, 0, 0, 0, 0, 577, 589, + 623, 0, 633, 634, 636, 638, 637, 640, 439, 440, + 0, 642, 643, 644, 641, 375, 426, 445, 433, 0, + 657, 518, 519, 658, 629, 402, 0, 0, 533, 566, + 555, 639, 521, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 337, 0, 0, 370, 570, 552, 562, + 553, 538, 539, 540, 547, 349, 541, 542, 543, 513, + 544, 514, 545, 546, 0, 569, 520, 435, 386, 587, + 586, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 228, 0, 0, 0, 0, 0, 0, 310, 229, + 515, 635, 517, 516, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 313, 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, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 300, 442, 461, 311, 430, + 474, 316, 438, 453, 306, 401, 427, 0, 0, 302, + 459, 437, 383, 360, 361, 301, 0, 421, 335, 351, + 332, 399, 0, 458, 486, 331, 477, 0, 469, 304, + 0, 468, 398, 455, 460, 384, 377, 0, 303, 457, + 382, 376, 364, 341, 502, 365, 366, 355, 410, 374, + 411, 356, 388, 387, 389, 0, 0, 0, 0, 0, + 497, 498, 0, 0, 646, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 628, 0, 0, 632, + 0, 471, 0, 0, 0, 0, 0, 0, 441, 0, + 0, 367, 0, 0, 0, 487, 0, 424, 404, 660, + 0, 0, 422, 372, 456, 412, 462, 443, 470, 418, + 413, 294, 444, 334, 385, 307, 309, 329, 336, 338, + 342, 343, 394, 395, 407, 429, 446, 447, 448, 333, + 317, 423, 318, 353, 319, 295, 325, 323, 326, 431, + 327, 297, 408, 452, 0, 348, 3175, 380, 298, 379, + 409, 451, 450, 308, 478, 484, 485, 574, 0, 490, + 661, 662, 663, 499, 0, 414, 504, 505, 506, 508, + 509, 510, 511, 575, 592, 559, 529, 492, 583, 526, + 530, 531, 358, 595, 0, 0, 0, 483, 368, 369, + 0, 340, 339, 381, 417, 299, 346, 291, 292, 656, + 330, 400, 597, 630, 631, 522, 0, 584, 523, 532, + 322, 556, 568, 567, 396, 482, 0, 579, 582, 512, + 655, 0, 576, 591, 659, 590, 652, 406, 0, 428, + 588, 535, 0, 580, 554, 0, 581, 550, 585, 0, + 524, 0, 436, 464, 476, 493, 496, 525, 610, 611, + 612, 296, 495, 614, 615, 616, 617, 618, 619, 620, + 613, 467, 557, 534, 560, 475, 537, 536, 0, 0, + 571, 491, 572, 573, 390, 391, 392, 393, 350, 598, + 315, 494, 416, 0, 558, 0, 0, 0, 0, 0, + 0, 0, 0, 563, 564, 561, 664, 0, 621, 622, + 0, 0, 488, 489, 345, 352, 507, 354, 314, 405, + 347, 473, 362, 0, 500, 565, 501, 624, 627, 625, + 626, 397, 357, 359, 432, 363, 373, 420, 472, 403, + 425, 312, 463, 434, 378, 551, 578, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 280, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 605, 604, 603, 602, 601, 600, 599, - 598, 0, 0, 547, 448, 323, 285, 319, 320, 327, - 652, 649, 453, 653, 0, 293, 527, 370, 0, 414, - 343, 592, 593, 0, 644, 241, 242, 243, 244, 245, + 0, 0, 0, 606, 605, 604, 603, 602, 601, 600, + 599, 0, 0, 548, 449, 324, 285, 320, 321, 328, + 653, 650, 454, 654, 0, 293, 528, 371, 0, 415, + 344, 593, 594, 0, 645, 241, 242, 243, 244, 245, 246, 247, 248, 286, 249, 250, 251, 252, 253, 254, - 255, 258, 259, 260, 261, 262, 263, 264, 265, 595, + 255, 258, 259, 260, 261, 262, 263, 264, 265, 596, 256, 257, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 0, 0, 0, 287, 288, 289, 290, 0, 0, 281, 282, 283, 284, 0, - 0, 0, 478, 479, 480, 502, 0, 464, 526, 650, - 0, 0, 0, 0, 0, 0, 0, 576, 588, 622, - 0, 632, 633, 635, 637, 636, 639, 438, 439, 0, - 641, 642, 643, 640, 374, 425, 444, 432, 0, 656, - 517, 518, 657, 628, 401, 0, 0, 532, 565, 554, - 638, 520, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 336, 0, 0, 369, 569, 551, 561, 552, - 537, 538, 539, 546, 348, 540, 541, 542, 512, 543, - 513, 544, 545, 0, 568, 519, 434, 385, 586, 585, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 228, 0, 0, 0, 0, 0, 0, 309, 229, 514, - 634, 516, 515, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 312, 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, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 299, 441, 460, 310, 429, 473, - 315, 437, 1904, 305, 400, 426, 0, 0, 301, 458, - 436, 382, 359, 360, 300, 0, 420, 334, 350, 331, - 398, 0, 457, 485, 330, 476, 0, 468, 303, 0, - 467, 397, 454, 459, 383, 376, 0, 302, 456, 381, - 375, 363, 340, 501, 364, 365, 354, 409, 373, 410, - 355, 387, 386, 388, 0, 0, 0, 0, 0, 496, - 497, 0, 0, 645, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 627, 0, 0, 631, 0, - 470, 0, 0, 0, 0, 0, 0, 440, 0, 0, - 366, 0, 0, 0, 486, 0, 423, 403, 659, 0, - 0, 421, 371, 455, 411, 461, 442, 469, 417, 412, - 294, 443, 333, 384, 306, 308, 328, 335, 337, 341, - 342, 393, 394, 406, 428, 445, 446, 447, 332, 316, - 422, 317, 352, 318, 295, 324, 322, 325, 430, 326, - 297, 407, 451, 0, 347, 418, 379, 298, 378, 408, - 450, 449, 307, 477, 483, 484, 573, 0, 489, 660, - 661, 662, 498, 0, 413, 503, 504, 505, 507, 508, - 509, 510, 574, 591, 558, 528, 491, 582, 525, 529, - 530, 357, 594, 0, 0, 0, 482, 367, 368, 0, - 339, 338, 380, 416, 345, 291, 292, 655, 329, 399, - 596, 629, 630, 521, 0, 583, 522, 531, 321, 555, - 567, 566, 395, 481, 0, 578, 581, 511, 654, 0, - 575, 590, 658, 589, 651, 405, 0, 427, 587, 534, - 0, 579, 553, 0, 580, 549, 584, 0, 523, 0, - 435, 463, 475, 492, 495, 524, 609, 610, 611, 296, - 494, 613, 614, 615, 616, 617, 618, 619, 612, 466, - 556, 533, 559, 474, 536, 535, 0, 0, 570, 490, - 571, 572, 389, 390, 391, 392, 349, 597, 314, 493, - 415, 0, 557, 0, 0, 0, 0, 0, 0, 0, - 0, 562, 563, 560, 663, 0, 620, 621, 0, 0, - 487, 488, 344, 351, 506, 353, 313, 404, 346, 472, - 361, 0, 499, 564, 500, 623, 626, 624, 625, 396, - 356, 358, 431, 362, 372, 419, 471, 402, 424, 311, - 462, 433, 377, 550, 577, 0, 0, 0, 0, 0, + 0, 0, 479, 480, 481, 503, 0, 465, 527, 651, + 0, 0, 0, 0, 0, 0, 0, 577, 589, 623, + 0, 633, 634, 636, 638, 637, 640, 439, 440, 0, + 642, 643, 644, 641, 375, 426, 445, 433, 0, 657, + 518, 519, 658, 629, 402, 0, 0, 533, 566, 555, + 639, 521, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 337, 0, 0, 370, 570, 552, 562, 553, + 538, 539, 540, 547, 349, 541, 542, 543, 513, 544, + 514, 545, 546, 0, 569, 520, 435, 386, 587, 586, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 228, 0, 0, 0, 0, 0, 0, 310, 229, 515, + 635, 517, 516, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 313, 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, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 300, 442, 461, 311, 430, 474, + 316, 438, 1905, 306, 401, 427, 0, 0, 302, 459, + 437, 383, 360, 361, 301, 0, 421, 335, 351, 332, + 399, 0, 458, 486, 331, 477, 0, 469, 304, 0, + 468, 398, 455, 460, 384, 377, 0, 303, 457, 382, + 376, 364, 341, 502, 365, 366, 355, 410, 374, 411, + 356, 388, 387, 389, 0, 0, 0, 0, 0, 497, + 498, 0, 0, 646, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 628, 0, 0, 632, 0, + 471, 0, 0, 0, 0, 0, 0, 441, 0, 0, + 367, 0, 0, 0, 487, 0, 424, 404, 660, 0, + 0, 422, 372, 456, 412, 462, 443, 470, 418, 413, + 294, 444, 334, 385, 307, 309, 329, 336, 338, 342, + 343, 394, 395, 407, 429, 446, 447, 448, 333, 317, + 423, 318, 353, 319, 295, 325, 323, 326, 431, 327, + 297, 408, 452, 0, 348, 419, 380, 298, 379, 409, + 451, 450, 308, 478, 484, 485, 574, 0, 490, 661, + 662, 663, 499, 0, 414, 504, 505, 506, 508, 509, + 510, 511, 575, 592, 559, 529, 492, 583, 526, 530, + 531, 358, 595, 0, 0, 0, 483, 368, 369, 0, + 340, 339, 381, 417, 299, 346, 291, 292, 656, 330, + 400, 597, 630, 631, 522, 0, 584, 523, 532, 322, + 556, 568, 567, 396, 482, 0, 579, 582, 512, 655, + 0, 576, 591, 659, 590, 652, 406, 0, 428, 588, + 535, 0, 580, 554, 0, 581, 550, 585, 0, 524, + 0, 436, 464, 476, 493, 496, 525, 610, 611, 612, + 296, 495, 614, 615, 616, 617, 618, 619, 620, 613, + 467, 557, 534, 560, 475, 537, 536, 0, 0, 571, + 491, 572, 573, 390, 391, 392, 393, 350, 598, 315, + 494, 416, 0, 558, 0, 0, 0, 0, 0, 0, + 0, 0, 563, 564, 561, 664, 0, 621, 622, 0, + 0, 488, 489, 345, 352, 507, 354, 314, 405, 347, + 473, 362, 0, 500, 565, 501, 624, 627, 625, 626, + 397, 357, 359, 432, 363, 373, 420, 472, 403, 425, + 312, 463, 434, 378, 551, 578, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 280, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 606, 605, 604, 603, 602, 601, 600, 599, + 0, 0, 548, 449, 324, 285, 320, 321, 328, 653, + 650, 454, 654, 0, 293, 528, 371, 0, 415, 344, + 593, 594, 0, 645, 241, 242, 243, 244, 245, 246, + 247, 248, 286, 249, 250, 251, 252, 253, 254, 255, + 258, 259, 260, 261, 262, 263, 264, 265, 596, 256, + 257, 266, 267, 268, 269, 270, 271, 272, 273, 274, + 275, 276, 277, 278, 279, 0, 0, 0, 287, 288, + 289, 290, 0, 0, 281, 282, 283, 284, 0, 0, + 0, 479, 480, 481, 503, 0, 465, 527, 651, 0, + 0, 0, 0, 0, 0, 0, 577, 589, 623, 0, + 633, 634, 636, 638, 637, 640, 439, 440, 0, 642, + 643, 644, 641, 375, 426, 445, 433, 0, 657, 518, + 519, 658, 629, 402, 0, 0, 533, 566, 555, 639, + 521, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 337, 0, 0, 370, 570, 552, 562, 553, 538, + 539, 540, 547, 349, 541, 542, 543, 513, 544, 514, + 545, 546, 0, 569, 520, 435, 386, 587, 586, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 228, + 0, 0, 0, 0, 0, 0, 310, 229, 515, 635, + 517, 516, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 313, 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, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 300, 442, 1534, 311, 430, 474, 316, + 438, 453, 306, 401, 427, 0, 0, 302, 459, 437, + 383, 360, 361, 301, 0, 421, 335, 351, 332, 399, + 0, 458, 486, 331, 477, 0, 469, 304, 0, 468, + 398, 455, 460, 384, 377, 0, 303, 457, 382, 376, + 364, 341, 502, 365, 366, 355, 410, 374, 411, 356, + 388, 387, 389, 0, 0, 0, 0, 0, 497, 498, + 0, 0, 646, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 628, 0, 0, 632, 0, 471, + 0, 0, 0, 0, 0, 0, 441, 0, 0, 367, + 0, 0, 0, 487, 0, 424, 404, 660, 0, 0, + 422, 372, 456, 412, 462, 443, 470, 418, 413, 294, + 444, 334, 385, 307, 309, 329, 336, 338, 342, 343, + 394, 395, 407, 429, 446, 447, 448, 333, 317, 423, + 318, 353, 319, 295, 325, 323, 326, 431, 327, 297, + 408, 452, 0, 348, 419, 380, 298, 379, 409, 451, + 450, 308, 478, 484, 485, 574, 0, 490, 661, 662, + 663, 499, 0, 414, 504, 505, 506, 508, 509, 510, + 511, 575, 592, 559, 529, 492, 583, 526, 530, 531, + 358, 595, 0, 0, 0, 483, 368, 369, 0, 340, + 339, 381, 417, 299, 346, 291, 292, 656, 330, 400, + 597, 630, 631, 522, 0, 584, 523, 532, 322, 556, + 568, 567, 396, 482, 0, 579, 582, 512, 655, 0, + 576, 591, 659, 590, 652, 406, 0, 428, 588, 535, + 0, 580, 554, 0, 581, 550, 585, 0, 524, 0, + 436, 464, 476, 493, 496, 525, 610, 611, 612, 296, + 495, 614, 615, 616, 617, 618, 619, 620, 613, 467, + 557, 534, 560, 475, 537, 536, 0, 0, 571, 491, + 572, 573, 390, 391, 392, 393, 350, 598, 315, 494, + 416, 0, 558, 0, 0, 0, 0, 0, 0, 0, + 0, 563, 564, 561, 664, 0, 621, 622, 0, 0, + 488, 489, 345, 352, 507, 354, 314, 405, 347, 473, + 362, 0, 500, 565, 501, 624, 627, 625, 626, 397, + 357, 359, 432, 363, 373, 420, 472, 403, 425, 312, + 463, 434, 378, 551, 578, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 280, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 605, 604, 603, 602, 601, 600, 599, 598, 0, - 0, 547, 448, 323, 285, 319, 320, 327, 652, 649, - 453, 653, 0, 293, 527, 370, 0, 414, 343, 592, - 593, 0, 644, 241, 242, 243, 244, 245, 246, 247, + 0, 606, 605, 604, 603, 602, 601, 600, 599, 0, + 0, 548, 449, 324, 285, 320, 321, 328, 653, 650, + 454, 654, 0, 293, 528, 371, 0, 415, 344, 593, + 594, 0, 645, 241, 242, 243, 244, 245, 246, 247, 248, 286, 249, 250, 251, 252, 253, 254, 255, 258, - 259, 260, 261, 262, 263, 264, 265, 595, 256, 257, + 259, 260, 261, 262, 263, 264, 265, 596, 256, 257, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 0, 0, 0, 287, 288, 289, 290, 0, 0, 281, 282, 283, 284, 0, 0, 0, - 478, 479, 480, 502, 0, 464, 526, 650, 0, 0, - 0, 0, 0, 0, 0, 576, 588, 622, 0, 632, - 633, 635, 637, 636, 639, 438, 439, 0, 641, 642, - 643, 640, 374, 425, 444, 432, 0, 656, 517, 518, - 657, 628, 401, 0, 0, 532, 565, 554, 638, 520, + 479, 480, 481, 503, 0, 465, 527, 651, 0, 0, + 0, 0, 0, 0, 0, 577, 589, 623, 0, 633, + 634, 636, 638, 637, 640, 439, 440, 0, 642, 643, + 644, 641, 375, 426, 445, 433, 0, 657, 518, 519, + 658, 629, 402, 0, 0, 533, 566, 555, 639, 521, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 336, 0, 0, 369, 569, 551, 561, 552, 537, 538, - 539, 546, 348, 540, 541, 542, 512, 543, 513, 544, - 545, 0, 568, 519, 434, 385, 586, 585, 0, 0, + 337, 0, 0, 370, 570, 552, 562, 553, 538, 539, + 540, 547, 349, 541, 542, 543, 513, 544, 514, 545, + 546, 0, 569, 520, 435, 386, 587, 586, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 228, 0, - 0, 0, 0, 0, 0, 309, 229, 514, 634, 516, - 515, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 312, 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, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 299, 441, 1533, 310, 429, 473, 315, 437, - 452, 305, 400, 426, 0, 0, 301, 458, 436, 382, - 359, 360, 300, 0, 420, 334, 350, 331, 398, 0, - 457, 485, 330, 476, 0, 468, 303, 0, 467, 397, - 454, 459, 383, 376, 0, 302, 456, 381, 375, 363, - 340, 501, 364, 365, 354, 409, 373, 410, 355, 387, - 386, 388, 0, 0, 0, 0, 0, 496, 497, 0, - 0, 645, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 627, 0, 0, 631, 0, 470, 0, - 0, 0, 0, 0, 0, 440, 0, 0, 366, 0, - 0, 0, 486, 0, 423, 403, 659, 0, 0, 421, - 371, 455, 411, 461, 442, 469, 417, 412, 294, 443, - 333, 384, 306, 308, 328, 335, 337, 341, 342, 393, - 394, 406, 428, 445, 446, 447, 332, 316, 422, 317, - 352, 318, 295, 324, 322, 325, 430, 326, 297, 407, - 451, 0, 347, 418, 379, 298, 378, 408, 450, 449, - 307, 477, 483, 484, 573, 0, 489, 660, 661, 662, - 498, 0, 413, 503, 504, 505, 507, 508, 509, 510, - 574, 591, 558, 528, 491, 582, 525, 529, 530, 357, - 594, 0, 0, 0, 482, 367, 368, 0, 339, 338, - 380, 416, 345, 291, 292, 655, 329, 399, 596, 629, - 630, 521, 0, 583, 522, 531, 321, 555, 567, 566, - 395, 481, 0, 578, 581, 511, 654, 0, 575, 590, - 658, 589, 651, 405, 0, 427, 587, 534, 0, 579, - 553, 0, 580, 549, 584, 0, 523, 0, 435, 463, - 475, 492, 495, 524, 609, 610, 611, 296, 494, 613, - 614, 615, 616, 617, 618, 619, 612, 466, 556, 533, - 559, 474, 536, 535, 0, 0, 570, 490, 571, 572, - 389, 390, 391, 392, 349, 597, 314, 493, 415, 0, - 557, 0, 0, 0, 0, 0, 0, 0, 0, 562, - 563, 560, 663, 0, 620, 621, 0, 0, 487, 488, - 344, 351, 506, 353, 313, 404, 346, 472, 361, 0, - 499, 564, 500, 623, 626, 624, 625, 396, 356, 358, - 431, 362, 372, 419, 471, 402, 424, 311, 462, 433, - 377, 550, 577, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 310, 229, 515, 635, 517, + 516, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 313, 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, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 300, 442, 1532, 311, 430, 474, 316, 438, + 453, 306, 401, 427, 0, 0, 302, 459, 437, 383, + 360, 361, 301, 0, 421, 335, 351, 332, 399, 0, + 458, 486, 331, 477, 0, 469, 304, 0, 468, 398, + 455, 460, 384, 377, 0, 303, 457, 382, 376, 364, + 341, 502, 365, 366, 355, 410, 374, 411, 356, 388, + 387, 389, 0, 0, 0, 0, 0, 497, 498, 0, + 0, 646, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 628, 0, 0, 632, 0, 471, 0, + 0, 0, 0, 0, 0, 441, 0, 0, 367, 0, + 0, 0, 487, 0, 424, 404, 660, 0, 0, 422, + 372, 456, 412, 462, 443, 470, 418, 413, 294, 444, + 334, 385, 307, 309, 329, 336, 338, 342, 343, 394, + 395, 407, 429, 446, 447, 448, 333, 317, 423, 318, + 353, 319, 295, 325, 323, 326, 431, 327, 297, 408, + 452, 0, 348, 419, 380, 298, 379, 409, 451, 450, + 308, 478, 484, 485, 574, 0, 490, 661, 662, 663, + 499, 0, 414, 504, 505, 506, 508, 509, 510, 511, + 575, 592, 559, 529, 492, 583, 526, 530, 531, 358, + 595, 0, 0, 0, 483, 368, 369, 0, 340, 339, + 381, 417, 299, 346, 291, 292, 656, 330, 400, 597, + 630, 631, 522, 0, 584, 523, 532, 322, 556, 568, + 567, 396, 482, 0, 579, 582, 512, 655, 0, 576, + 591, 659, 590, 652, 406, 0, 428, 588, 535, 0, + 580, 554, 0, 581, 550, 585, 0, 524, 0, 436, + 464, 476, 493, 496, 525, 610, 611, 612, 296, 495, + 614, 615, 616, 617, 618, 619, 620, 613, 467, 557, + 534, 560, 475, 537, 536, 0, 0, 571, 491, 572, + 573, 390, 391, 392, 393, 350, 598, 315, 494, 416, + 0, 558, 0, 0, 0, 0, 0, 0, 0, 0, + 563, 564, 561, 664, 0, 621, 622, 0, 0, 488, + 489, 345, 352, 507, 354, 314, 405, 347, 473, 362, + 0, 500, 565, 501, 624, 627, 625, 626, 397, 357, + 359, 432, 363, 373, 420, 472, 403, 425, 312, 463, + 434, 378, 551, 578, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 280, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 606, 605, 604, 603, 602, 601, 600, 599, 0, 0, + 548, 449, 324, 285, 320, 321, 328, 653, 650, 454, + 654, 0, 293, 528, 371, 0, 415, 344, 593, 594, + 0, 645, 241, 242, 243, 244, 245, 246, 247, 248, + 286, 249, 250, 251, 252, 253, 254, 255, 258, 259, + 260, 261, 262, 263, 264, 265, 596, 256, 257, 266, + 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, + 277, 278, 279, 0, 0, 0, 287, 288, 289, 290, + 0, 0, 281, 282, 283, 284, 0, 0, 0, 479, + 480, 481, 503, 0, 465, 527, 651, 0, 0, 0, + 0, 0, 0, 0, 577, 589, 623, 0, 633, 634, + 636, 638, 637, 640, 439, 440, 0, 642, 643, 644, + 641, 375, 426, 445, 433, 0, 657, 518, 519, 658, + 629, 402, 0, 0, 533, 566, 555, 639, 521, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 337, + 0, 0, 370, 570, 552, 562, 553, 538, 539, 540, + 547, 349, 541, 542, 543, 513, 544, 514, 545, 546, + 0, 569, 520, 435, 386, 587, 586, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 228, 0, 0, + 0, 0, 0, 0, 310, 229, 515, 635, 517, 516, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 313, + 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, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 300, 442, 461, 311, 430, 474, 316, 438, 1411, + 306, 401, 427, 0, 0, 302, 459, 437, 383, 360, + 361, 301, 0, 421, 335, 351, 332, 399, 0, 458, + 486, 331, 477, 0, 469, 304, 0, 468, 398, 455, + 460, 384, 377, 0, 303, 457, 382, 376, 364, 341, + 502, 365, 366, 355, 410, 374, 411, 356, 388, 387, + 389, 0, 0, 0, 0, 0, 497, 498, 0, 0, + 646, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 628, 0, 0, 632, 0, 471, 0, 0, + 0, 0, 0, 0, 441, 0, 0, 367, 0, 0, + 0, 487, 0, 424, 404, 660, 0, 0, 422, 372, + 456, 412, 462, 443, 470, 418, 413, 294, 444, 334, + 385, 307, 309, 329, 336, 338, 342, 343, 394, 395, + 407, 429, 446, 447, 448, 333, 317, 423, 318, 353, + 319, 295, 325, 323, 326, 431, 327, 297, 408, 452, + 0, 348, 419, 380, 298, 379, 409, 451, 450, 308, + 478, 484, 485, 574, 0, 490, 661, 662, 663, 499, + 0, 414, 504, 505, 506, 508, 509, 510, 511, 575, + 592, 559, 529, 492, 583, 526, 530, 531, 358, 595, + 0, 0, 0, 483, 368, 369, 0, 340, 339, 381, + 417, 299, 346, 291, 292, 656, 330, 400, 597, 630, + 631, 522, 0, 584, 523, 532, 322, 556, 568, 567, + 396, 482, 0, 579, 582, 512, 655, 0, 576, 591, + 659, 590, 652, 406, 0, 428, 588, 535, 0, 580, + 554, 0, 581, 550, 585, 0, 524, 0, 436, 464, + 476, 493, 496, 525, 610, 611, 612, 296, 495, 614, + 615, 616, 617, 618, 619, 620, 613, 467, 557, 534, + 560, 475, 537, 536, 0, 0, 571, 491, 572, 573, + 390, 391, 392, 393, 350, 598, 315, 494, 416, 0, + 558, 0, 0, 0, 0, 0, 0, 0, 0, 563, + 564, 561, 664, 0, 621, 622, 0, 0, 488, 489, + 345, 352, 507, 354, 314, 405, 347, 473, 362, 0, + 500, 565, 501, 624, 627, 625, 626, 397, 357, 359, + 432, 363, 373, 420, 472, 403, 425, 312, 463, 434, + 378, 551, 578, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 280, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 605, - 604, 603, 602, 601, 600, 599, 598, 0, 0, 547, - 448, 323, 285, 319, 320, 327, 652, 649, 453, 653, - 0, 293, 527, 370, 0, 414, 343, 592, 593, 0, - 644, 241, 242, 243, 244, 245, 246, 247, 248, 286, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 606, + 605, 604, 603, 602, 601, 600, 599, 0, 0, 548, + 449, 324, 285, 320, 321, 328, 653, 650, 454, 654, + 0, 293, 528, 371, 0, 415, 344, 593, 594, 0, + 645, 241, 242, 243, 244, 245, 246, 247, 248, 286, 249, 250, 251, 252, 253, 254, 255, 258, 259, 260, - 261, 262, 263, 264, 265, 595, 256, 257, 266, 267, + 261, 262, 263, 264, 265, 596, 256, 257, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 0, 0, 0, 287, 288, 289, 290, 0, - 0, 281, 282, 283, 284, 0, 0, 0, 478, 479, - 480, 502, 0, 464, 526, 650, 0, 0, 0, 0, - 0, 0, 0, 576, 588, 622, 0, 632, 633, 635, - 637, 636, 639, 438, 439, 0, 641, 642, 643, 640, - 374, 425, 444, 432, 0, 656, 517, 518, 657, 628, - 401, 0, 0, 532, 565, 554, 638, 520, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 336, 0, - 0, 369, 569, 551, 561, 552, 537, 538, 539, 546, - 348, 540, 541, 542, 512, 543, 513, 544, 545, 0, - 568, 519, 434, 385, 586, 585, 0, 0, 0, 0, + 0, 281, 282, 283, 284, 0, 0, 0, 479, 480, + 481, 503, 0, 465, 527, 651, 0, 0, 0, 0, + 0, 0, 0, 577, 589, 623, 0, 633, 634, 636, + 638, 637, 640, 439, 440, 0, 642, 643, 644, 641, + 375, 426, 445, 433, 0, 657, 518, 519, 658, 629, + 402, 0, 0, 533, 566, 555, 639, 521, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 337, 0, + 0, 370, 570, 552, 562, 553, 538, 539, 540, 547, + 349, 541, 542, 543, 513, 544, 514, 545, 546, 0, + 569, 520, 435, 386, 587, 586, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 228, 0, 0, 0, - 0, 0, 0, 309, 229, 514, 634, 516, 515, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 312, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 299, 441, 1531, 310, 429, 473, 315, 437, 452, 305, - 400, 426, 0, 0, 301, 458, 436, 382, 359, 360, - 300, 0, 420, 334, 350, 331, 398, 0, 457, 485, - 330, 476, 0, 468, 303, 0, 467, 397, 454, 459, - 383, 376, 0, 302, 456, 381, 375, 363, 340, 501, - 364, 365, 354, 409, 373, 410, 355, 387, 386, 388, - 0, 0, 0, 0, 0, 496, 497, 0, 0, 645, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 627, 0, 0, 631, 0, 470, 0, 0, 0, - 0, 0, 0, 440, 0, 0, 366, 0, 0, 0, - 486, 0, 423, 403, 659, 0, 0, 421, 371, 455, - 411, 461, 442, 469, 417, 412, 294, 443, 333, 384, - 306, 308, 328, 335, 337, 341, 342, 393, 394, 406, - 428, 445, 446, 447, 332, 316, 422, 317, 352, 318, - 295, 324, 322, 325, 430, 326, 297, 407, 451, 0, - 347, 418, 379, 298, 378, 408, 450, 449, 307, 477, - 483, 484, 573, 0, 489, 660, 661, 662, 498, 0, - 413, 503, 504, 505, 507, 508, 509, 510, 574, 591, - 558, 528, 491, 582, 525, 529, 530, 357, 594, 0, - 0, 0, 482, 367, 368, 0, 339, 338, 380, 416, - 345, 291, 292, 655, 329, 399, 596, 629, 630, 521, - 0, 583, 522, 531, 321, 555, 567, 566, 395, 481, - 0, 578, 581, 511, 654, 0, 575, 590, 658, 589, - 651, 405, 0, 427, 587, 534, 0, 579, 553, 0, - 580, 549, 584, 0, 523, 0, 435, 463, 475, 492, - 495, 524, 609, 610, 611, 296, 494, 613, 614, 615, - 616, 617, 618, 619, 612, 466, 556, 533, 559, 474, - 536, 535, 0, 0, 570, 490, 571, 572, 389, 390, - 391, 392, 349, 597, 314, 493, 415, 0, 557, 0, - 0, 0, 0, 0, 0, 0, 0, 562, 563, 560, - 663, 0, 620, 621, 0, 0, 487, 488, 344, 351, - 506, 353, 313, 404, 346, 472, 361, 0, 499, 564, - 500, 623, 626, 624, 625, 396, 356, 358, 431, 362, - 372, 419, 471, 402, 424, 311, 462, 433, 377, 550, - 577, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 310, 229, 515, 635, 517, 516, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 313, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 300, 442, 461, 311, 430, 474, 316, 438, 453, 306, + 401, 427, 0, 0, 302, 459, 437, 383, 360, 361, + 301, 0, 421, 335, 351, 332, 399, 0, 458, 486, + 331, 477, 0, 469, 304, 0, 468, 398, 455, 460, + 384, 377, 0, 303, 457, 382, 376, 364, 341, 502, + 365, 366, 355, 410, 374, 411, 356, 388, 387, 389, + 0, 0, 0, 0, 0, 497, 498, 0, 0, 646, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 628, 0, 0, 632, 0, 471, 0, 0, 0, + 0, 0, 0, 441, 0, 0, 367, 0, 0, 0, + 487, 0, 424, 404, 660, 0, 0, 422, 372, 456, + 412, 462, 443, 470, 418, 413, 294, 444, 334, 385, + 307, 309, 749, 336, 338, 342, 343, 394, 395, 407, + 429, 446, 447, 448, 333, 317, 423, 318, 353, 319, + 295, 325, 323, 326, 431, 327, 297, 408, 452, 0, + 348, 419, 380, 298, 379, 409, 451, 450, 308, 478, + 484, 485, 574, 0, 490, 661, 662, 663, 499, 0, + 414, 504, 505, 506, 508, 509, 510, 511, 575, 592, + 559, 529, 492, 583, 526, 530, 531, 358, 595, 0, + 0, 0, 483, 368, 369, 0, 340, 339, 381, 417, + 299, 346, 291, 292, 656, 330, 400, 597, 630, 631, + 522, 0, 584, 523, 532, 322, 556, 568, 567, 396, + 482, 0, 579, 582, 512, 655, 0, 576, 591, 659, + 590, 652, 406, 0, 428, 588, 535, 0, 580, 554, + 0, 581, 550, 585, 0, 524, 0, 436, 464, 476, + 493, 496, 525, 610, 611, 612, 296, 495, 614, 615, + 616, 617, 618, 619, 620, 613, 467, 557, 534, 560, + 475, 537, 536, 0, 0, 571, 491, 572, 573, 390, + 391, 392, 393, 350, 598, 315, 494, 416, 0, 558, + 0, 0, 0, 0, 0, 0, 0, 0, 563, 564, + 561, 664, 0, 621, 622, 0, 0, 488, 489, 345, + 352, 507, 354, 314, 405, 347, 473, 362, 0, 500, + 565, 501, 624, 627, 625, 626, 397, 357, 359, 432, + 363, 373, 420, 472, 403, 425, 312, 463, 434, 378, + 551, 578, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 280, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 606, 605, + 604, 603, 602, 601, 600, 599, 0, 0, 548, 449, + 324, 285, 320, 321, 328, 653, 650, 454, 654, 0, + 293, 528, 371, 0, 415, 344, 593, 594, 0, 645, + 241, 242, 243, 244, 245, 246, 247, 248, 286, 249, + 250, 251, 252, 253, 254, 255, 258, 259, 260, 261, + 262, 263, 264, 265, 596, 256, 257, 266, 267, 268, + 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, + 279, 0, 0, 0, 287, 288, 289, 290, 0, 0, + 281, 282, 283, 284, 0, 0, 0, 479, 480, 481, + 503, 0, 465, 527, 651, 0, 0, 0, 0, 0, + 0, 0, 577, 589, 623, 0, 633, 634, 636, 638, + 637, 640, 439, 440, 0, 642, 643, 644, 641, 375, + 426, 445, 433, 0, 657, 518, 519, 658, 629, 402, + 0, 0, 533, 566, 555, 639, 521, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 337, 0, 0, + 370, 570, 552, 562, 553, 538, 539, 540, 547, 349, + 541, 542, 543, 513, 544, 514, 545, 546, 0, 569, + 520, 435, 386, 587, 586, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 228, 0, 0, 0, 0, + 0, 0, 310, 229, 515, 635, 517, 516, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 313, 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, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 300, + 442, 461, 311, 430, 474, 316, 438, 453, 306, 401, + 427, 0, 0, 302, 459, 437, 383, 360, 361, 301, + 0, 421, 335, 351, 332, 399, 0, 458, 486, 331, + 477, 0, 469, 304, 0, 468, 398, 455, 460, 384, + 377, 0, 303, 457, 382, 376, 364, 341, 502, 365, + 366, 355, 410, 374, 411, 356, 388, 387, 389, 0, + 0, 0, 0, 0, 497, 498, 0, 0, 646, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 628, 0, 0, 632, 0, 471, 0, 0, 0, 0, + 0, 0, 441, 0, 0, 367, 0, 0, 0, 487, + 0, 424, 404, 660, 0, 0, 422, 372, 456, 412, + 462, 443, 470, 706, 413, 294, 444, 334, 385, 307, + 309, 329, 336, 338, 342, 343, 394, 395, 407, 429, + 446, 447, 448, 333, 317, 423, 318, 353, 319, 295, + 325, 323, 326, 431, 327, 297, 408, 452, 0, 348, + 419, 380, 298, 379, 409, 451, 450, 308, 478, 484, + 485, 574, 0, 490, 661, 662, 663, 499, 0, 414, + 504, 505, 506, 508, 509, 510, 511, 575, 592, 559, + 529, 492, 583, 526, 530, 531, 358, 595, 0, 0, + 0, 483, 368, 369, 0, 340, 339, 381, 417, 299, + 346, 291, 292, 656, 330, 400, 597, 630, 631, 522, + 0, 584, 523, 532, 322, 556, 568, 567, 396, 482, + 0, 579, 582, 512, 655, 0, 576, 591, 659, 590, + 652, 406, 0, 428, 588, 535, 0, 580, 554, 0, + 581, 550, 585, 0, 524, 0, 436, 464, 476, 493, + 496, 525, 610, 611, 612, 296, 495, 614, 615, 616, + 617, 618, 619, 707, 613, 467, 557, 534, 560, 475, + 537, 536, 0, 0, 571, 491, 572, 573, 390, 391, + 392, 393, 350, 598, 315, 494, 416, 0, 558, 0, + 0, 0, 0, 0, 0, 0, 0, 563, 564, 561, + 664, 0, 621, 622, 0, 0, 488, 489, 345, 352, + 507, 354, 314, 405, 347, 473, 362, 0, 500, 565, + 501, 624, 627, 625, 626, 397, 357, 359, 432, 363, + 373, 420, 472, 403, 425, 312, 463, 434, 378, 551, + 578, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 280, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 605, 604, 603, - 602, 601, 600, 599, 598, 0, 0, 547, 448, 323, - 285, 319, 320, 327, 652, 649, 453, 653, 0, 293, - 527, 370, 0, 414, 343, 592, 593, 0, 644, 241, + 0, 0, 0, 0, 0, 0, 0, 606, 605, 604, + 603, 602, 601, 600, 599, 1140, 0, 548, 449, 324, + 285, 320, 321, 328, 653, 650, 454, 654, 0, 293, + 528, 371, 0, 415, 344, 593, 594, 0, 645, 241, 242, 243, 244, 245, 246, 247, 248, 286, 249, 250, 251, 252, 253, 254, 255, 258, 259, 260, 261, 262, - 263, 264, 265, 595, 256, 257, 266, 267, 268, 269, + 263, 264, 265, 596, 256, 257, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, - 0, 0, 0, 287, 288, 289, 290, 0, 0, 281, - 282, 283, 284, 0, 0, 0, 478, 479, 480, 502, - 0, 464, 526, 650, 0, 0, 0, 0, 0, 0, - 0, 576, 588, 622, 0, 632, 633, 635, 637, 636, - 639, 438, 439, 0, 641, 642, 643, 640, 374, 425, - 444, 432, 0, 656, 517, 518, 657, 628, 401, 0, - 0, 532, 565, 554, 638, 520, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 336, 0, 0, 369, - 569, 551, 561, 552, 537, 538, 539, 546, 348, 540, - 541, 542, 512, 543, 513, 544, 545, 0, 568, 519, - 434, 385, 586, 585, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 228, 0, 0, 0, 0, 0, - 0, 309, 229, 514, 634, 516, 515, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 312, 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, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 299, 441, - 460, 310, 429, 473, 315, 437, 1410, 305, 400, 426, - 0, 0, 301, 458, 436, 382, 359, 360, 300, 0, - 420, 334, 350, 331, 398, 0, 457, 485, 330, 476, - 0, 468, 303, 0, 467, 397, 454, 459, 383, 376, - 0, 302, 456, 381, 375, 363, 340, 501, 364, 365, - 354, 409, 373, 410, 355, 387, 386, 388, 0, 0, - 0, 0, 0, 496, 497, 0, 0, 645, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 627, - 0, 0, 631, 0, 470, 0, 0, 0, 0, 0, - 0, 440, 0, 0, 366, 0, 0, 0, 486, 0, - 423, 403, 659, 0, 0, 421, 371, 455, 411, 461, - 442, 469, 417, 412, 294, 443, 333, 384, 306, 308, - 328, 335, 337, 341, 342, 393, 394, 406, 428, 445, - 446, 447, 332, 316, 422, 317, 352, 318, 295, 324, - 322, 325, 430, 326, 297, 407, 451, 0, 347, 418, - 379, 298, 378, 408, 450, 449, 307, 477, 483, 484, - 573, 0, 489, 660, 661, 662, 498, 0, 413, 503, - 504, 505, 507, 508, 509, 510, 574, 591, 558, 528, - 491, 582, 525, 529, 530, 357, 594, 0, 0, 0, - 482, 367, 368, 0, 339, 338, 380, 416, 345, 291, - 292, 655, 329, 399, 596, 629, 630, 521, 0, 583, - 522, 531, 321, 555, 567, 566, 395, 481, 0, 578, - 581, 511, 654, 0, 575, 590, 658, 589, 651, 405, - 0, 427, 587, 534, 0, 579, 553, 0, 580, 549, - 584, 0, 523, 0, 435, 463, 475, 492, 495, 524, - 609, 610, 611, 296, 494, 613, 614, 615, 616, 617, - 618, 619, 612, 466, 556, 533, 559, 474, 536, 535, - 0, 0, 570, 490, 571, 572, 389, 390, 391, 392, - 349, 597, 314, 493, 415, 0, 557, 0, 0, 0, - 0, 0, 0, 0, 0, 562, 563, 560, 663, 0, - 620, 621, 0, 0, 487, 488, 344, 351, 506, 353, - 313, 404, 346, 472, 361, 0, 499, 564, 500, 623, - 626, 624, 625, 396, 356, 358, 431, 362, 372, 419, - 471, 402, 424, 311, 462, 433, 377, 550, 577, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 280, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 605, 604, 603, 602, 601, - 600, 599, 598, 0, 0, 547, 448, 323, 285, 319, - 320, 327, 652, 649, 453, 653, 0, 293, 527, 370, - 0, 414, 343, 592, 593, 0, 644, 241, 242, 243, - 244, 245, 246, 247, 248, 286, 249, 250, 251, 252, - 253, 254, 255, 258, 259, 260, 261, 262, 263, 264, - 265, 595, 256, 257, 266, 267, 268, 269, 270, 271, - 272, 273, 274, 275, 276, 277, 278, 279, 0, 0, - 0, 287, 288, 289, 290, 0, 0, 281, 282, 283, - 284, 0, 0, 0, 478, 479, 480, 502, 0, 464, - 526, 650, 0, 0, 0, 0, 0, 0, 0, 576, - 588, 622, 0, 632, 633, 635, 637, 636, 639, 438, - 439, 0, 641, 642, 643, 640, 374, 425, 444, 432, - 0, 656, 517, 518, 657, 628, 401, 0, 0, 532, - 565, 554, 638, 520, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 336, 0, 0, 369, 569, 551, - 561, 552, 537, 538, 539, 546, 348, 540, 541, 542, - 512, 543, 513, 544, 545, 0, 568, 519, 434, 385, - 586, 585, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 228, 0, 0, 0, 0, 0, 0, 309, - 229, 514, 634, 516, 515, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 312, 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, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 299, 441, 460, 310, - 429, 473, 315, 437, 452, 305, 400, 426, 0, 0, - 301, 458, 436, 382, 359, 360, 300, 0, 420, 334, - 350, 331, 398, 0, 457, 485, 330, 476, 0, 468, - 303, 0, 467, 397, 454, 459, 383, 376, 0, 302, - 456, 381, 375, 363, 340, 501, 364, 365, 354, 409, - 373, 410, 355, 387, 386, 388, 0, 0, 0, 0, - 0, 496, 497, 0, 0, 645, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 627, 0, 0, - 631, 0, 470, 0, 0, 0, 0, 0, 0, 440, - 0, 0, 366, 0, 0, 0, 486, 0, 423, 403, - 659, 0, 0, 421, 371, 455, 411, 461, 442, 469, - 417, 412, 294, 443, 333, 384, 306, 308, 748, 335, - 337, 341, 342, 393, 394, 406, 428, 445, 446, 447, - 332, 316, 422, 317, 352, 318, 295, 324, 322, 325, - 430, 326, 297, 407, 451, 0, 347, 418, 379, 298, - 378, 408, 450, 449, 307, 477, 483, 484, 573, 0, - 489, 660, 661, 662, 498, 0, 413, 503, 504, 505, - 507, 508, 509, 510, 574, 591, 558, 528, 491, 582, - 525, 529, 530, 357, 594, 0, 0, 0, 482, 367, - 368, 0, 339, 338, 380, 416, 345, 291, 292, 655, - 329, 399, 596, 629, 630, 521, 0, 583, 522, 531, - 321, 555, 567, 566, 395, 481, 0, 578, 581, 511, - 654, 0, 575, 590, 658, 589, 651, 405, 0, 427, - 587, 534, 0, 579, 553, 0, 580, 549, 584, 0, - 523, 0, 435, 463, 475, 492, 495, 524, 609, 610, - 611, 296, 494, 613, 614, 615, 616, 617, 618, 619, - 612, 466, 556, 533, 559, 474, 536, 535, 0, 0, - 570, 490, 571, 572, 389, 390, 391, 392, 349, 597, - 314, 493, 415, 0, 557, 0, 0, 0, 0, 0, - 0, 0, 0, 562, 563, 560, 663, 0, 620, 621, - 0, 0, 487, 488, 344, 351, 506, 353, 313, 404, - 346, 472, 361, 0, 499, 564, 500, 623, 626, 624, - 625, 396, 356, 358, 431, 362, 372, 419, 471, 402, - 424, 311, 462, 433, 377, 550, 577, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 280, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 605, 604, 603, 602, 601, 600, 599, - 598, 0, 0, 547, 448, 323, 285, 319, 320, 327, - 652, 649, 453, 653, 0, 293, 527, 370, 0, 414, - 343, 592, 593, 0, 644, 241, 242, 243, 244, 245, - 246, 247, 248, 286, 249, 250, 251, 252, 253, 254, - 255, 258, 259, 260, 261, 262, 263, 264, 265, 595, - 256, 257, 266, 267, 268, 269, 270, 271, 272, 273, - 274, 275, 276, 277, 278, 279, 0, 0, 0, 287, - 288, 289, 290, 0, 0, 281, 282, 283, 284, 0, - 0, 0, 478, 479, 480, 502, 0, 464, 526, 650, - 0, 0, 0, 0, 0, 0, 0, 576, 588, 622, - 0, 632, 633, 635, 637, 636, 639, 438, 439, 0, - 641, 642, 643, 640, 374, 425, 444, 432, 0, 656, - 517, 518, 657, 628, 401, 0, 0, 532, 565, 554, - 638, 520, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 336, 0, 0, 369, 569, 551, 561, 552, - 537, 538, 539, 546, 348, 540, 541, 542, 512, 543, - 513, 544, 545, 0, 568, 519, 434, 385, 586, 585, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 228, 0, 0, 0, 0, 0, 0, 309, 229, 514, - 634, 516, 515, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 312, 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, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 299, 441, 460, 310, 429, 473, - 315, 437, 452, 305, 400, 426, 0, 0, 301, 458, - 436, 382, 359, 360, 300, 0, 420, 334, 350, 331, - 398, 0, 457, 485, 330, 476, 0, 468, 303, 0, - 467, 397, 454, 459, 383, 376, 0, 302, 456, 381, - 375, 363, 340, 501, 364, 365, 354, 409, 373, 410, - 355, 387, 386, 388, 0, 0, 0, 0, 0, 496, - 497, 0, 0, 645, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 627, 0, 0, 631, 0, - 470, 0, 0, 0, 0, 0, 0, 440, 0, 0, - 366, 0, 0, 0, 486, 0, 423, 403, 659, 0, - 0, 421, 371, 455, 411, 461, 442, 469, 705, 412, - 294, 443, 333, 384, 306, 308, 328, 335, 337, 341, - 342, 393, 394, 406, 428, 445, 446, 447, 332, 316, - 422, 317, 352, 318, 295, 324, 322, 325, 430, 326, - 297, 407, 451, 0, 347, 418, 379, 298, 378, 408, - 450, 449, 307, 477, 483, 484, 573, 0, 489, 660, - 661, 662, 498, 0, 413, 503, 504, 505, 507, 508, - 509, 510, 574, 591, 558, 528, 491, 582, 525, 529, - 530, 357, 594, 0, 0, 0, 482, 367, 368, 0, - 339, 338, 380, 416, 345, 291, 292, 655, 329, 399, - 596, 629, 630, 521, 0, 583, 522, 531, 321, 555, - 567, 566, 395, 481, 0, 578, 581, 511, 654, 0, - 575, 590, 658, 589, 651, 405, 0, 427, 587, 534, - 0, 579, 553, 0, 580, 549, 584, 0, 523, 0, - 435, 463, 475, 492, 495, 524, 609, 610, 611, 296, - 494, 613, 614, 615, 616, 617, 618, 706, 612, 466, - 556, 533, 559, 474, 536, 535, 0, 0, 570, 490, - 571, 572, 389, 390, 391, 392, 349, 597, 314, 493, - 415, 0, 557, 0, 0, 0, 0, 0, 0, 0, - 0, 562, 563, 560, 663, 0, 620, 621, 0, 0, - 487, 488, 344, 351, 506, 353, 313, 404, 346, 472, - 361, 0, 499, 564, 500, 623, 626, 624, 625, 396, - 356, 358, 431, 362, 372, 419, 471, 402, 424, 311, - 462, 433, 377, 550, 577, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 280, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 605, 604, 603, 602, 601, 600, 599, 598, 0, - 0, 547, 448, 323, 285, 319, 320, 327, 652, 649, - 453, 653, 0, 293, 527, 370, 0, 414, 343, 592, - 593, 0, 644, 241, 242, 243, 244, 245, 246, 247, - 248, 286, 249, 250, 251, 252, 253, 254, 255, 258, - 259, 260, 261, 262, 263, 264, 265, 595, 256, 257, - 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, - 276, 277, 278, 279, 0, 0, 0, 287, 288, 289, - 290, 0, 0, 281, 282, 283, 284, 0, 0, 0, - 478, 479, 480, 502, 0, 464, 526, 650, 0, 0, - 0, 0, 0, 0, 0, 576, 588, 622, 0, 632, - 633, 635, 637, 636, 639, 438, 439, 0, 641, 642, - 643, 640, 374, 425, 444, 432, 0, 656, 517, 518, - 657, 628, 727, 726, 733, 723, 0, 0, 2036, 0, - 0, 0, 0, 0, 0, 730, 731, 0, 732, 736, - 0, 0, 717, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 741, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 2039, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 2036, 0, 0, - 0, 1260, 1261, 1262, 1259, 0, 0, 0, 745, 0, - 0, 747, 0, 0, 0, 0, 746, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 2013, 0, - 0, 0, 0, 2039, 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, 0, 0, 0, 0, - 0, 1801, 0, 0, 0, 0, 0, 2013, 0, 0, - 0, 0, 3794, 0, 0, 0, 2029, 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, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 2029, 718, 720, 719, 0, - 0, 0, 0, 0, 0, 0, 0, 725, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 729, - 2017, 0, 0, 0, 0, 0, 744, 0, 0, 0, - 0, 2023, 0, 722, 0, 0, 0, 712, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 2011, 2045, 0, 0, 2012, 2014, 2016, 0, 2018, - 2019, 2020, 2024, 2025, 2026, 2028, 2031, 2032, 2033, 0, - 0, 0, 0, 0, 0, 0, 2021, 2030, 2022, 2017, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 2023, 0, 0, 0, 1797, 0, 0, 0, 0, 0, - 0, 1794, 0, 0, 0, 1796, 1793, 1795, 1799, 1800, - 2011, 2045, 2037, 1798, 2012, 2014, 2016, 0, 2018, 2019, - 2020, 2024, 2025, 2026, 2028, 2031, 2032, 2033, 0, 0, - 0, 0, 0, 0, 0, 2021, 2030, 2022, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 724, 728, 734, 0, 735, 737, 0, 0, 738, 739, - 740, 0, 2034, 742, 743, 0, 0, 0, 0, 0, - 0, 2037, 0, 0, 0, 0, 0, 0, 0, 2010, - 0, 0, 0, 0, 0, 0, 2009, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 2027, 0, 0, 0, 0, 0, 0, 0, 0, 2015, - 0, 2034, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 2010, 0, - 0, 0, 0, 0, 0, 2009, 1782, 1783, 1784, 1785, - 1786, 1787, 1788, 1789, 1790, 1791, 1792, 1804, 1805, 1806, - 1807, 1808, 1809, 1802, 1803, 0, 0, 0, 0, 2027, - 0, 0, 0, 0, 0, 0, 0, 0, 2015, 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, 721, - 0, 0, 0, 0, 0, 0, 0, 3655, 0, 0, + 1140, 0, 0, 287, 288, 289, 290, 0, 0, 281, + 282, 283, 284, 0, 0, 0, 479, 480, 481, 503, + 0, 465, 527, 651, 0, 0, 0, 0, 0, 0, + 0, 577, 589, 623, 0, 633, 634, 636, 638, 637, + 640, 439, 440, 0, 642, 643, 644, 641, 375, 426, + 445, 433, 0, 657, 518, 519, 658, 629, 0, 1125, + 0, 0, 0, 1115, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1148, 1152, 1154, 1156, 1158, 1159, 1161, 0, 1166, 1162, + 1163, 1164, 1165, 0, 1143, 1144, 1145, 1146, 1123, 1124, + 1149, 0, 1126, 0, 1128, 1129, 1130, 1131, 1127, 1132, + 1133, 1134, 1135, 1136, 1139, 1141, 1137, 1138, 1147, 0, + 0, 0, 2037, 0, 1125, 0, 1151, 1153, 1155, 1157, + 1160, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1148, 1152, 1154, 1156, 1158, + 1159, 1161, 0, 1166, 1162, 1163, 1164, 1165, 2040, 1143, + 1144, 1145, 1146, 1123, 1124, 1149, 1142, 1126, 0, 1128, + 1129, 1130, 1131, 1127, 1132, 1133, 1134, 1135, 1136, 1139, + 1141, 1137, 1138, 1147, 0, 0, 0, 0, 0, 2037, + 0, 1151, 1153, 1155, 1157, 1160, 206, 0, 0, 0, + 0, 0, 3824, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2014, 0, 0, 0, 0, 0, 0, 3648, + 0, 0, 0, 0, 0, 2040, 0, 2037, 0, 0, + 0, 1142, 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, 2040, 0, 0, 0, 0, 0, 202, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 2014, + 2030, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2037, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 2014, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2040, 0, 0, 0, 1261, 1262, 1263, 1260, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 2030, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2018, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 2024, 0, 0, 0, 0, + 0, 3795, 0, 0, 2014, 2030, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 2012, 2046, 0, 0, 2013, + 2015, 2017, 0, 2019, 2020, 2021, 2025, 2026, 2027, 2029, + 2032, 2033, 2034, 0, 1802, 0, 0, 0, 0, 0, + 2022, 2031, 2023, 0, 0, 0, 0, 0, 0, 0, + 0, 2018, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2024, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2030, 1802, 0, 0, 2038, 1150, 0, 0, + 0, 0, 2012, 2046, 0, 0, 2013, 2015, 2017, 2018, + 2019, 2020, 2021, 2025, 2026, 2027, 2029, 2032, 2033, 2034, + 2024, 0, 0, 0, 0, 0, 0, 2022, 2031, 2023, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2012, 2046, 0, 0, 2013, 2015, 2017, 2035, 2019, 2020, + 2021, 2025, 2026, 2027, 2029, 2032, 2033, 2034, 0, 0, + 0, 0, 1150, 2038, 2011, 2022, 2031, 2023, 0, 0, + 0, 2010, 0, 0, 0, 0, 2018, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 2024, 0, 0, + 0, 0, 0, 0, 0, 2028, 0, 0, 0, 0, + 0, 2038, 0, 0, 2016, 0, 0, 2012, 2046, 0, + 0, 2013, 2015, 2017, 2035, 2019, 2020, 2021, 2025, 2026, + 2027, 2029, 2032, 2033, 2034, 0, 0, 0, 1798, 0, + 0, 2011, 2022, 2031, 2023, 1795, 0, 0, 2010, 1797, + 1794, 1796, 1800, 1801, 0, 0, 0, 1799, 0, 0, + 0, 0, 2035, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2028, 0, 0, 0, 0, 1798, 2038, 2011, + 0, 2016, 0, 0, 1795, 0, 2010, 0, 1797, 1794, + 1796, 1800, 1801, 0, 0, 0, 1799, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2028, 0, 0, 0, 0, 0, 0, 0, 0, 2016, + 0, 0, 3656, 0, 0, 0, 0, 0, 0, 2035, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 2011, 0, 0, 0, + 0, 0, 0, 2010, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 2028, 0, 0, + 0, 0, 0, 0, 0, 0, 2016, 0, 0, 3652, + 1783, 1784, 1785, 1786, 1787, 1788, 1789, 1790, 1791, 1792, + 1793, 1805, 1806, 1807, 1808, 1809, 1810, 1803, 1804, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 3656, 0, 1783, + 1784, 1785, 1786, 1787, 1788, 1789, 1790, 1791, 1792, 1793, + 1805, 1806, 1807, 1808, 1809, 1810, 1803, 1804, 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, - 0, 0, 0, 0, 0, 0, 3655, + 0, 0, 0, 0, 3656, } var yyPact = [...]int{ - 4144, -1000, -1000, -1000, -338, 15461, -1000, -1000, -1000, -1000, + 361, -1000, -1000, -1000, -341, 15195, -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, - -1000, -1000, -1000, -1000, -1000, 49945, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, 49733, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, 464, 49945, -336, 31443, 48031, -1000, -1000, 2788, -1000, - 48669, 17395, 49945, 560, 559, 49945, -1000, -1000, -1000, -1000, + -1000, 431, 49733, -339, 31202, 47816, -1000, -1000, 2802, -1000, + 48455, 17132, 49733, 532, 530, 49733, -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, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, 984, -1000, 54411, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, 916, 55059, 53773, 11606, - -228, -1000, 1559, -37, 2671, 467, -196, -214, 1137, 1147, - 1220, 1266, 49945, 1114, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, 233, 999, 49307, + -1000, -1000, -1000, -1000, 942, -1000, 54206, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, 866, 5114, 53567, 11334, + -224, -1000, 1625, -43, 2669, 500, -206, -207, 1120, 1126, + 1140, 1044, 49733, 1091, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, 474, 965, 49094, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, 4249, 251, 974, 999, 22507, 149, - 140, 1559, 482, -81, 210, -1000, 1804, 362, 197, -1000, + -1000, -1000, -1000, -1000, 4276, 238, 939, 965, 22252, 117, + 107, 1625, 451, -91, 182, -1000, 1915, 4154, 194, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - 11606, 11606, 15461, -376, 15461, 11606, 49945, 49945, -1000, -1000, - -1000, -1000, -336, 48669, 916, 55059, 11606, 2671, 467, -196, - -214, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + 11334, 11334, 15195, -401, 15195, 11334, 49733, 49733, -1000, -1000, + -1000, -1000, -339, 48455, 866, 5114, 11334, 2669, 500, -206, + -207, -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, -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, -81, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -91, -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, @@ -7398,7 +7397,7 @@ 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, -1000, -1000, 140, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, 107, -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, @@ -7416,424 +7415,424 @@ 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, -1000, -1000, -1000, 5223, -1000, 1775, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, 54713, -1000, 1685, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, 2471, 3238, 1774, 2670, 850, 48031, - 49945, -1000, 145, 850, -1000, -1000, -1000, 1559, 3634, -1000, - 49945, 49945, 259, 2000, -1000, 566, 598, 546, 469, 387, - 1762, -1000, -1000, -1000, -1000, -1000, -1000, 782, 3575, -1000, - 49945, 49945, 3249, 49945, -1000, 2487, 821, -1000, 4259, 3420, - 1511, 1020, 3274, -1000, -1000, 3236, -1000, 396, 473, 275, - 475, 462, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 328, - -1000, 3479, -1000, -1000, 376, -1000, -1000, 377, -1000, -1000, - -1000, 138, -1000, -1000, -1000, -1000, -1000, -1000, 19, -1000, - -1000, 1184, 2302, 11606, 2265, -1000, 3011, 1767, -1000, -1000, - -1000, 7113, 14170, 14170, 14170, 14170, 49945, -1000, -1000, 3082, - 11606, 3233, 3230, 3229, 3220, -1000, -1000, -1000, -1000, -1000, - -1000, 3218, 1761, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, 2120, -1000, -1000, -1000, 14811, -1000, 3217, 3216, - 3215, 3213, 3212, 3211, 3209, 3206, 3205, 3204, 3198, 3194, - 3193, 3191, 2901, 16747, 3189, 2666, 2665, 3187, 3186, 3185, - 2664, 3179, 3178, 3175, 2901, 2901, 3174, 3169, 3168, 3163, - 3162, 3161, 3160, 3159, 3154, 3153, 3151, 3146, 3144, 3138, - 3136, 3135, 3134, 3123, 3122, 3120, 3119, 3117, 3116, 3111, - 3110, 3107, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, 2425, 3153, 1681, 2668, 803, + 47816, 49733, -1000, 137, 803, -1000, -1000, -1000, 1625, 3466, + -1000, 49733, 49733, 202, 1917, -1000, 569, 479, 454, 435, + 344, 1675, -1000, -1000, -1000, -1000, -1000, -1000, 677, 3446, + -1000, 49733, 49733, 3168, 49733, -1000, 2364, 735, -1000, 4337, + 3300, 1397, 984, 3177, -1000, -1000, 3152, -1000, 360, 755, + 327, 825, 427, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + 332, -1000, 3361, -1000, -1000, 348, -1000, -1000, 341, -1000, + -1000, -1000, 100, -1000, -1000, -1000, -1000, -1000, -1000, -16, + -1000, -1000, 1266, 2291, 11334, 2728, -1000, 4063, 1696, -1000, + -1000, -1000, 6834, 13902, 13902, 13902, 13902, 49733, -1000, -1000, + 3013, 11334, 3150, 3149, 3148, 3147, -1000, -1000, -1000, -1000, + -1000, -1000, 3146, 1674, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, 2068, -1000, -1000, -1000, 14544, -1000, 3145, + 3144, 3143, 3142, 3141, 3139, 3137, 3136, 3134, 3132, 3128, + 3125, 3124, 3123, 2859, 16483, 3115, 2667, 2665, 3114, 3113, + 3111, 2659, 3110, 3107, 3106, 2859, 2859, 3105, 3104, 3097, + 3096, 3095, 3093, 3090, 3088, 3083, 3080, 3079, 3078, 3076, + 3075, 3074, 3068, 3067, 3065, 3064, 3062, 3061, 3060, 3058, + 3057, 3055, 3050, -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, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, 1483, -1000, 3106, 3588, - 2953, -1000, 3466, 3464, 3458, 3456, -267, 3105, 2365, -1000, - -1000, 100, 3571, 49945, -290, 49945, 420, -89, -95, -100, - -1000, -79, -1000, -1000, 1129, -1000, 1094, 53135, 941, -1000, - -1000, 49945, 914, 914, 914, 49945, 49945, 232, 982, 914, - 914, 914, 914, 914, 944, 914, 3500, 970, 969, 966, - 965, 914, -35, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - 1998, 1994, 3343, 1085, -1000, -1000, -1000, -1000, 1640, 49945, - -1000, 3026, 420, -311, 1836, 1836, 3557, 3557, 3495, 3494, - 834, 825, 824, 1836, 671, -1000, 1947, 1947, 1947, 1947, - 1836, 543, 819, 3503, 3503, 214, 1947, 101, 1836, 1836, - 101, 1836, 1836, -1000, 1958, 304, -276, -1000, -1000, -1000, - -1000, 1947, 1947, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - 3474, 3473, 916, 916, 49945, 916, 221, 49945, 916, 916, - 916, 49945, 918, -325, 51, 52497, 51859, 2262, 2487, 806, - 804, 1652, 2009, -1000, 1846, 49945, 49945, 1846, 1846, 25701, - 25063, -1000, 49945, -1000, 3588, 2953, 2883, 1527, 2882, 2953, - -102, 420, 916, 916, 916, 916, 916, 339, 916, 916, - 916, 916, 916, 49945, 49945, 47393, 916, 916, 916, 916, - 9677, 1804, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, 15461, 2185, 2249, 196, -12, - -313, 297, -1000, -1000, 49945, 3389, 349, -1000, -1000, -1000, - 2997, -1000, 3010, 3010, 3010, 3010, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, 3010, 3010, 3025, 3104, - -1000, -1000, 3009, 3009, 3009, 2997, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, 1373, -1000, 3039, + 3465, 2950, -1000, 3349, 3336, 3333, 3331, -275, 3037, 2314, + -1000, -1000, 96, 3445, 49733, -297, 49733, 413, -100, -101, + -113, -1000, -80, -1000, -1000, 1102, -1000, 1075, 52928, 906, + -1000, -1000, 49733, 862, 862, 862, 49733, 49733, 216, 1069, + 862, 862, 862, 862, 862, 860, 862, 3377, 937, 936, + 935, 932, 862, -47, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, 1916, 1913, 3238, 1038, -1000, -1000, -1000, -1000, 1525, + 49733, -1000, 2967, 413, -327, 1740, 1740, 3430, 3430, 3376, + 3375, 767, 759, 753, 1740, 573, -1000, 1860, 1860, 1860, + 1860, 1740, 494, 762, 3382, 3382, 104, 1860, 49, 1740, + 1740, 49, 1740, 1740, -1000, 1839, 314, -287, -1000, -1000, + -1000, -1000, 1860, 1860, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, 3356, 3354, 866, 866, 49733, 866, 208, 49733, 866, + 866, 866, 49733, 876, -326, 48, 52289, 51650, 2386, 2364, + 708, 689, 1535, 1912, -1000, 1763, 49733, 49733, 1763, 1763, + 25451, 24812, -1000, 49733, -1000, 3465, 2950, 2839, 1720, 2833, + 2950, -114, 413, 866, 866, 866, 866, 866, 317, 866, + 866, 866, 866, 866, 49733, 49733, 47177, 866, 866, 866, + 866, 9402, 1915, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, 15195, 2186, 2169, 190, + -21, -317, 264, -1000, -1000, 49733, 3278, 322, -1000, -1000, + -1000, 2935, -1000, 2952, 2952, 2952, 2952, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, 2952, 2952, 2966, + 3032, -1000, -1000, 2948, 2948, 2948, 2935, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, 3013, 3013, 3021, 3021, 3013, 49945, -120, -1000, -1000, - 11606, 49945, 3413, 430, 3092, 850, -1000, -1000, 49945, 321, - 432, 3588, 3408, 3503, 3547, -1000, -1000, 1759, 2364, 2661, - -1000, 387, -1000, 415, 387, -1000, 570, 570, 1813, -1000, - 1205, -1000, -1000, -1000, -1000, -1000, -1000, 49945, 19, 456, - -1000, -1000, 2642, 3091, -1000, 687, 1319, 1655, -1000, 381, - 4537, 40375, 2487, 40375, 49945, -1000, -1000, -1000, -1000, -1000, - -1000, 126, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, 2960, 2960, 2964, 2964, 2960, 49733, -134, -1000, + -1000, 11334, 49733, 3293, 412, 3022, 803, -1000, -1000, 49733, + 310, 419, 3465, 3289, 3382, 3409, -1000, -1000, 1657, 2313, + 2658, -1000, 344, -1000, 539, 344, -1000, 576, 576, 1778, + -1000, 1280, -1000, -1000, -1000, -1000, -1000, -1000, 49733, -16, + 475, -1000, -1000, 2652, 3020, -1000, 635, 1234, 1584, -1000, + 277, 4851, 40148, 2364, 40148, 49733, -1000, -1000, -1000, -1000, + -1000, -1000, 81, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, 378, -1000, 11606, 11606, - 11606, 11606, 11606, -1000, 775, 13529, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, 14170, 14170, 14170, 14170, 14170, 14170, 14170, - 14170, 14170, 14170, 14170, 14170, 3079, 1925, 14170, 14170, 14170, - 14170, 28253, 1527, 3273, 1651, 301, 1767, 1767, 1767, 1767, - 11606, -1000, 2012, 2302, 11606, 11606, 11606, 11606, 34633, 49945, - -1000, -1000, 55027, 11606, 11606, 3800, 11606, 3443, 11606, 11606, - 11606, 2878, 5822, 49945, 11606, -1000, 2875, 2872, -1000, -1000, - 2128, 11606, -1000, -1000, 11606, -1000, -1000, 11606, 14170, 11606, - -1000, 11606, 11606, 11606, -1000, -1000, 2907, 3443, 3443, 3443, - 1913, 11606, 11606, 3443, 3443, 3443, 1907, 3443, 3443, 3443, - 3443, 3443, 3443, 3443, 3443, 3443, 3443, 3443, 2866, 2865, - 2862, 10965, 3503, -228, -1000, 9036, 3408, 3503, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -269, 3090, - 49945, 2660, 2659, -346, 183, 468, 49945, 1219, -1000, -1000, - 49945, 2359, 49945, 2356, 80, 1130, 1100, 1107, -1000, -1000, - 49945, 51221, -1000, 49945, 2026, 49945, 49945, 3436, -1000, 3087, - 49945, 914, 914, 914, -1000, 45479, 40375, 49945, 49945, 2487, - 49945, 49945, 49945, 914, 914, 914, 914, 49945, -1000, 3364, - 40375, 3347, 918, -1000, 49945, 1640, 3432, 49945, -1000, -1000, - -1000, -1000, 3557, 14170, 14170, -1000, -1000, 11606, -1000, 276, - 46755, 1947, 1836, 1836, -1000, -1000, 49945, -1000, -1000, -1000, - 1947, 49945, 1947, 1947, 3557, 1947, -1000, -1000, -1000, 1836, - 1836, -1000, -1000, 11606, -1000, -1000, 1947, 1947, -1000, -1000, - 3557, 49945, 123, 3557, 3557, 115, -1000, -1000, -1000, 1836, - 49945, 49945, 914, 49945, -1000, 49945, 49945, -1000, -1000, 49945, - 49945, 4575, 49945, 45479, 46117, 3471, -1000, 40375, 49945, 49945, - 1638, -1000, 940, 37823, -1000, 49945, 1500, -1000, 74, -1000, - 61, 51, 1846, 51, 1846, 939, -1000, 680, 816, 23787, - 616, 40375, 6463, -1000, -1000, 1846, 1846, 6463, 6463, 1784, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, 1614, -1000, 298, - 3503, -1000, -1000, -1000, -1000, -1000, 2354, -1000, 49945, 45479, - 40375, 2487, 49945, 916, 49945, 49945, 49945, 49945, 49945, -1000, - 3086, 1742, -1000, 3418, 49945, 49945, 49945, 49945, 1606, -1000, - -1000, 20585, 1727, -1000, -1000, 2021, -1000, 11606, 15461, -255, - 11606, 15461, 15461, 11606, 15461, -1000, 11606, 312, -1000, -1000, - -1000, -1000, 2353, -1000, 2350, -1000, -1000, -1000, -1000, -1000, - 2657, 2657, -1000, 2347, -1000, -1000, -1000, -1000, 2343, -1000, - -1000, 2331, -1000, -1000, -1000, -1000, -169, 2855, 1184, -1000, - 2656, 3272, -229, -1000, 21869, 49945, 49945, 430, -355, 1992, - 1990, 1986, 3487, -1000, -229, -1000, 21227, 49945, 3503, -1000, - -233, 3408, 11606, 49945, -1000, 3493, -1000, -1000, 387, -1000, - -1000, -1000, 570, 444, -1000, -1000, -1000, -1000, -1000, -1000, - 1720, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -83, -85, 1589, -1000, 49945, -1000, -1000, 381, 40375, - 42289, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 265, -1000, - -1000, 181, -1000, 938, 289, 1800, -1000, -1000, 228, 211, - 224, 1028, 2302, -1000, 2070, 2070, 2032, -1000, 761, -1000, - -1000, -1000, -1000, 3082, -1000, -1000, -1000, 3841, 2192, -1000, - 1880, 1880, 1704, 1704, 1704, 1704, 1704, 2141, 2141, -1000, - -1000, -1000, 7113, 3079, 14170, 14170, 14170, 14170, 987, 987, - 3758, 2786, -1000, -1000, -1000, -1000, 11606, 180, 2018, -1000, - 11606, 2592, 1654, 2558, 1566, 1790, -1000, 2997, 11606, 1719, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, 313, -1000, 11334, + 11334, 11334, 11334, 11334, -1000, 1042, 13260, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, 13902, 13902, 13902, 13902, 13902, 13902, + 13902, 13902, 13902, 13902, 13902, 13902, 3011, 2029, 13902, 13902, + 13902, 13902, 28007, 1720, 3091, 1529, 305, 1696, 1696, 1696, + 1696, 11334, -1000, 1931, 2291, 11334, 11334, 11334, 11334, 34397, + 49733, -1000, -1000, 55030, 11334, 11334, 55069, 11334, 3329, 11334, + 11334, 11334, 2829, 5541, 49733, 11334, -1000, 2828, 2827, -1000, + -1000, 2124, 11334, -1000, -1000, 11334, -1000, -1000, 11334, 13902, + 11334, -1000, 11334, 11334, 11334, -1000, -1000, 1477, 3329, 3329, + 3329, 1929, 11334, 11334, 3329, 3329, 3329, 1908, 3329, 3329, + 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 2823, + 2822, 2819, 10692, 3382, -224, -1000, 8760, 3289, 3382, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -279, + 3017, 49733, 2657, 2656, -350, 172, 458, 49733, 1150, -1000, + -1000, 49733, 2307, 49733, 2300, 72, 1103, 1043, 1079, -1000, + -1000, 49733, 51011, -1000, 49733, 1977, 49733, 49733, 3318, -1000, + 3015, 49733, 862, 862, 862, -1000, 45260, 40148, 49733, 49733, + 2364, 49733, 49733, 49733, 862, 862, 862, 862, 49733, -1000, + 3248, 40148, 3242, 876, -1000, 49733, 1525, 3317, 49733, -1000, + -1000, -1000, -1000, 3430, 13902, 13902, -1000, -1000, 11334, -1000, + 232, 46538, 1860, 1740, 1740, -1000, -1000, 49733, -1000, -1000, + -1000, 1860, 49733, 1860, 1860, 3430, 1860, -1000, -1000, -1000, + 1740, 1740, -1000, -1000, 11334, -1000, -1000, 1860, 1860, -1000, + -1000, 3430, 49733, 64, 3430, 3430, 131, -1000, -1000, -1000, + 1740, 49733, 49733, 862, 49733, -1000, 49733, 49733, -1000, -1000, + 49733, 49733, 4765, 49733, 45260, 45899, 3353, -1000, 40148, 49733, + 49733, 1513, -1000, 904, 37592, -1000, 49733, 1453, -1000, 17, + -1000, 62, 48, 1763, 48, 1763, 903, -1000, 632, 797, + 23534, 572, 40148, 6183, -1000, -1000, 1763, 1763, 6183, 6183, + 1699, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 1504, -1000, + 266, 3382, -1000, -1000, -1000, -1000, -1000, 2297, -1000, 49733, + 45260, 40148, 2364, 49733, 866, 49733, 49733, 49733, 49733, 49733, + -1000, 3014, 1653, -1000, 3297, 49733, 49733, 49733, 49733, 1362, + -1000, -1000, 20327, 1627, -1000, -1000, 1972, -1000, 11334, 15195, + -257, 11334, 15195, 15195, 11334, 15195, -1000, 11334, 311, -1000, + -1000, -1000, -1000, 2293, -1000, 2292, -1000, -1000, -1000, -1000, + -1000, 2655, 2655, -1000, 2285, -1000, -1000, -1000, -1000, 2283, + -1000, -1000, 2282, -1000, -1000, -1000, -1000, -166, 2818, 1266, + -1000, 2654, 3176, -226, -1000, 21613, 49733, 49733, 412, -358, + 1909, 1903, 1902, 3365, -1000, -226, -1000, 20970, 49733, 3382, + -1000, -231, 3289, 11334, 49733, -1000, 3371, -1000, -1000, 344, + -1000, -1000, -1000, 576, 415, -1000, -1000, -1000, -1000, -1000, + -1000, 1626, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -93, -94, 1482, -1000, 49733, -1000, -1000, 277, + 40148, 42065, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 260, + -1000, -1000, 176, -1000, 898, 240, 1775, -1000, -1000, 212, + 203, 213, 963, 2291, -1000, 1983, 1983, 1986, -1000, 728, + -1000, -1000, -1000, -1000, 3013, -1000, -1000, -1000, 1843, 2193, + -1000, 1914, 1914, 1690, 1690, 1690, 1690, 1690, 2006, 2006, + -1000, -1000, -1000, 6834, 3011, 13902, 13902, 13902, 13902, 949, + 949, 4164, 4078, -1000, -1000, -1000, -1000, 11334, 185, 1925, + -1000, 11334, 2595, 1539, 2383, 1382, 1768, -1000, 2935, 11334, + 1618, -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, 2815, 2814, 2532, 3444, 2813, 11334, -1000, -1000, 1766, + 1754, 1749, -1000, 2264, 10050, -1000, -1000, -1000, 2811, 1613, + 2804, -1000, -1000, -1000, 2803, 1748, 1218, 2800, 1937, 2797, + 2796, 2790, 2788, 1480, 11334, 11334, 11334, 11334, 2787, 1745, + 1744, 11334, 11334, 11334, 11334, 2785, 11334, 11334, 11334, 11334, + 11334, 11334, 11334, 11334, 11334, 11334, 49733, 151, 151, 151, + 1465, 1464, -1000, -1000, 1743, -1000, 2291, -1000, -1000, 3289, + -1000, 3007, 2280, 1458, -1000, -1000, -336, 2547, 49733, 49733, + 168, 49733, 2648, -298, 49733, -1000, -1000, 2646, -1000, -1000, + -1000, 1114, 1065, 1086, -1000, 49733, -1000, 2636, 3290, 3370, + 856, 49733, 1159, 3003, 49733, 49733, 49733, 291, -1000, -1000, + 1349, -1000, 240, -29, 537, 1341, 3167, 3443, -137, 49733, + 49733, 49733, 49733, 3315, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, 44621, -1000, 3002, 1728, -1000, -1000, 1696, 1696, + 2291, 49733, 49733, 49733, 3165, 49733, 49733, 3430, 3430, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, 1860, 3430, 3430, 1432, + 1740, 1860, -1000, -1000, 1860, -358, -1000, 1860, -1000, -358, + 1597, -358, 49733, -1000, -1000, -1000, 3308, 2967, 1454, -1000, + -1000, -1000, 3408, 1781, 844, 844, 1136, 748, 3407, 19049, + -1000, 1782, 1339, 895, 3268, 355, -1000, 1782, -163, 819, + 1782, 1782, 1782, 1782, 1782, 1782, 1782, 652, 650, 1782, + 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, 1782, + 1125, 1782, 1782, 1782, 1782, 1782, -1000, 1782, 2997, 519, + -1000, -1000, -1000, -1000, -1000, -1000, 727, 597, 288, 3348, + 398, -1000, 392, 1349, 666, 3344, 421, 49733, 49733, 3559, + 1283, -1000, -1000, -1000, -1000, -1000, 28646, 28646, 22895, 28646, + -1000, 196, 1763, 48, 6, -1000, -1000, 1453, 6183, 1453, + 6183, 2262, -1000, -1000, 892, -1000, -1000, 1341, -1000, 49733, + 49733, -1000, -1000, 2994, 1900, -1000, -1000, 16483, -1000, 6183, + 6183, -1000, -1000, 30563, 49733, -1000, -23, -1000, 0, 3289, + -1000, 1331, -1000, -1000, 1445, 1341, 3175, 49733, 1331, 1331, + 1331, -1000, -1000, 17771, 49733, 49733, -1000, -1000, -1000, -1000, + 3430, 9402, -1000, 37592, -1000, -1000, 43982, -1000, 43343, 1842, + -1000, 15195, 2145, 188, -1000, 251, -325, 186, 2090, 184, + 2291, -1000, -1000, 2784, 2783, 1727, -1000, 1719, 2782, 1714, + 1713, 2260, -1000, 40, -1000, 3280, 1344, -1000, 2982, -1000, + 1706, 3234, -1000, 1442, -1000, 1899, 1701, -1000, -1000, -1000, + 11334, 42704, 11334, 1016, 1344, 1687, 3232, 1442, 3289, 2633, + -1000, 1425, -1000, 2251, 1592, 195, -1000, -1000, -1000, 49733, + 2652, 1686, 42065, 1363, -1000, 890, 1591, 1590, -1000, 40148, + 328, 40148, -1000, 40148, -1000, -1000, 400, -1000, 49733, 3283, + -1000, -1000, -1000, 2547, 1898, -356, 49733, -1000, -1000, -1000, + -1000, -1000, 1683, -1000, 949, 949, 4164, 3932, -1000, 13902, + -1000, 13902, 3072, -1000, 1822, -1000, 11334, 2123, 4768, 11334, + 4768, 1783, 26729, 34397, -119, 3287, 3041, 49733, -1000, -1000, + 11334, 11334, -1000, 3023, -1000, -1000, -1000, -1000, 11334, 11334, + 2258, -1000, 49733, -1000, -1000, -1000, -1000, 26729, -1000, 13902, + -1000, -1000, -1000, -1000, 11334, 1287, 1287, 3018, 1679, 151, + 151, 151, 3005, 3000, 2962, 1677, 151, 2958, 2946, 2926, + 2877, 2870, 2821, 2817, 2778, 2639, 2506, 1668, -1000, 2981, + -1000, -1000, 2036, 12618, 8760, -1000, -1000, 296, 1421, 2257, + 2631, 121, -1000, 1897, -1000, 2623, 49733, 49733, 1147, -1000, + 49733, 3442, -1000, -1000, -1000, -1000, 1062, -1000, 2612, -1000, + 274, 272, 2126, 306, 2781, 1415, -1000, -1000, 49733, -1000, + -1000, -1000, 17771, 2967, 2979, 2967, 138, 1782, 620, 40148, + 660, -1000, 49733, 2065, 1893, 3174, 1013, 3275, 49733, 2978, + 426, 2973, 2972, 3307, 510, 54778, 49733, 1327, -1000, 1572, + 4154, -1000, 49733, -1000, -1000, 49733, -1000, 2364, -1000, 1740, + -1000, -1000, 3430, -1000, -1000, 11334, 11334, 3430, 1740, 1740, + -1000, 1860, -1000, 49733, -1000, -358, 510, 54778, 3305, 5024, + 570, 2844, -1000, 49733, -1000, -1000, -1000, 857, -1000, 1053, + 862, 49733, 2010, 1053, 2009, 2970, -1000, -1000, 49733, 49733, + 49733, 49733, -1000, -1000, 49733, -1000, 49733, 49733, 49733, 49733, + 49733, 41426, -1000, 49733, 49733, -1000, 49733, 2008, 49733, 2002, + 3298, -1000, 1782, 1782, 1004, -1000, -1000, 627, -1000, 41426, + 2248, 2228, 2227, 2196, 2606, 2585, 2584, 1782, 1782, 2191, + 2575, 40787, 2572, 1181, 2178, 2177, 2172, 2349, 2570, 1231, + -1000, 2569, 2310, 2245, 2189, 49733, 2969, 2481, 514, -1000, + -1000, 2126, 138, 1782, 389, 49733, 1891, 1890, 620, 610, + 610, 536, -35, 24173, -1000, -1000, -1000, 49733, 37592, 37592, + 37592, 37592, 37592, 37592, -1000, 3216, 3193, 2968, -1000, 3197, + 3194, 3205, 3215, 3181, 49733, 37592, 2967, -1000, 40787, -1000, + -1000, -1000, 1720, 1661, 3740, 1034, 11334, 6183, -1000, -1000, + 8, 9, -1000, -1000, -1000, -1000, 40148, 2560, 572, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, 3369, 49733, 49733, 772, + 2780, 1398, -1000, -1000, -1000, 54778, 2952, 2952, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, 2952, 2952, 2966, + -1000, -1000, 2948, 2948, 2948, 2935, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, 2960, 2960, 2964, 2964, + 2960, -1000, -1000, 3414, -1000, 1394, -1000, -1000, 1564, -1000, + 1935, -342, 15195, 1857, 1756, -1000, 11334, 15195, 11334, -259, + 375, -261, -1000, -1000, -1000, 2558, -1000, -1000, -1000, 2170, + -1000, 2164, -1000, 189, 198, 2000, -226, 8760, 444, 49733, + -226, 49733, 8760, -1000, 49733, 177, -375, -376, 162, 2552, + 396, -226, 3369, 40, 11334, 3262, -1000, -1000, 49733, 2162, + -1000, -1000, -1000, 3439, 40148, 2364, 1723, 39509, -1000, 346, + -1000, 258, 634, 2551, -1000, 931, 115, 2549, 2547, -1000, + -1000, -1000, -1000, 13902, 1696, -1000, -1000, -1000, 2291, 11334, + 2779, -1000, 1029, 1029, 2240, 2764, 2760, -1000, 2952, 2952, + -1000, 2935, 2948, 2935, 1029, 1029, 2759, -1000, 2924, -1000, + 3287, -1000, 2209, 2500, -1000, 2493, 2485, 11334, -1000, 2758, + 3845, 1512, -54, -194, 151, 151, -1000, -1000, -1000, -1000, + 151, 151, 151, 151, -1000, 151, 151, 151, 151, 151, + 151, 151, 151, 151, 151, 151, 812, -103, -292, -106, + -293, -1000, 2750, 1376, -1000, -1000, -1000, -1000, -1000, 55069, + 1375, 546, 546, 2547, 2545, -1000, 884, 2544, 1110, 49733, + 2542, -302, -1000, 2540, -1000, -1000, 49733, 49733, 49733, 50372, + 594, 49733, 49733, 2538, -1000, 2536, 2534, 1159, 54778, 2748, + 3303, 18410, 3302, 2175, -1000, -1000, -1000, 29924, 610, -1000, + -1000, -1000, 715, 373, 2161, 579, -1000, 49733, 541, 3252, + 1889, 2533, 49733, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, 3275, -1000, 967, 470, 36314, 15844, -1000, 397, 49733, + -1000, 18410, 18410, 397, 492, 1878, -1000, 803, 1256, 128, + 37592, 49733, -1000, 36953, 2747, -1000, -1000, 1341, 3430, -1000, + 2291, 2291, -358, 3430, 3430, 1740, -1000, -1000, 492, -1000, + 397, -1000, 1569, 19688, 557, 508, 443, -1000, 705, -1000, + -1000, 794, 3260, 54778, -1000, 49733, -1000, 49733, -1000, 49733, + 49733, 862, 11334, 3260, 49733, 883, -1000, 1161, 511, 456, + 784, 784, 1366, -1000, 3287, -1000, -1000, 1364, -1000, -1000, + -1000, -1000, 49733, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + 26729, 26729, 3339, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, 2520, 2519, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - 2854, 2839, 2474, 3570, 2837, 11606, -1000, -1000, 1777, 1768, - 1765, -1000, 2367, 10324, -1000, -1000, -1000, 2835, 1703, 2825, - -1000, -1000, -1000, 2822, 1763, 1311, 2821, 1488, 2817, 2800, - 2799, 2798, 1569, 11606, 11606, 11606, 11606, 2796, 1753, 1748, - 11606, 11606, 11606, 11606, 2795, 11606, 11606, 11606, 11606, 11606, - 11606, 11606, 11606, 11606, 11606, 49945, 146, 146, 146, 1535, - 1534, -1000, -1000, 1744, -1000, 2302, -1000, -1000, 3408, -1000, - 3078, 2324, 1513, -1000, -1000, -332, 2590, 49945, 49945, 166, - 49945, 2655, -293, 49945, -1000, -1000, 2647, -1000, -1000, -1000, - 1127, 1091, 1110, -1000, 49945, -1000, 2645, 3399, 3492, 960, - 49945, 1262, 3064, 49945, 49945, 49945, 322, -1000, -1000, 1314, - -1000, 289, -3, 565, 1204, 3244, 3569, -121, 49945, 49945, - 49945, 49945, 3431, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, 44841, -1000, 3060, 1743, -1000, -1000, 1767, 1767, 2302, - 49945, 49945, 49945, 3227, 49945, 49945, 3557, 3557, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, 1947, 3557, 3557, 1466, 1836, - 1947, -1000, -1000, 1947, -355, -1000, 1947, -1000, -355, 1692, - -355, 49945, -1000, -1000, -1000, 3430, 3026, 1505, -1000, -1000, - -1000, 3546, 1615, 889, 889, 1135, 820, 3545, 19309, -1000, - 1829, 1357, 937, 3369, 394, -1000, 1829, -160, 864, 1829, - 1829, 1829, 1829, 1829, 1829, 1829, 776, 767, 1829, 1829, - 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1141, - 1829, 1829, 1829, 1829, 1829, -1000, 1829, 3059, 549, -1000, - -1000, -1000, -1000, -1000, -1000, 798, 705, 319, 3469, 434, - -1000, 429, 1314, 674, 3461, 459, 49945, 49945, 3551, 1495, - -1000, -1000, -1000, -1000, -1000, 28891, 28891, 23149, 28891, -1000, - 205, 1846, 51, 72, -1000, -1000, 1500, 6463, 1500, 6463, - 2323, -1000, -1000, 936, -1000, -1000, 1204, -1000, 49945, 49945, - -1000, -1000, 3058, 1984, -1000, -1000, 16747, -1000, 6463, 6463, - -1000, -1000, 30805, 49945, -1000, 3, -1000, 28, 3408, -1000, - 1189, -1000, -1000, 1468, 1204, 3270, 49945, 1189, 1189, 1189, - -1000, -1000, 18033, 49945, 49945, -1000, -1000, -1000, -1000, 3557, - 9677, -1000, 37823, -1000, -1000, 44203, -1000, 43565, 2004, -1000, - 15461, 2150, 192, -1000, 281, -315, 190, 1991, 189, 2302, - -1000, -1000, 2782, 2781, 1738, -1000, 1736, 2775, 1733, 1732, - 2310, -1000, 97, -1000, 3391, 1209, -1000, 3056, -1000, 1730, - 3338, -1000, 1467, -1000, 1983, 1722, -1000, -1000, -1000, 11606, - 42927, 11606, 1060, 1209, 1721, 3323, 1467, 3408, 2643, -1000, - 1453, -1000, 2290, 1683, 195, -1000, -1000, -1000, 49945, 2642, - 1701, 42289, 1343, -1000, 932, 1682, 1677, -1000, 40375, 383, - 40375, -1000, 40375, -1000, -1000, 401, -1000, 49945, 3405, -1000, - -1000, -1000, 2590, 1968, -349, 49945, -1000, -1000, -1000, -1000, - -1000, 1700, -1000, 987, 987, 3758, 1932, -1000, 14170, -1000, - 14170, 3231, -1000, 1988, -1000, 11606, 2119, 5115, 11606, 5115, - 1009, 26977, 34633, -112, 3396, 3225, 49945, -1000, -1000, 11606, - 11606, -1000, 3221, -1000, -1000, -1000, -1000, 11606, 11606, 2129, - -1000, 49945, -1000, -1000, -1000, -1000, 26977, -1000, 14170, -1000, - -1000, -1000, -1000, 11606, 1381, 1381, 3142, 1698, 146, 146, - 146, 3102, 3096, 3084, 1697, 146, 3023, 3005, 3000, 2988, - 2957, 2869, 2830, 2784, 2780, 2774, 1689, -1000, 3049, -1000, - -1000, 2118, 12888, 9036, -1000, -1000, 302, 1449, 2286, 2639, - 127, -1000, 1965, -1000, 2637, 49945, 49945, 1190, -1000, 49945, - 3565, -1000, -1000, -1000, -1000, 1089, -1000, 2631, -1000, 257, - 242, 2154, 360, 2769, 1444, -1000, -1000, 49945, -1000, -1000, - -1000, 18033, 3026, 3048, 3026, 177, 1829, 664, 40375, 795, - -1000, 49945, 2171, 1963, 3268, 584, 3387, 49945, 3047, 410, - 3046, 3044, 3429, 532, 5349, 49945, 1456, -1000, 1674, 362, - -1000, 49945, -1000, -1000, 49945, -1000, 2487, -1000, 1836, -1000, - -1000, 3557, -1000, -1000, 11606, 11606, 3557, 1836, 1836, -1000, - 1947, -1000, 49945, -1000, -355, 532, 5349, 3428, 4830, 756, - 2648, -1000, 49945, -1000, -1000, -1000, 897, -1000, 1080, 914, - 49945, 2085, 1080, 2079, 3039, -1000, -1000, 49945, 49945, 49945, - 49945, -1000, -1000, 49945, -1000, 49945, 49945, 49945, 49945, 49945, - 41651, -1000, 49945, 49945, -1000, 49945, 2076, 49945, 2071, 3373, - -1000, 1829, 1829, 1040, -1000, -1000, 683, -1000, 41651, 2284, - 2275, 2269, 2268, 2630, 2626, 2624, 1829, 1829, 2259, 2623, - 41013, 2622, 1320, 2258, 2256, 2255, 2349, 2611, 1062, -1000, - 2610, 2345, 2312, 2281, 49945, 3038, 2538, 547, -1000, -1000, - 2154, 177, 1829, 424, 49945, 1959, 1936, 664, 634, 634, - 564, -19, 24425, -1000, -1000, -1000, 49945, 37823, 37823, 37823, - 37823, 37823, 37823, -1000, 3302, 3297, 3037, -1000, 3310, 3296, - 3326, 3298, 2916, 49945, 37823, 3026, -1000, 41013, -1000, -1000, - -1000, 1527, 1686, 3961, 1067, 11606, 6463, -1000, -1000, 57, - 36, -1000, -1000, -1000, -1000, 40375, 2608, 616, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, 3491, 49945, 49945, 876, 2768, - 1435, -1000, -1000, -1000, 5349, 3010, 3010, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, 3010, 3010, 3025, -1000, - -1000, 3009, 3009, 3009, 2997, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, 3013, 3013, 3021, 3021, 3013, - -1000, -1000, 3555, -1000, 1431, -1000, -1000, 1673, -1000, 2014, - -341, 15461, 2006, 1854, -1000, 11606, 15461, 11606, -256, 406, - -259, -1000, -1000, -1000, 2605, -1000, -1000, -1000, 2253, -1000, - 2251, -1000, 201, 222, 2069, -229, 9036, 455, 49945, -229, - 49945, 9036, -1000, 49945, 169, -361, -362, 161, 2604, 453, - -229, 3491, 97, 11606, 3366, -1000, -1000, 49945, 2247, -1000, - -1000, -1000, 3564, 40375, 2487, 1796, 39737, -1000, 374, -1000, - 261, 643, 2602, -1000, 955, 120, 2593, 2590, -1000, -1000, - -1000, -1000, 14170, 1767, -1000, -1000, -1000, 2302, 11606, 2767, - -1000, 1095, 1095, 2384, 2765, 2764, -1000, 3010, 3010, -1000, - 2997, 3009, 2997, 1095, 1095, 2763, -1000, 2994, -1000, 3396, - -1000, 2294, 2743, -1000, 2576, 2531, 11606, -1000, 2759, 3734, - 1414, -40, -197, 146, 146, -1000, -1000, -1000, -1000, 146, - 146, 146, 146, -1000, 146, 146, 146, 146, 146, 146, - 146, 146, 146, 146, 146, 858, -101, -282, -104, -285, - -1000, 2750, 1429, -1000, -1000, -1000, -1000, -1000, 3800, 1393, - 580, 580, 2590, 2589, -1000, 931, 2586, 1125, 49945, 2585, - -305, -1000, 2584, -1000, -1000, 49945, 49945, 49945, 50583, 693, - 49945, 49945, 2579, -1000, 2577, 2573, 1262, 5349, 2749, 3427, - 18671, 3424, 2377, -1000, -1000, -1000, 30167, 634, -1000, -1000, - -1000, 763, 608, 2245, 624, -1000, 49945, 602, 3353, 1927, - 2570, 49945, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - 3387, -1000, 1015, 518, 36547, 16109, -1000, 428, 49945, -1000, - 18671, 18671, 428, 523, 1942, -1000, 850, 1433, 141, 37823, - 49945, -1000, 37185, 2747, -1000, -1000, 1204, 3557, -1000, 2302, - 2302, -355, 3557, 3557, 1836, -1000, -1000, 523, -1000, 428, - -1000, 1735, 19947, 637, 519, 507, -1000, 706, -1000, -1000, - 845, 3361, 5349, -1000, 49945, -1000, 49945, -1000, 49945, 49945, - 914, 11606, 3361, 49945, 927, -1000, 1215, 493, 492, 872, - 872, 1388, -1000, 3396, -1000, -1000, 1384, -1000, -1000, -1000, - -1000, 49945, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 26977, - 26977, 3450, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, 2569, 2568, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, 49733, 1660, -1000, + 1879, 2155, 2512, 2175, 29924, 1876, 1763, 2511, 2505, 610, + -1000, 2504, 2503, -1000, 2065, 1875, 925, 49733, -1000, 1340, + 49733, 49733, -1000, 1318, -1000, 1869, 3162, 3172, 3162, -1000, + 3162, -1000, -1000, -1000, -1000, 3211, 2499, -1000, 3196, -1000, + 3195, -1000, -1000, -1000, -1000, 1318, -1000, -1000, -1000, -1000, + -1000, 1034, -1000, 3368, 1053, 1053, 1053, 2742, -1000, -1000, + -1000, -1000, 1363, 2741, -1000, -1000, -1000, 3455, -1000, -1000, + -1000, -1000, -1000, -1000, 17771, 3274, 3412, 3404, 38870, -1000, + -342, 1771, -1000, 2069, 181, 2062, 49733, -1000, -1000, -1000, + 2738, 2737, -234, 192, 3403, 3402, 1090, -1000, 2736, 1357, + -226, -1000, -1000, 1344, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -392, -226, -1000, 1344, -1000, 189, -1000, -1000, 3264, + -1000, -1000, 2364, -1000, 254, -1000, -1000, -1000, -1000, -1000, + -1000, 222, -1000, 49733, -1000, 1350, 109, -1000, 2291, -1000, + -1000, -1000, -1000, -1000, 4768, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, 2497, -1000, -1000, 11334, -1000, + -1000, -1000, 2453, -1000, -1000, 11334, 2735, 2494, 2734, 2490, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, 49945, 1685, -1000, 1924, - 2223, 2564, 2377, 30167, 1915, 1846, 2563, 2561, 634, -1000, - 2560, 2557, -1000, 2171, 1912, 953, 49945, -1000, 1195, 49945, - 49945, -1000, 1340, -1000, 1883, 3242, 3260, 3242, -1000, 3242, - -1000, -1000, -1000, -1000, 3292, 2551, -1000, 3289, -1000, 3040, - -1000, -1000, -1000, -1000, 1340, -1000, -1000, -1000, -1000, -1000, - 1067, -1000, 3490, 1080, 1080, 1080, 2746, -1000, -1000, -1000, - -1000, 1343, 2736, -1000, -1000, -1000, 3583, -1000, -1000, -1000, - -1000, -1000, -1000, 18033, 3384, 3549, 3544, 39099, -1000, -341, - 1961, -1000, 2080, 184, 1985, 49945, -1000, -1000, -1000, 2735, - 2734, -235, 194, 3535, 3532, 1139, -1000, 2733, 1328, -229, - -1000, -1000, 1209, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -364, -229, -1000, 1209, -1000, 201, -1000, -1000, 3381, -1000, - -1000, 2487, -1000, 260, -1000, -1000, -1000, -1000, -1000, -1000, - 274, -1000, 49945, -1000, 1236, 119, -1000, 2302, -1000, -1000, - -1000, -1000, -1000, 5115, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, 2548, -1000, -1000, 11606, -1000, -1000, - -1000, 2509, -1000, -1000, 11606, 2732, 2546, 2731, 2545, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, 3588, -1000, 3531, 1664, - 2730, 2728, 1647, 2727, 2726, -1000, 11606, 2724, 3800, 1049, - 2544, 1049, -1000, -1000, 454, 29529, 49945, 3559, -1000, 49945, - 2543, -1000, -1000, 49945, 2154, 691, 2154, 783, 49945, -1000, - -1000, -1000, -1000, -1000, 977, 428, 2723, 1222, -1000, -1000, - -1000, -1000, 428, -1000, 2539, 285, -1000, -1000, -1000, -1000, - 2222, -1000, -1000, 2229, 1737, 308, -1000, -1000, -1000, -1000, - -1000, -1000, 2372, 49945, 38461, 2374, 1875, -356, -1000, 2991, - -1000, 1829, 1829, 1829, 49945, 1645, -1000, 1829, 1829, 2722, - -1000, -1000, 2721, 2719, -122, 871, 1895, 1892, -1000, 2181, - 28891, 37823, 37185, 1325, -1000, 1670, -1000, -1000, -1000, -1000, - -1000, -1000, 3557, 871, -1000, 597, 2180, 14170, 2990, 14170, - 2983, 663, 2981, 1644, -1000, 49945, -1000, -1000, 49945, 4135, - 2980, -1000, 2978, 3223, 577, 2977, 2963, 49945, 2484, -1000, - 3361, 49945, 805, 3379, -1000, -1000, -1000, 461, -1000, -1000, - -1000, 712, -1000, 49945, -1000, 49945, -1000, 1757, -1000, 26977, - -1000, -1000, 1643, -1000, 2538, 2535, 3800, -1000, -1000, 285, - 2530, 6463, -1000, -1000, -1000, -1000, -1000, 3353, 2528, 2372, - 49945, -1000, 49945, 1195, 1195, 3588, 49945, 9036, -1000, -1000, - 11606, 2961, -1000, 11606, -1000, -1000, -1000, 2718, -1000, -1000, - -1000, -1000, -1000, 2959, 3380, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, 1454, -1000, 11606, 12247, -1000, 900, 15461, -260, - 403, -1000, -1000, -1000, -238, 2522, -1000, -1000, 3527, 2521, - 2404, 49945, -1000, -1000, 1209, -1000, 1209, -235, -1000, -1000, - 1204, -1000, -1000, 1170, 779, -1000, 2715, 278, -1000, 2453, - -1000, 2403, 146, -1000, 146, -1000, 277, 11606, -1000, 2519, - -1000, -1000, -1000, 2518, -1000, -1000, 2363, -1000, 2709, -1000, - 2517, -1000, -1000, 49945, -1000, -1000, 1119, 2513, -357, -1000, - 2511, 2154, 2510, 2154, 49945, 688, 5349, -129, -122, 18671, - -129, -1000, -1000, 398, 441, -1000, -1000, 2172, 685, -1000, - -1000, 2495, 662, -1000, 1195, -1000, 1874, 2098, 2442, 34633, - 26977, 28253, 2493, -1000, -1000, 36547, 1454, 1454, 5355, 378, - 55131, -1000, 2956, 1155, 1864, -1000, 2178, -1000, 2177, -1000, - 3557, 1325, 139, -1000, -1000, 1750, -1000, 1155, 2648, 3526, - -1000, 3668, 49945, 2910, 49945, 2955, 1858, 14170, -1000, 845, - 3126, -1000, -1000, 4135, -1000, -1000, 2094, 14170, -1000, -1000, - 2489, 28253, 1034, 1853, 1851, 1035, 2954, -1000, 719, 3582, - -1000, -1000, -1000, 1039, 2951, -1000, 2066, 2057, -1000, 49945, - -1000, 34633, 34633, 813, 813, 34633, 34633, 2950, 872, -1000, - -1000, 14170, -1000, -1000, 1829, -1000, -1000, -1000, 1829, 1752, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, 2374, -1000, -1000, - 1189, -1000, 3503, -1000, -1000, 2302, 49945, 2302, -1000, 35909, - -1000, 3524, 3522, -1000, 2302, 258, 252, 2949, 2947, -1000, - -341, 49945, 49945, -240, 2176, -1000, 2486, 225, -1000, -1000, - 1187, -238, -243, 115, 26977, 1850, -1000, 2700, 366, -148, - -1000, -1000, -1000, -1000, 2698, -1000, 644, -1000, -1000, -1000, - 1184, 2693, 2686, -1000, -1000, -1000, -1000, 49945, -1000, 2431, - -1000, 2485, -1000, 2483, 686, 2154, -116, -1000, -1000, 466, - -1000, -1000, -1000, 650, 2394, -1000, -1000, 439, -1000, -1000, - -1000, 2372, 2481, -1000, -1000, 109, -1000, 1843, 1635, -1000, - -1000, -1000, -1000, -1000, -1000, 842, -1000, 428, 55072, -1000, - 1357, 27615, -1000, 1170, 842, 549, 33357, 699, 305, -1000, - 2167, -1000, -1000, 3588, -1000, 698, -1000, 635, -1000, 1633, - -1000, 1632, 35271, 2160, 2880, -1000, 5417, 975, -1000, -1000, - 3758, -1000, -1000, -1000, -1000, -1000, -1000, 2480, 2464, -1000, - -1000, -1000, -1000, -1000, 2157, 2932, 1, 3446, 2451, -1000, - -1000, 2918, 1623, 1622, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, 1619, 1618, 34633, -1000, -1000, 3758, - 2156, 26977, 1829, -1000, -1000, 1592, 1582, -1000, -1000, -1000, - -1000, -1000, -320, 2913, 11606, 11606, -1000, -1000, -1000, 2912, - -1000, -1000, 3518, -240, -249, 2449, 199, 244, -1000, 2447, - -1000, -117, 3316, -153, -1000, -1000, 833, -231, 163, 143, - 131, -1000, -1000, -1000, 11606, -1000, -1000, -1000, 108, -1000, - 1837, -1000, -1000, 2154, 2445, 49945, 689, -1000, -1000, -1000, - -1000, 271, -1000, -1000, -1000, -1000, -1000, -1000, 2442, 2437, - -1000, 583, 3517, -1000, 55131, -1000, 1829, -1000, 583, 1565, - -1000, 1829, 1829, -1000, 529, -1000, 1852, -1000, 2153, -1000, - 3503, -1000, 527, -1000, 586, -1000, -1000, -1000, 1538, -1000, - -1000, -1000, 5417, 606, -1000, 836, 2905, -1000, -1000, 2684, - 11606, 2901, 1829, 2681, -107, 34633, 3007, 3002, 2909, 2566, - 1528, -1000, -1000, 26977, -1000, -1000, 33995, -1000, 2893, 1510, - 1462, 49945, 2404, -1000, -1000, 2435, -1000, 898, 207, 244, - -1000, 3516, 217, 3515, 3513, 1180, 3315, -1000, -1000, 2022, - -1000, 185, 171, 160, -1000, -1000, -1000, -1000, -1000, 2431, - 2430, 2429, -1000, 595, -1000, 371, -1000, -1000, -1000, 306, - -1000, 3511, 756, -1000, 26977, -1000, -1000, 33357, 1454, 1454, - -1000, -1000, 2148, -1000, -1000, -1000, -1000, 2147, -1000, -1000, - -1000, 1452, -1000, 49945, 1010, 8395, -1000, 2348, -1000, 49945, - -1000, 3234, -1000, 323, 1438, 306, 813, 306, 813, 306, - 813, 306, 813, 368, -1000, -1000, -1000, 1436, 11606, -1000, - -1000, 1404, -1000, -1000, -1000, 2890, 2145, 194, 186, 3508, - -1000, 2404, 3507, 2404, 2404, -1000, 193, -138, 833, -1000, - -1000, -1000, -1000, -1000, -1000, 2423, -1000, -1000, -1000, -1000, - 1829, 1829, 2414, 2413, 500, -1000, -1000, 1829, 1829, 1829, - 1829, 32719, 637, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - 606, 55131, -1000, 8395, 1397, -1000, 2302, -1000, 872, -1000, - -1000, 3014, 2960, 3563, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, 2885, 2581, -1000, 49945, 3442, 26339, - 187, -1000, -1000, -1000, 2410, -1000, 2404, -1000, -1000, 1821, - -150, -1000, -278, 2137, 2136, -1000, -1000, 49945, 2130, 2127, - 2125, 2401, -1000, 49945, 597, -1000, 55131, 1394, -1000, 8395, - -1000, -1000, 3581, -1000, 3579, 1000, 1000, 306, 306, 306, - 306, 11606, -1000, -1000, -1000, 49945, -1000, 1390, -1000, -1000, - -1000, 1667, -1000, -1000, -1000, -1000, 2400, -157, -1000, -1000, - 2382, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 1249, 2648, - -1000, -1000, -1000, -1000, -1000, 2168, 741, -1000, 2458, 1178, - -1000, 1816, -1000, 32081, 49945, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, 49945, 7754, -1000, 1657, -1000, -1000, - 2302, 49945, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, 3465, -1000, 3401, + 1651, 2732, 2727, 1649, 2724, 2723, -1000, 11334, 2722, 55069, + 1014, 2489, 1014, -1000, -1000, 417, 29285, 49733, 3438, -1000, + 49733, 2484, -1000, -1000, 49733, 2126, 593, 2126, 683, 49733, + -1000, -1000, -1000, -1000, -1000, 945, 397, 2720, 1346, -1000, + -1000, -1000, -1000, 397, -1000, 2482, 205, -1000, -1000, -1000, + -1000, 2154, -1000, -1000, 2119, 1559, 279, -1000, -1000, -1000, + -1000, -1000, -1000, 2129, 49733, 38231, 2151, 1856, -359, -1000, + 2923, -1000, 1782, 1782, 1782, 49733, 1648, -1000, 1782, 1782, + 2716, -1000, -1000, 2706, 2701, -139, 798, 1853, 1820, -1000, + 2153, 28646, 37592, 36953, 1298, -1000, 1560, -1000, -1000, -1000, + -1000, -1000, -1000, 3430, 798, -1000, 552, 2147, 13902, 2922, + 13902, 2920, 563, 2919, 1645, -1000, 49733, -1000, -1000, 49733, + 4175, 2916, -1000, 2915, 3164, 545, 2912, 2911, 49733, 2407, + -1000, 3260, 49733, 781, 3271, -1000, -1000, -1000, 441, -1000, + -1000, -1000, 577, -1000, 49733, -1000, 49733, -1000, 1664, -1000, + 26729, -1000, -1000, 1643, -1000, 2481, 2473, 55069, -1000, -1000, + 205, 2472, 6183, -1000, -1000, -1000, -1000, -1000, 3252, 2471, + 2129, 49733, -1000, 49733, 1340, 1340, 3465, 49733, 8760, -1000, + -1000, 11334, 2910, -1000, 11334, -1000, -1000, -1000, 2700, -1000, + -1000, -1000, -1000, -1000, 2909, 3267, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, 1460, -1000, 11334, 11976, -1000, 848, 15195, + -266, 368, -1000, -1000, -1000, -236, 2469, -1000, -1000, 3399, + 2464, 2335, 49733, -1000, -1000, 1344, -1000, 1344, -234, -1000, + -1000, 1341, -1000, -1000, 1108, 676, -1000, 2697, 275, -1000, + 2376, -1000, 2368, 151, -1000, 151, -1000, 250, 11334, -1000, + 2458, -1000, -1000, -1000, 2456, -1000, -1000, 2363, -1000, 2689, + -1000, 2454, -1000, -1000, 49733, -1000, -1000, 1095, 2452, -360, + -1000, 2451, 2126, 2449, 2126, 49733, 590, 54778, -145, -139, + 18410, -145, -1000, -1000, 395, 406, -1000, -1000, 2089, 633, + -1000, -1000, 2445, 628, -1000, 1340, -1000, 1831, 2021, 2384, + 34397, 26729, 28007, 2440, -1000, -1000, 36314, 1460, 1460, 54993, + 313, 55098, -1000, 2893, 1128, 1819, -1000, 2146, -1000, 2142, + -1000, 3430, 1298, 126, -1000, -1000, 1632, -1000, 1128, 2844, + 3398, -1000, 3583, 49733, 3451, 49733, 2891, 1823, 13902, -1000, + 794, 3231, -1000, -1000, 4175, -1000, -1000, 2020, 13902, -1000, + -1000, 2435, 28007, 980, 1806, 1801, 956, 2889, -1000, 609, + 3452, -1000, -1000, -1000, 996, 2888, -1000, 1996, 1993, -1000, + 49733, -1000, 34397, 34397, 897, 897, 34397, 34397, 2886, 784, + -1000, -1000, 13902, -1000, -1000, 1782, -1000, -1000, -1000, 1782, + 1647, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 2151, -1000, + -1000, 1331, -1000, 3382, -1000, -1000, 2291, 49733, 2291, -1000, + 35675, -1000, 3397, 3396, -1000, 2291, 252, 248, 2884, 2883, + -1000, -342, 49733, 49733, -239, 2141, -1000, 2428, 197, -1000, + -1000, 1326, -236, -241, 131, 26729, 1797, -1000, 2688, 366, + -150, -1000, -1000, -1000, -1000, 2687, -1000, 997, -1000, -1000, + -1000, 1266, 2684, 2681, -1000, -1000, -1000, -1000, 49733, -1000, + 2375, -1000, 2427, -1000, 2424, 582, 2126, -129, -1000, -1000, + 455, -1000, -1000, -1000, 624, 2325, -1000, -1000, 402, -1000, + -1000, -1000, 2129, 2423, -1000, -1000, 108, -1000, 1791, 1635, + -1000, -1000, -1000, -1000, -1000, -1000, 786, -1000, 397, 55031, + -1000, 1339, 27368, -1000, 1108, 786, 519, 33119, 659, 299, + -1000, 2140, -1000, -1000, 3465, -1000, 651, -1000, 559, -1000, + 1634, -1000, 1624, 35036, 2133, 3294, -1000, 54926, 908, -1000, + -1000, 4164, -1000, -1000, -1000, -1000, -1000, -1000, 2415, 2414, + -1000, -1000, -1000, -1000, -1000, 2132, 2880, 37, 3325, 2411, + -1000, -1000, 2865, 1620, 1582, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, 1581, 1574, 34397, -1000, -1000, + 4164, 2128, 26729, 1782, -1000, -1000, 1558, 1524, -1000, -1000, + -1000, -1000, -1000, -320, 2864, 11334, 11334, -1000, -1000, -1000, + 2861, -1000, -1000, 3395, -239, -251, 2410, 179, 230, -1000, + 2396, -1000, -131, 3225, -159, -1000, -1000, 973, -228, 148, + 146, 144, -1000, -1000, -1000, 11334, -1000, -1000, -1000, 103, + -1000, 1790, -1000, -1000, 2126, 2395, 49733, 604, -1000, -1000, + -1000, -1000, 221, -1000, -1000, -1000, -1000, -1000, -1000, 2384, + 2382, -1000, 548, 3393, -1000, 55098, -1000, 1782, -1000, 548, + 1523, -1000, 1782, 1782, -1000, 503, -1000, 1799, -1000, 2121, + -1000, 3382, -1000, 499, -1000, 550, -1000, -1000, -1000, 1507, + -1000, -1000, -1000, 54926, 553, -1000, 758, 2860, -1000, -1000, + 2678, 11334, 2859, 1782, 2677, -117, 34397, 3163, 2805, 2660, + 2508, 1476, -1000, -1000, 26729, -1000, -1000, 33758, -1000, 2858, + 1390, 1385, 49733, 2335, -1000, -1000, 2379, -1000, 858, 187, + 230, -1000, 3392, 193, 3391, 3390, 1190, 3221, -1000, -1000, + 1985, -1000, 165, 163, 160, -1000, -1000, -1000, -1000, -1000, + 2375, 2374, 2372, -1000, 588, -1000, 334, -1000, -1000, -1000, + 337, -1000, 3388, 570, -1000, 26729, -1000, -1000, 33119, 1460, + 1460, -1000, -1000, 2120, -1000, -1000, -1000, -1000, 2116, -1000, + -1000, -1000, 1353, -1000, 49733, 990, 8118, -1000, 2309, -1000, + 49733, -1000, 3171, -1000, 308, 1324, 337, 897, 337, 897, + 337, 897, 337, 897, 315, -1000, -1000, -1000, 1316, 11334, + -1000, -1000, 1314, -1000, -1000, -1000, 2856, 2114, 192, 178, + 3387, -1000, 2335, 3384, 2335, 2335, -1000, 157, -148, 973, + -1000, -1000, -1000, -1000, -1000, -1000, 2362, -1000, -1000, -1000, + -1000, 1782, 1782, 2344, 2342, 462, -1000, -1000, 1782, 1782, + 1782, 1782, -1000, 32480, 557, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, 553, 55098, -1000, 8118, 1300, -1000, 2291, -1000, + 784, -1000, -1000, 3094, 2961, 3434, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, 2853, 2537, -1000, 49733, + 3323, 26090, 174, -1000, -1000, -1000, 2341, -1000, 2335, -1000, + -1000, 1770, -151, -1000, -290, 2111, 2100, -1000, -1000, 49733, + 2079, 2078, 2033, 2319, -1000, 49733, 552, -1000, 55098, 1294, + -1000, 8118, -1000, -1000, 3450, -1000, 3448, 896, 896, 337, + 337, 337, 337, 11334, -1000, -1000, -1000, 49733, -1000, 1278, + -1000, -1000, -1000, 1537, -1000, -1000, -1000, -1000, 2301, -160, + -1000, -1000, 2203, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + 1277, 2844, -1000, -1000, -1000, -1000, -1000, 2101, 615, -1000, + 2381, 1149, -1000, 1769, -1000, 31841, 49733, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, 49733, 7476, -1000, 1478, + -1000, -1000, 2291, 49733, -1000, } var yyPgo = [...]int{ - 0, 185, 3600, 251, 182, 4257, 87, 247, 272, 253, - 243, 242, 4256, 4255, 4254, 3393, 3392, 4252, 4251, 4250, - 4249, 4246, 4245, 4244, 4243, 4241, 4240, 4239, 4238, 4237, - 4236, 4235, 4234, 4229, 4228, 4227, 4226, 4225, 4224, 4223, - 4222, 4219, 4216, 4215, 4214, 4213, 4212, 239, 4211, 4210, - 4209, 4208, 4207, 4205, 4203, 4202, 4201, 4200, 4199, 4198, - 4197, 4196, 4194, 4193, 4191, 4190, 4189, 4188, 4185, 4184, - 4175, 4173, 4172, 4171, 4170, 4169, 4168, 4166, 4165, 4164, - 4163, 4162, 4161, 4156, 4155, 210, 4154, 3378, 4153, 4151, - 4148, 4147, 4145, 4144, 4143, 4142, 4141, 4136, 4135, 311, - 4134, 4128, 4115, 4114, 4113, 4110, 4106, 4103, 4102, 4101, - 4100, 4099, 4098, 289, 4097, 4096, 4094, 4093, 230, 4092, - 262, 4088, 175, 149, 4085, 4082, 4081, 4080, 4079, 4078, - 4077, 4076, 4075, 4074, 4073, 4072, 4069, 4068, 236, 213, - 75, 4066, 50, 4065, 4063, 214, 4062, 147, 4061, 145, - 4060, 4056, 4054, 4053, 4052, 4050, 4049, 4048, 4047, 4046, - 4045, 4043, 4041, 4029, 4024, 4022, 4021, 4016, 4015, 4010, - 4009, 4008, 4007, 4006, 54, 4005, 256, 4004, 78, 4001, - 180, 4000, 70, 3999, 45, 132, 264, 2547, 245, 3998, - 189, 3997, 3996, 240, 178, 3995, 3981, 274, 3979, 233, - 226, 163, 108, 125, 3978, 144, 3977, 266, 47, 40, - 246, 156, 3976, 3975, 58, 161, 124, 3971, 208, 98, - 110, 3970, 3969, 148, 3968, 238, 186, 3965, 109, 3963, - 3962, 3960, 3959, 3957, 198, 194, 3955, 3953, 138, 3951, - 3950, 67, 142, 3949, 80, 128, 169, 126, 3948, 1675, - 122, 91, 3946, 136, 100, 3945, 119, 3944, 3941, 3940, - 3938, 191, 3936, 3935, 134, 57, 3934, 3933, 3932, 69, - 3931, 79, 3928, 44, 3927, 59, 3923, 3922, 3918, 3917, - 3916, 3915, 3913, 3912, 3897, 3896, 3892, 3891, 56, 3890, - 3889, 3887, 3874, 7, 14, 17, 3871, 27, 3870, 173, - 3868, 3867, 166, 3864, 197, 3862, 3861, 99, 92, 3860, - 93, 162, 3850, 10, 28, 77, 3849, 3848, 3846, 327, - 3845, 3843, 3842, 273, 3841, 3840, 3839, 168, 3838, 3835, - 3834, 658, 3832, 3831, 3830, 3829, 3827, 3826, 436, 3824, - 1, 212, 41, 3823, 129, 150, 3822, 39, 31, 3806, - 49, 113, 201, 131, 101, 3804, 3803, 3802, 140, 196, - 111, 29, 0, 104, 218, 158, 3801, 3800, 3797, 261, - 3796, 219, 260, 254, 281, 258, 250, 3795, 3794, 61, - 3793, 159, 30, 53, 133, 96, 21, 249, 3791, 452, - 9, 188, 3790, 205, 3789, 8, 18, 123, 154, 3788, - 3787, 37, 267, 3784, 3782, 3781, 130, 3777, 3775, 184, - 60, 3774, 3773, 3772, 3771, 36, 3770, 179, 16, 3769, - 102, 3768, 255, 3767, 215, 160, 181, 177, 165, 220, - 221, 83, 82, 3765, 1844, 157, 103, 15, 3762, 224, - 3761, 171, 116, 3760, 105, 3759, 241, 259, 207, 3758, - 187, 11, 43, 38, 32, 48, 13, 270, 203, 3756, - 3754, 24, 52, 3752, 55, 3750, 20, 3749, 3748, 51, - 3747, 74, 5, 3746, 3743, 19, 22, 3742, 34, 204, - 174, 120, 95, 64, 3740, 3737, 141, 216, 3736, 143, - 164, 155, 3735, 81, 3734, 3733, 3731, 3729, 3050, 248, - 3727, 3726, 3725, 3724, 3723, 3720, 3719, 3715, 211, 3714, - 135, 42, 3713, 3712, 3710, 3709, 88, 152, 3708, 3707, - 3706, 3702, 33, 146, 3701, 12, 3699, 26, 23, 35, - 3697, 106, 3696, 3, 192, 3695, 3694, 4, 3692, 3691, - 2, 3690, 3689, 137, 3688, 97, 25, 172, 112, 3685, - 3683, 89, 209, 151, 3682, 3681, 94, 237, 200, 3680, - 90, 232, 252, 3678, 206, 3677, 3676, 3674, 3672, 3671, - 1248, 3670, 3669, 235, 68, 85, 3668, 229, 121, 3666, - 3664, 86, 167, 118, 115, 62, 84, 3662, 114, 202, - 3661, 195, 3660, 257, 3658, 3656, 107, 3655, 3654, 3651, - 3648, 193, 3647, 3646, 190, 231, 3644, 3637, 265, 3636, - 3635, 3634, 3633, 3631, 3619, 3616, 3612, 3611, 3603, 222, - 499, 3602, + 0, 181, 3478, 241, 179, 4165, 87, 254, 284, 253, + 248, 245, 4149, 4148, 4143, 3292, 3290, 4138, 4137, 4136, + 4130, 4123, 4122, 4121, 4120, 4117, 4116, 4115, 4114, 4113, + 4112, 4108, 4105, 4104, 4103, 4102, 4101, 4100, 4099, 4098, + 4096, 4095, 4094, 4090, 4087, 4071, 4070, 242, 4068, 4067, + 4065, 4064, 4063, 4061, 4060, 4056, 4055, 4054, 4053, 4052, + 4051, 4050, 4048, 4047, 4044, 4043, 4041, 4039, 4038, 4037, + 4036, 4035, 4030, 4029, 4028, 4027, 4026, 4024, 4023, 4018, + 4017, 4015, 4014, 4010, 4009, 246, 4008, 3289, 4007, 4005, + 4004, 4002, 4001, 4000, 3985, 3981, 3980, 3979, 3978, 226, + 3977, 3976, 3973, 3972, 3971, 3970, 3967, 3965, 3964, 3963, + 3961, 3960, 3958, 290, 3956, 3954, 3952, 3951, 274, 3950, + 211, 3949, 176, 132, 3947, 3946, 3945, 3944, 3943, 3942, + 3941, 3940, 3939, 3938, 3936, 3935, 3934, 3933, 237, 212, + 74, 3929, 48, 3928, 3924, 216, 3923, 148, 3922, 143, + 3920, 3919, 3918, 3917, 3916, 3914, 3913, 3911, 3907, 3906, + 3905, 3904, 3903, 3901, 3900, 3898, 3897, 3893, 3892, 3891, + 3890, 3889, 3885, 3884, 51, 3880, 255, 3879, 75, 3878, + 183, 3877, 70, 3876, 88, 129, 261, 2042, 240, 3875, + 188, 3872, 3871, 250, 178, 3869, 3868, 273, 3866, 144, + 221, 163, 102, 120, 3865, 142, 3864, 265, 47, 34, + 251, 146, 3863, 3856, 56, 174, 123, 3854, 213, 103, + 113, 3852, 3851, 151, 3850, 230, 186, 3849, 110, 3847, + 3842, 3841, 3840, 3838, 200, 195, 3836, 3835, 141, 3834, + 3832, 95, 135, 3831, 78, 126, 167, 125, 3829, 2332, + 131, 99, 3828, 122, 107, 3827, 97, 3826, 3825, 3824, + 3823, 194, 3822, 3820, 149, 57, 3817, 3807, 3806, 69, + 3804, 80, 3803, 41, 3801, 59, 3800, 3799, 3798, 3797, + 3795, 3794, 3793, 3792, 3791, 3790, 3788, 3786, 54, 3785, + 3783, 3782, 3779, 7, 14, 17, 3778, 27, 3776, 165, + 3775, 3774, 162, 3773, 193, 3772, 3770, 96, 92, 3769, + 93, 159, 3768, 9, 28, 77, 3767, 3763, 3762, 64, + 3761, 3760, 3759, 271, 3758, 3757, 3756, 175, 3755, 3753, + 3751, 2795, 3750, 3749, 3748, 3747, 3746, 3745, 371, 3742, + 1, 215, 44, 3741, 133, 137, 3739, 40, 31, 3738, + 49, 118, 202, 136, 106, 3736, 3722, 3721, 658, 201, + 104, 29, 0, 105, 217, 166, 3720, 3719, 3717, 257, + 3715, 233, 231, 222, 317, 259, 169, 3713, 3711, 61, + 3710, 161, 30, 53, 168, 91, 22, 249, 3709, 452, + 10, 185, 3708, 206, 3707, 8, 16, 262, 154, 3705, + 3702, 37, 267, 3698, 3697, 3696, 138, 3695, 3694, 184, + 60, 3693, 3692, 3690, 3689, 36, 3686, 189, 20, 3683, + 130, 3681, 239, 3679, 238, 155, 190, 182, 156, 219, + 220, 82, 81, 3678, 1868, 157, 109, 15, 3677, 224, + 3676, 298, 115, 3675, 89, 3673, 247, 260, 207, 3672, + 187, 11, 50, 39, 32, 45, 12, 286, 204, 3671, + 3669, 23, 52, 3668, 58, 3667, 21, 3665, 3664, 43, + 3663, 62, 5, 3662, 3657, 19, 18, 3656, 38, 205, + 172, 124, 101, 67, 3655, 3652, 134, 140, 3649, 150, + 171, 173, 3647, 79, 3644, 3639, 3636, 3626, 3051, 258, + 3625, 3623, 3622, 3621, 3618, 3617, 3616, 3613, 214, 3612, + 111, 42, 3611, 3608, 3607, 3606, 98, 152, 3605, 3589, + 3587, 3585, 33, 145, 3584, 13, 3583, 26, 24, 35, + 3582, 108, 3581, 3, 191, 3579, 3577, 4, 3576, 3575, + 2, 3572, 3570, 119, 3568, 100, 25, 164, 114, 3566, + 3565, 85, 210, 147, 3557, 3550, 90, 243, 203, 3549, + 94, 232, 252, 3547, 209, 3544, 3543, 3541, 3540, 3539, + 1222, 3533, 3530, 235, 68, 83, 3529, 218, 121, 3526, + 3522, 86, 158, 117, 128, 55, 84, 3520, 116, 208, + 3519, 198, 3518, 256, 3517, 3516, 112, 3515, 3513, 3511, + 3508, 192, 3506, 3505, 196, 236, 3504, 3502, 270, 3501, + 3500, 3499, 3498, 3496, 3494, 3492, 3491, 3490, 3483, 229, + 197, 3480, } -//line mysql_sql.y:12975 +//line mysql_sql.y:12984 type yySymType struct { union interface{} id int @@ -8993,80 +8992,80 @@ var yyR1 = [...]int{ 428, 428, 425, 424, 424, 424, 590, 590, 589, 589, 589, 361, 361, 32, 420, 420, 422, 423, 423, 423, 414, 414, 414, 414, 36, 418, 418, 419, 419, 419, - 419, 419, 419, 419, 419, 419, 419, 419, 415, 415, - 417, 417, 413, 413, 413, 413, 413, 413, 413, 413, - 35, 180, 180, 412, 412, 409, 409, 407, 407, 408, - 408, 406, 406, 406, 410, 410, 43, 78, 44, 45, - 46, 42, 411, 411, 34, 34, 34, 34, 34, 34, - 34, 34, 34, 34, 141, 140, 140, 140, 140, 140, - 143, 143, 345, 345, 344, 344, 142, 285, 285, 41, - 263, 263, 485, 485, 480, 480, 480, 480, 480, 500, - 500, 500, 481, 481, 481, 482, 482, 482, 484, 484, - 484, 483, 483, 483, 483, 483, 499, 499, 501, 501, - 501, 452, 452, 453, 453, 453, 456, 456, 472, 472, - 473, 473, 471, 471, 478, 478, 477, 477, 476, 476, - 475, 475, 474, 474, 474, 474, 467, 467, 466, 466, - 454, 454, 454, 454, 454, 455, 455, 455, 465, 465, - 470, 470, 316, 316, 315, 315, 271, 271, 272, 272, - 314, 314, 269, 269, 270, 270, 270, 313, 313, 313, + 419, 419, 419, 419, 419, 419, 419, 419, 419, 415, + 415, 417, 417, 413, 413, 413, 413, 413, 413, 413, + 413, 35, 180, 180, 412, 412, 409, 409, 407, 407, + 408, 408, 406, 406, 406, 410, 410, 43, 78, 44, + 45, 46, 42, 411, 411, 34, 34, 34, 34, 34, + 34, 34, 34, 34, 34, 141, 140, 140, 140, 140, + 140, 143, 143, 345, 345, 344, 344, 142, 285, 285, + 41, 263, 263, 485, 485, 480, 480, 480, 480, 480, + 500, 500, 500, 481, 481, 481, 482, 482, 482, 484, + 484, 484, 483, 483, 483, 483, 483, 499, 499, 501, + 501, 501, 452, 452, 453, 453, 453, 456, 456, 472, + 472, 473, 473, 471, 471, 478, 478, 477, 477, 476, + 476, 475, 475, 474, 474, 474, 474, 467, 467, 466, + 466, 454, 454, 454, 454, 454, 455, 455, 455, 465, + 465, 470, 470, 316, 316, 315, 315, 271, 271, 272, + 272, 314, 314, 269, 269, 270, 270, 270, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, - 313, 313, 313, 550, 550, 551, 274, 274, 286, 286, - 286, 286, 286, 286, 273, 273, 275, 275, 251, 251, - 249, 249, 241, 241, 241, 241, 241, 241, 242, 242, - 243, 243, 244, 244, 244, 248, 248, 247, 247, 247, - 247, 245, 245, 246, 246, 246, 246, 246, 246, 438, - 438, 547, 547, 548, 548, 543, 543, 543, 546, 546, - 546, 546, 546, 546, 546, 546, 549, 549, 549, 545, - 545, 253, 339, 339, 339, 362, 362, 362, 362, 364, - 338, 338, 338, 268, 268, 267, 267, 265, 265, 265, + 313, 313, 313, 313, 550, 550, 551, 274, 274, 286, + 286, 286, 286, 286, 286, 273, 273, 275, 275, 251, + 251, 249, 249, 241, 241, 241, 241, 241, 241, 242, + 242, 243, 243, 244, 244, 244, 248, 248, 247, 247, + 247, 247, 245, 245, 246, 246, 246, 246, 246, 246, + 438, 438, 547, 547, 548, 548, 543, 543, 543, 546, + 546, 546, 546, 546, 546, 546, 546, 549, 549, 549, + 545, 545, 253, 339, 339, 339, 362, 362, 362, 362, + 364, 338, 338, 338, 268, 268, 267, 267, 265, 265, + 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, - 265, 265, 265, 265, 265, 265, 265, 265, 265, 437, - 437, 378, 378, 379, 379, 297, 296, 296, 296, 296, - 296, 294, 295, 293, 293, 293, 293, 293, 290, 290, - 289, 289, 289, 291, 291, 291, 291, 291, 416, 416, - 287, 287, 277, 277, 277, 276, 276, 276, 479, 385, + 437, 437, 378, 378, 379, 379, 297, 296, 296, 296, + 296, 296, 294, 295, 293, 293, 293, 293, 293, 290, + 290, 289, 289, 289, 291, 291, 291, 291, 291, 416, + 416, 287, 287, 277, 277, 277, 276, 276, 276, 479, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, - 385, 385, 387, 387, 387, 387, 387, 387, 387, 387, + 385, 385, 385, 387, 387, 387, 387, 387, 387, 387, + 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, - 387, 387, 387, 387, 387, 387, 387, 387, 387, 292, - 336, 336, 336, 337, 337, 337, 337, 337, 337, 337, - 337, 388, 388, 394, 394, 559, 559, 558, 254, 254, - 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, - 264, 264, 264, 461, 461, 461, 461, 462, 462, 462, - 462, 463, 463, 463, 459, 459, 460, 460, 399, 400, - 400, 506, 506, 507, 507, 457, 457, 458, 335, 335, + 292, 336, 336, 336, 337, 337, 337, 337, 337, 337, + 337, 337, 388, 388, 394, 394, 559, 559, 558, 254, + 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 264, 264, 264, 461, 461, 461, 461, 462, 462, + 462, 462, 463, 463, 463, 459, 459, 460, 460, 399, + 400, 400, 506, 506, 507, 507, 457, 457, 458, 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 514, 514, 514, 332, 332, 332, 332, 332, 332, + 335, 335, 514, 514, 514, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 569, 569, 569, 555, 555, 555, 556, 556, 556, 556, - 556, 556, 556, 556, 556, 556, 556, 556, 557, 557, + 332, 569, 569, 569, 555, 555, 555, 556, 556, 556, + 556, 556, 556, 556, 556, 556, 556, 556, 556, 557, 557, 557, 557, 557, 557, 557, 557, 557, 557, 557, - 557, 557, 557, 557, 557, 334, 334, 334, 333, 333, + 557, 557, 557, 557, 557, 557, 334, 334, 334, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, - 333, 333, 333, 333, 333, 333, 401, 401, 402, 402, - 511, 511, 511, 511, 511, 511, 512, 512, 513, 513, - 513, 513, 505, 505, 505, 505, 505, 505, 505, 505, + 333, 333, 333, 333, 333, 333, 333, 401, 401, 402, + 402, 511, 511, 511, 511, 511, 511, 512, 512, 513, + 513, 513, 513, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, - 505, 505, 386, 331, 331, 331, 403, 395, 395, 396, - 396, 397, 397, 389, 389, 389, 389, 389, 389, 390, - 390, 392, 392, 392, 392, 392, 392, 392, 392, 392, - 392, 392, 384, 384, 384, 384, 384, 384, 384, 384, - 384, 384, 384, 391, 391, 393, 393, 405, 405, 405, - 404, 404, 404, 404, 404, 404, 404, 266, 266, 266, - 266, 383, 383, 383, 382, 382, 382, 382, 382, 382, - 382, 382, 382, 382, 382, 382, 256, 256, 256, 256, - 260, 260, 262, 262, 262, 262, 262, 262, 262, 262, - 262, 262, 262, 262, 262, 262, 261, 261, 261, 261, - 261, 259, 259, 259, 259, 259, 257, 257, 257, 257, + 505, 505, 505, 386, 331, 331, 331, 403, 395, 395, + 396, 396, 397, 397, 389, 389, 389, 389, 389, 389, + 390, 390, 392, 392, 392, 392, 392, 392, 392, 392, + 392, 392, 392, 384, 384, 384, 384, 384, 384, 384, + 384, 384, 384, 384, 391, 391, 393, 393, 405, 405, + 405, 404, 404, 404, 404, 404, 404, 404, 266, 266, + 266, 266, 383, 383, 383, 382, 382, 382, 382, 382, + 382, 382, 382, 382, 382, 382, 382, 256, 256, 256, + 256, 260, 260, 262, 262, 262, 262, 262, 262, 262, + 262, 262, 262, 262, 262, 262, 262, 261, 261, 261, + 261, 261, 259, 259, 259, 259, 259, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, - 257, 257, 257, 257, 257, 121, 122, 122, 258, 341, - 341, 486, 486, 489, 489, 487, 487, 488, 490, 490, - 490, 491, 491, 491, 492, 492, 492, 496, 496, 350, - 350, 350, 358, 358, 357, 357, 357, 357, 357, 357, + 257, 257, 257, 257, 257, 257, 121, 122, 122, 258, + 341, 341, 486, 486, 489, 489, 487, 487, 488, 490, + 490, 490, 491, 491, 491, 492, 492, 492, 496, 496, + 350, 350, 350, 358, 358, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, @@ -9102,13 +9101,13 @@ var yyR1 = [...]int{ 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, - 357, 357, 357, 357, 357, 357, 357, 357, 356, 356, - 356, 356, 356, 356, 356, 356, 356, 356, 355, 355, + 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, + 356, 356, 356, 356, 356, 356, 356, 356, 356, 356, + 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, - 355, 355, 355, 355, 355, 355, 355, 355, } var yyR2 = [...]int{ @@ -9227,80 +9226,81 @@ var yyR2 = [...]int{ 1, 3, 2, 1, 3, 2, 0, 1, 3, 4, 3, 1, 1, 4, 1, 3, 1, 1, 1, 1, 0, 1, 1, 1, 11, 0, 2, 3, 3, 2, - 2, 3, 1, 1, 3, 3, 3, 3, 1, 3, - 3, 4, 0, 2, 2, 2, 2, 2, 2, 2, - 6, 0, 4, 1, 1, 0, 3, 0, 1, 1, - 2, 4, 4, 4, 0, 1, 8, 2, 4, 4, - 4, 9, 0, 2, 11, 9, 11, 8, 6, 9, - 7, 10, 7, 6, 2, 2, 9, 4, 5, 3, - 0, 4, 1, 3, 0, 3, 6, 0, 2, 10, - 0, 2, 0, 2, 0, 3, 2, 4, 3, 0, - 2, 1, 0, 2, 3, 0, 2, 3, 0, 2, - 1, 0, 3, 2, 4, 3, 0, 1, 0, 1, - 1, 0, 6, 0, 3, 5, 0, 4, 0, 3, - 1, 3, 4, 5, 0, 3, 1, 3, 2, 3, - 1, 2, 0, 4, 6, 5, 0, 2, 0, 2, - 4, 5, 4, 5, 1, 5, 6, 5, 0, 3, - 0, 1, 1, 3, 3, 3, 0, 4, 1, 3, - 3, 3, 0, 1, 1, 3, 2, 3, 3, 3, - 4, 4, 3, 3, 3, 3, 4, 4, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 2, 3, 3, 3, 3, 3, 3, 3, 3, 1, - 5, 4, 5, 1, 3, 3, 2, 2, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, - 2, 4, 0, 5, 5, 5, 5, 6, 0, 1, - 1, 3, 1, 1, 1, 1, 1, 7, 9, 7, - 9, 2, 1, 7, 9, 7, 9, 8, 5, 0, - 1, 0, 1, 1, 1, 1, 3, 3, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, - 1, 3, 1, 3, 5, 1, 1, 1, 1, 1, - 1, 3, 5, 0, 1, 1, 2, 1, 2, 2, - 1, 1, 2, 2, 2, 3, 3, 2, 2, 1, - 5, 6, 4, 1, 1, 1, 5, 4, 1, 1, - 2, 0, 1, 1, 2, 5, 0, 1, 1, 2, - 2, 3, 3, 1, 1, 2, 2, 2, 0, 1, - 2, 2, 2, 0, 4, 7, 3, 3, 0, 3, - 0, 3, 1, 1, 1, 1, 1, 1, 1, 3, + 2, 3, 1, 1, 3, 3, 3, 3, 1, 1, + 3, 3, 4, 0, 2, 2, 2, 2, 2, 2, + 2, 6, 0, 4, 1, 1, 0, 3, 0, 1, + 1, 2, 4, 4, 4, 0, 1, 8, 2, 4, + 4, 4, 9, 0, 2, 11, 9, 11, 8, 6, + 9, 7, 10, 7, 6, 2, 2, 9, 4, 5, + 3, 0, 4, 1, 3, 0, 3, 6, 0, 2, + 10, 0, 2, 0, 2, 0, 3, 2, 4, 3, + 0, 2, 1, 0, 2, 3, 0, 2, 3, 0, + 2, 1, 0, 3, 2, 4, 3, 0, 1, 0, + 1, 1, 0, 6, 0, 3, 5, 0, 4, 0, + 3, 1, 3, 4, 5, 0, 3, 1, 3, 2, + 3, 1, 2, 0, 4, 6, 5, 0, 2, 0, + 2, 4, 5, 4, 5, 1, 5, 6, 5, 0, + 3, 0, 1, 1, 3, 3, 3, 0, 4, 1, + 3, 3, 3, 0, 1, 1, 3, 2, 3, 3, + 3, 4, 4, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 1, 1, 1, 1, 3, 5, 2, 2, 2, - 2, 4, 1, 1, 2, 5, 6, 8, 6, 6, - 6, 1, 1, 1, 1, 1, 1, 3, 9, 1, - 4, 4, 4, 7, 9, 7, 7, 7, 9, 7, - 7, 0, 2, 0, 1, 1, 2, 4, 1, 2, - 2, 1, 2, 2, 1, 2, 2, 2, 2, 2, - 0, 1, 1, 1, 2, 2, 2, 2, 2, 2, - 2, 1, 1, 1, 2, 5, 0, 1, 3, 0, - 1, 0, 2, 0, 2, 0, 1, 6, 8, 8, - 6, 6, 5, 5, 5, 6, 6, 6, 6, 5, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 1, 1, 1, 4, 4, 6, 8, 6, 4, - 5, 4, 4, 4, 3, 4, 6, 6, 7, 4, + 3, 2, 3, 3, 3, 3, 3, 3, 3, 3, + 1, 5, 4, 5, 1, 3, 3, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 3, 2, 4, 0, 5, 5, 5, 5, 6, 0, + 1, 1, 3, 1, 1, 1, 1, 1, 7, 9, + 7, 9, 2, 1, 7, 9, 7, 9, 8, 5, + 0, 1, 0, 1, 1, 1, 1, 3, 3, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 0, 1, 3, 1, 3, 5, 1, 1, 1, 1, + 1, 1, 3, 5, 0, 1, 1, 2, 1, 2, + 2, 1, 1, 2, 2, 2, 3, 3, 2, 2, + 1, 5, 6, 4, 1, 1, 1, 5, 4, 1, + 1, 2, 0, 1, 1, 2, 5, 0, 1, 1, + 2, 2, 3, 3, 1, 1, 2, 2, 2, 0, + 1, 2, 2, 2, 0, 4, 7, 3, 3, 0, + 3, 0, 3, 1, 1, 1, 1, 1, 1, 1, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 1, 1, 1, 1, 3, 5, 2, 2, + 2, 2, 4, 1, 1, 2, 5, 6, 8, 6, + 6, 6, 1, 1, 1, 1, 1, 1, 3, 9, + 1, 4, 4, 4, 7, 9, 7, 7, 7, 9, + 7, 7, 0, 2, 0, 1, 1, 2, 4, 1, + 2, 2, 1, 2, 2, 1, 2, 2, 2, 2, + 2, 0, 1, 1, 1, 2, 2, 2, 2, 2, + 2, 2, 1, 1, 1, 2, 5, 0, 1, 3, + 0, 1, 0, 2, 0, 2, 0, 1, 6, 8, + 8, 6, 6, 5, 5, 5, 6, 6, 6, 6, + 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 1, 1, 1, 4, 4, 6, 8, 6, + 4, 5, 4, 4, 4, 3, 4, 6, 6, 7, + 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 2, 2, 8, 4, 2, - 3, 2, 4, 2, 2, 4, 6, 2, 2, 4, - 6, 4, 2, 4, 4, 4, 0, 1, 2, 3, - 1, 1, 1, 1, 1, 1, 0, 2, 1, 1, + 1, 1, 1, 1, 1, 1, 2, 2, 8, 4, + 2, 3, 2, 4, 2, 2, 4, 6, 2, 2, + 4, 6, 4, 2, 4, 4, 4, 0, 1, 2, + 3, 1, 1, 1, 1, 1, 1, 0, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 3, 0, 1, 1, 3, 0, 1, 1, - 3, 1, 3, 3, 3, 3, 3, 2, 1, 1, - 1, 3, 4, 3, 4, 3, 4, 3, 4, 3, - 4, 1, 3, 4, 4, 5, 4, 5, 3, 4, - 5, 6, 1, 0, 2, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 2, 2, 1, + 1, 1, 1, 3, 0, 1, 1, 3, 0, 1, + 1, 3, 1, 3, 3, 3, 3, 3, 2, 1, + 1, 1, 3, 4, 3, 4, 3, 4, 3, 4, + 3, 4, 1, 3, 4, 4, 5, 4, 5, 3, + 4, 5, 6, 1, 0, 2, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 2, 1, 1, 1, 2, 3, 1, 1, 1, + 1, 1, 2, 1, 1, 1, 2, 3, 1, 1, + 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, + 2, 2, 1, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, - 2, 1, 2, 2, 2, 2, 2, 2, 2, 2, + 1, 2, 2, 4, 4, 1, 2, 3, 5, 1, + 1, 3, 0, 1, 0, 3, 0, 3, 3, 0, + 3, 5, 0, 3, 5, 0, 1, 1, 0, 1, + 1, 2, 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 2, 2, 4, 4, 1, 2, 3, 5, 1, 1, - 3, 0, 1, 0, 3, 0, 3, 3, 0, 3, - 5, 0, 3, 5, 0, 1, 1, 0, 1, 1, - 2, 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -9342,423 +9342,422 @@ var yyR2 = [...]int{ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, } var yyChk = [...]int{ - -1000, -614, -617, -2, -5, 637, -1, -4, -122, -91, + -1000, -614, -617, -2, -5, 638, -1, -4, -122, -91, -7, -14, -124, -125, -8, -120, -9, -10, -12, -98, -115, -117, -119, -118, -47, -11, -114, -85, -86, -100, -108, -111, -112, -113, -126, -121, -123, -184, -127, -128, - -129, -171, -132, -134, -135, 627, -92, -93, -94, -95, + -129, -171, -132, -134, -135, 628, -92, -93, -94, -95, -96, -97, -33, -32, -31, -30, -157, -162, -165, -167, - -130, 560, 633, 463, 14, 512, -15, -16, -560, -17, + -130, 561, 634, 464, 14, 513, -15, -16, -560, -17, 267, -366, -367, -368, -370, -618, -48, -49, -50, -60, -61, -62, -63, -64, -74, -75, -76, -51, -52, -53, -56, -54, -67, -66, -68, -69, -70, -71, -72, -73, -55, -59, -160, -161, -77, -57, -78, -58, -169, -172, -131, -79, -80, -81, -83, -82, -88, -84, -89, -159, -164, -13, -170, -90, 241, -87, 77, -101, -102, -103, - -104, -105, -106, -107, -109, -110, 387, 393, 450, 626, - 62, -185, -187, 655, 656, 659, 547, 550, 163, 164, + -104, -105, -106, -107, -109, -110, 388, 394, 451, 627, + 62, -185, -187, 656, 657, 660, 548, 551, 163, 164, 166, 167, 171, 174, -34, -35, -36, -37, -38, -39, - -41, -40, -42, -43, -44, -45, -46, 237, 16, 555, + -41, -40, -42, -43, -44, -45, -46, 237, 16, 556, -18, -21, -19, -22, -20, -28, -29, -27, -24, -26, -158, -25, -163, -23, -166, -168, -133, 262, 261, 39, - 328, 329, 330, 391, 260, 238, 240, 15, 32, 43, - 366, -186, 86, 548, 239, -188, 13, 661, -6, -3, + 328, 329, 330, 392, 260, 238, 240, 15, 32, 43, + 367, -186, 86, 549, 239, -188, 13, 662, -6, -3, -2, -144, -148, -152, -155, -156, -153, -154, -4, -122, - 121, 252, 628, -362, 383, 629, 631, 630, 89, 97, - -355, -357, 463, 267, 387, 393, 626, 656, 659, 547, - 550, 562, 563, 564, 565, 566, 567, 568, 569, 571, - 572, 573, 574, 575, 576, 577, 587, 588, 578, 579, - 580, 581, 582, 583, 584, 585, 589, 590, 591, 592, - 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, - 515, 612, 613, 614, 615, 543, 570, 606, 607, 608, - 609, 364, 365, 552, 279, 303, 418, 309, 316, 163, - 183, 177, 206, 197, 548, 172, 283, 321, 284, 96, - 166, 498, 111, 475, 447, 169, 298, 300, 302, 544, - 545, 377, 305, 542, 304, 306, 308, 546, 285, 367, - 193, 188, 297, 281, 186, 286, 41, 287, 360, 359, - 211, 288, 289, 557, 471, 363, 477, 313, 53, 445, - 187, 472, 301, 474, 215, 219, 489, 350, 490, 181, - 182, 479, 492, 210, 213, 214, 259, 356, 357, 44, - 554, 271, 493, 217, 651, 209, 204, 501, 317, 315, - 361, 208, 180, 203, 282, 66, 221, 220, 222, 441, - 442, 443, 444, 290, 291, 381, 488, 200, 189, 368, - 173, 23, 496, 266, 476, 394, 292, 310, 318, 216, - 218, 273, 278, 333, 556, 449, 362, 277, 314, 494, - 185, 270, 299, 265, 497, 652, 174, 396, 293, 167, - 307, 491, 654, 500, 65, 409, 179, 170, 644, 645, - 256, 164, 275, 280, 653, 294, 295, 296, 541, 320, - 319, 311, 171, 549, 201, 272, 207, 191, 178, 202, - 165, 274, 499, 410, 624, 366, 428, 199, 196, 276, - 249, 495, 478, 168, 432, 411, 194, 322, 619, 620, - 621, 382, 355, 323, 324, 192, 263, 469, 470, 327, - 438, 345, 412, 448, 419, 413, 228, 229, 331, 481, - 483, 212, 622, 334, 335, 336, 473, 337, 338, 339, - 340, 386, 57, 59, 98, 101, 100, 657, 658, 64, - 30, 372, 375, 407, 414, 347, 625, 553, 344, 348, - 349, 376, 26, 430, 398, 434, 433, 49, 50, 51, - 54, 55, 56, 58, 60, 61, 52, 540, 391, 404, - 502, 46, 48, 401, 28, 378, 429, 451, 343, 431, - 462, 47, 460, 461, 482, 27, 380, 379, 63, 45, - 437, 439, 440, 325, 341, 389, 634, 503, 384, 400, - 403, 385, 346, 374, 405, 68, 67, 397, 635, 392, - 390, 342, 558, 559, 351, 586, 369, 446, 537, 536, - 535, 534, 533, 532, 531, 530, 328, 329, 330, 415, - 416, 417, 427, 420, 421, 422, 423, 424, 425, 426, - 465, 466, 636, 484, 486, 487, 485, 244, 660, 370, - 371, 247, 638, 639, 99, 640, 642, 641, 29, 643, - 650, 647, 648, 649, 561, 232, -443, -441, -362, 548, - 626, 393, 547, 550, 387, 366, 656, 659, 391, 267, - 328, 329, 330, 463, 364, -235, -362, 660, -197, 251, - 40, -249, -362, -197, -87, -16, -15, -186, -187, -249, - 246, -371, 24, 445, -99, 446, 241, 242, 86, 78, - -362, -9, -113, -8, -120, -85, -184, 450, -369, -362, - 328, 328, -369, 246, -364, 277, 426, -362, -498, 252, - -447, -420, 278, -446, -422, -449, -423, 33, 237, 239, - 238, 560, 274, 16, 391, 248, 14, 13, 392, 260, - 26, 27, 29, 15, 393, 395, 30, 396, 399, 400, - 401, 43, 404, 405, 267, 89, 97, 92, 285, -234, - -362, -397, -389, 118, -392, -384, -385, -387, -340, -534, - -382, 86, 145, 146, 153, 119, 662, -386, -479, 37, - 121, 566, 570, 606, 513, -332, -333, -334, -335, -336, - -337, 551, -362, -535, -533, 92, 102, 104, 108, 109, - 107, 105, 157, 190, 106, 93, 158, -187, 89, -555, - 576, -356, 599, 612, 613, 614, 615, 598, 62, -505, - -513, 245, -511, 156, 195, 263, 191, 14, 151, 438, - 192, 607, 608, 609, 573, 595, 515, 577, 587, 602, - 568, 569, 571, 563, 564, 565, 567, 578, 580, 594, - -514, 590, 600, 601, 586, 610, 611, 647, 603, 604, - 605, 642, 91, 90, 593, 592, 579, 574, 575, 581, - 562, 572, 582, 583, 591, 596, 597, 375, 111, 376, - 377, 505, 367, 81, 378, 252, 445, 71, 379, 380, - 381, 382, 383, 512, 384, 72, 385, 374, 267, 428, - 386, 194, 212, 517, 516, 518, 509, 506, 504, 507, - 508, 510, 511, 584, 585, 589, -136, -138, 617, -608, - -323, -609, 6, 7, 8, 9, -610, 158, -599, 447, - 556, 92, 321, 364, 17, 505, 646, 546, 646, 546, - 168, 165, -434, 168, 117, 174, 173, 250, 168, -434, - -362, 171, 646, 170, 644, 331, 273, -411, -175, 364, - 428, 337, 98, 277, -414, -412, 544, -499, 325, 321, - 297, 247, 114, -176, 257, 256, 112, 505, 245, 402, - 316, 57, 59, -570, -571, 234, 235, 236, -562, 538, - -561, -362, 646, 651, 377, 100, 101, 644, 645, 28, - 246, 388, 273, 483, 481, 482, 484, 485, 486, 487, - -65, -515, -497, 478, 477, -375, 470, 476, 468, 480, - 471, 365, 339, 560, 338, 237, 638, 545, 539, -350, - 412, 448, 502, 503, 389, 449, 489, 491, 472, 111, - 198, 195, 247, 249, 246, 644, 364, 505, 428, 98, - 337, 246, -570, 651, 165, 489, 491, 447, 277, 426, - 42, -440, 438, -439, -441, 490, 501, 90, 91, 488, - -350, 111, 469, 469, -608, -323, -185, -187, -123, -560, - 546, 646, 247, 364, 428, 277, 248, 246, 541, 544, - 249, 505, 245, 328, 388, 273, 337, 98, 170, 644, - -191, -192, -193, 230, 231, 232, 70, 235, 233, 67, - 33, 34, 35, -1, 125, 661, -389, -389, -6, 664, - -6, -389, -362, -362, 160, -256, -260, -257, -259, -258, - -262, -261, 195, 196, 156, 199, 205, 201, 202, 203, - 204, 206, 207, 208, 209, 210, 213, 214, 211, 32, - 212, 263, 191, 192, 193, 194, 215, 177, 197, 553, - 223, 178, 224, 179, 225, 180, 226, 181, 182, 227, - 183, 186, 187, 188, 189, 185, 159, -224, 92, 33, - 86, 159, 92, -216, 269, -197, -249, -241, 159, 662, - -216, -608, -207, -208, 11, -249, -338, -362, 447, 128, - -99, 78, -99, 446, 78, -99, 446, 241, -563, -564, - -565, -567, 241, 446, 445, 242, -118, 159, 285, 17, - -369, -369, 84, -249, -422, 277, -447, -420, 37, 83, - 160, 250, 160, 83, 86, 389, 364, 428, 390, 505, - 246, 402, 249, 277, 403, 364, 428, 246, 249, 505, - 277, 364, 246, 249, 428, 277, 403, 364, 468, 469, - 249, 28, 394, 397, 398, 469, -519, 501, 160, 117, - 114, 115, 116, -389, 135, -404, 128, 129, 130, 131, - 132, 133, 134, 142, 141, 152, 145, 146, 147, 148, - 149, 150, 151, 143, 144, 138, 118, 136, 140, 137, - 120, 155, -187, -389, -397, 62, -387, -387, -387, -387, - -362, -479, -394, -389, 86, 86, 86, 86, 86, 159, - 105, 92, -389, 86, 86, 86, 86, 86, 86, 86, - 86, 86, 86, 86, 86, -512, 86, 86, -401, -402, - 86, 86, -382, -338, 86, 92, 92, 86, 86, 86, - 92, 86, 86, 86, -402, -402, 86, 86, 86, 86, + 121, 252, 629, -362, 384, 630, 632, 631, 89, 97, + -355, -357, 464, 267, 388, 394, 627, 657, 660, 548, + 551, 563, 564, 565, 566, 567, 568, 569, 570, 572, + 573, 574, 575, 576, 577, 578, 588, 589, 579, 580, + 581, 582, 583, 584, 585, 586, 590, 591, 592, 593, + 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, + 516, 613, 614, 615, 616, 544, 571, 607, 608, 609, + 610, 365, 366, 553, 279, 303, 419, 309, 316, 363, + 163, 183, 177, 206, 197, 549, 172, 283, 321, 284, + 96, 166, 499, 111, 476, 448, 169, 298, 300, 302, + 545, 546, 378, 305, 543, 304, 306, 308, 547, 285, + 368, 193, 188, 297, 281, 186, 286, 41, 287, 360, + 359, 211, 288, 289, 558, 472, 364, 478, 313, 53, + 446, 187, 473, 301, 475, 215, 219, 490, 350, 491, + 181, 182, 480, 493, 210, 213, 214, 259, 356, 357, + 44, 555, 271, 494, 217, 652, 209, 204, 502, 317, + 315, 361, 208, 180, 203, 282, 66, 221, 220, 222, + 442, 443, 444, 445, 290, 291, 382, 489, 200, 189, + 369, 173, 23, 497, 266, 477, 395, 292, 310, 318, + 216, 218, 273, 278, 333, 557, 450, 362, 277, 314, + 495, 185, 270, 299, 265, 498, 653, 174, 397, 293, + 167, 307, 492, 655, 501, 65, 410, 179, 170, 645, + 646, 256, 164, 275, 280, 654, 294, 295, 296, 542, + 320, 319, 311, 171, 550, 201, 272, 207, 191, 178, + 202, 165, 274, 500, 411, 625, 367, 429, 199, 196, + 276, 249, 496, 479, 168, 433, 412, 194, 322, 620, + 621, 622, 383, 355, 323, 324, 192, 263, 470, 471, + 327, 439, 345, 413, 449, 420, 414, 228, 229, 331, + 482, 484, 212, 623, 334, 335, 336, 474, 337, 338, + 339, 340, 387, 57, 59, 98, 101, 100, 658, 659, + 64, 30, 373, 376, 408, 415, 347, 626, 554, 344, + 348, 349, 377, 26, 431, 399, 435, 434, 49, 50, + 51, 54, 55, 56, 58, 60, 61, 52, 541, 392, + 405, 503, 46, 48, 402, 28, 379, 430, 452, 343, + 432, 463, 47, 461, 462, 483, 27, 381, 380, 63, + 45, 438, 440, 441, 325, 341, 390, 635, 504, 385, + 401, 404, 386, 346, 375, 406, 68, 67, 398, 636, + 393, 391, 342, 559, 560, 351, 587, 370, 447, 538, + 537, 536, 535, 534, 533, 532, 531, 328, 329, 330, + 416, 417, 418, 428, 421, 422, 423, 424, 425, 426, + 427, 466, 467, 637, 485, 487, 488, 486, 244, 661, + 371, 372, 247, 639, 640, 99, 641, 643, 642, 29, + 644, 651, 648, 649, 650, 562, 232, -443, -441, -362, + 549, 627, 394, 548, 551, 388, 367, 657, 660, 392, + 267, 328, 329, 330, 464, 365, -235, -362, 661, -197, + 251, 40, -249, -362, -197, -87, -16, -15, -186, -187, + -249, 246, -371, 24, 446, -99, 447, 241, 242, 86, + 78, -362, -9, -113, -8, -120, -85, -184, 451, -369, + -362, 328, 328, -369, 246, -364, 277, 427, -362, -498, + 252, -447, -420, 278, -446, -422, -449, -423, 33, 237, + 239, 238, 561, 274, 16, 392, 248, 14, 13, 393, + 260, 26, 27, 29, 15, 394, 396, 30, 397, 400, + 401, 402, 43, 405, 406, 267, 89, 97, 92, 285, + -234, -362, -397, -389, 118, -392, -384, -385, -387, -340, + -534, -382, 86, 145, 146, 153, 119, 663, -386, -479, + 37, 121, 567, 571, 607, 514, -332, -333, -334, -335, + -336, -337, 552, -362, -535, -533, 92, 102, 104, 108, + 109, 107, 105, 157, 190, 106, 93, 158, -187, 89, + -555, 577, -356, 600, 613, 614, 615, 616, 599, 62, + -505, -513, 245, -511, 156, 195, 263, 191, 14, 151, + 439, 192, 608, 609, 610, 574, 596, 516, 578, 588, + 603, 569, 570, 572, 564, 565, 566, 568, 579, 581, + 595, -514, 591, 601, 602, 587, 611, 612, 648, 604, + 605, 606, 643, 91, 90, 594, 593, 580, 575, 576, + 582, 563, 573, 583, 584, 592, 597, 598, 376, 111, + 377, 378, 506, 368, 81, 379, 252, 446, 71, 380, + 381, 382, 383, 384, 513, 385, 72, 386, 375, 267, + 429, 387, 194, 212, 518, 517, 519, 510, 507, 505, + 508, 509, 511, 512, 585, 586, 590, -136, -138, 618, + -608, -323, -609, 6, 7, 8, 9, -610, 158, -599, + 448, 557, 92, 321, 365, 17, 506, 647, 547, 647, + 547, 168, 165, -434, 168, 117, 174, 173, 250, 168, + -434, -362, 171, 647, 170, 645, 331, 273, -411, -175, + 365, 429, 337, 98, 277, -414, -412, 545, -499, 325, + 321, 297, 247, 114, -176, 257, 256, 112, 506, 245, + 403, 316, 57, 59, -570, -571, 234, 235, 236, -562, + 539, -561, -362, 647, 652, 378, 100, 101, 645, 646, + 28, 246, 389, 273, 484, 482, 483, 485, 486, 487, + 488, -65, -515, -497, 479, 478, -375, 471, 477, 469, + 481, 472, 366, 339, 561, 338, 237, 639, 546, 540, + -350, 413, 449, 503, 504, 390, 450, 490, 492, 473, + 111, 198, 195, 247, 249, 246, 645, 365, 506, 429, + 98, 337, 246, -570, 652, 165, 490, 492, 448, 277, + 427, 42, -440, 439, -439, -441, 491, 502, 90, 91, + 489, -350, 111, 470, 470, -608, -323, -185, -187, -123, + -560, 547, 647, 247, 365, 429, 277, 248, 246, 542, + 545, 249, 506, 245, 328, 389, 273, 337, 98, 170, + 645, -191, -192, -193, 230, 231, 232, 70, 235, 233, + 67, 33, 34, 35, -1, 125, 662, -389, -389, -6, + 665, -6, -389, -362, -362, 160, -256, -260, -257, -259, + -258, -262, -261, 195, 196, 156, 199, 205, 201, 202, + 203, 204, 206, 207, 208, 209, 210, 213, 214, 211, + 32, 212, 263, 191, 192, 193, 194, 215, 177, 197, + 554, 223, 178, 224, 179, 225, 180, 226, 181, 182, + 227, 183, 186, 187, 188, 189, 185, 159, -224, 92, + 33, 86, 159, 92, -216, 269, -197, -249, -241, 159, + 663, -216, -608, -207, -208, 11, -249, -338, -362, 448, + 128, -99, 78, -99, 447, 78, -99, 447, 241, -563, + -564, -565, -567, 241, 447, 446, 242, -118, 159, 285, + 17, -369, -369, 84, -249, -422, 277, -447, -420, 37, + 83, 160, 250, 160, 83, 86, 390, 365, 429, 391, + 506, 246, 403, 249, 277, 404, 365, 429, 246, 249, + 506, 277, 365, 246, 249, 429, 277, 404, 365, 469, + 470, 249, 28, 395, 398, 399, 470, -519, 502, 160, + 117, 114, 115, 116, -389, 135, -404, 128, 129, 130, + 131, 132, 133, 134, 142, 141, 152, 145, 146, 147, + 148, 149, 150, 151, 143, 144, 138, 118, 136, 140, + 137, 120, 155, -187, -389, -397, 62, -387, -387, -387, + -387, -362, -479, -394, -389, 86, 86, 86, 86, 86, + 159, 105, 92, -389, 86, 86, 86, 86, 86, 86, + 86, 86, 86, 86, 86, 86, -512, 86, 86, -401, + -402, 86, 86, -382, -338, 86, 92, 92, 86, 86, + 86, 92, 86, 86, 86, -402, -402, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, - 86, 86, -208, 160, -207, 86, -207, -208, -188, -187, - 33, 34, 33, 34, 33, 34, 33, 34, -611, 635, - 86, 102, 657, 228, 17, -362, 644, -362, -593, 33, - 549, 549, 549, 549, 494, 555, 172, 173, 174, -362, - 171, 250, -362, -409, 252, -409, -409, -233, -362, -235, - 388, 249, 541, 249, -176, -409, -409, -409, -409, -409, - 248, -409, 24, 246, 246, 246, 246, -409, 512, 128, - 128, 60, -572, 176, 160, -562, -215, 86, -593, 652, - 653, 654, -374, 136, 140, -374, -319, 18, -319, 24, - 24, 275, 275, 275, -374, 315, -619, -620, 17, 138, - -372, -620, -372, -372, -374, -621, 248, 479, 44, 276, - 275, -209, -210, 22, -209, 473, 469, -464, 474, 475, - -376, -620, -375, -374, -374, -375, -374, -374, -374, 33, - 246, 249, 505, 337, 639, -619, -619, 32, 32, -498, - -498, -249, -498, -498, 539, -351, -362, -498, -498, -498, - -303, -304, -249, -573, 251, 654, -605, -604, 492, -607, - 494, 165, -441, 165, -441, 89, -422, 277, 277, 160, - 128, 24, -442, 128, 139, -441, -441, -442, -442, -273, - 42, -361, 156, -362, 92, -273, 42, -602, -601, -249, - -208, -188, -187, 87, 87, 87, 549, -593, -498, -498, - -498, -498, -498, -499, -498, -498, -498, -498, -498, -369, - -225, -362, -235, 252, -498, -498, -498, -498, -189, -190, - 147, -389, -362, -193, -3, -146, -145, 122, 123, 125, - 629, 383, 628, 632, 626, -441, 42, -492, 410, 409, - -486, -488, 86, -487, 86, -487, -487, -487, -487, -487, - 86, 86, -489, 86, -489, -489, -486, -490, 86, -490, - -491, 86, -491, -490, -362, -468, 555, -395, -397, -362, - 40, -508, 62, -184, 86, 32, 86, -216, -362, 192, - 170, 643, 36, -509, 62, -184, 86, 32, -208, -139, - 40, -210, 21, 159, 102, 92, -118, -99, 78, -118, - -99, -99, 87, 160, -566, 108, 109, -568, 210, 201, - -362, -116, 92, -7, -11, -8, -9, -10, -47, -85, - -184, 547, 550, -536, -534, 86, 33, 437, 83, 17, - -448, 246, 505, 388, 273, 249, 364, -446, -429, -426, - -424, -361, -422, -425, -424, -451, -338, 469, -140, 452, - 451, 327, -389, -389, -389, -389, -389, 107, 118, 355, - 108, 109, -384, -405, 33, 323, 324, -385, -385, -385, - -385, -385, -385, -385, -385, -385, -385, -385, -385, -393, - -403, -479, 86, 138, 136, 140, 137, 120, -387, -387, - -385, -385, -275, -361, 156, 87, 160, -389, -559, -558, - 122, -389, -389, -389, -389, -415, -417, -338, 86, -362, - -556, -557, 519, 520, 521, 522, 523, 524, 525, 526, - 527, 528, 529, 379, 374, 380, 378, 367, 386, 381, - 382, 194, 536, 537, 530, 531, 532, 533, 534, 535, - -395, -395, -389, -556, -395, -331, 34, 33, -397, -397, - -397, 87, -389, -569, 353, 352, 354, -211, -362, -395, - 87, 87, 87, 102, -397, -397, -395, -385, -395, -395, - -395, -395, -557, -331, -331, -331, -331, 147, -397, -397, - -331, -331, -331, -331, 147, -331, -331, -331, -331, -331, - -331, -331, -331, -331, -331, -331, 87, 87, 87, 147, - -397, -209, -138, -517, -516, -389, 42, -139, -210, -612, - 636, 86, -338, -600, 92, 92, 662, 170, 644, 17, - 505, -362, 17, 246, -362, 102, -362, 102, 495, 496, - 169, 173, 172, -362, 171, -362, -362, 118, -362, -362, - 36, 86, -225, -409, -409, -409, -577, -362, 93, -430, - -427, -424, -362, -362, -420, -362, -351, -249, -409, -409, - -409, -409, -249, -284, 54, 55, 56, -424, -177, 57, - 58, -573, -561, 36, -214, -362, -319, -387, -387, -389, - 364, 505, 246, -424, 277, -619, -374, -374, -352, -351, - -376, -371, -376, -376, -319, -372, -374, -374, -389, -376, - -372, -319, -362, 469, -319, -319, -464, -374, -373, -362, - -373, -409, -351, -352, -352, -249, -249, -298, -305, -299, - -306, 269, 243, 372, 373, 240, 238, 11, 239, -313, - 316, -410, 513, -279, -280, 78, 43, -282, 267, 414, - 407, 279, 283, 96, 284, 447, 285, 248, 287, 288, - 289, 304, 306, 259, 290, 291, 292, 438, 293, 164, - 305, 294, 295, 296, 390, -274, 6, 340, 555, 42, - 52, 53, 461, 460, 558, 280, -362, -577, -575, 32, - -362, 32, -430, -424, -362, -362, 160, 250, -200, -202, - -199, -195, -196, -201, -322, -324, -198, 86, -249, -187, - -362, -441, 160, 493, 495, 496, -605, -442, -605, -442, - 250, 33, 437, -445, 437, 33, -420, -439, 489, 491, - -435, 92, 438, -425, -444, 83, 156, -516, -442, -442, - -444, -444, 155, 160, -603, 494, 495, 234, -209, 102, - -251, -249, -577, -429, -420, -362, -498, -251, -251, -251, - -364, -364, 86, 159, 37, -362, -362, -362, -362, -318, - 160, -317, 17, -363, -362, 36, 92, 159, -147, -145, - 124, -389, -6, 628, -389, -6, -6, -389, -6, -389, - -496, 411, 102, 102, -341, 92, -341, 102, 102, 102, - 561, 87, 92, -433, 83, -510, -398, -554, 617, -218, - 87, -211, -552, -553, -211, -217, -362, -508, -241, 128, - 128, 128, 25, -510, -218, 87, -552, -209, 618, -139, - -206, -205, -389, -362, 24, -118, -99, -564, 159, 160, - -214, -448, -428, -425, -450, 147, -362, -436, 160, 555, - 665, 90, 250, -590, -589, 429, 87, 160, -520, 251, - 512, 92, 662, 445, 228, 229, 107, 355, 108, 109, - -479, -397, -393, -387, -387, -385, -385, -391, 264, -391, - 117, -389, 663, -388, -558, 124, -389, 36, 160, 36, - 160, 84, 160, 87, -486, -389, 159, 87, 87, 17, - 17, 87, -389, 87, 87, 87, 87, 17, 17, -389, - 87, 159, 87, 87, 87, 87, 84, 87, 160, 87, - 87, 87, 87, 160, -397, -397, -389, -397, 87, 87, - 87, -389, -389, -389, -397, 87, -389, -389, -389, -389, - -389, -389, -389, -389, -389, -389, -214, -458, 464, -458, - -458, 160, 160, 160, 87, -139, 86, 102, 160, 658, - -345, -344, 92, -362, -362, 170, 644, -362, 92, 644, - -362, 92, 170, 174, 174, 173, -362, 92, 37, 24, - 24, 314, -234, -236, -237, -238, -239, -240, 138, 161, - 162, 86, -249, -249, -249, -579, 415, -591, 160, 42, - -589, 505, -173, 327, -413, 84, -180, 17, 555, -249, - -249, -249, -249, -263, 36, 17, -194, -250, -362, 86, - 87, 160, -362, -362, -362, -421, 84, -362, -352, -319, - -319, -376, -319, -319, 160, 23, -374, -376, -376, -241, - -372, -241, 159, -241, -351, -485, 36, -215, 160, 21, - 269, -248, -359, -245, -247, 254, -379, -246, 257, -548, - 255, 253, 112, 258, 312, 113, 248, -359, -359, 254, - -283, 250, 36, -359, -301, 248, 358, 312, 255, 21, - 269, -300, 248, 113, -362, 254, 258, 255, 253, -358, - 128, -350, 155, 250, 44, 390, -358, 559, 269, -358, - -358, -358, -358, -358, -358, -358, 286, 286, -358, -358, - -358, -358, -358, -358, -358, -358, -358, -358, -358, 165, - -358, -358, -358, -358, -358, -358, 86, 332, 281, 282, - 314, -580, 415, 32, 370, 370, 371, -591, 366, 43, - 32, -181, 364, -304, -302, -373, 32, -325, -326, -327, - -328, -330, -329, 69, 73, 75, 79, 70, 71, 72, - 76, 81, 74, 32, 160, -360, -365, 36, -362, 92, - -360, -187, -202, -200, -360, 86, -442, -604, -606, 497, - 494, 500, -444, -444, 102, 250, 86, 128, -444, -444, - 42, -361, -601, 501, 495, -139, 160, 83, -251, -226, - -227, -228, -229, -256, -338, 196, 199, 201, 202, 203, - 204, 206, 207, 208, 209, 210, 213, 214, 211, 212, - 263, 191, 192, 193, 194, 215, 177, 197, 553, 178, - 179, 180, 181, 182, 183, 186, 187, 188, 189, 185, - -362, -235, -319, -190, -202, -362, 92, -362, 147, 125, - -6, 123, -151, -150, -149, 126, 626, 632, 125, 125, - 125, 87, 87, 87, 160, 87, 87, 87, 160, 87, - 160, 102, -523, 474, 41, 160, 86, 87, 160, 62, - 160, 128, 87, 160, -389, -362, 92, -389, 192, 87, - 62, -139, 92, 160, -203, 38, 39, 159, 447, -362, - -534, 87, -450, 160, 250, 159, 159, -426, 393, -361, - -428, 21, 555, -338, 40, -345, 128, 662, -362, 87, - -391, -391, 117, -387, -384, 87, 125, -389, 123, -254, - -256, 409, 410, -389, -254, -255, -261, 156, 195, 263, - 194, 193, 191, 409, 410, -273, -417, 552, -203, 87, - -362, -389, -389, 87, -389, -389, 17, -362, -273, -385, - -389, -208, -208, 87, 87, -457, -458, -457, -457, 87, - 87, 87, 87, -457, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 86, 102, 104, 102, 104, - -516, -613, 64, 634, 63, 437, 107, 317, 160, 102, - 92, 663, 160, 128, 92, -362, -362, 17, 246, -362, - 17, 174, 92, -592, 321, 364, 505, 246, 364, 321, - 505, 246, -469, 102, 401, 87, 160, -338, -226, -215, - 86, -215, -582, 476, 417, 427, -358, -381, -380, 366, - 43, -503, 438, 423, 424, -427, 277, -351, -588, 99, - 128, 83, 344, 348, 350, 349, 345, 346, 347, -407, - -408, -406, -410, -575, 86, 86, -184, 36, 136, -180, - 86, 86, 36, -480, 334, -256, -249, -194, -362, 17, - 160, -574, 159, -1, -362, -362, -420, -374, -319, -389, - -389, -319, -374, -374, -376, -362, -241, -480, -256, 36, - -299, 243, 239, -454, 314, 315, -455, -470, 317, -472, - 86, -253, -338, -246, -547, -548, -409, -362, 113, -547, - 113, 86, -253, -338, -338, -302, -338, -362, -362, -362, - -362, -309, -308, -338, -311, 33, -312, -362, -362, -362, - -362, 113, -362, 113, -278, 42, 49, 50, 51, -358, - -358, 198, -281, 42, 437, 439, 440, -311, 102, 102, - 102, 102, 92, 92, 92, -358, -358, 102, 92, -365, - 92, -549, 173, 46, 47, 102, 102, 102, 102, 42, - 92, -286, 42, 297, 301, 298, 299, 300, 92, 102, - 42, 102, 42, 102, 42, -362, 86, -550, -551, 92, - 333, -469, -582, -358, 370, -441, 128, 128, -381, -584, - 96, 418, -584, -587, 327, -183, 505, 33, -219, 243, - 239, -575, -432, -431, -338, -199, -199, -199, -199, -199, - -199, 69, 80, 69, -212, 86, 69, 74, 69, 74, - 69, -327, 69, 80, -432, -201, -215, -365, 87, -598, - -597, -596, -594, 77, 251, 78, -395, -444, 494, 498, - 499, -428, -377, 92, -435, -223, 24, -249, -249, -501, - 307, 308, 87, 160, -256, -321, 19, 159, 121, -6, - -147, -149, -389, -6, -389, 628, 383, 629, 92, 102, - 102, -531, 458, 453, 455, 113, -398, -518, -517, 62, - -184, -211, -510, -553, -516, -362, 663, 663, 663, 663, - 92, 62, -184, -510, -223, -523, -205, -204, 45, -362, - 102, 17, -425, -420, 147, 147, -362, 394, -436, 92, - 416, 92, 246, 663, 92, -345, -384, -389, 87, -264, - 182, 181, -264, 36, 87, 87, -487, -487, -486, -489, - -486, -264, -264, 87, 86, -203, 87, 24, 87, 87, - 87, -389, 87, 87, 160, -506, 514, -507, 588, -457, + 86, 86, 86, -208, 160, -207, 86, -207, -208, -188, + -187, 33, 34, 33, 34, 33, 34, 33, 34, -611, + 636, 86, 102, 658, 228, 17, -362, 645, -362, -593, + 33, 550, 550, 550, 550, 495, 556, 172, 173, 174, + -362, 171, 250, -362, -409, 252, -409, -409, -233, -362, + -235, 389, 249, 542, 249, -176, -409, -409, -409, -409, + -409, 248, -409, 24, 246, 246, 246, 246, -409, 513, + 128, 128, 60, -572, 176, 160, -562, -215, 86, -593, + 653, 654, 655, -374, 136, 140, -374, -319, 18, -319, + 24, 24, 275, 275, 275, -374, 315, -619, -620, 17, + 138, -372, -620, -372, -372, -374, -621, 248, 480, 44, + 276, 275, -209, -210, 22, -209, 474, 470, -464, 475, + 476, -376, -620, -375, -374, -374, -375, -374, -374, -374, + 33, 246, 249, 506, 337, 640, -619, -619, 32, 32, + -498, -498, -249, -498, -498, 540, -351, -362, -498, -498, + -498, -303, -304, -249, -573, 251, 655, -605, -604, 493, + -607, 495, 165, -441, 165, -441, 89, -422, 277, 277, + 160, 128, 24, -442, 128, 139, -441, -441, -442, -442, + -273, 42, -361, 156, -362, 92, -273, 42, -602, -601, + -249, -208, -188, -187, 87, 87, 87, 550, -593, -498, + -498, -498, -498, -498, -499, -498, -498, -498, -498, -498, + -369, -225, -362, -235, 252, -498, -498, -498, -498, -189, + -190, 147, -389, -362, -193, -3, -146, -145, 122, 123, + 125, 630, 384, 629, 633, 627, -441, 42, -492, 411, + 410, -486, -488, 86, -487, 86, -487, -487, -487, -487, + -487, 86, 86, -489, 86, -489, -489, -486, -490, 86, + -490, -491, 86, -491, -490, -362, -468, 556, -395, -397, + -362, 40, -508, 62, -184, 86, 32, 86, -216, -362, + 192, 170, 644, 36, -509, 62, -184, 86, 32, -208, + -139, 40, -210, 21, 159, 102, 92, -118, -99, 78, + -118, -99, -99, 87, 160, -566, 108, 109, -568, 210, + 201, -362, -116, 92, -7, -11, -8, -9, -10, -47, + -85, -184, 548, 551, -536, -534, 86, 33, 438, 83, + 17, -448, 246, 506, 389, 273, 249, 365, -446, -429, + -426, -424, -361, -422, -425, -424, -451, -338, 470, -140, + 453, 452, 327, -389, -389, -389, -389, -389, 107, 118, + 355, 108, 109, -384, -405, 33, 323, 324, -385, -385, + -385, -385, -385, -385, -385, -385, -385, -385, -385, -385, + -393, -403, -479, 86, 138, 136, 140, 137, 120, -387, + -387, -385, -385, -275, -361, 156, 87, 160, -389, -559, + -558, 122, -389, -389, -389, -389, -415, -417, -338, 86, + -362, -556, -557, 520, 521, 522, 523, 524, 525, 526, + 527, 528, 529, 530, 380, 375, 381, 379, 368, 387, + 382, 383, 194, 537, 538, 531, 532, 533, 534, 535, + 536, -395, -395, -389, -556, -395, -331, 34, 33, -397, + -397, -397, 87, -389, -569, 353, 352, 354, -211, -362, + -395, 87, 87, 87, 102, -397, -397, -395, -385, -395, + -395, -395, -395, -557, -331, -331, -331, -331, 147, -397, + -397, -331, -331, -331, -331, 147, -331, -331, -331, -331, + -331, -331, -331, -331, -331, -331, -331, 87, 87, 87, + 147, -397, -209, -138, -517, -516, -389, 42, -139, -210, + -612, 637, 86, -338, -600, 92, 92, 663, 170, 645, + 17, 506, -362, 17, 246, -362, 102, -362, 102, 496, + 497, 169, 173, 172, -362, 171, -362, -362, 118, -362, + -362, 36, 86, -225, -409, -409, -409, -577, -362, 93, + -430, -427, -424, -362, -362, -420, -362, -351, -249, -409, + -409, -409, -409, -249, -284, 54, 55, 56, -424, -177, + 57, 58, -573, -561, 36, -214, -362, -319, -387, -387, + -389, 365, 506, 246, -424, 277, -619, -374, -374, -352, + -351, -376, -371, -376, -376, -319, -372, -374, -374, -389, + -376, -372, -319, -362, 470, -319, -319, -464, -374, -373, + -362, -373, -409, -351, -352, -352, -249, -249, -298, -305, + -299, -306, 269, 243, 373, 374, 240, 238, 11, 239, + -313, 316, -410, 514, -279, -280, 78, 43, -282, 267, + 415, 408, 279, 283, 96, 284, 448, 285, 248, 287, + 288, 289, 304, 306, 259, 290, 291, 292, 439, 293, + 164, 305, 294, 295, 296, 391, -274, 6, 340, 556, + 42, 52, 53, 462, 461, 559, 280, -362, -577, -575, + 32, -362, 32, -430, -424, -362, -362, 160, 250, -200, + -202, -199, -195, -196, -201, -322, -324, -198, 86, -249, + -187, -362, -441, 160, 494, 496, 497, -605, -442, -605, + -442, 250, 33, 438, -445, 438, 33, -420, -439, 490, + 492, -435, 92, 439, -425, -444, 83, 156, -516, -442, + -442, -444, -444, 155, 160, -603, 495, 496, 234, -209, + 102, -251, -249, -577, -429, -420, -362, -498, -251, -251, + -251, -364, -364, 86, 159, 37, -362, -362, -362, -362, + -318, 160, -317, 17, -363, -362, 36, 92, 159, -147, + -145, 124, -389, -6, 629, -389, -6, -6, -389, -6, + -389, -496, 412, 102, 102, -341, 92, -341, 102, 102, + 102, 562, 87, 92, -433, 83, -510, -398, -554, 618, + -218, 87, -211, -552, -553, -211, -217, -362, -508, -241, + 128, 128, 128, 25, -510, -218, 87, -552, -209, 619, + -139, -206, -205, -389, -362, 24, -118, -99, -564, 159, + 160, -214, -448, -428, -425, -450, 147, -362, -436, 160, + 556, 666, 90, 250, -590, -589, 430, 87, 160, -520, + 251, 513, 92, 663, 446, 228, 229, 107, 355, 108, + 109, -479, -397, -393, -387, -387, -385, -385, -391, 264, + -391, 117, -389, 664, -388, -558, 124, -389, 36, 160, + 36, 160, 84, 160, 87, -486, -389, 159, 87, 87, + 17, 17, 87, -389, 87, 87, 87, 87, 17, 17, + -389, 87, 159, 87, 87, 87, 87, 84, 87, 160, + 87, 87, 87, 87, 160, -397, -397, -389, -397, 87, + 87, 87, -389, -389, -389, -397, 87, -389, -389, -389, + -389, -389, -389, -389, -389, -389, -389, -214, -458, 465, + -458, -458, 160, 160, 160, 87, -139, 86, 102, 160, + 659, -345, -344, 92, -362, -362, 170, 645, -362, 92, + 645, -362, 92, 170, 174, 174, 173, -362, 92, 37, + 24, 24, 314, -234, -236, -237, -238, -239, -240, 138, + 161, 162, 86, -249, -249, -249, -579, 416, -591, 160, + 42, -589, 506, -173, 327, -413, 84, -180, 17, 556, + -249, -249, -249, -249, -263, 36, 17, -194, -250, -362, + 86, 87, 160, -362, -362, -362, -421, 84, -362, -352, + -319, -319, -376, -319, -319, 160, 23, -374, -376, -376, + -241, -372, -241, 159, -241, -351, -485, 36, -215, 160, + 21, 269, -248, -359, -245, -247, 254, -379, -246, 257, + -548, 255, 253, 112, 258, 312, 113, 248, -359, -359, + 254, -283, 250, 36, -359, -301, 248, 358, 312, 255, + 21, 269, -300, 248, 113, -362, 254, 258, 255, 253, + -358, 128, -350, 155, 250, 44, 391, -358, 560, 269, + -358, -358, -358, -358, -358, -358, -358, 286, 286, -358, + -358, -358, -358, -358, -358, -358, -358, -358, -358, -358, + 165, -358, -358, -358, -358, -358, -358, 86, 332, 281, + 282, 314, -580, 416, 32, 371, 371, 372, -591, 367, + 43, 32, -181, 365, -304, -302, -373, 32, -325, -326, + -327, -328, -330, -329, 69, 73, 75, 79, 70, 71, + 72, 76, 81, 74, 32, 160, -360, -365, 36, -362, + 92, -360, -187, -202, -200, -360, 86, -442, -604, -606, + 498, 495, 501, -444, -444, 102, 250, 86, 128, -444, + -444, 42, -361, -601, 502, 496, -139, 160, 83, -251, + -226, -227, -228, -229, -256, -338, 196, 199, 201, 202, + 203, 204, 206, 207, 208, 209, 210, 213, 214, 211, + 212, 263, 191, 192, 193, 194, 215, 177, 197, 554, + 178, 179, 180, 181, 182, 183, 186, 187, 188, 189, + 185, -362, -235, -319, -190, -202, -362, 92, -362, 147, + 125, -6, 123, -151, -150, -149, 126, 627, 633, 125, + 125, 125, 87, 87, 87, 160, 87, 87, 87, 160, + 87, 160, 102, -523, 475, 41, 160, 86, 87, 160, + 62, 160, 128, 87, 160, -389, -362, 92, -389, 192, + 87, 62, -139, 92, 160, -203, 38, 39, 159, 448, + -362, -534, 87, -450, 160, 250, 159, 159, -426, 394, + -361, -428, 21, 556, -338, 40, -345, 128, 663, -362, + 87, -391, -391, 117, -387, -384, 87, 125, -389, 123, + -254, -256, 410, 411, -389, -254, -255, -261, 156, 195, + 263, 194, 193, 191, 410, 411, -273, -417, 553, -203, + 87, -362, -389, -389, 87, -389, -389, 17, -362, -273, + -385, -389, -208, -208, 87, 87, -457, -458, -457, -457, + 87, 87, 87, 87, -457, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 86, 102, 104, 102, + 104, -516, -613, 64, 635, 63, 438, 107, 317, 160, + 102, 92, 664, 160, 128, 92, -362, -362, 17, 246, + -362, 17, 174, 92, -592, 321, 365, 506, 246, 365, + 321, 506, 246, -469, 102, 402, 87, 160, -338, -226, + -215, 86, -215, -582, 477, 418, 428, -358, -381, -380, + 367, 43, -503, 439, 424, 425, -427, 277, -351, -588, + 99, 128, 83, 344, 348, 350, 349, 345, 346, 347, + -407, -408, -406, -410, -575, 86, 86, -184, 36, 136, + -180, 86, 86, 36, -480, 334, -256, -249, -194, -362, + 17, 160, -574, 159, -1, -362, -362, -420, -374, -319, + -389, -389, -319, -374, -374, -376, -362, -241, -480, -256, + 36, -299, 243, 239, -454, 314, 315, -455, -470, 317, + -472, 86, -253, -338, -246, -547, -548, -409, -362, 113, + -547, 113, 86, -253, -338, -338, -302, -338, -362, -362, + -362, -362, -309, -308, -338, -311, 33, -312, -362, -362, + -362, -362, 113, -362, 113, -278, 42, 49, 50, 51, + -358, -358, 198, -281, 42, 438, 440, 441, -311, 102, + 102, 102, 102, 92, 92, 92, -358, -358, 102, 92, + -365, 92, -549, 173, 46, 47, 102, 102, 102, 102, + 42, 92, -286, 42, 297, 301, 298, 299, 300, 92, + 102, 42, 102, 42, 102, 42, -362, 86, -550, -551, + 92, 333, -469, -582, -358, 371, -441, 128, 128, -381, + -584, 96, 419, -584, -587, 327, -183, 506, 33, -219, + 243, 239, -575, -432, -431, -338, -199, -199, -199, -199, + -199, -199, 69, 80, 69, -212, 86, 69, 74, 69, + 74, 69, -327, 69, 80, -432, -201, -215, -365, 87, + -598, -597, -596, -594, 77, 251, 78, -395, -444, 495, + 499, 500, -428, -377, 92, -435, -223, 24, -249, -249, + -501, 307, 308, 87, 160, -256, -321, 19, 159, 121, + -6, -147, -149, -389, -6, -389, 629, 384, 630, 92, + 102, 102, -531, 459, 454, 456, 113, -398, -518, -517, + 62, -184, -211, -510, -553, -516, -362, 664, 664, 664, + 664, 92, 62, -184, -510, -223, -523, -205, -204, 45, + -362, 102, 17, -425, -420, 147, 147, -362, 395, -436, + 92, 417, 92, 246, 664, 92, -345, -384, -389, 87, + -264, 182, 181, -264, 36, 87, 87, -487, -487, -486, + -489, -486, -264, -264, 87, 86, -203, 87, 24, 87, + 87, 87, -389, 87, 87, 160, -506, 515, -507, 589, -457, -457, -457, -457, -457, -457, -457, -457, -457, -457, - -457, -457, -457, -457, -457, -457, -400, -399, 269, 459, - 641, 641, 459, 641, 641, 87, 160, -556, 160, -353, - 322, -353, -344, 92, 250, 92, 170, -362, 92, 644, - 92, -362, -362, -362, 314, -362, 314, -362, -362, 92, - 92, 92, -238, -256, 87, 36, -242, -243, -244, -253, - -245, -247, 36, -583, 96, -578, 92, -362, 93, -584, - 158, 368, 42, 419, 420, 435, 363, 102, 102, 425, - -576, -362, -182, 246, 364, -586, 53, 128, 92, -249, - -406, -350, 155, 288, 337, -316, -315, -362, 92, -242, - -184, -249, -242, -242, -184, -481, 336, 21, 102, 146, - -216, 84, 159, -202, -250, -362, 147, 87, -319, -241, - -319, -319, -374, -481, -184, -466, 318, 86, -464, 86, - -464, 113, 345, -473, -471, 269, -307, 46, 48, -256, - -545, -362, -543, -545, -362, -543, -543, -409, -389, -307, - -253, 250, 32, 239, -310, 342, 343, 348, 350, -437, - 313, 118, -437, 160, -203, 160, -362, -273, -273, 32, - 92, 92, -251, 87, 160, 128, 102, 92, -583, -578, - 128, -442, 92, 92, -584, 92, 92, -588, 128, -252, - 246, -351, 160, -219, -219, -319, 160, 128, -221, -220, - 83, 84, -222, 83, -220, -220, 69, -213, 92, 69, - 69, -319, -596, -595, 24, -548, -548, -548, 87, 87, - 15, -228, 42, -320, 20, 21, 147, 125, 123, 125, - 125, -362, 87, 87, -493, 619, -527, -529, 453, 21, - 21, 15, 251, 87, -510, 663, -510, -531, 46, 47, - -420, -436, 438, -249, 160, 663, -254, -292, 92, -389, - 87, -389, 87, 92, 87, 92, -208, 21, 87, 160, - 87, 87, 87, 160, 87, 87, -389, 87, -556, -354, - 192, 92, -354, 364, -363, -362, 17, -362, 92, -362, - -469, 314, -469, 314, 246, -362, 244, -184, 87, 160, - -184, 92, -581, 429, 102, 42, 102, 158, 421, -504, - -174, 96, -251, 33, -219, -585, 96, 128, 662, 86, - -358, -358, -358, -362, 87, 160, -358, -358, 87, 87, - 87, -271, 555, -482, 268, 102, 146, 102, 146, 102, - -360, -202, -362, -319, -574, 159, -319, -482, -456, 319, - 102, -385, 86, -385, 86, -465, 316, 86, 87, 160, - -362, -338, -268, -267, -265, 107, 118, 42, 407, -266, - 96, 155, 302, 305, 304, 280, 303, -297, -378, 83, - 413, 342, 343, -410, 619, 543, 253, 112, 113, 395, - -379, 86, 86, 84, 322, 86, 86, -545, 87, -307, - -338, 42, -310, 42, 356, 313, -308, -362, 155, -273, - 87, -551, 92, -556, -581, 92, -444, -586, 92, -174, - -251, -575, -208, -431, -516, -389, 86, -389, 87, 86, - 69, 11, 19, -382, -389, -397, 647, 649, 650, 252, - -6, 629, 383, -288, 620, 92, 21, 92, -525, 92, - -432, -493, -142, -285, -350, 285, 87, -291, 138, 555, - 87, 87, -457, -457, -460, -459, -463, 459, 314, 467, - -397, 92, 92, 87, 87, 92, -362, 170, 92, 662, - 92, -469, 92, -469, -362, 314, -230, -256, -178, 555, - -271, -244, -178, 21, 555, 367, 42, 102, 42, 422, - 92, -182, 128, 108, 109, -346, -347, 92, -415, -273, - -275, 92, -315, -382, -382, -269, -184, 36, -270, -313, - -410, 555, -141, -140, -269, 555, 86, -483, 164, 102, - 146, 102, 102, -319, -319, -483, -472, 21, 87, -451, - 87, -451, 86, 128, -385, -471, -474, 62, -265, 107, - -385, 92, -275, -276, 42, 301, 297, 128, 128, -277, - 42, 281, 282, -287, 86, 312, 15, 198, 86, 113, - 113, -249, -415, -415, -546, 344, 345, 346, 351, 348, - 349, 347, 350, -546, -415, -415, 86, -438, -437, -385, - -358, -358, 155, -585, -209, -214, -544, -362, 253, 21, - 21, -502, 555, 648, 86, 86, -362, -362, -342, 621, - 102, 92, 455, -288, -494, 622, -521, -464, -273, 128, - 87, 76, 553, 556, 87, -462, 120, 421, 425, -383, - -386, 102, 104, 190, 158, 87, 87, -362, -349, -348, - 92, 92, 92, 314, -469, 554, -179, 61, 501, 92, - 93, 416, 92, 93, 367, -174, 92, 663, 160, 128, - 87, -452, 269, -184, 160, -313, -350, -142, -452, -272, - -314, -362, 92, -500, 173, 335, 555, 102, 146, 102, - -208, -484, 173, 335, -455, 87, 87, 87, -451, 102, - 87, -478, -475, 86, -313, 271, 138, 92, 92, 102, - 86, -511, 32, 92, -416, 86, 87, 87, 87, 87, - -415, 102, -273, -358, 87, 87, 160, 650, 86, -397, - -397, 86, 21, -342, -495, 623, 92, -530, 458, -524, - -522, 453, 454, 455, 456, 92, 554, 66, 557, -461, - -462, 425, -383, -386, 617, 465, 465, 465, 663, 160, - 128, -469, 92, -232, -362, 312, 438, -347, 92, -418, - -453, 321, 21, -313, -358, -453, 87, 160, -358, -358, - 335, 102, 146, 102, -209, 335, -467, 320, 87, -478, - -313, -477, -476, 319, 272, 86, 87, -389, -401, -358, - 87, -290, -289, 551, -415, -418, 84, -418, 84, -418, - 84, -418, 84, 87, -273, -362, 253, -137, 86, 87, - 87, -343, -362, -525, 92, -532, 251, -528, -529, 457, - -522, 21, 455, 21, 21, -143, 160, 66, 117, 466, - 466, 466, -348, 92, 92, -231, 36, 460, 394, -419, - 259, 356, 357, 96, 555, 342, 343, 361, 360, 359, - 362, 21, -454, -273, -314, -382, -382, 102, 102, 87, - 160, -362, 268, 86, -396, -390, -389, 268, 87, -362, - -296, -294, -295, 83, 472, 310, 311, 87, -546, -546, - -546, -546, -297, 87, 160, -395, 87, 160, -539, 86, - 102, -527, -526, -528, 21, -525, 21, -525, -525, 462, - 555, -461, 92, -358, -358, 92, 92, 341, -358, -358, - -358, -358, -338, 86, -466, -476, -475, -396, 87, 160, - -437, -295, 83, -294, 83, 16, 15, -418, -418, -418, - -418, 86, 87, -362, -542, 32, 87, -538, -537, -339, - -533, -362, 458, 459, 92, -525, 128, 556, -616, -615, - 640, 102, 102, -362, 102, 102, 102, 92, -451, -456, - 87, -390, -293, 307, 308, 32, 173, -293, -395, -541, - -540, -340, 87, 160, 159, 92, 557, 92, 87, -472, - 107, 42, 309, 87, 160, 128, -537, -362, -540, 42, - -389, 159, -362, + -457, -457, -457, -457, -457, -457, -457, -400, -399, 269, + 460, 642, 642, 460, 642, 642, 87, 160, -556, 160, + -353, 322, -353, -344, 92, 250, 92, 170, -362, 92, + 645, 92, -362, -362, -362, 314, -362, 314, -362, -362, + 92, 92, 92, -238, -256, 87, 36, -242, -243, -244, + -253, -245, -247, 36, -583, 96, -578, 92, -362, 93, + -584, 158, 369, 42, 420, 421, 436, 364, 102, 102, + 426, -576, -362, -182, 246, 365, -586, 53, 128, 92, + -249, -406, -350, 155, 288, 337, -316, -315, -362, 92, + -242, -184, -249, -242, -242, -184, -481, 336, 21, 102, + 146, -216, 84, 159, -202, -250, -362, 147, 87, -319, + -241, -319, -319, -374, -481, -184, -466, 318, 86, -464, + 86, -464, 113, 345, -473, -471, 269, -307, 46, 48, + -256, -545, -362, -543, -545, -362, -543, -543, -409, -389, + -307, -253, 250, 32, 239, -310, 342, 343, 348, 350, + -437, 313, 118, -437, 160, -203, 160, -362, -273, -273, + 32, 92, 92, -251, 87, 160, 128, 102, 92, -583, + -578, 128, -442, 92, 92, -584, 92, 92, -588, 128, + -252, 246, -351, 160, -219, -219, -319, 160, 128, -221, + -220, 83, 84, -222, 83, -220, -220, 69, -213, 92, + 69, 69, -319, -596, -595, 24, -548, -548, -548, 87, + 87, 15, -228, 42, -320, 20, 21, 147, 125, 123, + 125, 125, -362, 87, 87, -493, 620, -527, -529, 454, + 21, 21, 15, 251, 87, -510, 664, -510, -531, 46, + 47, -420, -436, 439, -249, 160, 664, -254, -292, 92, + -389, 87, -389, 87, 92, 87, 92, -208, 21, 87, + 160, 87, 87, 87, 160, 87, 87, -389, 87, -556, + -354, 192, 92, -354, 365, -363, -362, 17, -362, 92, + -362, -469, 314, -469, 314, 246, -362, 244, -184, 87, + 160, -184, 92, -581, 430, 102, 42, 102, 158, 422, + -504, -174, 96, -251, 33, -219, -585, 96, 128, 663, + 86, -358, -358, -358, -362, 87, 160, -358, -358, 87, + 87, 87, -271, 556, -482, 268, 102, 146, 102, 146, + 102, -360, -202, -362, -319, -574, 159, -319, -482, -456, + 319, 102, -385, 86, -385, 86, -465, 316, 86, 87, + 160, -362, -338, -268, -267, -265, 107, 118, 42, 408, + -266, 96, 155, 302, 305, 304, 280, 303, -297, -378, + 83, 414, 342, 343, -410, 620, 544, 253, 112, 113, + 396, -379, 86, 86, 84, 322, 86, 86, -545, 87, + -307, -338, 42, -310, 42, 356, 313, -308, -362, 155, + -273, 87, -551, 92, -556, -581, 92, -444, -586, 92, + -174, -251, -575, -208, -431, -516, -389, 86, -389, 87, + 86, 69, 11, 19, -382, -389, -397, 648, 650, 651, + 252, -6, 630, 384, -288, 621, 92, 21, 92, -525, + 92, -432, -493, -142, -285, -350, 285, 87, -291, 138, + 556, 87, 87, -457, -457, -460, -459, -463, 460, 314, + 468, -397, 92, 92, 87, 87, 92, -362, 170, 92, + 663, 92, -469, 92, -469, -362, 314, -230, -256, -178, + 556, -271, -244, -178, 21, 556, 368, 42, 102, 42, + 423, 92, -182, 128, 108, 109, -346, -347, 92, -415, + -273, -275, 92, -315, -382, -382, -269, -184, 36, -270, + -313, -410, 556, -141, -140, -269, 556, 86, -483, 164, + 102, 146, 102, 102, -319, -319, -483, -472, 21, 87, + -451, 87, -451, 86, 128, -385, -471, -474, 62, -265, + 107, -385, 92, -275, -276, 42, 301, 297, 128, 128, + -277, 42, 281, 282, -287, 86, 312, 15, 198, 86, + 113, 113, -249, -415, -415, -546, 344, 345, 346, 351, + 348, 349, 347, 350, -546, -415, -415, 86, -438, -437, + -385, -358, -358, 155, -585, -209, -214, -544, -362, 253, + 21, 21, -502, 556, 649, 86, 86, -362, -362, -342, + 622, 102, 92, 456, -288, -494, 623, -521, -464, -273, + 128, 87, 76, 554, 557, 87, -462, 120, 422, 426, + -383, -386, 102, 104, 190, 158, 87, 87, -362, -349, + -348, 92, 92, 92, 314, -469, 555, -179, 61, 502, + 92, 93, 417, 92, 93, 368, -174, 92, 664, 160, + 128, 87, -452, 269, -184, 160, -313, -350, -142, -452, + -272, -314, -362, 92, -500, 173, 335, 556, 102, 146, + 102, -208, -484, 173, 335, -455, 87, 87, 87, -451, + 102, 87, -478, -475, 86, -313, 271, 138, 92, 92, + 102, 86, -511, 32, 92, -416, 86, 87, 87, 87, + 87, -415, 102, -273, -358, 87, 87, 160, 651, 86, + -397, -397, 86, 21, -342, -495, 624, 92, -530, 459, + -524, -522, 454, 455, 456, 457, 92, 555, 66, 558, + -461, -462, 426, -383, -386, 618, 466, 466, 466, 664, + 160, 128, -469, 92, -232, -362, 312, 439, -347, 92, + -418, -453, 321, 21, -313, -358, -453, 87, 160, -358, + -358, 335, 102, 146, 102, -209, 335, -467, 320, 87, + -478, -313, -477, -476, 319, 272, 86, 87, -389, -401, + -358, 87, -290, -289, 552, -415, -418, 84, -418, 84, + -418, 84, -418, 84, 87, -273, -362, 253, -137, 86, + 87, 87, -343, -362, -525, 92, -532, 251, -528, -529, + 458, -522, 21, 456, 21, 21, -143, 160, 66, 117, + 467, 467, 467, -348, 92, 92, -231, 36, 461, 395, + -419, 259, 356, 357, 96, 556, 342, 343, 361, 360, + 359, 362, 363, 21, -454, -273, -314, -382, -382, 102, + 102, 87, 160, -362, 268, 86, -396, -390, -389, 268, + 87, -362, -296, -294, -295, 83, 473, 310, 311, 87, + -546, -546, -546, -546, -297, 87, 160, -395, 87, 160, + -539, 86, 102, -527, -526, -528, 21, -525, 21, -525, + -525, 463, 556, -461, 92, -358, -358, 92, 92, 341, + -358, -358, -358, -358, -338, 86, -466, -476, -475, -396, + 87, 160, -437, -295, 83, -294, 83, 16, 15, -418, + -418, -418, -418, 86, 87, -362, -542, 32, 87, -538, + -537, -339, -533, -362, 459, 460, 92, -525, 128, 557, + -616, -615, 641, 102, 102, -362, 102, 102, 102, 92, + -451, -456, 87, -390, -293, 307, 308, 32, 173, -293, + -395, -541, -540, -340, 87, 160, 159, 92, 558, 92, + 87, -472, 107, 42, 309, 87, 160, 128, -537, -362, + -540, 42, -389, 159, -362, } var yyDef = [...]int{ @@ -9784,397 +9783,397 @@ var yyDef = [...]int{ 410, 411, 413, 412, -2, 0, 0, 734, 0, 0, 0, 812, 0, 0, 0, 855, 873, 23, 0, 7, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, - 0, 0, 19, 0, 19, 0, 0, 0, 1415, 1416, - 1417, 1418, 2221, 2191, -2, 1953, 1927, 2115, 2116, 2010, - 2023, 2258, 2259, 2260, 2261, 2262, 2263, 2264, 2265, 2266, - 2267, 2268, 2269, 2270, 2271, 2272, 2273, 2274, 2275, 2276, - 2277, 2278, 2279, 2280, 2281, 2282, 2283, 2284, 2285, 2286, - 2287, 2288, 2289, 2290, 2291, 2292, 2293, 2294, 2295, 2296, - 2297, 2298, 2299, 2300, 2301, 2302, 2303, 2304, 2305, 2306, - 2307, 1884, 1885, 1886, 1887, 1888, 1889, 1890, 1891, 1892, - 1893, 1894, 1895, 1896, 1897, 1898, 1899, 1900, 1901, 1902, - 1903, 1904, 1905, 1906, 1907, 1908, 1909, 1910, 1911, 1912, - 1913, 1914, 1915, 1916, 1917, 1918, 1919, 1920, 1921, 1922, - 1923, 1924, 1925, 1926, 1928, 1929, 1930, 1931, 1932, 1933, - 1934, 1935, 1936, 1937, 1938, 1939, 1940, 1941, 1942, 1943, - 1944, 1945, 1946, 1947, 1948, 1949, 1950, 1951, 1952, 1954, - 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, - 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, - 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, - 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, - 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, - 2005, 2006, 2007, 2008, 2009, 2011, 2012, 2013, 2014, 2015, - 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2025, 2026, 2027, - 2028, 2029, 2030, 2031, 2032, 2033, 2034, 2035, 2036, 2037, - 2038, 2039, 2040, 2041, 2042, 2043, 2044, 2045, 2046, 2047, - 2048, 2049, 2050, 2051, 2052, 2053, 2054, 2055, 2056, 2057, - 2058, 2059, 2060, 2061, 2062, 2063, 2064, 2065, 2066, 2067, - 2068, 2069, 2070, 2071, 2072, 2073, 2074, 2075, 2076, 2077, - 2078, 2079, 2080, 2081, 2082, 2083, 2084, 2085, 2086, 2087, - 2088, 2089, 2090, 2091, 2092, 2093, 2094, 2095, 2096, 2097, - 2098, 2099, 2100, 2101, 2102, 2103, 2104, 2105, 2106, 2107, - 2108, 2109, 2110, 2111, 2112, 2113, 2114, 2117, 2118, 2119, - 2120, 2121, 2122, 2123, 2124, 2125, 2126, 2127, 2128, 2129, - 2130, 2131, 2132, 2133, 2134, 2135, 2136, 2137, 2138, 2139, - 2140, 2141, 2142, 2143, 2144, 2145, 2146, 2147, -2, 2149, - 2150, 2151, 2152, 2153, 2154, 2155, 2156, 2157, 2158, 2159, - 2160, 2161, 2162, 2163, 2164, 2165, 2166, 2167, 2168, 2169, - 2170, 2171, 2172, 2173, 2174, 2175, 2176, 2177, 2178, 2179, - 2180, 2181, 2182, 2183, 2184, 2185, 2186, 2187, 2188, 2189, - 2190, 2192, 2193, 2194, 2195, 2196, 2197, 2198, 2199, 2200, - 2201, 2202, 2203, 2204, 2205, 2206, -2, -2, -2, 2210, - 2211, 2212, 2213, 2214, 2215, 2216, 2217, 2218, 2219, 2220, - 2222, 2223, 2224, 2225, 2226, 2227, 2228, 2229, 2230, 2231, - 2232, 2233, 2234, 2235, 2236, 2237, 2238, 2239, 2240, 2241, - 2242, 2243, 2244, 2245, 2246, 2247, 0, 314, 312, 1897, - 1927, 1953, 2010, 2023, 2024, 2063, 2115, 2116, 2148, 2191, - 2207, 2208, 2209, 2221, 0, 0, 1010, 0, 782, 0, - 0, 787, 1362, 782, 351, 723, 724, 812, 838, 683, - 0, 388, 0, 1943, 392, 2198, 0, 0, 0, 0, - 680, 382, 383, 384, 385, 386, 387, 0, 0, 983, - 0, 0, 378, 0, 345, 2013, 2220, 1419, 0, 0, - 0, 0, 0, 201, 1134, 203, 1136, 207, 215, 0, - 0, 0, 220, 221, 224, 225, 226, 227, 228, 0, - 232, 0, 234, 237, 0, 239, 240, 0, 243, 244, - 245, 0, 255, 256, 257, 1137, 1138, 1139, -2, 130, - 1008, 1855, 1741, 0, 1748, 1761, 1772, 1501, 1502, 1503, - 1504, 0, 0, 0, 0, 0, 0, 1512, 1513, 0, - 1543, 2262, 2303, 2304, 0, 1521, 1522, 1523, 1524, 1525, - 1526, 0, 141, 153, 154, 1794, 1795, 1796, 1797, 1798, - 1799, 1800, 0, 1802, 1803, 1804, 1712, 1488, 1415, 0, - 2271, 0, 2293, 2298, 2299, 2300, 2301, 2292, 0, 0, - 1696, 0, 1686, 0, 0, -2, -2, 0, 0, 2088, - -2, 2305, 2306, 2307, 2268, 2289, 2297, 2272, 2273, 2296, - 2264, 2265, 2266, 2259, 2260, 2261, 2263, 2275, 2277, 2288, - 0, 2284, 2294, 2295, 2196, 0, 0, 2243, 0, 0, - 0, 2238, 155, 156, -2, -2, -2, -2, -2, -2, + 0, 0, 19, 0, 19, 0, 0, 0, 1416, 1417, + 1418, 1419, 2223, 2193, -2, 1955, 1929, 2117, 2118, 2012, + 2025, 2260, 2261, 2262, 2263, 2264, 2265, 2266, 2267, 2268, + 2269, 2270, 2271, 2272, 2273, 2274, 2275, 2276, 2277, 2278, + 2279, 2280, 2281, 2282, 2283, 2284, 2285, 2286, 2287, 2288, + 2289, 2290, 2291, 2292, 2293, 2294, 2295, 2296, 2297, 2298, + 2299, 2300, 2301, 2302, 2303, 2304, 2305, 2306, 2307, 2308, + 2309, 1885, 1886, 1887, 1888, 1889, 1890, 1891, 1892, 1893, + 1894, 1895, 1896, 1897, 1898, 1899, 1900, 1901, 1902, 1903, + 1904, 1905, 1906, 1907, 1908, 1909, 1910, 1911, 1912, 1913, + 1914, 1915, 1916, 1917, 1918, 1919, 1920, 1921, 1922, 1923, + 1924, 1925, 1926, 1927, 1928, 1930, 1931, 1932, 1933, 1934, + 1935, 1936, 1937, 1938, 1939, 1940, 1941, 1942, 1943, 1944, + 1945, 1946, 1947, 1948, 1949, 1950, 1951, 1952, 1953, 1954, + 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, + 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, + 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, + 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, + 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, + 2006, 2007, 2008, 2009, 2010, 2011, 2013, 2014, 2015, 2016, + 2017, 2018, 2019, 2020, 2021, 2022, 2023, 2024, 2027, 2028, + 2029, 2030, 2031, 2032, 2033, 2034, 2035, 2036, 2037, 2038, + 2039, 2040, 2041, 2042, 2043, 2044, 2045, 2046, 2047, 2048, + 2049, 2050, 2051, 2052, 2053, 2054, 2055, 2056, 2057, 2058, + 2059, 2060, 2061, 2062, 2063, 2064, 2065, 2066, 2067, 2068, + 2069, 2070, 2071, 2072, 2073, 2074, 2075, 2076, 2077, 2078, + 2079, 2080, 2081, 2082, 2083, 2084, 2085, 2086, 2087, 2088, + 2089, 2090, 2091, 2092, 2093, 2094, 2095, 2096, 2097, 2098, + 2099, 2100, 2101, 2102, 2103, 2104, 2105, 2106, 2107, 2108, + 2109, 2110, 2111, 2112, 2113, 2114, 2115, 2116, 2119, 2120, + 2121, 2122, 2123, 2124, 2125, 2126, 2127, 2128, 2129, 2130, + 2131, 2132, 2133, 2134, 2135, 2136, 2137, 2138, 2139, 2140, + 2141, 2142, 2143, 2144, 2145, 2146, 2147, 2148, 2149, -2, + 2151, 2152, 2153, 2154, 2155, 2156, 2157, 2158, 2159, 2160, + 2161, 2162, 2163, 2164, 2165, 2166, 2167, 2168, 2169, 2170, + 2171, 2172, 2173, 2174, 2175, 2176, 2177, 2178, 2179, 2180, + 2181, 2182, 2183, 2184, 2185, 2186, 2187, 2188, 2189, 2190, + 2191, 2192, 2194, 2195, 2196, 2197, 2198, 2199, 2200, 2201, + 2202, 2203, 2204, 2205, 2206, 2207, 2208, -2, -2, -2, + 2212, 2213, 2214, 2215, 2216, 2217, 2218, 2219, 2220, 2221, + 2222, 2224, 2225, 2226, 2227, 2228, 2229, 2230, 2231, 2232, + 2233, 2234, 2235, 2236, 2237, 2238, 2239, 2240, 2241, 2242, + 2243, 2244, 2245, 2246, 2247, 2248, 2249, 0, 314, 312, + 1899, 1929, 1955, 2012, 2025, 2026, 2065, 2117, 2118, 2150, + 2193, 2209, 2210, 2211, 2223, 0, 0, 1010, 0, 782, + 0, 0, 787, 1363, 782, 351, 723, 724, 812, 838, + 683, 0, 388, 0, 1945, 392, 2200, 0, 0, 0, + 0, 680, 382, 383, 384, 385, 386, 387, 0, 0, + 983, 0, 0, 378, 0, 345, 2015, 2222, 1420, 0, + 0, 0, 0, 0, 201, 1134, 203, 1136, 207, 215, + 0, 0, 0, 220, 221, 224, 225, 226, 227, 228, + 0, 232, 0, 234, 237, 0, 239, 240, 0, 243, + 244, 245, 0, 255, 256, 257, 1137, 1138, 1139, -2, + 130, 1008, 1856, 1742, 0, 1749, 1762, 1773, 1502, 1503, + 1504, 1505, 0, 0, 0, 0, 0, 0, 1513, 1514, + 0, 1544, 2264, 2305, 2306, 0, 1522, 1523, 1524, 1525, + 1526, 1527, 0, 141, 153, 154, 1795, 1796, 1797, 1798, + 1799, 1800, 1801, 0, 1803, 1804, 1805, 1713, 1489, 1416, + 0, 2273, 0, 2295, 2300, 2301, 2302, 2303, 2294, 0, + 0, 1697, 0, 1687, 0, 0, -2, -2, 0, 0, + 2090, -2, 2307, 2308, 2309, 2270, 2291, 2299, 2274, 2275, + 2298, 2266, 2267, 2268, 2261, 2262, 2263, 2265, 2277, 2279, + 2290, 0, 2286, 2296, 2297, 2198, 0, 0, 2245, 0, + 0, 0, 2240, 155, 156, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, - -2, 1707, -2, 1709, -2, 1711, -2, 1714, -2, -2, - -2, -2, 1719, 1720, -2, 1722, -2, -2, -2, -2, - -2, -2, -2, 1698, 1699, 1700, 1701, 1690, 1691, 1692, - 1693, 1694, 1695, -2, -2, -2, 838, 931, 0, 838, - 0, 813, 860, 863, 866, 869, 816, 0, 0, 103, - 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 340, 341, 329, 331, 0, 335, 0, 0, 331, 328, - 322, 0, 1175, 1175, 1175, 0, 0, 0, 0, 1175, - 1175, 1175, 1175, 1175, 0, 1175, 0, 0, 0, 0, - 0, 1175, 0, 1043, 1141, 1142, 1143, 1173, 1174, 1247, - 0, 0, 0, 739, 735, 736, 737, 738, 826, 0, - 828, 831, 0, 0, 660, 660, 898, 898, 0, 606, - 0, 0, 0, 660, 0, 620, 612, 0, 0, 0, - 660, 0, 0, 833, 833, 0, 663, 670, 660, 660, - -2, 660, 660, 657, 660, 0, 0, 1187, 626, 627, - 628, 612, 612, 631, 632, 633, 643, 644, 671, 1879, - 0, 0, 534, 534, 0, 534, 534, 0, 534, 534, - 534, 0, 741, 1969, 2058, 1950, 2029, 1907, 2013, 2220, - 0, 287, 2088, 292, 0, 1952, 1972, 0, 0, 1991, - 0, -2, 0, 367, 838, 0, 0, 812, 0, 0, - 0, 0, 534, 534, 534, 534, 534, 1246, 534, 534, - 534, 534, 534, 0, 0, 0, 534, 534, 534, 534, - 0, 874, 875, 877, 878, 879, 880, 881, 882, 883, - 884, 885, 886, 5, 6, 19, 0, 0, 0, 0, - 0, 0, 109, 108, 0, 1856, 1874, 1807, 1808, 1809, - 1861, 1811, 1865, 1865, 1865, 1865, 1840, 1841, 1842, 1843, - 1844, 1845, 1846, 1847, 1848, 1849, 1865, 1865, 0, 0, - 1854, 1831, 1863, 1863, 1863, 1861, 1858, 1812, 1813, 1814, + -2, -2, 1708, -2, 1710, -2, 1712, -2, 1715, -2, + -2, -2, -2, 1720, 1721, -2, 1723, -2, -2, -2, + -2, -2, -2, -2, 1699, 1700, 1701, 1702, 1691, 1692, + 1693, 1694, 1695, 1696, -2, -2, -2, 838, 931, 0, + 838, 0, 813, 860, 863, 866, 869, 816, 0, 0, + 103, 104, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 340, 341, 329, 331, 0, 335, 0, 0, 331, + 328, 322, 0, 1176, 1176, 1176, 0, 0, 0, 0, + 1176, 1176, 1176, 1176, 1176, 0, 1176, 0, 0, 0, + 0, 0, 1176, 0, 1043, 1141, 1142, 1143, 1174, 1175, + 1248, 0, 0, 0, 739, 735, 736, 737, 738, 826, + 0, 828, 831, 0, 0, 660, 660, 898, 898, 0, + 606, 0, 0, 0, 660, 0, 620, 612, 0, 0, + 0, 660, 0, 0, 833, 833, 0, 663, 670, 660, + 660, -2, 660, 660, 657, 660, 0, 0, 1188, 626, + 627, 628, 612, 612, 631, 632, 633, 643, 644, 671, + 1880, 0, 0, 534, 534, 0, 534, 534, 0, 534, + 534, 534, 0, 741, 1971, 2060, 1952, 2031, 1909, 2015, + 2222, 0, 287, 2090, 292, 0, 1954, 1974, 0, 0, + 1993, 0, -2, 0, 367, 838, 0, 0, 812, 0, + 0, 0, 0, 534, 534, 534, 534, 534, 1247, 534, + 534, 534, 534, 534, 0, 0, 0, 534, 534, 534, + 534, 0, 874, 875, 877, 878, 879, 880, 881, 882, + 883, 884, 885, 886, 5, 6, 19, 0, 0, 0, + 0, 0, 0, 109, 108, 0, 1857, 1875, 1808, 1809, + 1810, 1862, 1812, 1866, 1866, 1866, 1866, 1841, 1842, 1843, + 1844, 1845, 1846, 1847, 1848, 1849, 1850, 1866, 1866, 0, + 0, 1855, 1832, 1864, 1864, 1864, 1862, 1859, 1813, 1814, 1815, 1816, 1817, 1818, 1819, 1820, 1821, 1822, 1823, 1824, - 1825, 1868, 1868, 1871, 1871, 1868, 0, 428, 426, 427, - 1737, 0, 0, 0, 0, 782, 786, 1360, 0, 0, - 0, 838, -2, 0, 0, 684, 389, 1420, 0, 0, - 393, 0, 394, 0, 0, 396, 0, 0, 0, 417, - 0, 420, 404, 405, 406, 407, 400, 0, 181, 0, - 380, 381, 0, 0, 347, 0, 0, 0, 535, 0, - 0, 0, 0, 0, 0, 212, 208, 216, 219, 229, - 236, 0, 248, 250, 253, 209, 217, 222, 223, 230, - 251, 210, 213, 214, 218, 252, 254, 211, 231, 235, - 249, 233, 238, 241, 242, 247, 0, 182, 0, 0, - 0, 0, 0, 1747, 0, 0, 1780, 1781, 1782, 1783, - 1784, 1785, 1786, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, -2, 1741, 0, 0, 1507, 1508, 1509, 1510, - 0, 1514, 0, 1544, 0, 0, 0, 0, 0, 0, - 1801, 1805, 0, 1737, 1737, 0, 1737, 1733, 0, 0, - 0, 0, 0, 0, 1737, 1669, 0, 0, 1671, 1687, - 0, 0, 1673, 1674, 0, 1677, 1678, 1737, 0, 1737, - 1682, 1737, 1737, 1737, 1665, 1666, 0, 1733, 1733, 1733, - 1733, 0, 0, 1733, 1733, 1733, 1733, 1733, 1733, 1733, - 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 0, 0, - 0, 0, 833, 0, 839, 0, -2, 0, 857, 859, - 861, 862, 864, 865, 867, 868, 870, 871, 818, 0, - 0, 105, 0, 0, 0, 0, 0, 0, 71, 73, - 0, 0, 0, 0, 0, 0, 333, 0, 338, 324, - 2050, 0, 323, 0, 0, 0, 0, 0, 1007, 0, - 0, 1175, 1175, 1175, 1044, 0, 0, 0, 0, 0, - 0, 0, 0, 1175, 1175, 1175, 1175, 0, 1193, 0, - 0, 0, 741, 740, 0, 827, 0, 0, 70, 595, - 596, 597, 898, 0, 0, 599, 600, 0, 601, 0, - 0, 612, 660, 660, 618, 619, 614, 613, 666, 667, - 663, 0, 663, 663, 898, 0, 637, 638, 639, 660, - 660, 645, 834, 0, 646, 647, 663, 0, 668, 669, - 898, 0, 0, 898, 898, 0, 655, 656, 658, 660, - 0, 0, 1175, 0, 676, 614, 614, 1880, 1881, 0, - 0, 1184, 0, 0, 0, 0, 679, 0, 0, 0, - 444, 445, 0, 0, 742, 0, 266, 270, 0, 273, - 0, 2058, 0, 2058, 0, 0, 280, 0, 0, 0, - 0, 0, 0, 310, 311, 0, 0, 0, 0, 301, - 304, 1354, 1355, 1131, 1132, 305, 306, 359, 360, 0, - 833, 856, 858, 852, 853, 854, 0, 72, 0, 0, - 0, 0, 0, 534, 0, 0, 0, 0, 0, 717, - 0, 1023, 719, 0, 0, 0, 0, 0, 906, 900, - 902, 978, 141, 876, 8, 126, 123, 0, 19, 0, - 0, 19, 19, 0, 19, 315, 0, 1877, 1875, 1876, - 1810, 1862, 0, 1836, 0, 1837, 1838, 1839, 1850, 1851, - 0, 0, 1832, 0, 1833, 1834, 1835, 1826, 0, 1827, - 1828, 0, 1829, 1830, 313, 425, 0, 0, 1738, 1011, - 0, 760, 774, 755, 0, 763, 0, 0, 1362, 0, - 0, 0, 0, 743, 774, 745, 0, 763, 833, 810, - 0, 788, 0, 0, 390, 0, 401, 395, 0, 402, - 397, 398, 0, 0, 419, 421, 422, 423, 408, 409, - 681, 376, 377, 368, 369, 370, 371, 372, 373, 374, - 375, 0, 0, 379, 151, 0, 348, 349, 0, 0, - 0, 195, 196, 197, 198, 199, 200, 202, 186, 706, - 708, 1123, 1135, 0, 1126, 0, 205, 246, 178, 0, - 0, 0, 1742, 1743, 1744, 1745, 1746, 1751, 0, 1753, - 1755, 1757, 1759, 0, 1777, -2, -2, 1489, 1490, 1491, - 1492, 1493, 1494, 1495, 1496, 1497, 1498, 1499, 1500, 1762, - 1775, 1776, 0, 0, 0, 0, 0, 0, 1773, 1773, - 1768, 0, 1527, 1356, 1357, 1505, 0, 0, 1541, 1545, - 0, 0, 0, 0, 0, 0, 1158, 1861, 0, 142, - 1732, 1636, 1637, 1638, 1639, 1640, 1641, 1642, 1643, 1644, + 1825, 1826, 1869, 1869, 1872, 1872, 1869, 0, 428, 426, + 427, 1738, 0, 0, 0, 0, 782, 786, 1361, 0, + 0, 0, 838, -2, 0, 0, 684, 389, 1421, 0, + 0, 393, 0, 394, 0, 0, 396, 0, 0, 0, + 417, 0, 420, 404, 405, 406, 407, 400, 0, 181, + 0, 380, 381, 0, 0, 347, 0, 0, 0, 535, + 0, 0, 0, 0, 0, 0, 212, 208, 216, 219, + 229, 236, 0, 248, 250, 253, 209, 217, 222, 223, + 230, 251, 210, 213, 214, 218, 252, 254, 211, 231, + 235, 249, 233, 238, 241, 242, 247, 0, 182, 0, + 0, 0, 0, 0, 1748, 0, 0, 1781, 1782, 1783, + 1784, 1785, 1786, 1787, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, -2, 1742, 0, 0, 1508, 1509, 1510, + 1511, 0, 1515, 0, 1545, 0, 0, 0, 0, 0, + 0, 1802, 1806, 0, 1738, 1738, 0, 1738, 1734, 0, + 0, 0, 0, 0, 0, 1738, 1670, 0, 0, 1672, + 1688, 0, 0, 1674, 1675, 0, 1678, 1679, 1738, 0, + 1738, 1683, 1738, 1738, 1738, 1666, 1667, 0, 1734, 1734, + 1734, 1734, 0, 0, 1734, 1734, 1734, 1734, 1734, 1734, + 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 1734, 0, + 0, 0, 0, 833, 0, 839, 0, -2, 0, 857, + 859, 861, 862, 864, 865, 867, 868, 870, 871, 818, + 0, 0, 105, 0, 0, 0, 0, 0, 0, 71, + 73, 0, 0, 0, 0, 0, 0, 333, 0, 338, + 324, 2052, 0, 323, 0, 0, 0, 0, 0, 1007, + 0, 0, 1176, 1176, 1176, 1044, 0, 0, 0, 0, + 0, 0, 0, 0, 1176, 1176, 1176, 1176, 0, 1194, + 0, 0, 0, 741, 740, 0, 827, 0, 0, 70, + 595, 596, 597, 898, 0, 0, 599, 600, 0, 601, + 0, 0, 612, 660, 660, 618, 619, 614, 613, 666, + 667, 663, 0, 663, 663, 898, 0, 637, 638, 639, + 660, 660, 645, 834, 0, 646, 647, 663, 0, 668, + 669, 898, 0, 0, 898, 898, 0, 655, 656, 658, + 660, 0, 0, 1176, 0, 676, 614, 614, 1881, 1882, + 0, 0, 1185, 0, 0, 0, 0, 679, 0, 0, + 0, 444, 445, 0, 0, 742, 0, 266, 270, 0, + 273, 0, 2060, 0, 2060, 0, 0, 280, 0, 0, + 0, 0, 0, 0, 310, 311, 0, 0, 0, 0, + 301, 304, 1355, 1356, 1131, 1132, 305, 306, 359, 360, + 0, 833, 856, 858, 852, 853, 854, 0, 72, 0, + 0, 0, 0, 0, 534, 0, 0, 0, 0, 0, + 717, 0, 1023, 719, 0, 0, 0, 0, 0, 906, + 900, 902, 978, 141, 876, 8, 126, 123, 0, 19, + 0, 0, 19, 19, 0, 19, 315, 0, 1878, 1876, + 1877, 1811, 1863, 0, 1837, 0, 1838, 1839, 1840, 1851, + 1852, 0, 0, 1833, 0, 1834, 1835, 1836, 1827, 0, + 1828, 1829, 0, 1830, 1831, 313, 425, 0, 0, 1739, + 1011, 0, 760, 774, 755, 0, 763, 0, 0, 1363, + 0, 0, 0, 0, 743, 774, 745, 0, 763, 833, + 810, 0, 788, 0, 0, 390, 0, 401, 395, 0, + 402, 397, 398, 0, 0, 419, 421, 422, 423, 408, + 409, 681, 376, 377, 368, 369, 370, 371, 372, 373, + 374, 375, 0, 0, 379, 151, 0, 348, 349, 0, + 0, 0, 195, 196, 197, 198, 199, 200, 202, 186, + 706, 708, 1123, 1135, 0, 1126, 0, 205, 246, 178, + 0, 0, 0, 1743, 1744, 1745, 1746, 1747, 1752, 0, + 1754, 1756, 1758, 1760, 0, 1778, -2, -2, 1490, 1491, + 1492, 1493, 1494, 1495, 1496, 1497, 1498, 1499, 1500, 1501, + 1763, 1776, 1777, 0, 0, 0, 0, 0, 0, 1774, + 1774, 1769, 0, 1528, 1357, 1358, 1506, 0, 0, 1542, + 1546, 0, 0, 0, 0, 0, 0, 1159, 1862, 0, + 142, 1733, 1637, 1638, 1639, 1640, 1641, 1642, 1643, 1644, 1645, 1646, 1647, 1648, 1649, 1650, 1651, 1652, 1653, 1654, 1655, 1656, 1657, 1658, 1659, 1660, 1661, 1662, 1663, 1664, - 0, 0, 1741, 0, 0, 0, 1734, 1735, 0, 0, - 0, 1624, 0, 0, 1630, 1631, 1632, 0, 769, 0, - 1697, 1670, 1688, 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, 930, 932, 0, 778, 780, 781, 807, 788, 814, - 0, 0, 0, 101, 106, 0, 1214, 0, 0, 0, - 0, 0, 0, 0, 74, 1188, 75, 1190, 342, 343, - 0, 0, 337, 325, 2050, 327, 0, 0, 0, 0, - 0, -2, 0, 0, 0, 0, 0, 1059, 1060, 532, - 1117, 0, 0, 0, 1133, 1162, 1171, 0, 0, 0, - 0, 0, 1220, 1045, 1050, 1051, 1052, 1046, 1047, 1053, - 1054, 0, 829, 0, 0, 947, 598, 661, 662, 899, - 602, 0, 0, 609, 2013, 614, 898, 898, 621, 615, - 622, 665, 623, 624, 625, 663, 898, 898, 835, 660, - 663, 648, 664, 663, 1362, 652, 0, 659, 1362, 677, - 1362, 0, 675, 629, 630, 1222, 831, 442, 443, 448, - 450, 0, 499, 499, 499, 482, 499, 0, 0, 470, - 1882, 0, 0, 0, 0, 479, 1882, 0, 0, 1882, - 1882, 1882, 1882, 1882, 1882, 1882, 0, 0, 1882, 1882, - 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 1882, 0, - 1882, 1882, 1882, 1882, 1882, 1339, 1882, 0, 498, 1185, - 489, 490, 491, 492, 497, 0, 0, 527, 0, 0, - 1058, 0, 532, 0, 0, 1100, 0, 0, 911, 0, - 912, 913, 914, 909, 949, 973, 973, 0, 973, 953, - 1362, 0, 0, 0, 278, 279, 267, 0, 268, 0, - 0, 281, 282, 0, 284, 285, 286, 293, 1950, 2029, - 288, 290, 0, 0, 294, 307, 308, 309, 0, 0, - 299, 300, 0, 0, 362, 363, 365, 0, 788, 1189, - 703, 1358, 704, 705, 709, 0, 0, 712, 713, 714, - 715, 716, 1025, 0, 0, 1109, 1110, 1111, 1112, 898, - 0, 907, 0, 903, 979, 0, 981, 0, 0, 124, - 19, 0, 117, 114, 0, 0, 0, 0, 0, 1857, - 1806, 1878, 0, 0, 0, 1859, 0, 0, 0, 0, - 0, 107, 790, 750, 0, 754, 771, 0, 775, 0, - 0, 767, 759, 764, 0, 0, 784, 751, 1361, 0, - 0, 0, 0, 744, 0, 0, 749, 788, 0, 811, - 840, 841, 844, 1421, 0, 403, 399, 418, 0, 0, - 0, 0, 189, 1120, 0, 190, 194, 184, 0, 0, - 0, 1125, 0, 1122, 1127, 0, 204, 0, 0, 179, - 180, 1205, 1214, 0, 0, 0, 1752, 1754, 1756, 1758, - 1760, 0, 1763, 1773, 1773, 1769, 0, 1764, 0, 1766, - 0, 1742, 1511, 0, 1546, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 844, 0, 0, 1614, 1615, 0, - 0, 1619, 0, 1621, 1622, 1623, 1625, 0, 0, 0, - 1629, 0, 1668, 1689, 1672, 1675, 0, 1679, 0, 1681, - 1683, 1684, 1685, 0, 838, 838, 0, 0, 1585, 1585, - 1585, 0, 0, 0, 0, 1585, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1530, 0, 1531, - 1532, 0, 0, 0, 933, 808, 0, 0, 0, 0, - 0, 1212, 0, 91, 0, 0, 0, 0, 96, 0, - 0, 76, 344, 332, 334, 0, 326, 0, 1176, 0, - 0, 0, 0, 0, 1013, 1014, 1016, 0, 1019, 1020, - 1021, 1025, 831, 0, 831, 1070, 1882, 536, 0, 0, - 1119, 0, 1089, 0, 0, 0, -2, 0, 0, 1171, - 0, 0, 0, 1224, 0, 0, 0, 728, 732, 23, - 832, 0, 605, 603, 0, 607, 0, 608, 660, 616, - 617, 898, 640, 641, 0, 0, 898, 660, 660, 651, - 663, 672, 0, 673, 1362, 1224, 0, 0, 1184, 1290, - 1258, 460, 0, 1375, 1376, 500, 0, 1382, 1391, 1175, - 1453, 0, 1391, 0, 0, 1393, 1394, 0, 0, 0, - 0, 483, 484, 0, 469, 0, 0, 0, 0, 0, - 0, 468, 0, 0, 510, 0, 0, 0, 0, 0, - 1883, 1882, 1882, 0, 477, 478, 0, 481, 0, 0, - 0, 0, 0, 0, 0, 0, 1882, 1882, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1330, - 0, 0, 0, 0, 0, 0, 0, 0, 1346, 1347, - 0, 1070, 1882, 0, 0, 0, 0, 536, 1114, 1114, - 1087, 1105, 0, 446, 447, 507, 0, 0, 0, 0, - 0, 0, 0, 939, 0, 0, 0, 938, 0, 0, - 0, 0, 0, 0, 0, 831, 974, 0, 976, 977, - 951, -2, 0, 911, 956, 1737, 0, 271, 272, 0, - 0, 277, 295, 297, 269, 0, 0, 0, 296, 298, - 302, 303, 361, 364, 366, 850, 0, 0, 1248, 0, - 1026, 1027, 1029, 1030, 0, -2, -2, -2, -2, -2, - -2, -2, -2, -2, -2, -2, -2, -2, 1934, -2, + 1665, 0, 0, 1742, 0, 0, 0, 1735, 1736, 0, + 0, 0, 1625, 0, 0, 1631, 1632, 1633, 0, 769, + 0, 1698, 1671, 1689, 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, 930, 932, 0, 778, 780, 781, 807, 788, + 814, 0, 0, 0, 101, 106, 0, 1215, 0, 0, + 0, 0, 0, 0, 0, 74, 1189, 75, 1191, 342, + 343, 0, 0, 337, 325, 2052, 327, 0, 0, 0, + 0, 0, -2, 0, 0, 0, 0, 0, 1059, 1060, + 532, 1117, 0, 0, 0, 1133, 1163, 1172, 0, 0, + 0, 0, 0, 1221, 1045, 1050, 1051, 1052, 1046, 1047, + 1053, 1054, 0, 829, 0, 0, 947, 598, 661, 662, + 899, 602, 0, 0, 609, 2015, 614, 898, 898, 621, + 615, 622, 665, 623, 624, 625, 663, 898, 898, 835, + 660, 663, 648, 664, 663, 1363, 652, 0, 659, 1363, + 677, 1363, 0, 675, 629, 630, 1223, 831, 442, 443, + 448, 450, 0, 499, 499, 499, 482, 499, 0, 0, + 470, 1883, 0, 0, 0, 0, 479, 1883, 0, 0, + 1883, 1883, 1883, 1883, 1883, 1883, 1883, 0, 0, 1883, + 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, + 0, 1883, 1883, 1883, 1883, 1883, 1340, 1883, 0, 498, + 1186, 489, 490, 491, 492, 497, 0, 0, 527, 0, + 0, 1058, 0, 532, 0, 0, 1100, 0, 0, 911, + 0, 912, 913, 914, 909, 949, 973, 973, 0, 973, + 953, 1363, 0, 0, 0, 278, 279, 267, 0, 268, + 0, 0, 281, 282, 0, 284, 285, 286, 293, 1952, + 2031, 288, 290, 0, 0, 294, 307, 308, 309, 0, + 0, 299, 300, 0, 0, 362, 363, 365, 0, 788, + 1190, 703, 1359, 704, 705, 709, 0, 0, 712, 713, + 714, 715, 716, 1025, 0, 0, 1109, 1110, 1111, 1112, + 898, 0, 907, 0, 903, 979, 0, 981, 0, 0, + 124, 19, 0, 117, 114, 0, 0, 0, 0, 0, + 1858, 1807, 1879, 0, 0, 0, 1860, 0, 0, 0, + 0, 0, 107, 790, 750, 0, 754, 771, 0, 775, + 0, 0, 767, 759, 764, 0, 0, 784, 751, 1362, + 0, 0, 0, 0, 744, 0, 0, 749, 788, 0, + 811, 840, 841, 844, 1422, 0, 403, 399, 418, 0, + 0, 0, 0, 189, 1120, 0, 190, 194, 184, 0, + 0, 0, 1125, 0, 1122, 1127, 0, 204, 0, 0, + 179, 180, 1206, 1215, 0, 0, 0, 1753, 1755, 1757, + 1759, 1761, 0, 1764, 1774, 1774, 1770, 0, 1765, 0, + 1767, 0, 1743, 1512, 0, 1547, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 844, 0, 0, 1615, 1616, + 0, 0, 1620, 0, 1622, 1623, 1624, 1626, 0, 0, + 0, 1630, 0, 1669, 1690, 1673, 1676, 0, 1680, 0, + 1682, 1684, 1685, 1686, 0, 838, 838, 0, 0, 1586, + 1586, 1586, 0, 0, 0, 0, 1586, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1531, 0, + 1532, 1533, 0, 0, 0, 933, 808, 0, 0, 0, + 0, 0, 1213, 0, 91, 0, 0, 0, 0, 96, + 0, 0, 76, 344, 332, 334, 0, 326, 0, 1177, + 0, 0, 0, 0, 0, 1013, 1014, 1016, 0, 1019, + 1020, 1021, 1025, 831, 0, 831, 1070, 1883, 536, 0, + 0, 1119, 0, 1089, 0, 0, 0, -2, 0, 0, + 1172, 0, 0, 0, 1225, 0, 0, 0, 728, 732, + 23, 832, 0, 605, 603, 0, 607, 0, 608, 660, + 616, 617, 898, 640, 641, 0, 0, 898, 660, 660, + 651, 663, 672, 0, 673, 1363, 1225, 0, 0, 1185, + 1291, 1259, 460, 0, 1376, 1377, 500, 0, 1383, 1392, + 1176, 1454, 0, 1392, 0, 0, 1394, 1395, 0, 0, + 0, 0, 483, 484, 0, 469, 0, 0, 0, 0, + 0, 0, 468, 0, 0, 510, 0, 0, 0, 0, + 0, 1884, 1883, 1883, 0, 477, 478, 0, 481, 0, + 0, 0, 0, 0, 0, 0, 0, 1883, 1883, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1331, 0, 0, 0, 0, 0, 0, 0, 0, 1347, + 1348, 0, 1070, 1883, 0, 0, 0, 0, 536, 1114, + 1114, 1087, 1105, 0, 446, 447, 507, 0, 0, 0, + 0, 0, 0, 0, 939, 0, 0, 0, 938, 0, + 0, 0, 0, 0, 0, 0, 831, 974, 0, 976, + 977, 951, -2, 0, 911, 956, 1738, 0, 271, 272, + 0, 0, 277, 295, 297, 269, 0, 0, 0, 296, + 298, 302, 303, 361, 364, 366, 850, 0, 0, 1249, + 0, 1026, 1027, 1029, 1030, 0, -2, -2, -2, -2, + -2, -2, -2, -2, -2, -2, -2, -2, -2, 1936, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, - 1024, 720, 889, 901, 908, 980, 982, 142, 904, 0, - 127, 19, 126, 118, 119, 0, 19, 0, 0, 0, - 0, 1867, 1866, 1852, 0, 1853, 1864, 1869, 0, 1872, - 0, 429, 794, 0, 0, 774, 776, 0, 0, 774, - 0, 0, 783, 0, 0, 0, 0, 0, 0, 0, - 774, 850, 790, 0, 847, 845, 846, 0, 0, 682, - 152, 424, 0, 0, 0, 0, 0, 707, 0, 1124, - 186, 0, 0, 206, 0, 0, 0, 1214, 1209, 1736, - 1765, 1767, 0, 1774, 1770, 1506, 1515, 1542, 0, 0, - 1548, 1560, 1560, 0, 0, 0, 1551, 1865, 1865, 1554, - 1861, 1863, 1861, 1560, 1560, 0, 1159, 0, 1160, 844, - 143, 0, 0, 1620, 0, 0, 0, 770, 0, 0, - 0, 1581, 1583, 1585, 1585, 1592, 1586, 1593, 1594, 1585, - 1585, 1585, 1585, 1599, 1585, 1585, 1585, 1585, 1585, 1585, - 1585, 1585, 1585, 1585, 1585, 1579, 0, 0, 1795, 1796, - 779, 0, 0, 821, 822, 823, 824, 825, 0, 0, - 61, 61, 1214, 0, 100, 92, 0, 0, 0, 0, - 0, 336, 0, 77, 78, 80, 0, 0, 0, 0, - 0, 0, 0, 90, 0, 0, 1018, 0, 0, 0, - 1368, 0, 1074, 1071, 1072, 1073, 0, 1114, 537, 538, - 539, 540, 0, 0, 0, 1118, 0, 0, 1082, 0, - 0, 0, 1163, 1164, 1165, 1166, 1167, 1168, 1169, 1170, - -2, 1179, 0, 0, 0, 1368, 1198, 0, 0, 1203, - 1368, 1368, 0, 1232, 0, 1221, 782, 0, -2, 0, - 0, 730, 0, 0, 948, 604, 610, 898, 634, 836, - 837, 1362, 898, 898, 660, 678, 674, 1232, 1223, 0, - 449, 499, 0, 1278, 0, 0, 1284, 0, 1291, 453, - 0, 501, 0, 1381, 1409, 1392, 1409, 1454, 1409, 1409, - 1175, 0, 501, 0, 0, 471, 0, 0, 0, 0, - 0, 467, 504, 844, 454, 456, 457, 458, 508, 509, - 511, 0, 513, 514, 473, 485, 486, 487, 488, 0, - 0, 0, 480, 493, 494, 495, 496, 455, 1307, 1308, - 1309, 1312, 1313, 1314, 1315, 0, 0, 1318, 1319, 1320, - 1321, 1322, 1406, 1407, 1408, 1323, 1324, 1325, 1326, 1327, - 1328, 1329, 1348, 1349, 1350, 1351, 1352, 1353, 1331, 1332, - 1333, 1334, 1335, 1336, 1337, 1338, 0, 0, 1343, 0, - 0, 0, 1074, 0, 0, 0, 0, 0, 1114, 530, - 0, 0, 531, 1089, 0, 1107, 0, 1101, 1102, 0, - 0, 752, 898, 354, 0, 943, 934, 0, 918, 0, - 920, 940, 921, 941, 0, 0, 925, 0, 927, 0, - 923, 924, 929, 922, 898, 910, 950, 975, 952, 955, - 957, 958, 964, 0, 0, 0, 0, 265, 274, 275, - 276, 283, 0, 556, 289, 806, 0, 1359, 710, 711, - 1249, 1250, 718, 0, 1031, 887, 0, 0, 122, 125, - 0, 120, 0, 0, 0, 0, 112, 110, 1860, 0, - 0, 796, 166, 0, 0, 0, 772, 0, 777, 774, - 758, 768, 757, 765, 766, 785, 1363, 1364, 1365, 1366, - 0, 774, 748, 747, 809, 794, 842, 843, 0, 1422, - 391, 0, 1121, 186, 191, 192, 193, 187, 185, 1128, - 0, 1130, 0, 1207, 0, 0, 1771, 1547, 1516, 1549, - 1561, 1562, 1550, 0, 1518, 1519, 1552, 1553, 1555, 1556, - 1557, 1558, 1559, 1520, 0, 1161, 1616, 0, 1618, 1626, - 1627, 0, 1676, 1680, 0, 0, 0, 0, 0, 1590, - 1591, 1595, 1596, 1597, 1598, 1600, 1601, 1602, 1603, 1604, - 1605, 1606, 1607, 1608, 1609, 1610, 838, 1580, 0, 0, - 0, 0, 0, 0, 0, 819, 0, 0, 0, 63, - 0, 63, 1213, 1215, 0, 978, 0, 0, 97, 0, - 0, 79, 81, 0, 2014, 0, 0, 0, 0, 88, - 1006, 1009, 1015, 1017, 0, 0, 0, 1369, 1370, 1372, - 1373, 1374, 0, 1042, 0, 0, 1062, 1063, 1064, 1076, - 0, 542, 543, 0, 0, 0, 555, 551, 552, 553, - 533, 1113, 1096, 0, 0, 1085, 0, 0, 1095, 0, - 1180, 1882, 1882, 1882, 0, 0, 1292, 1882, 1882, 0, - 1200, 1202, 0, 0, 1296, 1235, 0, 0, 1226, 0, - 973, 0, 0, 898, 729, 732, 733, 830, 611, 649, - 653, 650, 898, 1235, 441, 1256, 0, 0, 0, 0, - 0, 1288, 0, 0, 1260, 0, 472, 502, 0, -2, - 0, 1410, 0, 1395, 1410, 0, 0, 1409, 0, 461, - 501, 0, 0, 0, 515, 520, 521, 0, 517, 518, - 1449, 0, 519, 0, 506, 0, 512, 1310, 1311, 0, - 1316, 1317, 0, 1341, 0, 0, 0, 452, 522, 0, - 0, 0, 523, 524, 529, 1115, 1116, 1082, 0, 1096, - 0, 1106, 0, 1103, 1104, 838, 0, 0, 915, 944, - 0, 0, 916, 0, 917, 919, 942, 0, 936, 926, - 928, 353, 959, 0, 0, 961, 962, 963, 954, 291, - 851, 1028, 0, 872, 0, 0, 905, 0, 19, 0, - 0, 115, 1870, 1873, 798, 0, 795, 167, 0, 0, - 0, 0, 762, 773, 756, 1367, 746, 796, 848, 849, - 188, 183, 1129, 1217, 0, 1208, 0, 1473, 1529, 0, - 1628, 0, 1585, 1582, 1585, 1584, 1576, 0, 1533, 0, - 1535, 1536, 1537, 0, 1539, 1540, 0, 817, 0, 59, - 0, 62, 60, 0, 99, 93, 0, 0, 0, 82, - 0, 0, 0, 0, 0, 0, 0, 1048, 1296, 0, - 1048, 1075, 1061, 0, 0, 544, 545, 0, 548, 554, - 1077, 0, 0, 1079, 1080, 1081, 0, 0, 1093, 0, - 0, 0, 0, 1172, 1186, 0, 0, 0, -2, 0, - -2, 1197, 0, 1241, 0, 1233, 0, 1225, 0, 1228, - 898, 898, -2, 726, 731, 0, 654, 1241, 1258, 0, - 1279, 0, 0, 0, 0, 0, 0, 0, 1259, 0, - 1272, 503, 1411, -2, 1425, 1427, 0, 1185, 1430, 1431, - 0, 0, 0, 0, 0, 0, 1480, 1439, 0, 0, - 1443, 1444, 1445, 0, 0, 1448, 0, 1789, 1790, 0, - 1452, 0, 0, 0, 0, 0, 0, 0, 1389, 462, - 463, 0, 465, 466, 1882, 1450, 505, 459, 1882, 475, - 1340, 1344, 1345, 1342, 528, 525, 526, 1085, 1088, 1099, - 1108, 753, 833, 355, 356, 945, 0, 935, 937, 968, - 965, 0, 0, 1032, 888, 896, 2243, 2245, 2242, 116, - 121, 0, 0, 800, 0, 797, 0, 791, 793, 177, - 761, 798, 137, 169, 0, 0, 1517, 0, 0, 0, - 1617, 1667, 1588, 1589, 0, 1577, 0, 1571, 1572, 1573, - 1578, 0, 0, 820, 815, 64, 95, 0, 98, 68, - 83, 0, 84, 0, 0, 0, 0, 1034, 1041, 1055, - 1191, 1371, 1040, 0, 0, 541, 546, 0, 549, 550, - 1097, 1096, 0, 1083, 1084, 0, 1091, 0, 0, 1181, - 1182, 1183, 1293, 1294, 1295, 1251, 1199, 0, -2, 1304, - 0, 0, 1195, 1217, 1251, 0, 0, 1229, 0, 1236, - 0, 1234, 1227, 838, 727, 1238, 451, 1290, 1280, 0, - 1282, 0, 0, 0, 0, 1261, -2, 0, 1426, 1428, - 1429, 1432, 1433, 1434, 1485, 1486, 1487, 0, 0, 1437, - 1482, 1483, 1484, 1438, 0, 0, 0, 0, 0, 1787, - 1788, 1478, 0, 0, 1396, 1398, 1399, 1400, 1401, 1402, - 1403, 1404, 1405, 1397, 0, 0, 0, 1388, 1390, 464, - 0, 0, 1882, 1098, 352, 0, 0, 969, 971, 966, - 967, 890, 0, 0, 0, 0, 111, 113, 128, 0, - 799, 168, 0, 800, 139, 0, 160, 0, 1218, 0, - 1528, 0, 0, 0, 1587, 1574, 0, 0, 0, 0, - 0, 1791, 1792, 1793, 0, 1534, 1538, 94, 0, 66, - 0, 85, 86, 0, 0, 0, 0, 1056, 1057, 1065, - 1066, 0, 1068, 1069, 547, 1078, 1086, 1090, 1093, 0, - 1145, 1253, 0, 1201, 1184, 1306, 1882, 1204, 1253, 0, - 1298, 1882, 1882, 1219, 0, 1231, 0, 1243, 0, 1237, - 833, 440, 0, 1240, 1276, 1281, 1283, 1285, 0, 1289, - 1287, 1262, -2, 0, 1270, 0, 0, 1435, 1436, 0, - 0, 1686, 1882, 0, 1468, 0, 1145, 1145, 1145, 1145, - 0, 516, 474, 0, 946, 960, 0, 897, 0, 0, - 0, 0, 0, 789, 129, 0, 138, 157, 0, 170, - 171, 0, 0, 0, 0, 1210, 0, 1476, 1477, 0, - 1563, 0, 0, 0, 1567, 1568, 1569, 1570, 65, 68, - 0, 0, 87, 0, 1033, 0, 1067, 1092, 1094, 1144, - 1194, 0, 1290, 1305, 0, 1196, 1297, 0, 0, 0, - 1230, 1242, 0, 1245, 725, 1239, 1257, 0, 1286, 1263, - 1271, 0, 1266, 0, 0, 0, 1481, 0, 1442, 0, - 1447, 1456, 1469, 0, 0, 1377, 0, 1379, 0, 1383, - 0, 1385, 0, 0, 476, 970, 972, 0, 1737, 892, - 893, 0, 802, 792, 140, 144, 0, 166, 163, 0, - 172, 0, 0, 0, 0, 1206, 0, 1474, 0, 1564, - 1565, 1566, 67, 69, 89, 0, 1035, 1036, 1049, 1146, - 1882, 1882, 0, 0, 0, 1152, 1153, 1882, 1882, 1882, - 1882, 0, 1278, 1310, 1299, 1300, 1301, 1244, 1277, 1265, - 0, -2, 1273, 0, 0, 1739, 1749, 1750, 1440, 1446, - 1455, 1457, 1458, 0, 1470, 1471, 1472, 1479, 1145, 1145, - 1145, 1145, 1387, 891, 0, 0, 801, 0, 131, 0, - 0, 161, 162, 164, 0, 173, 0, 175, 176, 0, - 0, 1575, 1037, 0, 0, 1149, 1150, 0, 0, 0, - 0, 0, 1254, 0, 1256, 1267, -2, 0, 1275, 0, - 1441, 1459, 0, 1460, 0, 0, 0, 1378, 1380, 1384, - 1386, 1737, 894, 803, 1216, 0, 145, 0, 147, 149, - 150, 1412, 158, 159, 165, 174, 0, 0, 1022, 1038, - 0, 1147, 1148, 1151, 1154, 1155, 1156, 1157, 0, 1258, - 1274, 1740, 1461, 1463, 1464, 0, 0, 1462, 0, 132, - 133, 0, 146, 0, 0, 1211, 1475, 1039, 1255, 1252, - 1465, 1467, 1466, 895, 0, 0, 148, 1413, 134, 135, - 136, 0, 1414, + -2, 1024, 720, 889, 901, 908, 980, 982, 142, 904, + 0, 127, 19, 126, 118, 119, 0, 19, 0, 0, + 0, 0, 1868, 1867, 1853, 0, 1854, 1865, 1870, 0, + 1873, 0, 429, 794, 0, 0, 774, 776, 0, 0, + 774, 0, 0, 783, 0, 0, 0, 0, 0, 0, + 0, 774, 850, 790, 0, 847, 845, 846, 0, 0, + 682, 152, 424, 0, 0, 0, 0, 0, 707, 0, + 1124, 186, 0, 0, 206, 0, 0, 0, 1215, 1210, + 1737, 1766, 1768, 0, 1775, 1771, 1507, 1516, 1543, 0, + 0, 1549, 1561, 1561, 0, 0, 0, 1552, 1866, 1866, + 1555, 1862, 1864, 1862, 1561, 1561, 0, 1160, 0, 1161, + 844, 143, 0, 0, 1621, 0, 0, 0, 770, 0, + 0, 0, 1582, 1584, 1586, 1586, 1593, 1587, 1594, 1595, + 1586, 1586, 1586, 1586, 1600, 1586, 1586, 1586, 1586, 1586, + 1586, 1586, 1586, 1586, 1586, 1586, 1580, 0, 0, 1796, + 1797, 779, 0, 0, 821, 822, 823, 824, 825, 0, + 0, 61, 61, 1215, 0, 100, 92, 0, 0, 0, + 0, 0, 336, 0, 77, 78, 80, 0, 0, 0, + 0, 0, 0, 0, 90, 0, 0, 1018, 0, 0, + 0, 1369, 0, 1074, 1071, 1072, 1073, 0, 1114, 537, + 538, 539, 540, 0, 0, 0, 1118, 0, 0, 1082, + 0, 0, 0, 1164, 1165, 1166, 1167, 1168, 1169, 1170, + 1171, -2, 1180, 0, 0, 0, 1369, 1199, 0, 0, + 1204, 1369, 1369, 0, 1233, 0, 1222, 782, 0, -2, + 0, 0, 730, 0, 0, 948, 604, 610, 898, 634, + 836, 837, 1363, 898, 898, 660, 678, 674, 1233, 1224, + 0, 449, 499, 0, 1279, 0, 0, 1285, 0, 1292, + 453, 0, 501, 0, 1382, 1410, 1393, 1410, 1455, 1410, + 1410, 1176, 0, 501, 0, 0, 471, 0, 0, 0, + 0, 0, 467, 504, 844, 454, 456, 457, 458, 508, + 509, 511, 0, 513, 514, 473, 485, 486, 487, 488, + 0, 0, 0, 480, 493, 494, 495, 496, 455, 1308, + 1309, 1310, 1313, 1314, 1315, 1316, 0, 0, 1319, 1320, + 1321, 1322, 1323, 1407, 1408, 1409, 1324, 1325, 1326, 1327, + 1328, 1329, 1330, 1349, 1350, 1351, 1352, 1353, 1354, 1332, + 1333, 1334, 1335, 1336, 1337, 1338, 1339, 0, 0, 1344, + 0, 0, 0, 1074, 0, 0, 0, 0, 0, 1114, + 530, 0, 0, 531, 1089, 0, 1107, 0, 1101, 1102, + 0, 0, 752, 898, 354, 0, 943, 934, 0, 918, + 0, 920, 940, 921, 941, 0, 0, 925, 0, 927, + 0, 923, 924, 929, 922, 898, 910, 950, 975, 952, + 955, 957, 958, 964, 0, 0, 0, 0, 265, 274, + 275, 276, 283, 0, 556, 289, 806, 0, 1360, 710, + 711, 1250, 1251, 718, 0, 1031, 887, 0, 0, 122, + 125, 0, 120, 0, 0, 0, 0, 112, 110, 1861, + 0, 0, 796, 166, 0, 0, 0, 772, 0, 777, + 774, 758, 768, 757, 765, 766, 785, 1364, 1365, 1366, + 1367, 0, 774, 748, 747, 809, 794, 842, 843, 0, + 1423, 391, 0, 1121, 186, 191, 192, 193, 187, 185, + 1128, 0, 1130, 0, 1208, 0, 0, 1772, 1548, 1517, + 1550, 1562, 1563, 1551, 0, 1519, 1520, 1553, 1554, 1556, + 1557, 1558, 1559, 1560, 1521, 0, 1162, 1617, 0, 1619, + 1627, 1628, 0, 1677, 1681, 0, 0, 0, 0, 0, + 1591, 1592, 1596, 1597, 1598, 1599, 1601, 1602, 1603, 1604, + 1605, 1606, 1607, 1608, 1609, 1610, 1611, 838, 1581, 0, + 0, 0, 0, 0, 0, 0, 819, 0, 0, 0, + 63, 0, 63, 1214, 1216, 0, 978, 0, 0, 97, + 0, 0, 79, 81, 0, 2016, 0, 0, 0, 0, + 88, 1006, 1009, 1015, 1017, 0, 0, 0, 1370, 1371, + 1373, 1374, 1375, 0, 1042, 0, 0, 1062, 1063, 1064, + 1076, 0, 542, 543, 0, 0, 0, 555, 551, 552, + 553, 533, 1113, 1096, 0, 0, 1085, 0, 0, 1095, + 0, 1181, 1883, 1883, 1883, 0, 0, 1293, 1883, 1883, + 0, 1201, 1203, 0, 0, 1297, 1236, 0, 0, 1227, + 0, 973, 0, 0, 898, 729, 732, 733, 830, 611, + 649, 653, 650, 898, 1236, 441, 1257, 0, 0, 0, + 0, 0, 1289, 0, 0, 1261, 0, 472, 502, 0, + -2, 0, 1411, 0, 1396, 1411, 0, 0, 1410, 0, + 461, 501, 0, 0, 0, 515, 520, 521, 0, 517, + 518, 1450, 0, 519, 0, 506, 0, 512, 1311, 1312, + 0, 1317, 1318, 0, 1342, 0, 0, 0, 452, 522, + 0, 0, 0, 523, 524, 529, 1115, 1116, 1082, 0, + 1096, 0, 1106, 0, 1103, 1104, 838, 0, 0, 915, + 944, 0, 0, 916, 0, 917, 919, 942, 0, 936, + 926, 928, 353, 959, 0, 0, 961, 962, 963, 954, + 291, 851, 1028, 0, 872, 0, 0, 905, 0, 19, + 0, 0, 115, 1871, 1874, 798, 0, 795, 167, 0, + 0, 0, 0, 762, 773, 756, 1368, 746, 796, 848, + 849, 188, 183, 1129, 1218, 0, 1209, 0, 1474, 1530, + 0, 1629, 0, 1586, 1583, 1586, 1585, 1577, 0, 1534, + 0, 1536, 1537, 1538, 0, 1540, 1541, 0, 817, 0, + 59, 0, 62, 60, 0, 99, 93, 0, 0, 0, + 82, 0, 0, 0, 0, 0, 0, 0, 1048, 1297, + 0, 1048, 1075, 1061, 0, 0, 544, 545, 0, 548, + 554, 1077, 0, 0, 1079, 1080, 1081, 0, 0, 1093, + 0, 0, 0, 0, 1173, 1187, 0, 0, 0, -2, + 0, -2, 1198, 0, 1242, 0, 1234, 0, 1226, 0, + 1229, 898, 898, -2, 726, 731, 0, 654, 1242, 1259, + 0, 1280, 0, 0, 0, 0, 0, 0, 0, 1260, + 0, 1273, 503, 1412, -2, 1426, 1428, 0, 1186, 1431, + 1432, 0, 0, 0, 0, 0, 0, 1481, 1440, 0, + 0, 1444, 1445, 1446, 0, 0, 1449, 0, 1790, 1791, + 0, 1453, 0, 0, 0, 0, 0, 0, 0, 1390, + 462, 463, 0, 465, 466, 1883, 1451, 505, 459, 1883, + 475, 1341, 1345, 1346, 1343, 528, 525, 526, 1085, 1088, + 1099, 1108, 753, 833, 355, 356, 945, 0, 935, 937, + 968, 965, 0, 0, 1032, 888, 896, 2245, 2247, 2244, + 116, 121, 0, 0, 800, 0, 797, 0, 791, 793, + 177, 761, 798, 137, 169, 0, 0, 1518, 0, 0, + 0, 1618, 1668, 1589, 1590, 0, 1578, 0, 1572, 1573, + 1574, 1579, 0, 0, 820, 815, 64, 95, 0, 98, + 68, 83, 0, 84, 0, 0, 0, 0, 1034, 1041, + 1055, 1192, 1372, 1040, 0, 0, 541, 546, 0, 549, + 550, 1097, 1096, 0, 1083, 1084, 0, 1091, 0, 0, + 1182, 1183, 1184, 1294, 1295, 1296, 1252, 1200, 0, -2, + 1305, 0, 0, 1196, 1218, 1252, 0, 0, 1230, 0, + 1237, 0, 1235, 1228, 838, 727, 1239, 451, 1291, 1281, + 0, 1283, 0, 0, 0, 0, 1262, -2, 0, 1427, + 1429, 1430, 1433, 1434, 1435, 1486, 1487, 1488, 0, 0, + 1438, 1483, 1484, 1485, 1439, 0, 0, 0, 0, 0, + 1788, 1789, 1479, 0, 0, 1397, 1399, 1400, 1401, 1402, + 1403, 1404, 1405, 1406, 1398, 0, 0, 0, 1389, 1391, + 464, 0, 0, 1883, 1098, 352, 0, 0, 969, 971, + 966, 967, 890, 0, 0, 0, 0, 111, 113, 128, + 0, 799, 168, 0, 800, 139, 0, 160, 0, 1219, + 0, 1529, 0, 0, 0, 1588, 1575, 0, 0, 0, + 0, 0, 1792, 1793, 1794, 0, 1535, 1539, 94, 0, + 66, 0, 85, 86, 0, 0, 0, 0, 1056, 1057, + 1065, 1066, 0, 1068, 1069, 547, 1078, 1086, 1090, 1093, + 0, 1145, 1254, 0, 1202, 1185, 1307, 1883, 1205, 1254, + 0, 1299, 1883, 1883, 1220, 0, 1232, 0, 1244, 0, + 1238, 833, 440, 0, 1241, 1277, 1282, 1284, 1286, 0, + 1290, 1288, 1263, -2, 0, 1271, 0, 0, 1436, 1437, + 0, 0, 1687, 1883, 0, 1469, 0, 1145, 1145, 1145, + 1145, 0, 516, 474, 0, 946, 960, 0, 897, 0, + 0, 0, 0, 0, 789, 129, 0, 138, 157, 0, + 170, 171, 0, 0, 0, 0, 1211, 0, 1477, 1478, + 0, 1564, 0, 0, 0, 1568, 1569, 1570, 1571, 65, + 68, 0, 0, 87, 0, 1033, 0, 1067, 1092, 1094, + 1144, 1195, 0, 1291, 1306, 0, 1197, 1298, 0, 0, + 0, 1231, 1243, 0, 1246, 725, 1240, 1258, 0, 1287, + 1264, 1272, 0, 1267, 0, 0, 0, 1482, 0, 1443, + 0, 1448, 1457, 1470, 0, 0, 1378, 0, 1380, 0, + 1384, 0, 1386, 0, 0, 476, 970, 972, 0, 1738, + 892, 893, 0, 802, 792, 140, 144, 0, 166, 163, + 0, 172, 0, 0, 0, 0, 1207, 0, 1475, 0, + 1565, 1566, 1567, 67, 69, 89, 0, 1035, 1036, 1049, + 1146, 1883, 1883, 0, 0, 0, 1152, 1153, 1883, 1883, + 1883, 1883, 1158, 0, 1279, 1311, 1300, 1301, 1302, 1245, + 1278, 1266, 0, -2, 1274, 0, 0, 1740, 1750, 1751, + 1441, 1447, 1456, 1458, 1459, 0, 1471, 1472, 1473, 1480, + 1145, 1145, 1145, 1145, 1388, 891, 0, 0, 801, 0, + 131, 0, 0, 161, 162, 164, 0, 173, 0, 175, + 176, 0, 0, 1576, 1037, 0, 0, 1149, 1150, 0, + 0, 0, 0, 0, 1255, 0, 1257, 1268, -2, 0, + 1276, 0, 1442, 1460, 0, 1461, 0, 0, 0, 1379, + 1381, 1385, 1387, 1738, 894, 803, 1217, 0, 145, 0, + 147, 149, 150, 1413, 158, 159, 165, 174, 0, 0, + 1022, 1038, 0, 1147, 1148, 1151, 1154, 1155, 1156, 1157, + 0, 1259, 1275, 1741, 1462, 1464, 1465, 0, 0, 1463, + 0, 132, 133, 0, 146, 0, 0, 1212, 1476, 1039, + 1256, 1253, 1466, 1468, 1467, 895, 0, 0, 148, 1414, + 134, 135, 136, 0, 1415, } var yyTok1 = [...]int{ @@ -10183,14 +10182,14 @@ var yyTok1 = [...]int{ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 119, 3, 3, 3, 150, 142, 3, 86, 87, 147, 145, 160, 146, 159, 148, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 664, 661, - 129, 128, 130, 3, 665, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 665, 662, + 129, 128, 130, 3, 666, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 152, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 662, 141, 663, 153, + 3, 3, 3, 663, 141, 664, 153, } var yyTok2 = [...]int{ @@ -10300,7 +10299,7 @@ var yyTok3 = [...]int{ 57970, 645, 57971, 646, 57972, 647, 57973, 648, 57974, 649, 57975, 650, 57976, 651, 57977, 652, 57978, 653, 57979, 654, 57980, 655, 57981, 656, 57982, 657, 57983, 658, 57984, 659, - 57985, 660, 0, + 57985, 660, 57986, 661, 0, } var yyErrorMessages = [...]struct { @@ -19663,6 +19662,8 @@ yydefault: opt1.HnswQuantization = opt2.HnswQuantization } else if opt2.HnswEfSearch > 0 { opt1.HnswEfSearch = opt2.HnswEfSearch + } else if opt2.Async { + opt1.Async = opt2.Async } yyLOCAL = opt1 } @@ -19671,7 +19672,7 @@ yydefault: case 1147: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.IndexOption -//line mysql_sql.y:7549 +//line mysql_sql.y:7551 { io := tree.NewIndexOption() io.KeyBlockSize = uint64(yyDollar[3].item.(int64)) @@ -19681,7 +19682,7 @@ yydefault: case 1148: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.IndexOption -//line mysql_sql.y:7555 +//line mysql_sql.y:7557 { val := int64(yyDollar[3].item.(int64)) if val <= 0 { @@ -19697,7 +19698,7 @@ yydefault: case 1149: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.IndexOption -//line mysql_sql.y:7567 +//line mysql_sql.y:7569 { io := tree.NewIndexOption() io.AlgoParamVectorOpType = yyDollar[2].str @@ -19707,7 +19708,7 @@ yydefault: case 1150: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.IndexOption -//line mysql_sql.y:7573 +//line mysql_sql.y:7575 { io := tree.NewIndexOption() io.Comment = yyDollar[2].str @@ -19717,7 +19718,7 @@ yydefault: case 1151: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.IndexOption -//line mysql_sql.y:7579 +//line mysql_sql.y:7581 { io := tree.NewIndexOption() io.ParserName = yyDollar[3].cstrUnion().Compare() @@ -19727,7 +19728,7 @@ yydefault: case 1152: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.IndexOption -//line mysql_sql.y:7585 +//line mysql_sql.y:7587 { io := tree.NewIndexOption() io.Visible = tree.VISIBLE_TYPE_VISIBLE @@ -19737,7 +19738,7 @@ yydefault: case 1153: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.IndexOption -//line mysql_sql.y:7591 +//line mysql_sql.y:7593 { io := tree.NewIndexOption() io.Visible = tree.VISIBLE_TYPE_INVISIBLE @@ -19747,7 +19748,7 @@ yydefault: case 1154: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.IndexOption -//line mysql_sql.y:7597 +//line mysql_sql.y:7599 { val := int64(yyDollar[3].item.(int64)) if val <= 0 { @@ -19762,7 +19763,7 @@ yydefault: case 1155: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.IndexOption -//line mysql_sql.y:7608 +//line mysql_sql.y:7610 { val := int64(yyDollar[3].item.(int64)) if val <= 0 { @@ -19777,7 +19778,7 @@ yydefault: case 1156: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.IndexOption -//line mysql_sql.y:7619 +//line mysql_sql.y:7621 { val := int64(yyDollar[3].item.(int64)) if val <= 0 { @@ -19792,7 +19793,7 @@ yydefault: case 1157: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.IndexOption -//line mysql_sql.y:7630 +//line mysql_sql.y:7632 { io := tree.NewIndexOption() io.HnswQuantization = yyDollar[3].str @@ -19800,25 +19801,35 @@ yydefault: } yyVAL.union = yyLOCAL case 1158: + yyDollar = yyS[yypt-1 : yypt+1] + var yyLOCAL *tree.IndexOption +//line mysql_sql.y:7638 + { + io := tree.NewIndexOption() + io.Async = true + yyLOCAL = io + } + yyVAL.union = yyLOCAL + case 1159: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []*tree.KeyPart -//line mysql_sql.y:7639 +//line mysql_sql.y:7647 { yyLOCAL = []*tree.KeyPart{yyDollar[1].keyPartUnion()} } yyVAL.union = yyLOCAL - case 1159: + case 1160: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []*tree.KeyPart -//line mysql_sql.y:7643 +//line mysql_sql.y:7651 { yyLOCAL = append(yyDollar[1].keyPartsUnion(), yyDollar[3].keyPartUnion()) } yyVAL.union = yyLOCAL - case 1160: + case 1161: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.KeyPart -//line mysql_sql.y:7649 +//line mysql_sql.y:7657 { // Order is parsed but just ignored as MySQL dtree. var ColName = yyDollar[1].unresolvedNameUnion() @@ -19833,10 +19844,10 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1161: + case 1162: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.KeyPart -//line mysql_sql.y:7663 +//line mysql_sql.y:7671 { var ColName *tree.UnresolvedName var Length int @@ -19850,74 +19861,74 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1162: + case 1163: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.IndexType -//line mysql_sql.y:7677 +//line mysql_sql.y:7685 { yyLOCAL = tree.INDEX_TYPE_INVALID } yyVAL.union = yyLOCAL - case 1163: + case 1164: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.IndexType -//line mysql_sql.y:7681 +//line mysql_sql.y:7689 { yyLOCAL = tree.INDEX_TYPE_BTREE } yyVAL.union = yyLOCAL - case 1164: + case 1165: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.IndexType -//line mysql_sql.y:7685 +//line mysql_sql.y:7693 { yyLOCAL = tree.INDEX_TYPE_IVFFLAT } yyVAL.union = yyLOCAL - case 1165: + case 1166: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.IndexType -//line mysql_sql.y:7689 +//line mysql_sql.y:7697 { yyLOCAL = tree.INDEX_TYPE_HNSW } yyVAL.union = yyLOCAL - case 1166: + case 1167: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.IndexType -//line mysql_sql.y:7693 +//line mysql_sql.y:7701 { yyLOCAL = tree.INDEX_TYPE_MASTER } yyVAL.union = yyLOCAL - case 1167: + case 1168: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.IndexType -//line mysql_sql.y:7697 +//line mysql_sql.y:7705 { yyLOCAL = tree.INDEX_TYPE_HASH } yyVAL.union = yyLOCAL - case 1168: + case 1169: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.IndexType -//line mysql_sql.y:7701 +//line mysql_sql.y:7709 { yyLOCAL = tree.INDEX_TYPE_RTREE } yyVAL.union = yyLOCAL - case 1169: + case 1170: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.IndexType -//line mysql_sql.y:7705 +//line mysql_sql.y:7713 { yyLOCAL = tree.INDEX_TYPE_BSI } yyVAL.union = yyLOCAL - case 1170: + case 1171: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:7711 +//line mysql_sql.y:7719 { var IfNotExists = yyDollar[3].ifNotExistsUnion() var Name = tree.Identifier(yyDollar[4].str) @@ -19931,76 +19942,76 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1171: + case 1172: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.SubscriptionOption -//line mysql_sql.y:7726 +//line mysql_sql.y:7734 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1172: + case 1173: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.SubscriptionOption -//line mysql_sql.y:7730 +//line mysql_sql.y:7738 { var From = tree.Identifier(yyDollar[2].str) var Publication = tree.Identifier(yyDollar[4].cstrUnion().Compare()) yyLOCAL = tree.NewSubscriptionOption(From, Publication) } yyVAL.union = yyLOCAL - case 1175: + case 1176: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:7741 +//line mysql_sql.y:7749 { yyLOCAL = false } yyVAL.union = yyLOCAL - case 1176: + case 1177: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:7745 +//line mysql_sql.y:7753 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 1177: + case 1178: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL []tree.CreateOption -//line mysql_sql.y:7750 +//line mysql_sql.y:7758 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1178: + case 1179: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []tree.CreateOption -//line mysql_sql.y:7754 +//line mysql_sql.y:7762 { yyLOCAL = yyDollar[1].createOptionsUnion() } yyVAL.union = yyLOCAL - case 1179: + case 1180: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []tree.CreateOption -//line mysql_sql.y:7760 +//line mysql_sql.y:7768 { yyLOCAL = []tree.CreateOption{yyDollar[1].createOptionUnion()} } yyVAL.union = yyLOCAL - case 1180: + case 1181: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL []tree.CreateOption -//line mysql_sql.y:7764 +//line mysql_sql.y:7772 { yyLOCAL = append(yyDollar[1].createOptionsUnion(), yyDollar[2].createOptionUnion()) } yyVAL.union = yyLOCAL - case 1181: + case 1182: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.CreateOption -//line mysql_sql.y:7770 +//line mysql_sql.y:7778 { var IsDefault = yyDollar[1].defaultOptionalUnion() var Charset = yyDollar[4].str @@ -20010,10 +20021,10 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1182: + case 1183: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.CreateOption -//line mysql_sql.y:7779 +//line mysql_sql.y:7787 { var IsDefault = yyDollar[1].defaultOptionalUnion() var Collate = yyDollar[4].str @@ -20023,35 +20034,35 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1183: + case 1184: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.CreateOption -//line mysql_sql.y:7788 +//line mysql_sql.y:7796 { var Encrypt = yyDollar[4].str yyLOCAL = tree.NewCreateOptionEncryption(Encrypt) } yyVAL.union = yyLOCAL - case 1184: + case 1185: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:7794 +//line mysql_sql.y:7802 { yyLOCAL = false } yyVAL.union = yyLOCAL - case 1185: + case 1186: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:7798 +//line mysql_sql.y:7806 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 1186: + case 1187: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:7804 +//line mysql_sql.y:7812 { var TableName = yyDollar[4].tableNameUnion() var Options = yyDollar[7].connectorOptionsUnion() @@ -20061,18 +20072,18 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1187: + case 1188: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:7815 +//line mysql_sql.y:7823 { yyLOCAL = &tree.ShowConnectors{} } yyVAL.union = yyLOCAL - case 1188: + case 1189: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:7821 +//line mysql_sql.y:7829 { var taskID uint64 switch v := yyDollar[4].item.(type) { @@ -20089,10 +20100,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1189: + case 1190: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:7839 +//line mysql_sql.y:7847 { var taskID uint64 switch v := yyDollar[4].item.(type) { @@ -20109,10 +20120,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1190: + case 1191: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:7857 +//line mysql_sql.y:7865 { var taskID uint64 switch v := yyDollar[4].item.(type) { @@ -20129,10 +20140,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1191: + case 1192: yyDollar = yyS[yypt-9 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:7875 +//line mysql_sql.y:7883 { var Replace = yyDollar[2].sourceOptionalUnion() var IfNotExists = yyDollar[4].ifNotExistsUnion() @@ -20148,26 +20159,26 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1192: + case 1193: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:7891 +//line mysql_sql.y:7899 { yyLOCAL = false } yyVAL.union = yyLOCAL - case 1193: + case 1194: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:7895 +//line mysql_sql.y:7903 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 1194: + case 1195: yyDollar = yyS[yypt-11 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:7904 +//line mysql_sql.y:7912 { t := tree.NewCreateTable() t.Temporary = yyDollar[2].boolValUnion() @@ -20180,10 +20191,10 @@ yydefault: yyLOCAL = t } yyVAL.union = yyLOCAL - case 1195: + case 1196: yyDollar = yyS[yypt-9 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:7916 +//line mysql_sql.y:7924 { t := tree.NewCreateTable() t.IfNotExists = yyDollar[4].ifNotExistsUnion() @@ -20193,10 +20204,10 @@ yydefault: yyLOCAL = t } yyVAL.union = yyLOCAL - case 1196: + case 1197: yyDollar = yyS[yypt-11 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:7925 +//line mysql_sql.y:7933 { t := tree.NewCreateTable() t.IsClusterTable = true @@ -20209,10 +20220,10 @@ yydefault: yyLOCAL = t } yyVAL.union = yyLOCAL - case 1197: + case 1198: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:7937 +//line mysql_sql.y:7945 { t := tree.NewCreateTable() t.IsDynamicTable = true @@ -20223,10 +20234,10 @@ yydefault: yyLOCAL = t } yyVAL.union = yyLOCAL - case 1198: + case 1199: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:7947 +//line mysql_sql.y:7955 { t := tree.NewCreateTable() t.IsAsSelect = true @@ -20237,10 +20248,10 @@ yydefault: yyLOCAL = t } yyVAL.union = yyLOCAL - case 1199: + case 1200: yyDollar = yyS[yypt-9 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:7957 +//line mysql_sql.y:7965 { t := tree.NewCreateTable() t.IsAsSelect = true @@ -20252,10 +20263,10 @@ yydefault: yyLOCAL = t } yyVAL.union = yyLOCAL - case 1200: + case 1201: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:7968 +//line mysql_sql.y:7976 { t := tree.NewCreateTable() t.IsAsSelect = true @@ -20266,10 +20277,10 @@ yydefault: yyLOCAL = t } yyVAL.union = yyLOCAL - case 1201: + case 1202: yyDollar = yyS[yypt-10 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:7978 +//line mysql_sql.y:7986 { t := tree.NewCreateTable() t.IsAsSelect = true @@ -20281,10 +20292,10 @@ yydefault: yyLOCAL = t } yyVAL.union = yyLOCAL - case 1202: + case 1203: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:7989 +//line mysql_sql.y:7997 { t := tree.NewCreateTable() t.IsAsLike = true @@ -20293,10 +20304,10 @@ yydefault: yyLOCAL = t } yyVAL.union = yyLOCAL - case 1203: + case 1204: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:7997 +//line mysql_sql.y:8005 { t := tree.NewCreateTable() t.Temporary = yyDollar[2].boolValUnion() @@ -20306,19 +20317,19 @@ yydefault: yyLOCAL = t } yyVAL.union = yyLOCAL - case 1204: + case 1205: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.ExternParam -//line mysql_sql.y:8008 +//line mysql_sql.y:8016 { yyLOCAL = yyDollar[1].loadParamUnion() yyLOCAL.Tail = yyDollar[2].tailParamUnion() } yyVAL.union = yyLOCAL - case 1205: + case 1206: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.ExternParam -//line mysql_sql.y:8015 +//line mysql_sql.y:8023 { yyLOCAL = &tree.ExternParam{ ExParamConst: tree.ExParamConst{ @@ -20329,10 +20340,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1206: + case 1207: yyDollar = yyS[yypt-9 : yypt+1] var yyLOCAL *tree.ExternParam -//line mysql_sql.y:8025 +//line mysql_sql.y:8033 { yyLOCAL = &tree.ExternParam{ ExParamConst: tree.ExParamConst{ @@ -20346,10 +20357,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1207: + case 1208: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.ExternParam -//line mysql_sql.y:8038 +//line mysql_sql.y:8046 { yyLOCAL = &tree.ExternParam{ ExParamConst: tree.ExParamConst{ @@ -20358,10 +20369,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1208: + case 1209: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *tree.ExternParam -//line mysql_sql.y:8046 +//line mysql_sql.y:8054 { yyLOCAL = &tree.ExternParam{ ExParamConst: tree.ExParamConst{ @@ -20371,10 +20382,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1209: + case 1210: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.ExternParam -//line mysql_sql.y:8055 +//line mysql_sql.y:8063 { yyLOCAL = &tree.ExternParam{ ExParamConst: tree.ExParamConst{ @@ -20383,55 +20394,55 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1210: + case 1211: yyDollar = yyS[yypt-0 : yypt+1] -//line mysql_sql.y:8064 +//line mysql_sql.y:8072 { yyVAL.str = "" } - case 1211: + case 1212: yyDollar = yyS[yypt-4 : yypt+1] -//line mysql_sql.y:8068 +//line mysql_sql.y:8076 { yyVAL.str = yyDollar[4].str } - case 1212: + case 1213: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []string -//line mysql_sql.y:8074 +//line mysql_sql.y:8082 { yyLOCAL = yyDollar[1].strsUnion() } yyVAL.union = yyLOCAL - case 1213: + case 1214: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []string -//line mysql_sql.y:8078 +//line mysql_sql.y:8086 { yyLOCAL = append(yyDollar[1].strsUnion(), yyDollar[3].strsUnion()...) } yyVAL.union = yyLOCAL - case 1214: + case 1215: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL []string -//line mysql_sql.y:8083 +//line mysql_sql.y:8091 { yyLOCAL = []string{} } yyVAL.union = yyLOCAL - case 1215: + case 1216: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []string -//line mysql_sql.y:8087 +//line mysql_sql.y:8095 { yyLOCAL = append(yyLOCAL, yyDollar[1].str) yyLOCAL = append(yyLOCAL, yyDollar[3].str) } yyVAL.union = yyLOCAL - case 1216: + case 1217: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.TailParameter -//line mysql_sql.y:8094 +//line mysql_sql.y:8102 { yyLOCAL = &tree.TailParameter{ Charset: yyDollar[1].str, @@ -20443,22 +20454,22 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1217: + case 1218: yyDollar = yyS[yypt-0 : yypt+1] -//line mysql_sql.y:8106 +//line mysql_sql.y:8114 { yyVAL.str = "" } - case 1218: + case 1219: yyDollar = yyS[yypt-2 : yypt+1] -//line mysql_sql.y:8110 +//line mysql_sql.y:8118 { yyVAL.str = yyDollar[2].str } - case 1219: + case 1220: yyDollar = yyS[yypt-10 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:8116 +//line mysql_sql.y:8124 { var Name = yyDollar[4].tableNameUnion() var Type = yyDollar[5].columnTypeUnion() @@ -20480,10 +20491,10 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1220: + case 1221: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:8137 +//line mysql_sql.y:8145 { locale := "" fstr := "bigint" @@ -20498,44 +20509,44 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1221: + case 1222: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:8151 +//line mysql_sql.y:8159 { yyLOCAL = yyDollar[2].columnTypeUnion() } yyVAL.union = yyLOCAL - case 1222: + case 1223: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.TypeOption -//line mysql_sql.y:8155 +//line mysql_sql.y:8163 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1223: + case 1224: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.TypeOption -//line mysql_sql.y:8159 +//line mysql_sql.y:8167 { yyLOCAL = &tree.TypeOption{ Type: yyDollar[2].columnTypeUnion(), } } yyVAL.union = yyLOCAL - case 1224: + case 1225: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.IncrementByOption -//line mysql_sql.y:8165 +//line mysql_sql.y:8173 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1225: + case 1226: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.IncrementByOption -//line mysql_sql.y:8169 +//line mysql_sql.y:8177 { yyLOCAL = &tree.IncrementByOption{ Minus: false, @@ -20543,10 +20554,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1226: + case 1227: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.IncrementByOption -//line mysql_sql.y:8176 +//line mysql_sql.y:8184 { yyLOCAL = &tree.IncrementByOption{ Minus: false, @@ -20554,10 +20565,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1227: + case 1228: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.IncrementByOption -//line mysql_sql.y:8183 +//line mysql_sql.y:8191 { yyLOCAL = &tree.IncrementByOption{ Minus: true, @@ -20565,10 +20576,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1228: + case 1229: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.IncrementByOption -//line mysql_sql.y:8190 +//line mysql_sql.y:8198 { yyLOCAL = &tree.IncrementByOption{ Minus: true, @@ -20576,42 +20587,42 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1229: + case 1230: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:8197 +//line mysql_sql.y:8205 { yyLOCAL = false } yyVAL.union = yyLOCAL - case 1230: + case 1231: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:8201 +//line mysql_sql.y:8209 { yyLOCAL = false } yyVAL.union = yyLOCAL - case 1231: + case 1232: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:8205 +//line mysql_sql.y:8213 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 1232: + case 1233: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.MinValueOption -//line mysql_sql.y:8209 +//line mysql_sql.y:8217 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1233: + case 1234: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.MinValueOption -//line mysql_sql.y:8213 +//line mysql_sql.y:8221 { yyLOCAL = &tree.MinValueOption{ Minus: false, @@ -20619,10 +20630,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1234: + case 1235: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.MinValueOption -//line mysql_sql.y:8220 +//line mysql_sql.y:8228 { yyLOCAL = &tree.MinValueOption{ Minus: true, @@ -20630,18 +20641,18 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1235: + case 1236: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.MaxValueOption -//line mysql_sql.y:8227 +//line mysql_sql.y:8235 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1236: + case 1237: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.MaxValueOption -//line mysql_sql.y:8231 +//line mysql_sql.y:8239 { yyLOCAL = &tree.MaxValueOption{ Minus: false, @@ -20649,10 +20660,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1237: + case 1238: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.MaxValueOption -//line mysql_sql.y:8238 +//line mysql_sql.y:8246 { yyLOCAL = &tree.MaxValueOption{ Minus: true, @@ -20660,46 +20671,46 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1238: + case 1239: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.CycleOption -//line mysql_sql.y:8245 +//line mysql_sql.y:8253 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1239: + case 1240: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.CycleOption -//line mysql_sql.y:8249 +//line mysql_sql.y:8257 { yyLOCAL = &tree.CycleOption{ Cycle: false, } } yyVAL.union = yyLOCAL - case 1240: + case 1241: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.CycleOption -//line mysql_sql.y:8255 +//line mysql_sql.y:8263 { yyLOCAL = &tree.CycleOption{ Cycle: true, } } yyVAL.union = yyLOCAL - case 1241: + case 1242: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.StartWithOption -//line mysql_sql.y:8261 +//line mysql_sql.y:8269 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1242: + case 1243: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.StartWithOption -//line mysql_sql.y:8265 +//line mysql_sql.y:8273 { yyLOCAL = &tree.StartWithOption{ Minus: false, @@ -20707,10 +20718,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1243: + case 1244: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.StartWithOption -//line mysql_sql.y:8272 +//line mysql_sql.y:8280 { yyLOCAL = &tree.StartWithOption{ Minus: false, @@ -20718,10 +20729,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1244: + case 1245: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.StartWithOption -//line mysql_sql.y:8279 +//line mysql_sql.y:8287 { yyLOCAL = &tree.StartWithOption{ Minus: true, @@ -20729,10 +20740,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1245: + case 1246: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.StartWithOption -//line mysql_sql.y:8286 +//line mysql_sql.y:8294 { yyLOCAL = &tree.StartWithOption{ Minus: true, @@ -20740,58 +20751,58 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1246: + case 1247: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:8293 +//line mysql_sql.y:8301 { yyLOCAL = false } yyVAL.union = yyLOCAL - case 1247: + case 1248: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:8297 +//line mysql_sql.y:8305 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 1248: + case 1249: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:8302 +//line mysql_sql.y:8310 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 1249: + case 1250: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:8306 +//line mysql_sql.y:8314 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 1250: + case 1251: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:8310 +//line mysql_sql.y:8318 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 1251: + case 1252: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.PartitionOption -//line mysql_sql.y:8315 +//line mysql_sql.y:8323 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1252: + case 1253: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.PartitionOption -//line mysql_sql.y:8319 +//line mysql_sql.y:8327 { yyDollar[3].partitionByUnion().Num = uint64(yyDollar[4].int64ValUnion()) var PartBy = yyDollar[3].partitionByUnion() @@ -20804,18 +20815,18 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1253: + case 1254: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.ClusterByOption -//line mysql_sql.y:8332 +//line mysql_sql.y:8340 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1254: + case 1255: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.ClusterByOption -//line mysql_sql.y:8336 +//line mysql_sql.y:8344 { var ColumnList = []*tree.UnresolvedName{yyDollar[3].unresolvedNameUnion()} yyLOCAL = tree.NewClusterByOption( @@ -20824,10 +20835,10 @@ yydefault: } yyVAL.union = yyLOCAL - case 1255: + case 1256: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *tree.ClusterByOption -//line mysql_sql.y:8344 +//line mysql_sql.y:8352 { var ColumnList = yyDollar[4].unresolveNamesUnion() yyLOCAL = tree.NewClusterByOption( @@ -20835,18 +20846,18 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1256: + case 1257: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.PartitionBy -//line mysql_sql.y:8352 +//line mysql_sql.y:8360 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1257: + case 1258: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.PartitionBy -//line mysql_sql.y:8356 +//line mysql_sql.y:8364 { var IsSubPartition = true var PType = yyDollar[3].partitionByUnion() @@ -20858,42 +20869,42 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1258: + case 1259: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL []*tree.Partition -//line mysql_sql.y:8368 +//line mysql_sql.y:8376 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1259: + case 1260: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []*tree.Partition -//line mysql_sql.y:8372 +//line mysql_sql.y:8380 { yyLOCAL = yyDollar[2].partitionsUnion() } yyVAL.union = yyLOCAL - case 1260: + case 1261: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []*tree.Partition -//line mysql_sql.y:8378 +//line mysql_sql.y:8386 { yyLOCAL = []*tree.Partition{yyDollar[1].partitionUnion()} } yyVAL.union = yyLOCAL - case 1261: + case 1262: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []*tree.Partition -//line mysql_sql.y:8382 +//line mysql_sql.y:8390 { yyLOCAL = append(yyDollar[1].partitionsUnion(), yyDollar[3].partitionUnion()) } yyVAL.union = yyLOCAL - case 1262: + case 1263: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.Partition -//line mysql_sql.y:8388 +//line mysql_sql.y:8396 { var Name = tree.Identifier(yyDollar[2].cstrUnion().Compare()) var Values = yyDollar[3].valuesUnion() @@ -20907,10 +20918,10 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1263: + case 1264: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *tree.Partition -//line mysql_sql.y:8401 +//line mysql_sql.y:8409 { var Name = tree.Identifier(yyDollar[2].cstrUnion().Compare()) var Values = yyDollar[3].valuesUnion() @@ -20924,42 +20935,42 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1264: + case 1265: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL []*tree.SubPartition -//line mysql_sql.y:8415 +//line mysql_sql.y:8423 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1265: + case 1266: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []*tree.SubPartition -//line mysql_sql.y:8419 +//line mysql_sql.y:8427 { yyLOCAL = yyDollar[2].subPartitionsUnion() } yyVAL.union = yyLOCAL - case 1266: + case 1267: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []*tree.SubPartition -//line mysql_sql.y:8425 +//line mysql_sql.y:8433 { yyLOCAL = []*tree.SubPartition{yyDollar[1].subPartitionUnion()} } yyVAL.union = yyLOCAL - case 1267: + case 1268: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []*tree.SubPartition -//line mysql_sql.y:8429 +//line mysql_sql.y:8437 { yyLOCAL = append(yyDollar[1].subPartitionsUnion(), yyDollar[3].subPartitionUnion()) } yyVAL.union = yyLOCAL - case 1268: + case 1269: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.SubPartition -//line mysql_sql.y:8435 +//line mysql_sql.y:8443 { var Name = tree.Identifier(yyDollar[2].cstrUnion().Compare()) var Options []tree.TableOption @@ -20969,10 +20980,10 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1269: + case 1270: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.SubPartition -//line mysql_sql.y:8444 +//line mysql_sql.y:8452 { var Name = tree.Identifier(yyDollar[2].cstrUnion().Compare()) var Options = yyDollar[3].tableOptionsUnion() @@ -20982,53 +20993,53 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1270: + case 1271: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []tree.TableOption -//line mysql_sql.y:8455 +//line mysql_sql.y:8463 { yyLOCAL = []tree.TableOption{yyDollar[1].tableOptionUnion()} } yyVAL.union = yyLOCAL - case 1271: + case 1272: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL []tree.TableOption -//line mysql_sql.y:8459 +//line mysql_sql.y:8467 { yyLOCAL = append(yyDollar[1].tableOptionsUnion(), yyDollar[2].tableOptionUnion()) } yyVAL.union = yyLOCAL - case 1272: + case 1273: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.Values -//line mysql_sql.y:8464 +//line mysql_sql.y:8472 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1273: + case 1274: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Values -//line mysql_sql.y:8468 +//line mysql_sql.y:8476 { expr := tree.NewMaxValue() var valueList = tree.Exprs{expr} yyLOCAL = tree.NewValuesLessThan(valueList) } yyVAL.union = yyLOCAL - case 1274: + case 1275: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL tree.Values -//line mysql_sql.y:8474 +//line mysql_sql.y:8482 { var valueList = yyDollar[5].exprsUnion() yyLOCAL = tree.NewValuesLessThan(valueList) } yyVAL.union = yyLOCAL - case 1275: + case 1276: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.Values -//line mysql_sql.y:8479 +//line mysql_sql.y:8487 { var valueList = yyDollar[4].exprsUnion() yyLOCAL = tree.NewValuesIn( @@ -21036,18 +21047,18 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1276: + case 1277: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL int64 -//line mysql_sql.y:8487 +//line mysql_sql.y:8495 { yyLOCAL = 0 } yyVAL.union = yyLOCAL - case 1277: + case 1278: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL int64 -//line mysql_sql.y:8491 +//line mysql_sql.y:8499 { res := yyDollar[2].item.(int64) if res == 0 { @@ -21057,18 +21068,18 @@ yydefault: yyLOCAL = res } yyVAL.union = yyLOCAL - case 1278: + case 1279: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL int64 -//line mysql_sql.y:8501 +//line mysql_sql.y:8509 { yyLOCAL = 0 } yyVAL.union = yyLOCAL - case 1279: + case 1280: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL int64 -//line mysql_sql.y:8505 +//line mysql_sql.y:8513 { res := yyDollar[2].item.(int64) if res == 0 { @@ -21078,10 +21089,10 @@ yydefault: yyLOCAL = res } yyVAL.union = yyLOCAL - case 1280: + case 1281: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.PartitionBy -//line mysql_sql.y:8516 +//line mysql_sql.y:8524 { rangeTyp := tree.NewRangeType() rangeTyp.Expr = yyDollar[3].exprUnion() @@ -21090,10 +21101,10 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1281: + case 1282: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *tree.PartitionBy -//line mysql_sql.y:8524 +//line mysql_sql.y:8532 { rangeTyp := tree.NewRangeType() rangeTyp.ColumnList = yyDollar[4].unresolveNamesUnion() @@ -21102,10 +21113,10 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1282: + case 1283: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.PartitionBy -//line mysql_sql.y:8532 +//line mysql_sql.y:8540 { listTyp := tree.NewListType() listTyp.Expr = yyDollar[3].exprUnion() @@ -21114,10 +21125,10 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1283: + case 1284: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *tree.PartitionBy -//line mysql_sql.y:8540 +//line mysql_sql.y:8548 { listTyp := tree.NewListType() listTyp.ColumnList = yyDollar[4].unresolveNamesUnion() @@ -21126,10 +21137,10 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1285: + case 1286: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *tree.PartitionBy -//line mysql_sql.y:8551 +//line mysql_sql.y:8559 { keyTyp := tree.NewKeyType() keyTyp.Linear = yyDollar[1].boolValUnion() @@ -21139,10 +21150,10 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1286: + case 1287: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.PartitionBy -//line mysql_sql.y:8560 +//line mysql_sql.y:8568 { keyTyp := tree.NewKeyType() keyTyp.Linear = yyDollar[1].boolValUnion() @@ -21153,10 +21164,10 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1287: + case 1288: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *tree.PartitionBy -//line mysql_sql.y:8570 +//line mysql_sql.y:8578 { Linear := yyDollar[1].boolValUnion() Expr := yyDollar[4].exprUnion() @@ -21166,58 +21177,58 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1288: + case 1289: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL int64 -//line mysql_sql.y:8580 +//line mysql_sql.y:8588 { yyLOCAL = 2 } yyVAL.union = yyLOCAL - case 1289: + case 1290: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL int64 -//line mysql_sql.y:8584 +//line mysql_sql.y:8592 { yyLOCAL = yyDollar[3].item.(int64) } yyVAL.union = yyLOCAL - case 1290: + case 1291: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:8589 +//line mysql_sql.y:8597 { yyLOCAL = false } yyVAL.union = yyLOCAL - case 1291: + case 1292: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:8593 +//line mysql_sql.y:8601 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 1292: + case 1293: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []*tree.ConnectorOption -//line mysql_sql.y:8599 +//line mysql_sql.y:8607 { yyLOCAL = []*tree.ConnectorOption{yyDollar[1].connectorOptionUnion()} } yyVAL.union = yyLOCAL - case 1293: + case 1294: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []*tree.ConnectorOption -//line mysql_sql.y:8603 +//line mysql_sql.y:8611 { yyLOCAL = append(yyDollar[1].connectorOptionsUnion(), yyDollar[3].connectorOptionUnion()) } yyVAL.union = yyLOCAL - case 1294: + case 1295: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.ConnectorOption -//line mysql_sql.y:8609 +//line mysql_sql.y:8617 { var Key = tree.Identifier(yyDollar[1].cstrUnion().Compare()) var Val = yyDollar[3].exprUnion() @@ -21227,10 +21238,10 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1295: + case 1296: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.ConnectorOption -//line mysql_sql.y:8618 +//line mysql_sql.y:8626 { var Key = tree.Identifier(yyDollar[1].str) var Val = yyDollar[3].exprUnion() @@ -21240,42 +21251,42 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1296: + case 1297: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL []tree.TableOption -//line mysql_sql.y:8628 +//line mysql_sql.y:8636 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1297: + case 1298: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL []tree.TableOption -//line mysql_sql.y:8632 +//line mysql_sql.y:8640 { yyLOCAL = yyDollar[3].tableOptionsUnion() } yyVAL.union = yyLOCAL - case 1298: + case 1299: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []tree.TableOption -//line mysql_sql.y:8638 +//line mysql_sql.y:8646 { yyLOCAL = []tree.TableOption{yyDollar[1].tableOptionUnion()} } yyVAL.union = yyLOCAL - case 1299: + case 1300: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []tree.TableOption -//line mysql_sql.y:8642 +//line mysql_sql.y:8650 { yyLOCAL = append(yyDollar[1].tableOptionsUnion(), yyDollar[3].tableOptionUnion()) } yyVAL.union = yyLOCAL - case 1300: + case 1301: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:8648 +//line mysql_sql.y:8656 { var Key = tree.Identifier(yyDollar[1].cstrUnion().Compare()) var Val = yyDollar[3].exprUnion() @@ -21285,10 +21296,10 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1301: + case 1302: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:8657 +//line mysql_sql.y:8665 { var Key = tree.Identifier(yyDollar[1].str) var Val = yyDollar[3].exprUnion() @@ -21298,348 +21309,348 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1302: + case 1303: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL []tree.TableOption -//line mysql_sql.y:8667 +//line mysql_sql.y:8675 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1303: + case 1304: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []tree.TableOption -//line mysql_sql.y:8671 +//line mysql_sql.y:8679 { yyLOCAL = yyDollar[1].tableOptionsUnion() } yyVAL.union = yyLOCAL - case 1304: + case 1305: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []tree.TableOption -//line mysql_sql.y:8677 +//line mysql_sql.y:8685 { yyLOCAL = []tree.TableOption{yyDollar[1].tableOptionUnion()} } yyVAL.union = yyLOCAL - case 1305: + case 1306: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []tree.TableOption -//line mysql_sql.y:8681 +//line mysql_sql.y:8689 { yyLOCAL = append(yyDollar[1].tableOptionsUnion(), yyDollar[3].tableOptionUnion()) } yyVAL.union = yyLOCAL - case 1306: + case 1307: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL []tree.TableOption -//line mysql_sql.y:8685 +//line mysql_sql.y:8693 { yyLOCAL = append(yyDollar[1].tableOptionsUnion(), yyDollar[2].tableOptionUnion()) } yyVAL.union = yyLOCAL - case 1307: + case 1308: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:8691 +//line mysql_sql.y:8699 { yyLOCAL = tree.NewTableOptionAUTOEXTEND_SIZE(uint64(yyDollar[3].item.(int64))) } yyVAL.union = yyLOCAL - case 1308: + case 1309: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:8695 +//line mysql_sql.y:8703 { yyLOCAL = tree.NewTableOptionAutoIncrement(uint64(yyDollar[3].item.(int64))) } yyVAL.union = yyLOCAL - case 1309: + case 1310: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:8699 +//line mysql_sql.y:8707 { yyLOCAL = tree.NewTableOptionAvgRowLength(uint64(yyDollar[3].item.(int64))) } yyVAL.union = yyLOCAL - case 1310: + case 1311: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:8703 +//line mysql_sql.y:8711 { yyLOCAL = tree.NewTableOptionCharset(yyDollar[4].str) } yyVAL.union = yyLOCAL - case 1311: + case 1312: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:8707 +//line mysql_sql.y:8715 { yyLOCAL = tree.NewTableOptionCollate(yyDollar[4].str) } yyVAL.union = yyLOCAL - case 1312: + case 1313: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:8711 +//line mysql_sql.y:8719 { yyLOCAL = tree.NewTableOptionChecksum(uint64(yyDollar[3].item.(int64))) } yyVAL.union = yyLOCAL - case 1313: + case 1314: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:8715 +//line mysql_sql.y:8723 { str := util.DealCommentString(yyDollar[3].str) yyLOCAL = tree.NewTableOptionComment(str) } yyVAL.union = yyLOCAL - case 1314: + case 1315: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:8720 +//line mysql_sql.y:8728 { yyLOCAL = tree.NewTableOptionCompression(yyDollar[3].str) } yyVAL.union = yyLOCAL - case 1315: + case 1316: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:8724 +//line mysql_sql.y:8732 { yyLOCAL = tree.NewTableOptionConnection(yyDollar[3].str) } yyVAL.union = yyLOCAL - case 1316: + case 1317: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:8728 +//line mysql_sql.y:8736 { yyLOCAL = tree.NewTableOptionDataDirectory(yyDollar[4].str) } yyVAL.union = yyLOCAL - case 1317: + case 1318: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:8732 +//line mysql_sql.y:8740 { yyLOCAL = tree.NewTableOptionIndexDirectory(yyDollar[4].str) } yyVAL.union = yyLOCAL - case 1318: + case 1319: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:8736 +//line mysql_sql.y:8744 { yyLOCAL = tree.NewTableOptionDelayKeyWrite(uint64(yyDollar[3].item.(int64))) } yyVAL.union = yyLOCAL - case 1319: + case 1320: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:8740 +//line mysql_sql.y:8748 { yyLOCAL = tree.NewTableOptionEncryption(yyDollar[3].str) } yyVAL.union = yyLOCAL - case 1320: + case 1321: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:8744 +//line mysql_sql.y:8752 { yyLOCAL = tree.NewTableOptionEngine(yyDollar[3].str) } yyVAL.union = yyLOCAL - case 1321: + case 1322: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:8748 +//line mysql_sql.y:8756 { yyLOCAL = tree.NewTableOptionEngineAttr(yyDollar[3].str) } yyVAL.union = yyLOCAL - case 1322: + case 1323: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:8752 +//line mysql_sql.y:8760 { yyLOCAL = tree.NewTableOptionInsertMethod(yyDollar[3].str) } yyVAL.union = yyLOCAL - case 1323: + case 1324: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:8756 +//line mysql_sql.y:8764 { yyLOCAL = tree.NewTableOptionKeyBlockSize(uint64(yyDollar[3].item.(int64))) } yyVAL.union = yyLOCAL - case 1324: + case 1325: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:8760 +//line mysql_sql.y:8768 { yyLOCAL = tree.NewTableOptionMaxRows(uint64(yyDollar[3].item.(int64))) } yyVAL.union = yyLOCAL - case 1325: + case 1326: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:8764 +//line mysql_sql.y:8772 { yyLOCAL = tree.NewTableOptionMinRows(uint64(yyDollar[3].item.(int64))) } yyVAL.union = yyLOCAL - case 1326: + case 1327: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:8768 +//line mysql_sql.y:8776 { t := tree.NewTableOptionPackKeys() t.Value = yyDollar[3].item.(int64) yyLOCAL = t } yyVAL.union = yyLOCAL - case 1327: + case 1328: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:8774 +//line mysql_sql.y:8782 { t := tree.NewTableOptionPackKeys() t.Default = true yyLOCAL = t } yyVAL.union = yyLOCAL - case 1328: + case 1329: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:8780 +//line mysql_sql.y:8788 { yyLOCAL = tree.NewTableOptionPassword(yyDollar[3].str) } yyVAL.union = yyLOCAL - case 1329: + case 1330: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:8784 +//line mysql_sql.y:8792 { yyLOCAL = tree.NewTableOptionRowFormat(yyDollar[3].rowFormatTypeUnion()) } yyVAL.union = yyLOCAL - case 1330: + case 1331: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:8788 +//line mysql_sql.y:8796 { yyLOCAL = tree.NewTTableOptionStartTrans(true) } yyVAL.union = yyLOCAL - case 1331: + case 1332: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:8792 +//line mysql_sql.y:8800 { yyLOCAL = tree.NewTTableOptionSecondaryEngineAttr(yyDollar[3].str) } yyVAL.union = yyLOCAL - case 1332: + case 1333: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:8796 +//line mysql_sql.y:8804 { t := tree.NewTableOptionStatsAutoRecalc() t.Value = uint64(yyDollar[3].item.(int64)) yyLOCAL = t } yyVAL.union = yyLOCAL - case 1333: + case 1334: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:8802 +//line mysql_sql.y:8810 { t := tree.NewTableOptionStatsAutoRecalc() t.Default = true yyLOCAL = t } yyVAL.union = yyLOCAL - case 1334: + case 1335: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:8808 +//line mysql_sql.y:8816 { t := tree.NewTableOptionStatsPersistent() t.Value = uint64(yyDollar[3].item.(int64)) yyLOCAL = t } yyVAL.union = yyLOCAL - case 1335: + case 1336: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:8814 +//line mysql_sql.y:8822 { t := tree.NewTableOptionStatsPersistent() t.Default = true yyLOCAL = t } yyVAL.union = yyLOCAL - case 1336: + case 1337: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:8820 +//line mysql_sql.y:8828 { t := tree.NewTableOptionStatsSamplePages() t.Value = uint64(yyDollar[3].item.(int64)) yyLOCAL = t } yyVAL.union = yyLOCAL - case 1337: + case 1338: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:8826 +//line mysql_sql.y:8834 { t := tree.NewTableOptionStatsSamplePages() t.Default = true yyLOCAL = t } yyVAL.union = yyLOCAL - case 1338: + case 1339: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:8832 +//line mysql_sql.y:8840 { yyLOCAL = tree.NewTableOptionTablespace(yyDollar[3].cstrUnion().Compare(), "") } yyVAL.union = yyLOCAL - case 1339: + case 1340: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:8836 +//line mysql_sql.y:8844 { yyLOCAL = tree.NewTableOptionTablespace("", yyDollar[1].str) } yyVAL.union = yyLOCAL - case 1340: + case 1341: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:8840 +//line mysql_sql.y:8848 { yyLOCAL = tree.NewTableOptionUnion(yyDollar[4].tableNamesUnion()) } yyVAL.union = yyLOCAL - case 1341: + case 1342: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:8844 +//line mysql_sql.y:8852 { var Preperties = yyDollar[3].propertiesUnion() yyLOCAL = tree.NewTableOptionProperties(Preperties) } yyVAL.union = yyLOCAL - case 1342: + case 1343: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.TableOption -//line mysql_sql.y:8849 +//line mysql_sql.y:8857 { var retentionPeriod = uint64(yyDollar[4].item.(int64)) var retentionUnit = strings.ToLower(yyDollar[5].str) @@ -21649,26 +21660,26 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1343: + case 1344: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []tree.Property -//line mysql_sql.y:8860 +//line mysql_sql.y:8868 { yyLOCAL = []tree.Property{yyDollar[1].propertyUnion()} } yyVAL.union = yyLOCAL - case 1344: + case 1345: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []tree.Property -//line mysql_sql.y:8864 +//line mysql_sql.y:8872 { yyLOCAL = append(yyDollar[1].propertiesUnion(), yyDollar[3].propertyUnion()) } yyVAL.union = yyLOCAL - case 1345: + case 1346: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Property -//line mysql_sql.y:8870 +//line mysql_sql.y:8878 { var Key = yyDollar[1].str var Value = yyDollar[3].str @@ -21678,96 +21689,96 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1346: + case 1347: yyDollar = yyS[yypt-2 : yypt+1] -//line mysql_sql.y:8881 +//line mysql_sql.y:8889 { yyVAL.str = " " + yyDollar[1].str + " " + yyDollar[2].str } - case 1347: + case 1348: yyDollar = yyS[yypt-2 : yypt+1] -//line mysql_sql.y:8885 +//line mysql_sql.y:8893 { yyVAL.str = " " + yyDollar[1].str + " " + yyDollar[2].str } - case 1348: + case 1349: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.RowFormatType -//line mysql_sql.y:8891 +//line mysql_sql.y:8899 { yyLOCAL = tree.ROW_FORMAT_DEFAULT } yyVAL.union = yyLOCAL - case 1349: + case 1350: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.RowFormatType -//line mysql_sql.y:8895 +//line mysql_sql.y:8903 { yyLOCAL = tree.ROW_FORMAT_DYNAMIC } yyVAL.union = yyLOCAL - case 1350: + case 1351: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.RowFormatType -//line mysql_sql.y:8899 +//line mysql_sql.y:8907 { yyLOCAL = tree.ROW_FORMAT_FIXED } yyVAL.union = yyLOCAL - case 1351: + case 1352: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.RowFormatType -//line mysql_sql.y:8903 +//line mysql_sql.y:8911 { yyLOCAL = tree.ROW_FORMAT_COMPRESSED } yyVAL.union = yyLOCAL - case 1352: + case 1353: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.RowFormatType -//line mysql_sql.y:8907 +//line mysql_sql.y:8915 { yyLOCAL = tree.ROW_FORMAT_REDUNDANT } yyVAL.union = yyLOCAL - case 1353: + case 1354: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.RowFormatType -//line mysql_sql.y:8911 +//line mysql_sql.y:8919 { yyLOCAL = tree.ROW_FORMAT_COMPACT } yyVAL.union = yyLOCAL - case 1358: + case 1359: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.TableNames -//line mysql_sql.y:8925 +//line mysql_sql.y:8933 { yyLOCAL = tree.TableNames{yyDollar[1].tableNameUnion()} } yyVAL.union = yyLOCAL - case 1359: + case 1360: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableNames -//line mysql_sql.y:8929 +//line mysql_sql.y:8937 { yyLOCAL = append(yyDollar[1].tableNamesUnion(), yyDollar[3].tableNameUnion()) } yyVAL.union = yyLOCAL - case 1360: + case 1361: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.TableName -//line mysql_sql.y:8938 +//line mysql_sql.y:8946 { tblName := yylex.(*Lexer).GetDbOrTblName(yyDollar[1].cstrUnion().Origin()) prefix := tree.ObjectNamePrefix{ExplicitSchema: false} yyLOCAL = tree.NewTableName(tree.Identifier(tblName), prefix, yyDollar[2].atTimeStampUnion()) } yyVAL.union = yyLOCAL - case 1361: + case 1362: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.TableName -//line mysql_sql.y:8944 +//line mysql_sql.y:8952 { dbName := yylex.(*Lexer).GetDbOrTblName(yyDollar[1].cstrUnion().Origin()) tblName := yylex.(*Lexer).GetDbOrTblName(yyDollar[3].cstrUnion().Origin()) @@ -21775,18 +21786,18 @@ yydefault: yyLOCAL = tree.NewTableName(tree.Identifier(tblName), prefix, yyDollar[4].atTimeStampUnion()) } yyVAL.union = yyLOCAL - case 1362: + case 1363: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.AtTimeStamp -//line mysql_sql.y:8952 +//line mysql_sql.y:8960 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1363: + case 1364: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *tree.AtTimeStamp -//line mysql_sql.y:8956 +//line mysql_sql.y:8964 { yyLOCAL = &tree.AtTimeStamp{ Type: tree.ATTIMESTAMPTIME, @@ -21794,10 +21805,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1364: + case 1365: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *tree.AtTimeStamp -//line mysql_sql.y:8963 +//line mysql_sql.y:8971 { var str = yyDollar[4].cstrUnion().Compare() yyLOCAL = &tree.AtTimeStamp{ @@ -21807,10 +21818,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1365: + case 1366: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *tree.AtTimeStamp -//line mysql_sql.y:8972 +//line mysql_sql.y:8980 { yyLOCAL = &tree.AtTimeStamp{ Type: tree.ATTIMESTAMPSNAPSHOT, @@ -21819,10 +21830,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1366: + case 1367: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *tree.AtTimeStamp -//line mysql_sql.y:8980 +//line mysql_sql.y:8988 { yyLOCAL = &tree.AtTimeStamp{ Type: tree.ATMOTIMESTAMP, @@ -21830,10 +21841,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1367: + case 1368: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.AtTimeStamp -//line mysql_sql.y:8987 +//line mysql_sql.y:8995 { yyLOCAL = &tree.AtTimeStamp{ Type: tree.ASOFTIMESTAMP, @@ -21841,74 +21852,74 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1368: + case 1369: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.TableDefs -//line mysql_sql.y:8995 +//line mysql_sql.y:9003 { yyLOCAL = tree.TableDefs(nil) } yyVAL.union = yyLOCAL - case 1370: + case 1371: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.TableDefs -//line mysql_sql.y:9002 +//line mysql_sql.y:9010 { yyLOCAL = tree.TableDefs{yyDollar[1].tableDefUnion()} } yyVAL.union = yyLOCAL - case 1371: + case 1372: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.TableDefs -//line mysql_sql.y:9006 +//line mysql_sql.y:9014 { yyLOCAL = append(yyDollar[1].tableDefsUnion(), yyDollar[3].tableDefUnion()) } yyVAL.union = yyLOCAL - case 1372: + case 1373: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.TableDef -//line mysql_sql.y:9012 +//line mysql_sql.y:9020 { yyLOCAL = tree.TableDef(yyDollar[1].columnTableDefUnion()) } yyVAL.union = yyLOCAL - case 1373: + case 1374: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.TableDef -//line mysql_sql.y:9016 +//line mysql_sql.y:9024 { yyLOCAL = yyDollar[1].tableDefUnion() } yyVAL.union = yyLOCAL - case 1374: + case 1375: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.TableDef -//line mysql_sql.y:9020 +//line mysql_sql.y:9028 { yyLOCAL = yyDollar[1].tableDefUnion() } yyVAL.union = yyLOCAL - case 1375: + case 1376: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.TableDef -//line mysql_sql.y:9026 +//line mysql_sql.y:9034 { yyLOCAL = yyDollar[1].tableDefUnion() } yyVAL.union = yyLOCAL - case 1376: + case 1377: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.TableDef -//line mysql_sql.y:9030 +//line mysql_sql.y:9038 { yyLOCAL = yyDollar[1].tableDefUnion() } yyVAL.union = yyLOCAL - case 1377: + case 1378: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL tree.TableDef -//line mysql_sql.y:9036 +//line mysql_sql.y:9044 { var KeyParts = yyDollar[5].keyPartsUnion() var Name = yyDollar[3].str @@ -21922,10 +21933,10 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1378: + case 1379: yyDollar = yyS[yypt-9 : yypt+1] var yyLOCAL tree.TableDef -//line mysql_sql.y:9049 +//line mysql_sql.y:9057 { var KeyParts = yyDollar[5].keyPartsUnion() var Name = yyDollar[3].str @@ -21939,10 +21950,10 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1379: + case 1380: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL tree.TableDef -//line mysql_sql.y:9062 +//line mysql_sql.y:9070 { keyTyp := tree.INDEX_TYPE_INVALID if yyDollar[3].strsUnion()[1] != "" { @@ -21984,10 +21995,10 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1380: + case 1381: yyDollar = yyS[yypt-9 : yypt+1] var yyLOCAL tree.TableDef -//line mysql_sql.y:9103 +//line mysql_sql.y:9111 { keyTyp := tree.INDEX_TYPE_INVALID if yyDollar[3].strsUnion()[1] != "" { @@ -22028,10 +22039,10 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1381: + case 1382: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.TableDef -//line mysql_sql.y:9145 +//line mysql_sql.y:9153 { if yyDollar[1].str != "" { switch v := yyDollar[2].tableDefUnion().(type) { @@ -22046,18 +22057,18 @@ yydefault: yyLOCAL = yyDollar[2].tableDefUnion() } yyVAL.union = yyLOCAL - case 1382: + case 1383: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.TableDef -//line mysql_sql.y:9159 +//line mysql_sql.y:9167 { yyLOCAL = yyDollar[1].tableDefUnion() } yyVAL.union = yyLOCAL - case 1383: + case 1384: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL tree.TableDef -//line mysql_sql.y:9165 +//line mysql_sql.y:9173 { var KeyParts = yyDollar[5].keyPartsUnion() var Name = yyDollar[3].strsUnion()[0] @@ -22071,10 +22082,10 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1384: + case 1385: yyDollar = yyS[yypt-9 : yypt+1] var yyLOCAL tree.TableDef -//line mysql_sql.y:9178 +//line mysql_sql.y:9186 { var KeyParts = yyDollar[5].keyPartsUnion() var Name = yyDollar[3].strsUnion()[0] @@ -22088,10 +22099,10 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1385: + case 1386: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL tree.TableDef -//line mysql_sql.y:9191 +//line mysql_sql.y:9199 { var KeyParts = yyDollar[5].keyPartsUnion() var Name = yyDollar[3].strsUnion()[0] @@ -22105,10 +22116,10 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1386: + case 1387: yyDollar = yyS[yypt-9 : yypt+1] var yyLOCAL tree.TableDef -//line mysql_sql.y:9204 +//line mysql_sql.y:9212 { var KeyParts = yyDollar[5].keyPartsUnion() var Name = yyDollar[3].strsUnion()[0] @@ -22122,10 +22133,10 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1387: + case 1388: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL tree.TableDef -//line mysql_sql.y:9217 +//line mysql_sql.y:9225 { var IfNotExists = yyDollar[3].ifNotExistsUnion() var KeyParts = yyDollar[6].keyPartsUnion() @@ -22141,10 +22152,10 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1388: + case 1389: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.TableDef -//line mysql_sql.y:9232 +//line mysql_sql.y:9240 { var Expr = yyDollar[3].exprUnion() var Enforced = yyDollar[5].boolValUnion() @@ -22154,327 +22165,327 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1389: + case 1390: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:9242 +//line mysql_sql.y:9250 { yyLOCAL = false } yyVAL.union = yyLOCAL - case 1391: + case 1392: yyDollar = yyS[yypt-0 : yypt+1] -//line mysql_sql.y:9248 +//line mysql_sql.y:9256 { yyVAL.str = "" } - case 1392: + case 1393: yyDollar = yyS[yypt-1 : yypt+1] -//line mysql_sql.y:9252 +//line mysql_sql.y:9260 { yyVAL.str = yyDollar[1].str } - case 1395: + case 1396: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []string -//line mysql_sql.y:9262 +//line mysql_sql.y:9270 { yyLOCAL = make([]string, 2) yyLOCAL[0] = yyDollar[1].str yyLOCAL[1] = "" } yyVAL.union = yyLOCAL - case 1396: + case 1397: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []string -//line mysql_sql.y:9268 +//line mysql_sql.y:9276 { yyLOCAL = make([]string, 2) yyLOCAL[0] = yyDollar[1].str yyLOCAL[1] = yyDollar[3].str } yyVAL.union = yyLOCAL - case 1397: + case 1398: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []string -//line mysql_sql.y:9274 +//line mysql_sql.y:9282 { yyLOCAL = make([]string, 2) yyLOCAL[0] = yyDollar[1].cstrUnion().Compare() yyLOCAL[1] = yyDollar[3].str } yyVAL.union = yyLOCAL - case 1409: + case 1410: yyDollar = yyS[yypt-0 : yypt+1] -//line mysql_sql.y:9296 +//line mysql_sql.y:9304 { yyVAL.str = "" } - case 1410: + case 1411: yyDollar = yyS[yypt-1 : yypt+1] -//line mysql_sql.y:9300 +//line mysql_sql.y:9308 { yyVAL.str = yyDollar[1].cstrUnion().Compare() } - case 1411: + case 1412: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.ColumnTableDef -//line mysql_sql.y:9306 +//line mysql_sql.y:9314 { yyLOCAL = tree.NewColumnTableDef(yyDollar[1].unresolvedNameUnion(), yyDollar[2].columnTypeUnion(), yyDollar[3].columnAttributesUnion()) } yyVAL.union = yyLOCAL - case 1412: + case 1413: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.UnresolvedName -//line mysql_sql.y:9312 +//line mysql_sql.y:9320 { yyLOCAL = tree.NewUnresolvedName(yyDollar[1].cstrUnion()) } yyVAL.union = yyLOCAL - case 1413: + case 1414: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.UnresolvedName -//line mysql_sql.y:9316 +//line mysql_sql.y:9324 { tblNameCStr := yylex.(*Lexer).GetDbOrTblNameCStr(yyDollar[1].cstrUnion().Origin()) yyLOCAL = tree.NewUnresolvedName(tblNameCStr, yyDollar[3].cstrUnion()) } yyVAL.union = yyLOCAL - case 1414: + case 1415: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *tree.UnresolvedName -//line mysql_sql.y:9321 +//line mysql_sql.y:9329 { dbNameCStr := yylex.(*Lexer).GetDbOrTblNameCStr(yyDollar[1].cstrUnion().Origin()) tblNameCStr := yylex.(*Lexer).GetDbOrTblNameCStr(yyDollar[3].cstrUnion().Origin()) yyLOCAL = tree.NewUnresolvedName(dbNameCStr, tblNameCStr, yyDollar[5].cstrUnion()) } yyVAL.union = yyLOCAL - case 1415: + case 1416: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.CStr -//line mysql_sql.y:9329 +//line mysql_sql.y:9337 { yyLOCAL = tree.NewCStr(yyDollar[1].str, 1) } yyVAL.union = yyLOCAL - case 1416: + case 1417: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.CStr -//line mysql_sql.y:9333 +//line mysql_sql.y:9341 { yyLOCAL = tree.NewCStr(yyDollar[1].str, 1) } yyVAL.union = yyLOCAL - case 1417: + case 1418: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.CStr -//line mysql_sql.y:9337 +//line mysql_sql.y:9345 { yyLOCAL = tree.NewCStr(yyDollar[1].str, 1) } yyVAL.union = yyLOCAL - case 1418: + case 1419: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.CStr -//line mysql_sql.y:9341 +//line mysql_sql.y:9349 { yyLOCAL = tree.NewCStr(yyDollar[1].str, 1) } yyVAL.union = yyLOCAL - case 1419: + case 1420: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.CStr -//line mysql_sql.y:9347 +//line mysql_sql.y:9355 { yyLOCAL = yylex.(*Lexer).GetDbOrTblNameCStr(yyDollar[1].cstrUnion().Origin()) } yyVAL.union = yyLOCAL - case 1420: + case 1421: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.UnresolvedName -//line mysql_sql.y:9353 +//line mysql_sql.y:9361 { yyLOCAL = tree.NewUnresolvedName(yyDollar[1].cstrUnion()) } yyVAL.union = yyLOCAL - case 1421: + case 1422: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.UnresolvedName -//line mysql_sql.y:9357 +//line mysql_sql.y:9365 { tblNameCStr := yylex.(*Lexer).GetDbOrTblNameCStr(yyDollar[1].cstrUnion().Origin()) yyLOCAL = tree.NewUnresolvedName(tblNameCStr, yyDollar[3].cstrUnion()) } yyVAL.union = yyLOCAL - case 1422: + case 1423: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *tree.UnresolvedName -//line mysql_sql.y:9362 +//line mysql_sql.y:9370 { dbNameCStr := yylex.(*Lexer).GetDbOrTblNameCStr(yyDollar[1].cstrUnion().Origin()) tblNameCStr := yylex.(*Lexer).GetDbOrTblNameCStr(yyDollar[3].cstrUnion().Origin()) yyLOCAL = tree.NewUnresolvedName(dbNameCStr, tblNameCStr, yyDollar[5].cstrUnion()) } yyVAL.union = yyLOCAL - case 1423: + case 1424: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL []tree.ColumnAttribute -//line mysql_sql.y:9369 +//line mysql_sql.y:9377 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1424: + case 1425: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []tree.ColumnAttribute -//line mysql_sql.y:9373 +//line mysql_sql.y:9381 { yyLOCAL = yyDollar[1].columnAttributesUnion() } yyVAL.union = yyLOCAL - case 1425: + case 1426: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []tree.ColumnAttribute -//line mysql_sql.y:9379 +//line mysql_sql.y:9387 { yyLOCAL = []tree.ColumnAttribute{yyDollar[1].columnAttributeUnion()} } yyVAL.union = yyLOCAL - case 1426: + case 1427: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL []tree.ColumnAttribute -//line mysql_sql.y:9383 +//line mysql_sql.y:9391 { yyLOCAL = append(yyDollar[1].columnAttributesUnion(), yyDollar[2].columnAttributeUnion()) } yyVAL.union = yyLOCAL - case 1427: + case 1428: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.ColumnAttribute -//line mysql_sql.y:9389 +//line mysql_sql.y:9397 { yyLOCAL = tree.NewAttributeNull(true) } yyVAL.union = yyLOCAL - case 1428: + case 1429: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.ColumnAttribute -//line mysql_sql.y:9393 +//line mysql_sql.y:9401 { yyLOCAL = tree.NewAttributeNull(false) } yyVAL.union = yyLOCAL - case 1429: + case 1430: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.ColumnAttribute -//line mysql_sql.y:9397 +//line mysql_sql.y:9405 { yyLOCAL = tree.NewAttributeDefault(yyDollar[2].exprUnion()) } yyVAL.union = yyLOCAL - case 1430: + case 1431: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.ColumnAttribute -//line mysql_sql.y:9401 +//line mysql_sql.y:9409 { yyLOCAL = tree.NewAttributeAutoIncrement() } yyVAL.union = yyLOCAL - case 1431: + case 1432: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.ColumnAttribute -//line mysql_sql.y:9405 +//line mysql_sql.y:9413 { yyLOCAL = yyDollar[1].columnAttributeUnion() } yyVAL.union = yyLOCAL - case 1432: + case 1433: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.ColumnAttribute -//line mysql_sql.y:9409 +//line mysql_sql.y:9417 { str := util.DealCommentString(yyDollar[2].str) yyLOCAL = tree.NewAttributeComment(tree.NewNumVal(str, str, false, tree.P_char)) } yyVAL.union = yyLOCAL - case 1433: + case 1434: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.ColumnAttribute -//line mysql_sql.y:9414 +//line mysql_sql.y:9422 { yyLOCAL = tree.NewAttributeCollate(yyDollar[2].str) } yyVAL.union = yyLOCAL - case 1434: + case 1435: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.ColumnAttribute -//line mysql_sql.y:9418 +//line mysql_sql.y:9426 { yyLOCAL = tree.NewAttributeColumnFormat(yyDollar[2].str) } yyVAL.union = yyLOCAL - case 1435: + case 1436: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.ColumnAttribute -//line mysql_sql.y:9422 +//line mysql_sql.y:9430 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1436: + case 1437: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.ColumnAttribute -//line mysql_sql.y:9426 +//line mysql_sql.y:9434 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1437: + case 1438: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.ColumnAttribute -//line mysql_sql.y:9430 +//line mysql_sql.y:9438 { yyLOCAL = tree.NewAttributeStorage(yyDollar[2].str) } yyVAL.union = yyLOCAL - case 1438: + case 1439: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.ColumnAttribute -//line mysql_sql.y:9434 +//line mysql_sql.y:9442 { yyLOCAL = tree.NewAttributeAutoRandom(int(yyDollar[2].int64ValUnion())) } yyVAL.union = yyLOCAL - case 1439: + case 1440: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.ColumnAttribute -//line mysql_sql.y:9438 +//line mysql_sql.y:9446 { yyLOCAL = yyDollar[1].attributeReferenceUnion() } yyVAL.union = yyLOCAL - case 1440: + case 1441: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.ColumnAttribute -//line mysql_sql.y:9442 +//line mysql_sql.y:9450 { yyLOCAL = tree.NewAttributeCheckConstraint(yyDollar[4].exprUnion(), false, yyDollar[1].str) } yyVAL.union = yyLOCAL - case 1441: + case 1442: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL tree.ColumnAttribute -//line mysql_sql.y:9446 +//line mysql_sql.y:9454 { yyLOCAL = tree.NewAttributeCheckConstraint(yyDollar[4].exprUnion(), yyDollar[6].boolValUnion(), yyDollar[1].str) } yyVAL.union = yyLOCAL - case 1442: + case 1443: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.ColumnAttribute -//line mysql_sql.y:9450 +//line mysql_sql.y:9458 { name := tree.NewUnresolvedColName(yyDollar[3].str) var es tree.Exprs = nil @@ -22489,98 +22500,98 @@ yydefault: yyLOCAL = tree.NewAttributeOnUpdate(expr) } yyVAL.union = yyLOCAL - case 1443: + case 1444: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.ColumnAttribute -//line mysql_sql.y:9464 +//line mysql_sql.y:9472 { yyLOCAL = tree.NewAttributeLowCardinality() } yyVAL.union = yyLOCAL - case 1444: + case 1445: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.ColumnAttribute -//line mysql_sql.y:9468 +//line mysql_sql.y:9476 { yyLOCAL = tree.NewAttributeVisable(true) } yyVAL.union = yyLOCAL - case 1445: + case 1446: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.ColumnAttribute -//line mysql_sql.y:9472 +//line mysql_sql.y:9480 { yyLOCAL = tree.NewAttributeVisable(false) } yyVAL.union = yyLOCAL - case 1446: + case 1447: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.ColumnAttribute -//line mysql_sql.y:9476 +//line mysql_sql.y:9484 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1447: + case 1448: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.ColumnAttribute -//line mysql_sql.y:9480 +//line mysql_sql.y:9488 { yyLOCAL = tree.NewAttributeHeader(yyDollar[3].str) } yyVAL.union = yyLOCAL - case 1448: + case 1449: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.ColumnAttribute -//line mysql_sql.y:9484 +//line mysql_sql.y:9492 { yyLOCAL = tree.NewAttributeHeaders() } yyVAL.union = yyLOCAL - case 1449: + case 1450: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:9490 +//line mysql_sql.y:9498 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 1450: + case 1451: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:9494 +//line mysql_sql.y:9502 { yyLOCAL = false } yyVAL.union = yyLOCAL - case 1451: + case 1452: yyDollar = yyS[yypt-0 : yypt+1] -//line mysql_sql.y:9499 +//line mysql_sql.y:9507 { yyVAL.str = "" } - case 1452: + case 1453: yyDollar = yyS[yypt-1 : yypt+1] -//line mysql_sql.y:9503 +//line mysql_sql.y:9511 { yyVAL.str = yyDollar[1].str } - case 1453: + case 1454: yyDollar = yyS[yypt-1 : yypt+1] -//line mysql_sql.y:9509 +//line mysql_sql.y:9517 { yyVAL.str = "" } - case 1454: + case 1455: yyDollar = yyS[yypt-2 : yypt+1] -//line mysql_sql.y:9513 +//line mysql_sql.y:9521 { yyVAL.str = yyDollar[2].cstrUnion().Compare() } - case 1455: + case 1456: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *tree.AttributeReference -//line mysql_sql.y:9519 +//line mysql_sql.y:9527 { var TableName = yyDollar[2].tableNameUnion() var KeyParts = yyDollar[3].keyPartsUnion() @@ -22596,10 +22607,10 @@ yydefault: ) } yyVAL.union = yyLOCAL - case 1456: + case 1457: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.ReferenceOnRecord -//line mysql_sql.y:9536 +//line mysql_sql.y:9544 { yyLOCAL = &tree.ReferenceOnRecord{ OnDelete: tree.REFERENCE_OPTION_INVALID, @@ -22607,10 +22618,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1457: + case 1458: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.ReferenceOnRecord -//line mysql_sql.y:9543 +//line mysql_sql.y:9551 { yyLOCAL = &tree.ReferenceOnRecord{ OnDelete: yyDollar[1].referenceOptionTypeUnion(), @@ -22618,10 +22629,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1458: + case 1459: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.ReferenceOnRecord -//line mysql_sql.y:9550 +//line mysql_sql.y:9558 { yyLOCAL = &tree.ReferenceOnRecord{ OnDelete: tree.REFERENCE_OPTION_INVALID, @@ -22629,10 +22640,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1459: + case 1460: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.ReferenceOnRecord -//line mysql_sql.y:9557 +//line mysql_sql.y:9565 { yyLOCAL = &tree.ReferenceOnRecord{ OnDelete: yyDollar[1].referenceOptionTypeUnion(), @@ -22640,10 +22651,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1460: + case 1461: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.ReferenceOnRecord -//line mysql_sql.y:9564 +//line mysql_sql.y:9572 { yyLOCAL = &tree.ReferenceOnRecord{ OnDelete: yyDollar[2].referenceOptionTypeUnion(), @@ -22651,354 +22662,354 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1461: + case 1462: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.ReferenceOptionType -//line mysql_sql.y:9573 +//line mysql_sql.y:9581 { yyLOCAL = yyDollar[3].referenceOptionTypeUnion() } yyVAL.union = yyLOCAL - case 1462: + case 1463: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.ReferenceOptionType -//line mysql_sql.y:9579 +//line mysql_sql.y:9587 { yyLOCAL = yyDollar[3].referenceOptionTypeUnion() } yyVAL.union = yyLOCAL - case 1463: + case 1464: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.ReferenceOptionType -//line mysql_sql.y:9585 +//line mysql_sql.y:9593 { yyLOCAL = tree.REFERENCE_OPTION_RESTRICT } yyVAL.union = yyLOCAL - case 1464: + case 1465: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.ReferenceOptionType -//line mysql_sql.y:9589 +//line mysql_sql.y:9597 { yyLOCAL = tree.REFERENCE_OPTION_CASCADE } yyVAL.union = yyLOCAL - case 1465: + case 1466: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.ReferenceOptionType -//line mysql_sql.y:9593 +//line mysql_sql.y:9601 { yyLOCAL = tree.REFERENCE_OPTION_SET_NULL } yyVAL.union = yyLOCAL - case 1466: + case 1467: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.ReferenceOptionType -//line mysql_sql.y:9597 +//line mysql_sql.y:9605 { yyLOCAL = tree.REFERENCE_OPTION_NO_ACTION } yyVAL.union = yyLOCAL - case 1467: + case 1468: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.ReferenceOptionType -//line mysql_sql.y:9601 +//line mysql_sql.y:9609 { yyLOCAL = tree.REFERENCE_OPTION_SET_DEFAULT } yyVAL.union = yyLOCAL - case 1468: + case 1469: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.MatchType -//line mysql_sql.y:9606 +//line mysql_sql.y:9614 { yyLOCAL = tree.MATCH_INVALID } yyVAL.union = yyLOCAL - case 1470: + case 1471: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.MatchType -//line mysql_sql.y:9613 +//line mysql_sql.y:9621 { yyLOCAL = tree.MATCH_FULL } yyVAL.union = yyLOCAL - case 1471: + case 1472: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.MatchType -//line mysql_sql.y:9617 +//line mysql_sql.y:9625 { yyLOCAL = tree.MATCH_PARTIAL } yyVAL.union = yyLOCAL - case 1472: + case 1473: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.MatchType -//line mysql_sql.y:9621 +//line mysql_sql.y:9629 { yyLOCAL = tree.MATCH_SIMPLE } yyVAL.union = yyLOCAL - case 1473: + case 1474: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.FullTextSearchType -//line mysql_sql.y:9626 +//line mysql_sql.y:9634 { yyLOCAL = tree.FULLTEXT_DEFAULT } yyVAL.union = yyLOCAL - case 1474: + case 1475: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.FullTextSearchType -//line mysql_sql.y:9630 +//line mysql_sql.y:9638 { yyLOCAL = tree.FULLTEXT_NL } yyVAL.union = yyLOCAL - case 1475: + case 1476: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL tree.FullTextSearchType -//line mysql_sql.y:9634 +//line mysql_sql.y:9642 { yyLOCAL = tree.FULLTEXT_NL_QUERY_EXPANSION } yyVAL.union = yyLOCAL - case 1476: + case 1477: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.FullTextSearchType -//line mysql_sql.y:9638 +//line mysql_sql.y:9646 { yyLOCAL = tree.FULLTEXT_BOOLEAN } yyVAL.union = yyLOCAL - case 1477: + case 1478: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.FullTextSearchType -//line mysql_sql.y:9642 +//line mysql_sql.y:9650 { yyLOCAL = tree.FULLTEXT_QUERY_EXPANSION } yyVAL.union = yyLOCAL - case 1478: + case 1479: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL []*tree.KeyPart -//line mysql_sql.y:9647 +//line mysql_sql.y:9655 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1479: + case 1480: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []*tree.KeyPart -//line mysql_sql.y:9651 +//line mysql_sql.y:9659 { yyLOCAL = yyDollar[2].keyPartsUnion() } yyVAL.union = yyLOCAL - case 1480: + case 1481: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL int64 -//line mysql_sql.y:9656 +//line mysql_sql.y:9664 { yyLOCAL = -1 } yyVAL.union = yyLOCAL - case 1481: + case 1482: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL int64 -//line mysql_sql.y:9660 +//line mysql_sql.y:9668 { yyLOCAL = yyDollar[2].item.(int64) } yyVAL.union = yyLOCAL - case 1488: + case 1489: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.Subquery -//line mysql_sql.y:9676 +//line mysql_sql.y:9684 { yyLOCAL = &tree.Subquery{Select: yyDollar[1].selectStatementUnion(), Exists: false} } yyVAL.union = yyLOCAL - case 1489: + case 1490: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:9682 +//line mysql_sql.y:9690 { yyLOCAL = tree.NewBinaryExpr(tree.BIT_AND, yyDollar[1].exprUnion(), yyDollar[3].exprUnion()) } yyVAL.union = yyLOCAL - case 1490: + case 1491: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:9686 +//line mysql_sql.y:9694 { yyLOCAL = tree.NewBinaryExpr(tree.BIT_OR, yyDollar[1].exprUnion(), yyDollar[3].exprUnion()) } yyVAL.union = yyLOCAL - case 1491: + case 1492: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:9690 +//line mysql_sql.y:9698 { yyLOCAL = tree.NewBinaryExpr(tree.BIT_XOR, yyDollar[1].exprUnion(), yyDollar[3].exprUnion()) } yyVAL.union = yyLOCAL - case 1492: + case 1493: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:9694 +//line mysql_sql.y:9702 { yyLOCAL = tree.NewBinaryExpr(tree.PLUS, yyDollar[1].exprUnion(), yyDollar[3].exprUnion()) } yyVAL.union = yyLOCAL - case 1493: + case 1494: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:9698 +//line mysql_sql.y:9706 { yyLOCAL = tree.NewBinaryExpr(tree.MINUS, yyDollar[1].exprUnion(), yyDollar[3].exprUnion()) } yyVAL.union = yyLOCAL - case 1494: + case 1495: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:9702 +//line mysql_sql.y:9710 { yyLOCAL = tree.NewBinaryExpr(tree.MULTI, yyDollar[1].exprUnion(), yyDollar[3].exprUnion()) } yyVAL.union = yyLOCAL - case 1495: + case 1496: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:9706 +//line mysql_sql.y:9714 { yyLOCAL = tree.NewBinaryExpr(tree.DIV, yyDollar[1].exprUnion(), yyDollar[3].exprUnion()) } yyVAL.union = yyLOCAL - case 1496: + case 1497: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:9710 +//line mysql_sql.y:9718 { yyLOCAL = tree.NewBinaryExpr(tree.INTEGER_DIV, yyDollar[1].exprUnion(), yyDollar[3].exprUnion()) } yyVAL.union = yyLOCAL - case 1497: + case 1498: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:9714 +//line mysql_sql.y:9722 { yyLOCAL = tree.NewBinaryExpr(tree.MOD, yyDollar[1].exprUnion(), yyDollar[3].exprUnion()) } yyVAL.union = yyLOCAL - case 1498: + case 1499: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:9718 +//line mysql_sql.y:9726 { yyLOCAL = tree.NewBinaryExpr(tree.MOD, yyDollar[1].exprUnion(), yyDollar[3].exprUnion()) } yyVAL.union = yyLOCAL - case 1499: + case 1500: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:9722 +//line mysql_sql.y:9730 { yyLOCAL = tree.NewBinaryExpr(tree.LEFT_SHIFT, yyDollar[1].exprUnion(), yyDollar[3].exprUnion()) } yyVAL.union = yyLOCAL - case 1500: + case 1501: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:9726 +//line mysql_sql.y:9734 { yyLOCAL = tree.NewBinaryExpr(tree.RIGHT_SHIFT, yyDollar[1].exprUnion(), yyDollar[3].exprUnion()) } yyVAL.union = yyLOCAL - case 1501: + case 1502: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:9730 +//line mysql_sql.y:9738 { yyLOCAL = yyDollar[1].exprUnion() } yyVAL.union = yyLOCAL - case 1502: + case 1503: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:9736 +//line mysql_sql.y:9744 { yyLOCAL = yyDollar[1].unresolvedNameUnion() } yyVAL.union = yyLOCAL - case 1503: + case 1504: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:9740 +//line mysql_sql.y:9748 { yyLOCAL = yyDollar[1].varExprUnion() } yyVAL.union = yyLOCAL - case 1504: + case 1505: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:9744 +//line mysql_sql.y:9752 { yyLOCAL = yyDollar[1].exprUnion() } yyVAL.union = yyLOCAL - case 1505: + case 1506: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:9748 +//line mysql_sql.y:9756 { yyLOCAL = tree.NewParentExpr(yyDollar[2].exprUnion()) } yyVAL.union = yyLOCAL - case 1506: + case 1507: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:9752 +//line mysql_sql.y:9760 { yyLOCAL = tree.NewTuple(append(yyDollar[2].exprsUnion(), yyDollar[4].exprUnion())) } yyVAL.union = yyLOCAL - case 1507: + case 1508: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:9756 +//line mysql_sql.y:9764 { yyLOCAL = tree.NewUnaryExpr(tree.UNARY_PLUS, yyDollar[2].exprUnion()) } yyVAL.union = yyLOCAL - case 1508: + case 1509: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:9760 +//line mysql_sql.y:9768 { yyLOCAL = tree.NewUnaryExpr(tree.UNARY_MINUS, yyDollar[2].exprUnion()) } yyVAL.union = yyLOCAL - case 1509: + case 1510: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:9764 +//line mysql_sql.y:9772 { yyLOCAL = tree.NewUnaryExpr(tree.UNARY_TILDE, yyDollar[2].exprUnion()) } yyVAL.union = yyLOCAL - case 1510: + case 1511: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:9768 +//line mysql_sql.y:9776 { yyLOCAL = tree.NewUnaryExpr(tree.UNARY_MARK, yyDollar[2].exprUnion()) } yyVAL.union = yyLOCAL - case 1511: + case 1512: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:9772 +//line mysql_sql.y:9780 { hint := strings.ToLower(yyDollar[2].cstrUnion().Compare()) switch hint { @@ -23041,35 +23052,35 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1512: + case 1513: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:9814 +//line mysql_sql.y:9822 { yyLOCAL = yyDollar[1].exprUnion() } yyVAL.union = yyLOCAL - case 1513: + case 1514: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:9818 +//line mysql_sql.y:9826 { yyLOCAL = yyDollar[1].subqueryUnion() } yyVAL.union = yyLOCAL - case 1514: + case 1515: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:9822 +//line mysql_sql.y:9830 { yyDollar[2].subqueryUnion().Exists = true yyLOCAL = yyDollar[2].subqueryUnion() } yyVAL.union = yyLOCAL - case 1515: + case 1516: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:9827 +//line mysql_sql.y:9835 { yyLOCAL = &tree.CaseExpr{ Expr: yyDollar[2].exprUnion(), @@ -23078,42 +23089,42 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1516: + case 1517: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:9835 +//line mysql_sql.y:9843 { yyLOCAL = tree.NewCastExpr(yyDollar[3].exprUnion(), yyDollar[5].columnTypeUnion()) } yyVAL.union = yyLOCAL - case 1517: + case 1518: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:9839 +//line mysql_sql.y:9847 { yyLOCAL = tree.NewSerialExtractExpr(yyDollar[3].exprUnion(), yyDollar[5].exprUnion(), yyDollar[7].columnTypeUnion()) } yyVAL.union = yyLOCAL - case 1518: + case 1519: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:9843 +//line mysql_sql.y:9851 { yyLOCAL = tree.NewBitCastExpr(yyDollar[3].exprUnion(), yyDollar[5].columnTypeUnion()) } yyVAL.union = yyLOCAL - case 1519: + case 1520: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:9847 +//line mysql_sql.y:9855 { yyLOCAL = tree.NewCastExpr(yyDollar[3].exprUnion(), yyDollar[5].columnTypeUnion()) } yyVAL.union = yyLOCAL - case 1520: + case 1521: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:9851 +//line mysql_sql.y:9859 { name := tree.NewUnresolvedColName(yyDollar[1].str) es := tree.NewNumVal(yyDollar[5].str, yyDollar[5].str, false, tree.P_char) @@ -23124,66 +23135,66 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1521: + case 1522: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:9861 +//line mysql_sql.y:9869 { yyLOCAL = yyDollar[1].funcExprUnion() } yyVAL.union = yyLOCAL - case 1522: + case 1523: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:9865 +//line mysql_sql.y:9873 { yyLOCAL = yyDollar[1].funcExprUnion() } yyVAL.union = yyLOCAL - case 1523: + case 1524: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:9869 +//line mysql_sql.y:9877 { yyLOCAL = yyDollar[1].funcExprUnion() } yyVAL.union = yyLOCAL - case 1524: + case 1525: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:9873 +//line mysql_sql.y:9881 { yyLOCAL = yyDollar[1].funcExprUnion() } yyVAL.union = yyLOCAL - case 1525: + case 1526: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:9877 +//line mysql_sql.y:9885 { yyLOCAL = yyDollar[1].funcExprUnion() } yyVAL.union = yyLOCAL - case 1526: + case 1527: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:9881 +//line mysql_sql.y:9889 { yyLOCAL = yyDollar[1].exprUnion() } yyVAL.union = yyLOCAL - case 1527: + case 1528: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:9885 +//line mysql_sql.y:9893 { yyLOCAL = yyDollar[1].exprUnion() } yyVAL.union = yyLOCAL - case 1528: + case 1529: yyDollar = yyS[yypt-9 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:9889 +//line mysql_sql.y:9897 { val, err := tree.NewFullTextMatchFuncExpression(yyDollar[3].keyPartsUnion(), yyDollar[7].str, yyDollar[8].fullTextSearchTypeUnion()) if err != nil { @@ -23193,16 +23204,16 @@ yydefault: yyLOCAL = val } yyVAL.union = yyLOCAL - case 1529: + case 1530: yyDollar = yyS[yypt-1 : yypt+1] -//line mysql_sql.y:9902 +//line mysql_sql.y:9910 { yyVAL.str = yyDollar[1].str } - case 1530: + case 1531: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:9908 +//line mysql_sql.y:9916 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -23212,10 +23223,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1531: + case 1532: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:9917 +//line mysql_sql.y:9925 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -23225,10 +23236,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1532: + case 1533: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:9926 +//line mysql_sql.y:9934 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -23238,10 +23249,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1533: + case 1534: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:9937 +//line mysql_sql.y:9945 { v := int(yyDollar[5].item.(int64)) val, err := tree.NewSampleRowsFuncExpression(v, true, nil, "block") @@ -23252,10 +23263,10 @@ yydefault: yyLOCAL = val } yyVAL.union = yyLOCAL - case 1534: + case 1535: yyDollar = yyS[yypt-9 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:9947 +//line mysql_sql.y:9955 { v := int(yyDollar[5].item.(int64)) val, err := tree.NewSampleRowsFuncExpression(v, true, nil, yyDollar[8].str) @@ -23266,10 +23277,10 @@ yydefault: yyLOCAL = val } yyVAL.union = yyLOCAL - case 1535: + case 1536: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:9957 +//line mysql_sql.y:9965 { val, err := tree.NewSamplePercentFuncExpression1(yyDollar[5].item.(int64), true, nil) if err != nil { @@ -23279,10 +23290,10 @@ yydefault: yyLOCAL = val } yyVAL.union = yyLOCAL - case 1536: + case 1537: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:9966 +//line mysql_sql.y:9974 { val, err := tree.NewSamplePercentFuncExpression2(yyDollar[5].item.(float64), true, nil) if err != nil { @@ -23292,10 +23303,10 @@ yydefault: yyLOCAL = val } yyVAL.union = yyLOCAL - case 1537: + case 1538: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:9976 +//line mysql_sql.y:9984 { v := int(yyDollar[5].item.(int64)) val, err := tree.NewSampleRowsFuncExpression(v, false, yyDollar[3].exprsUnion(), "block") @@ -23306,10 +23317,10 @@ yydefault: yyLOCAL = val } yyVAL.union = yyLOCAL - case 1538: + case 1539: yyDollar = yyS[yypt-9 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:9986 +//line mysql_sql.y:9994 { v := int(yyDollar[5].item.(int64)) val, err := tree.NewSampleRowsFuncExpression(v, false, yyDollar[3].exprsUnion(), yyDollar[8].str) @@ -23320,10 +23331,10 @@ yydefault: yyLOCAL = val } yyVAL.union = yyLOCAL - case 1539: + case 1540: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:9996 +//line mysql_sql.y:10004 { val, err := tree.NewSamplePercentFuncExpression1(yyDollar[5].item.(int64), false, yyDollar[3].exprsUnion()) if err != nil { @@ -23333,10 +23344,10 @@ yydefault: yyLOCAL = val } yyVAL.union = yyLOCAL - case 1540: + case 1541: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:10005 +//line mysql_sql.y:10013 { val, err := tree.NewSamplePercentFuncExpression2(yyDollar[5].item.(float64), false, yyDollar[3].exprsUnion()) if err != nil { @@ -23346,58 +23357,58 @@ yydefault: yyLOCAL = val } yyVAL.union = yyLOCAL - case 1541: + case 1542: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:10015 +//line mysql_sql.y:10023 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1542: + case 1543: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:10019 +//line mysql_sql.y:10027 { yyLOCAL = yyDollar[2].exprUnion() } yyVAL.union = yyLOCAL - case 1543: + case 1544: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:10024 +//line mysql_sql.y:10032 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1544: + case 1545: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:10028 +//line mysql_sql.y:10036 { yyLOCAL = yyDollar[1].exprUnion() } yyVAL.union = yyLOCAL - case 1545: + case 1546: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []*tree.When -//line mysql_sql.y:10034 +//line mysql_sql.y:10042 { yyLOCAL = []*tree.When{yyDollar[1].whenClauseUnion()} } yyVAL.union = yyLOCAL - case 1546: + case 1547: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL []*tree.When -//line mysql_sql.y:10038 +//line mysql_sql.y:10046 { yyLOCAL = append(yyDollar[1].whenClauseListUnion(), yyDollar[2].whenClauseUnion()) } yyVAL.union = yyLOCAL - case 1547: + case 1548: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.When -//line mysql_sql.y:10044 +//line mysql_sql.y:10052 { yyLOCAL = &tree.When{ Cond: yyDollar[2].exprUnion(), @@ -23405,9 +23416,9 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1548: + case 1549: yyDollar = yyS[yypt-1 : yypt+1] -//line mysql_sql.y:10053 +//line mysql_sql.y:10061 { t := yyVAL.columnTypeUnion() str := strings.ToLower(t.InternalType.FamilyString) @@ -23420,10 +23431,10 @@ yydefault: } } } - case 1549: + case 1550: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:10065 +//line mysql_sql.y:10073 { name := yyDollar[1].str if yyDollar[2].str != "" { @@ -23441,10 +23452,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1550: + case 1551: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:10082 +//line mysql_sql.y:10090 { locale := "" yyLOCAL = &tree.T{ @@ -23459,10 +23470,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1552: + case 1553: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:10099 +//line mysql_sql.y:10107 { locale := "" yyLOCAL = &tree.T{ @@ -23476,10 +23487,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1553: + case 1554: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:10112 +//line mysql_sql.y:10120 { locale := "" yyLOCAL = &tree.T{ @@ -23493,10 +23504,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1554: + case 1555: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:10125 +//line mysql_sql.y:10133 { locale := "" yyLOCAL = &tree.T{ @@ -23509,10 +23520,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1555: + case 1556: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:10137 +//line mysql_sql.y:10145 { locale := "" yyLOCAL = &tree.T{ @@ -23527,10 +23538,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1556: + case 1557: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:10151 +//line mysql_sql.y:10159 { locale := "" yyLOCAL = &tree.T{ @@ -23546,10 +23557,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1557: + case 1558: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:10166 +//line mysql_sql.y:10174 { locale := "" yyLOCAL = &tree.T{ @@ -23565,10 +23576,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1558: + case 1559: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:10181 +//line mysql_sql.y:10189 { name := yyDollar[1].str if yyDollar[2].str != "" { @@ -23586,10 +23597,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1559: + case 1560: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:10198 +//line mysql_sql.y:10206 { locale := "" yyLOCAL = &tree.T{ @@ -23604,95 +23615,95 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1560: + case 1561: yyDollar = yyS[yypt-0 : yypt+1] -//line mysql_sql.y:10213 +//line mysql_sql.y:10221 { } - case 1564: + case 1565: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.FrameBound -//line mysql_sql.y:10220 +//line mysql_sql.y:10228 { yyLOCAL = &tree.FrameBound{Type: tree.Following, UnBounded: true} } yyVAL.union = yyLOCAL - case 1565: + case 1566: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.FrameBound -//line mysql_sql.y:10224 +//line mysql_sql.y:10232 { yyLOCAL = &tree.FrameBound{Type: tree.Following, Expr: yyDollar[1].exprUnion()} } yyVAL.union = yyLOCAL - case 1566: + case 1567: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.FrameBound -//line mysql_sql.y:10228 +//line mysql_sql.y:10236 { yyLOCAL = &tree.FrameBound{Type: tree.Following, Expr: yyDollar[1].exprUnion()} } yyVAL.union = yyLOCAL - case 1567: + case 1568: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.FrameBound -//line mysql_sql.y:10234 +//line mysql_sql.y:10242 { yyLOCAL = &tree.FrameBound{Type: tree.CurrentRow} } yyVAL.union = yyLOCAL - case 1568: + case 1569: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.FrameBound -//line mysql_sql.y:10238 +//line mysql_sql.y:10246 { yyLOCAL = &tree.FrameBound{Type: tree.Preceding, UnBounded: true} } yyVAL.union = yyLOCAL - case 1569: + case 1570: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.FrameBound -//line mysql_sql.y:10242 +//line mysql_sql.y:10250 { yyLOCAL = &tree.FrameBound{Type: tree.Preceding, Expr: yyDollar[1].exprUnion()} } yyVAL.union = yyLOCAL - case 1570: + case 1571: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.FrameBound -//line mysql_sql.y:10246 +//line mysql_sql.y:10254 { yyLOCAL = &tree.FrameBound{Type: tree.Preceding, Expr: yyDollar[1].exprUnion()} } yyVAL.union = yyLOCAL - case 1571: + case 1572: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.FrameType -//line mysql_sql.y:10252 +//line mysql_sql.y:10260 { yyLOCAL = tree.Rows } yyVAL.union = yyLOCAL - case 1572: + case 1573: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.FrameType -//line mysql_sql.y:10256 +//line mysql_sql.y:10264 { yyLOCAL = tree.Range } yyVAL.union = yyLOCAL - case 1573: + case 1574: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.FrameType -//line mysql_sql.y:10260 +//line mysql_sql.y:10268 { yyLOCAL = tree.Groups } yyVAL.union = yyLOCAL - case 1574: + case 1575: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.FrameClause -//line mysql_sql.y:10266 +//line mysql_sql.y:10274 { yyLOCAL = &tree.FrameClause{ Type: yyDollar[1].frameTypeUnion(), @@ -23701,10 +23712,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1575: + case 1576: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *tree.FrameClause -//line mysql_sql.y:10274 +//line mysql_sql.y:10282 { yyLOCAL = &tree.FrameClause{ Type: yyDollar[1].frameTypeUnion(), @@ -23714,82 +23725,82 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1576: + case 1577: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.FrameClause -//line mysql_sql.y:10284 +//line mysql_sql.y:10292 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1577: + case 1578: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.FrameClause -//line mysql_sql.y:10288 +//line mysql_sql.y:10296 { yyLOCAL = yyDollar[1].frameClauseUnion() } yyVAL.union = yyLOCAL - case 1578: + case 1579: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Exprs -//line mysql_sql.y:10295 +//line mysql_sql.y:10303 { yyLOCAL = yyDollar[3].exprsUnion() } yyVAL.union = yyLOCAL - case 1579: + case 1580: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.Exprs -//line mysql_sql.y:10300 +//line mysql_sql.y:10308 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1580: + case 1581: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Exprs -//line mysql_sql.y:10304 +//line mysql_sql.y:10312 { yyLOCAL = yyDollar[1].exprsUnion() } yyVAL.union = yyLOCAL - case 1581: + case 1582: yyDollar = yyS[yypt-0 : yypt+1] -//line mysql_sql.y:10309 +//line mysql_sql.y:10317 { yyVAL.str = "," } - case 1582: + case 1583: yyDollar = yyS[yypt-2 : yypt+1] -//line mysql_sql.y:10313 +//line mysql_sql.y:10321 { yyVAL.str = yyDollar[2].str } - case 1583: + case 1584: yyDollar = yyS[yypt-0 : yypt+1] -//line mysql_sql.y:10318 +//line mysql_sql.y:10326 { yyVAL.str = "1,vector_l2_ops,random,false" } - case 1584: + case 1585: yyDollar = yyS[yypt-2 : yypt+1] -//line mysql_sql.y:10322 +//line mysql_sql.y:10330 { yyVAL.str = yyDollar[2].str } - case 1585: + case 1586: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *tree.WindowSpec -//line mysql_sql.y:10327 +//line mysql_sql.y:10335 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1587: + case 1588: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.WindowSpec -//line mysql_sql.y:10334 +//line mysql_sql.y:10342 { hasFrame := true var f *tree.FrameClause @@ -23814,10 +23825,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1588: + case 1589: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10360 +//line mysql_sql.y:10368 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -23830,10 +23841,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1589: + case 1590: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10372 +//line mysql_sql.y:10380 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -23846,10 +23857,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1590: + case 1591: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10384 +//line mysql_sql.y:10392 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -23861,10 +23872,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1591: + case 1592: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10395 +//line mysql_sql.y:10403 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -23876,10 +23887,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1592: + case 1593: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10406 +//line mysql_sql.y:10414 { name := tree.NewUnresolvedColName(yyDollar[1].str) es := tree.NewNumVal("*", "*", false, tree.P_char) @@ -23891,10 +23902,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1593: + case 1594: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10417 +//line mysql_sql.y:10425 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -23905,10 +23916,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1594: + case 1595: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10427 +//line mysql_sql.y:10435 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -23919,10 +23930,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1595: + case 1596: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10437 +//line mysql_sql.y:10445 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -23934,10 +23945,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1596: + case 1597: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10448 +//line mysql_sql.y:10456 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -23949,10 +23960,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1597: + case 1598: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10459 +//line mysql_sql.y:10467 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -23964,10 +23975,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1598: + case 1599: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10470 +//line mysql_sql.y:10478 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -23979,10 +23990,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1599: + case 1600: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10481 +//line mysql_sql.y:10489 { name := tree.NewUnresolvedColName(yyDollar[1].str) es := tree.NewNumVal("*", "*", false, tree.P_char) @@ -23994,10 +24005,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1600: + case 1601: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10492 +//line mysql_sql.y:10500 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -24009,10 +24020,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1601: + case 1602: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10503 +//line mysql_sql.y:10511 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -24024,10 +24035,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1602: + case 1603: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10514 +//line mysql_sql.y:10522 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -24039,10 +24050,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1603: + case 1604: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10525 +//line mysql_sql.y:10533 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -24054,10 +24065,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1604: + case 1605: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10536 +//line mysql_sql.y:10544 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -24069,10 +24080,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1605: + case 1606: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10547 +//line mysql_sql.y:10555 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -24084,10 +24095,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1606: + case 1607: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10558 +//line mysql_sql.y:10566 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -24099,10 +24110,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1607: + case 1608: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10569 +//line mysql_sql.y:10577 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -24114,10 +24125,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1608: + case 1609: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10580 +//line mysql_sql.y:10588 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -24129,10 +24140,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1609: + case 1610: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10591 +//line mysql_sql.y:10599 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -24144,10 +24155,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1610: + case 1611: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10602 +//line mysql_sql.y:10610 { name := tree.NewUnresolvedColName(yyDollar[1].str) var columnList tree.Exprs @@ -24165,10 +24176,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1614: + case 1615: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10626 +//line mysql_sql.y:10634 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -24178,10 +24189,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1615: + case 1616: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10635 +//line mysql_sql.y:10643 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -24191,10 +24202,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1616: + case 1617: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10644 +//line mysql_sql.y:10652 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -24204,10 +24215,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1617: + case 1618: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10653 +//line mysql_sql.y:10661 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -24217,10 +24228,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1618: + case 1619: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10662 +//line mysql_sql.y:10670 { name := tree.NewUnresolvedColName(yyDollar[1].str) str := strings.ToLower(yyDollar[3].str) @@ -24232,10 +24243,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1619: + case 1620: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10673 +//line mysql_sql.y:10681 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -24245,10 +24256,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1620: + case 1621: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10682 +//line mysql_sql.y:10690 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -24259,10 +24270,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1621: + case 1622: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10692 +//line mysql_sql.y:10700 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -24272,10 +24283,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1622: + case 1623: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10701 +//line mysql_sql.y:10709 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -24285,10 +24296,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1623: + case 1624: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10710 +//line mysql_sql.y:10718 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -24298,10 +24309,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1624: + case 1625: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10719 +//line mysql_sql.y:10727 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -24311,10 +24322,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1625: + case 1626: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10728 +//line mysql_sql.y:10736 { name := tree.NewUnresolvedColName(yyDollar[1].str) arg0 := tree.NewNumVal(int64(0), "0", false, tree.P_int64) @@ -24327,10 +24338,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1626: + case 1627: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10740 +//line mysql_sql.y:10748 { name := tree.NewUnresolvedColName(yyDollar[1].str) arg0 := tree.NewNumVal(int64(1), "1", false, tree.P_int64) @@ -24342,10 +24353,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1627: + case 1628: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10751 +//line mysql_sql.y:10759 { name := tree.NewUnresolvedColName(yyDollar[1].str) arg0 := tree.NewNumVal(int64(2), "2", false, tree.P_int64) @@ -24359,10 +24370,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1628: + case 1629: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10764 +//line mysql_sql.y:10772 { name := tree.NewUnresolvedColName(yyDollar[1].str) arg0 := tree.NewNumVal(int64(3), "3", false, tree.P_int64) @@ -24375,10 +24386,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1629: + case 1630: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10776 +//line mysql_sql.y:10784 { column := tree.NewUnresolvedColName(yyDollar[3].str) name := tree.NewUnresolvedColName(yyDollar[1].str) @@ -24389,16 +24400,16 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1636: + case 1637: yyDollar = yyS[yypt-1 : yypt+1] -//line mysql_sql.y:10799 +//line mysql_sql.y:10807 { yyVAL.str = yyDollar[1].str } - case 1665: + case 1666: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10835 +//line mysql_sql.y:10843 { name := tree.NewUnresolvedColName(yyDollar[1].str) var es tree.Exprs = nil @@ -24412,10 +24423,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1666: + case 1667: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10848 +//line mysql_sql.y:10856 { name := tree.NewUnresolvedColName(yyDollar[1].str) var es tree.Exprs = nil @@ -24429,10 +24440,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1667: + case 1668: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10861 +//line mysql_sql.y:10869 { name := tree.NewUnresolvedColName(yyDollar[1].str) str := strings.ToLower(yyDollar[3].str) @@ -24444,10 +24455,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1668: + case 1669: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10873 +//line mysql_sql.y:10881 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -24457,10 +24468,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1669: + case 1670: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10882 +//line mysql_sql.y:10890 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -24469,10 +24480,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1670: + case 1671: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10890 +//line mysql_sql.y:10898 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -24481,10 +24492,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1671: + case 1672: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10898 +//line mysql_sql.y:10906 { name := tree.NewUnresolvedColName(yyDollar[1].str) var es tree.Exprs = nil @@ -24498,10 +24509,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1672: + case 1673: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10911 +//line mysql_sql.y:10919 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -24511,10 +24522,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1673: + case 1674: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10920 +//line mysql_sql.y:10928 { name := tree.NewUnresolvedColName(yyDollar[1].str) exprs := make([]tree.Expr, 1) @@ -24526,10 +24537,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1674: + case 1675: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10931 +//line mysql_sql.y:10939 { name := tree.NewUnresolvedColName(yyDollar[1].str) exprs := make([]tree.Expr, 1) @@ -24541,10 +24552,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1675: + case 1676: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10942 +//line mysql_sql.y:10950 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -24554,10 +24565,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1676: + case 1677: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10951 +//line mysql_sql.y:10959 { cn := tree.NewNumVal(yyDollar[5].str, yyDollar[5].str, false, tree.P_char) es := yyDollar[3].exprsUnion() @@ -24570,10 +24581,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1677: + case 1678: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10963 +//line mysql_sql.y:10971 { val := tree.NewNumVal(yyDollar[2].str, yyDollar[2].str, false, tree.P_char) name := tree.NewUnresolvedColName(yyDollar[1].str) @@ -24584,10 +24595,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1678: + case 1679: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10973 +//line mysql_sql.y:10981 { val := tree.NewNumVal(yyDollar[2].str, yyDollar[2].str, false, tree.P_char) name := tree.NewUnresolvedColName(yyDollar[1].str) @@ -24598,10 +24609,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1679: + case 1680: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10983 +//line mysql_sql.y:10991 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -24611,10 +24622,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1680: + case 1681: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:10992 +//line mysql_sql.y:11000 { es := tree.Exprs{yyDollar[3].exprUnion()} es = append(es, yyDollar[5].exprUnion()) @@ -24626,10 +24637,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1681: + case 1682: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:11003 +//line mysql_sql.y:11011 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -24639,10 +24650,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1682: + case 1683: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:11012 +//line mysql_sql.y:11020 { val := tree.NewNumVal(yyDollar[2].str, yyDollar[2].str, false, tree.P_char) name := tree.NewUnresolvedColName(yyDollar[1].str) @@ -24653,10 +24664,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1683: + case 1684: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:11022 +//line mysql_sql.y:11030 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -24666,10 +24677,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1684: + case 1685: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:11031 +//line mysql_sql.y:11039 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -24679,10 +24690,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1685: + case 1686: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.FuncExpr -//line mysql_sql.y:11040 +//line mysql_sql.y:11048 { name := tree.NewUnresolvedColName(yyDollar[1].str) yyLOCAL = &tree.FuncExpr{ @@ -24692,34 +24703,34 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1686: + case 1687: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11050 +//line mysql_sql.y:11058 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1687: + case 1688: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11054 +//line mysql_sql.y:11062 { yyLOCAL = yyDollar[1].exprUnion() } yyVAL.union = yyLOCAL - case 1688: + case 1689: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11060 +//line mysql_sql.y:11068 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1689: + case 1690: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11064 +//line mysql_sql.y:11072 { ival, errStr := util.GetInt64(yyDollar[2].item) if errStr != "" { @@ -24730,20 +24741,20 @@ yydefault: yyLOCAL = tree.NewNumVal(ival, str, false, tree.P_int64) } yyVAL.union = yyLOCAL - case 1696: + case 1697: yyDollar = yyS[yypt-0 : yypt+1] -//line mysql_sql.y:11083 +//line mysql_sql.y:11091 { } - case 1697: + case 1698: yyDollar = yyS[yypt-2 : yypt+1] -//line mysql_sql.y:11085 +//line mysql_sql.y:11093 { } - case 1732: + case 1733: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11127 +//line mysql_sql.y:11135 { name := tree.NewUnresolvedColName(yyDollar[1].str) str := strings.ToLower(yyDollar[3].str) @@ -24755,106 +24766,106 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1733: + case 1734: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.FuncType -//line mysql_sql.y:11139 +//line mysql_sql.y:11147 { yyLOCAL = tree.FUNC_TYPE_DEFAULT } yyVAL.union = yyLOCAL - case 1734: + case 1735: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.FuncType -//line mysql_sql.y:11143 +//line mysql_sql.y:11151 { yyLOCAL = tree.FUNC_TYPE_DISTINCT } yyVAL.union = yyLOCAL - case 1735: + case 1736: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.FuncType -//line mysql_sql.y:11147 +//line mysql_sql.y:11155 { yyLOCAL = tree.FUNC_TYPE_ALL } yyVAL.union = yyLOCAL - case 1736: + case 1737: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.Tuple -//line mysql_sql.y:11153 +//line mysql_sql.y:11161 { yyLOCAL = tree.NewTuple(yyDollar[2].exprsUnion()) } yyVAL.union = yyLOCAL - case 1737: + case 1738: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.Exprs -//line mysql_sql.y:11158 +//line mysql_sql.y:11166 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1738: + case 1739: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Exprs -//line mysql_sql.y:11162 +//line mysql_sql.y:11170 { yyLOCAL = yyDollar[1].exprsUnion() } yyVAL.union = yyLOCAL - case 1739: + case 1740: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Exprs -//line mysql_sql.y:11168 +//line mysql_sql.y:11176 { yyLOCAL = tree.Exprs{yyDollar[1].exprUnion()} } yyVAL.union = yyLOCAL - case 1740: + case 1741: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Exprs -//line mysql_sql.y:11172 +//line mysql_sql.y:11180 { yyLOCAL = append(yyDollar[1].exprsUnion(), yyDollar[3].exprUnion()) } yyVAL.union = yyLOCAL - case 1741: + case 1742: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Exprs -//line mysql_sql.y:11178 +//line mysql_sql.y:11186 { yyLOCAL = tree.Exprs{yyDollar[1].exprUnion()} } yyVAL.union = yyLOCAL - case 1742: + case 1743: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Exprs -//line mysql_sql.y:11182 +//line mysql_sql.y:11190 { yyLOCAL = append(yyDollar[1].exprsUnion(), yyDollar[3].exprUnion()) } yyVAL.union = yyLOCAL - case 1743: + case 1744: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11189 +//line mysql_sql.y:11197 { yyLOCAL = tree.NewAndExpr(yyDollar[1].exprUnion(), yyDollar[3].exprUnion()) } yyVAL.union = yyLOCAL - case 1744: + case 1745: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11193 +//line mysql_sql.y:11201 { yyLOCAL = tree.NewOrExpr(yyDollar[1].exprUnion(), yyDollar[3].exprUnion()) } yyVAL.union = yyLOCAL - case 1745: + case 1746: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11197 +//line mysql_sql.y:11205 { name := tree.NewUnresolvedColName("concat") yyLOCAL = &tree.FuncExpr{ @@ -24864,355 +24875,355 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1746: + case 1747: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11206 +//line mysql_sql.y:11214 { yyLOCAL = tree.NewXorExpr(yyDollar[1].exprUnion(), yyDollar[3].exprUnion()) } yyVAL.union = yyLOCAL - case 1747: + case 1748: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11210 +//line mysql_sql.y:11218 { yyLOCAL = tree.NewNotExpr(yyDollar[2].exprUnion()) } yyVAL.union = yyLOCAL - case 1748: + case 1749: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11214 +//line mysql_sql.y:11222 { yyLOCAL = yyDollar[1].exprUnion() } yyVAL.union = yyLOCAL - case 1749: + case 1750: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11219 +//line mysql_sql.y:11227 { yyLOCAL = yyDollar[1].exprUnion() } yyVAL.union = yyLOCAL - case 1750: + case 1751: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11223 +//line mysql_sql.y:11231 { yyLOCAL = tree.NewMaxValue() } yyVAL.union = yyLOCAL - case 1751: + case 1752: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11229 +//line mysql_sql.y:11237 { yyLOCAL = tree.NewIsNullExpr(yyDollar[1].exprUnion()) } yyVAL.union = yyLOCAL - case 1752: + case 1753: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11233 +//line mysql_sql.y:11241 { yyLOCAL = tree.NewIsNotNullExpr(yyDollar[1].exprUnion()) } yyVAL.union = yyLOCAL - case 1753: + case 1754: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11237 +//line mysql_sql.y:11245 { yyLOCAL = tree.NewIsUnknownExpr(yyDollar[1].exprUnion()) } yyVAL.union = yyLOCAL - case 1754: + case 1755: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11241 +//line mysql_sql.y:11249 { yyLOCAL = tree.NewIsNotUnknownExpr(yyDollar[1].exprUnion()) } yyVAL.union = yyLOCAL - case 1755: + case 1756: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11245 +//line mysql_sql.y:11253 { yyLOCAL = tree.NewIsTrueExpr(yyDollar[1].exprUnion()) } yyVAL.union = yyLOCAL - case 1756: + case 1757: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11249 +//line mysql_sql.y:11257 { yyLOCAL = tree.NewIsNotTrueExpr(yyDollar[1].exprUnion()) } yyVAL.union = yyLOCAL - case 1757: + case 1758: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11253 +//line mysql_sql.y:11261 { yyLOCAL = tree.NewIsFalseExpr(yyDollar[1].exprUnion()) } yyVAL.union = yyLOCAL - case 1758: + case 1759: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11257 +//line mysql_sql.y:11265 { yyLOCAL = tree.NewIsNotFalseExpr(yyDollar[1].exprUnion()) } yyVAL.union = yyLOCAL - case 1759: + case 1760: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11261 +//line mysql_sql.y:11269 { yyLOCAL = tree.NewComparisonExpr(yyDollar[2].comparisonOpUnion(), yyDollar[1].exprUnion(), yyDollar[3].exprUnion()) } yyVAL.union = yyLOCAL - case 1760: + case 1761: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11265 +//line mysql_sql.y:11273 { yyLOCAL = tree.NewSubqueryComparisonExpr(yyDollar[2].comparisonOpUnion(), yyDollar[3].comparisonOpUnion(), yyDollar[1].exprUnion(), yyDollar[4].subqueryUnion()) yyLOCAL = tree.NewSubqueryComparisonExpr(yyDollar[2].comparisonOpUnion(), yyDollar[3].comparisonOpUnion(), yyDollar[1].exprUnion(), yyDollar[4].subqueryUnion()) } yyVAL.union = yyLOCAL - case 1762: + case 1763: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11273 +//line mysql_sql.y:11281 { yyLOCAL = tree.NewComparisonExpr(tree.IN, yyDollar[1].exprUnion(), yyDollar[3].exprUnion()) } yyVAL.union = yyLOCAL - case 1763: + case 1764: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11277 +//line mysql_sql.y:11285 { yyLOCAL = tree.NewComparisonExpr(tree.NOT_IN, yyDollar[1].exprUnion(), yyDollar[4].exprUnion()) } yyVAL.union = yyLOCAL - case 1764: + case 1765: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11281 +//line mysql_sql.y:11289 { yyLOCAL = tree.NewComparisonExprWithEscape(tree.LIKE, yyDollar[1].exprUnion(), yyDollar[3].exprUnion(), yyDollar[4].exprUnion()) } yyVAL.union = yyLOCAL - case 1765: + case 1766: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11285 +//line mysql_sql.y:11293 { yyLOCAL = tree.NewComparisonExprWithEscape(tree.NOT_LIKE, yyDollar[1].exprUnion(), yyDollar[4].exprUnion(), yyDollar[5].exprUnion()) } yyVAL.union = yyLOCAL - case 1766: + case 1767: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11289 +//line mysql_sql.y:11297 { yyLOCAL = tree.NewComparisonExprWithEscape(tree.ILIKE, yyDollar[1].exprUnion(), yyDollar[3].exprUnion(), yyDollar[4].exprUnion()) } yyVAL.union = yyLOCAL - case 1767: + case 1768: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11293 +//line mysql_sql.y:11301 { yyLOCAL = tree.NewComparisonExprWithEscape(tree.NOT_ILIKE, yyDollar[1].exprUnion(), yyDollar[4].exprUnion(), yyDollar[5].exprUnion()) } yyVAL.union = yyLOCAL - case 1768: + case 1769: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11297 +//line mysql_sql.y:11305 { yyLOCAL = tree.NewComparisonExpr(tree.REG_MATCH, yyDollar[1].exprUnion(), yyDollar[3].exprUnion()) } yyVAL.union = yyLOCAL - case 1769: + case 1770: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11301 +//line mysql_sql.y:11309 { yyLOCAL = tree.NewComparisonExpr(tree.NOT_REG_MATCH, yyDollar[1].exprUnion(), yyDollar[4].exprUnion()) } yyVAL.union = yyLOCAL - case 1770: + case 1771: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11305 +//line mysql_sql.y:11313 { yyLOCAL = tree.NewRangeCond(false, yyDollar[1].exprUnion(), yyDollar[3].exprUnion(), yyDollar[5].exprUnion()) } yyVAL.union = yyLOCAL - case 1771: + case 1772: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11309 +//line mysql_sql.y:11317 { yyLOCAL = tree.NewRangeCond(true, yyDollar[1].exprUnion(), yyDollar[4].exprUnion(), yyDollar[6].exprUnion()) } yyVAL.union = yyLOCAL - case 1773: + case 1774: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11315 +//line mysql_sql.y:11323 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1774: + case 1775: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11319 +//line mysql_sql.y:11327 { yyLOCAL = yyDollar[2].exprUnion() } yyVAL.union = yyLOCAL - case 1775: + case 1776: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11325 +//line mysql_sql.y:11333 { yyLOCAL = yyDollar[1].tupleUnion() } yyVAL.union = yyLOCAL - case 1776: + case 1777: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11329 +//line mysql_sql.y:11337 { yyLOCAL = yyDollar[1].subqueryUnion() } yyVAL.union = yyLOCAL - case 1777: + case 1778: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.ComparisonOp -//line mysql_sql.y:11336 +//line mysql_sql.y:11344 { yyLOCAL = tree.ALL } yyVAL.union = yyLOCAL - case 1778: + case 1779: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.ComparisonOp -//line mysql_sql.y:11340 +//line mysql_sql.y:11348 { yyLOCAL = tree.ANY } yyVAL.union = yyLOCAL - case 1779: + case 1780: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.ComparisonOp -//line mysql_sql.y:11344 +//line mysql_sql.y:11352 { yyLOCAL = tree.SOME } yyVAL.union = yyLOCAL - case 1780: + case 1781: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.ComparisonOp -//line mysql_sql.y:11350 +//line mysql_sql.y:11358 { yyLOCAL = tree.EQUAL } yyVAL.union = yyLOCAL - case 1781: + case 1782: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.ComparisonOp -//line mysql_sql.y:11354 +//line mysql_sql.y:11362 { yyLOCAL = tree.LESS_THAN } yyVAL.union = yyLOCAL - case 1782: + case 1783: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.ComparisonOp -//line mysql_sql.y:11358 +//line mysql_sql.y:11366 { yyLOCAL = tree.GREAT_THAN } yyVAL.union = yyLOCAL - case 1783: + case 1784: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.ComparisonOp -//line mysql_sql.y:11362 +//line mysql_sql.y:11370 { yyLOCAL = tree.LESS_THAN_EQUAL } yyVAL.union = yyLOCAL - case 1784: + case 1785: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.ComparisonOp -//line mysql_sql.y:11366 +//line mysql_sql.y:11374 { yyLOCAL = tree.GREAT_THAN_EQUAL } yyVAL.union = yyLOCAL - case 1785: + case 1786: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.ComparisonOp -//line mysql_sql.y:11370 +//line mysql_sql.y:11378 { yyLOCAL = tree.NOT_EQUAL } yyVAL.union = yyLOCAL - case 1786: + case 1787: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.ComparisonOp -//line mysql_sql.y:11374 +//line mysql_sql.y:11382 { yyLOCAL = tree.NULL_SAFE_EQUAL } yyVAL.union = yyLOCAL - case 1787: + case 1788: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.ColumnAttribute -//line mysql_sql.y:11380 +//line mysql_sql.y:11388 { yyLOCAL = tree.NewAttributePrimaryKey() } yyVAL.union = yyLOCAL - case 1788: + case 1789: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.ColumnAttribute -//line mysql_sql.y:11384 +//line mysql_sql.y:11392 { yyLOCAL = tree.NewAttributeUniqueKey() } yyVAL.union = yyLOCAL - case 1789: + case 1790: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.ColumnAttribute -//line mysql_sql.y:11388 +//line mysql_sql.y:11396 { yyLOCAL = tree.NewAttributeUnique() } yyVAL.union = yyLOCAL - case 1790: + case 1791: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.ColumnAttribute -//line mysql_sql.y:11392 +//line mysql_sql.y:11400 { yyLOCAL = tree.NewAttributeKey() } yyVAL.union = yyLOCAL - case 1791: + case 1792: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11398 +//line mysql_sql.y:11406 { str := fmt.Sprintf("%v", yyDollar[1].item) switch v := yyDollar[1].item.(type) { @@ -25226,35 +25237,35 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1792: + case 1793: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11411 +//line mysql_sql.y:11419 { fval := yyDollar[1].item.(float64) yyLOCAL = tree.NewNumVal(fval, yylex.(*Lexer).scanner.LastToken, false, tree.P_float64) } yyVAL.union = yyLOCAL - case 1793: + case 1794: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11416 +//line mysql_sql.y:11424 { yyLOCAL = tree.NewNumVal(yyDollar[1].str, yyDollar[1].str, false, tree.P_decimal) } yyVAL.union = yyLOCAL - case 1794: + case 1795: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11422 +//line mysql_sql.y:11430 { yyLOCAL = tree.NewNumVal(yyDollar[1].str, yyDollar[1].str, false, tree.P_char) } yyVAL.union = yyLOCAL - case 1795: + case 1796: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11426 +//line mysql_sql.y:11434 { str := fmt.Sprintf("%v", yyDollar[1].item) switch v := yyDollar[1].item.(type) { @@ -25268,51 +25279,51 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1796: + case 1797: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11439 +//line mysql_sql.y:11447 { fval := yyDollar[1].item.(float64) yyLOCAL = tree.NewNumVal(fval, yylex.(*Lexer).scanner.LastToken, false, tree.P_float64) } yyVAL.union = yyLOCAL - case 1797: + case 1798: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11444 +//line mysql_sql.y:11452 { yyLOCAL = tree.NewNumVal(true, "true", false, tree.P_bool) } yyVAL.union = yyLOCAL - case 1798: + case 1799: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11448 +//line mysql_sql.y:11456 { yyLOCAL = tree.NewNumVal(false, "false", false, tree.P_bool) } yyVAL.union = yyLOCAL - case 1799: + case 1800: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11452 +//line mysql_sql.y:11460 { yyLOCAL = tree.NewNumVal("null", "null", false, tree.P_null) } yyVAL.union = yyLOCAL - case 1800: + case 1801: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11456 +//line mysql_sql.y:11464 { yyLOCAL = tree.NewNumVal(yyDollar[1].str, yyDollar[1].str, false, tree.P_hexnum) } yyVAL.union = yyLOCAL - case 1801: + case 1802: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11460 +//line mysql_sql.y:11468 { if strings.HasPrefix(yyDollar[2].str, "0x") { yyDollar[2].str = yyDollar[2].str[2:] @@ -25320,69 +25331,69 @@ yydefault: yyLOCAL = tree.NewNumVal(yyDollar[2].str, yyDollar[2].str, false, tree.P_bit) } yyVAL.union = yyLOCAL - case 1802: + case 1803: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11467 +//line mysql_sql.y:11475 { yyLOCAL = tree.NewNumVal(yyDollar[1].str, yyDollar[1].str, false, tree.P_decimal) } yyVAL.union = yyLOCAL - case 1803: + case 1804: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11471 +//line mysql_sql.y:11479 { yyLOCAL = tree.NewNumVal(yyDollar[1].str, yyDollar[1].str, false, tree.P_bit) } yyVAL.union = yyLOCAL - case 1804: + case 1805: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11475 +//line mysql_sql.y:11483 { yyLOCAL = tree.NewParamExpr(yylex.(*Lexer).GetParamIndex()) } yyVAL.union = yyLOCAL - case 1805: + case 1806: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.Expr -//line mysql_sql.y:11479 +//line mysql_sql.y:11487 { yyLOCAL = tree.NewNumVal(yyDollar[2].str, yyDollar[2].str, false, tree.P_ScoreBinary) } yyVAL.union = yyLOCAL - case 1806: + case 1807: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:11486 +//line mysql_sql.y:11494 { yyLOCAL = yyDollar[1].columnTypeUnion() yyLOCAL.InternalType.Unsigned = yyDollar[2].unsignedOptUnion() yyLOCAL.InternalType.Zerofill = yyDollar[3].zeroFillOptUnion() } yyVAL.union = yyLOCAL - case 1810: + case 1811: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:11497 +//line mysql_sql.y:11505 { yyLOCAL = yyDollar[1].columnTypeUnion() yyLOCAL.InternalType.DisplayWith = yyDollar[2].lengthOptUnion() } yyVAL.union = yyLOCAL - case 1811: + case 1812: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:11502 +//line mysql_sql.y:11510 { yyLOCAL = yyDollar[1].columnTypeUnion() } yyVAL.union = yyLOCAL - case 1812: + case 1813: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:11508 +//line mysql_sql.y:11516 { locale := "" yyLOCAL = &tree.T{ @@ -25395,10 +25406,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1813: + case 1814: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:11520 +//line mysql_sql.y:11528 { locale := "" yyLOCAL = &tree.T{ @@ -25411,10 +25422,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1814: + case 1815: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:11532 +//line mysql_sql.y:11540 { locale := "" yyLOCAL = &tree.T{ @@ -25427,10 +25438,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1815: + case 1816: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:11544 +//line mysql_sql.y:11552 { locale := "" yyLOCAL = &tree.T{ @@ -25444,10 +25455,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1816: + case 1817: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:11557 +//line mysql_sql.y:11565 { locale := "" yyLOCAL = &tree.T{ @@ -25461,10 +25472,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1817: + case 1818: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:11570 +//line mysql_sql.y:11578 { locale := "" yyLOCAL = &tree.T{ @@ -25478,10 +25489,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1818: + case 1819: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:11583 +//line mysql_sql.y:11591 { locale := "" yyLOCAL = &tree.T{ @@ -25495,10 +25506,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1819: + case 1820: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:11596 +//line mysql_sql.y:11604 { locale := "" yyLOCAL = &tree.T{ @@ -25512,10 +25523,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1820: + case 1821: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:11609 +//line mysql_sql.y:11617 { locale := "" yyLOCAL = &tree.T{ @@ -25529,10 +25540,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1821: + case 1822: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:11622 +//line mysql_sql.y:11630 { locale := "" yyLOCAL = &tree.T{ @@ -25546,10 +25557,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1822: + case 1823: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:11635 +//line mysql_sql.y:11643 { locale := "" yyLOCAL = &tree.T{ @@ -25563,10 +25574,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1823: + case 1824: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:11648 +//line mysql_sql.y:11656 { locale := "" yyLOCAL = &tree.T{ @@ -25580,10 +25591,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1824: + case 1825: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:11661 +//line mysql_sql.y:11669 { locale := "" yyLOCAL = &tree.T{ @@ -25597,10 +25608,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1825: + case 1826: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:11674 +//line mysql_sql.y:11682 { locale := "" yyLOCAL = &tree.T{ @@ -25614,10 +25625,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1826: + case 1827: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:11689 +//line mysql_sql.y:11697 { locale := "" if yyDollar[2].lengthScaleOptUnion().DisplayWith > 255 { @@ -25645,10 +25656,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1827: + case 1828: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:11716 +//line mysql_sql.y:11724 { locale := "" if yyDollar[2].lengthScaleOptUnion().DisplayWith > 255 { @@ -25690,10 +25701,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1828: + case 1829: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:11758 +//line mysql_sql.y:11766 { locale := "" if yyDollar[2].lengthScaleOptUnion().Scale != tree.NotDefineDec && yyDollar[2].lengthScaleOptUnion().Scale > yyDollar[2].lengthScaleOptUnion().DisplayWith { @@ -25730,10 +25741,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1829: + case 1830: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:11794 +//line mysql_sql.y:11802 { locale := "" if yyDollar[2].lengthScaleOptUnion().Scale != tree.NotDefineDec && yyDollar[2].lengthScaleOptUnion().Scale > yyDollar[2].lengthScaleOptUnion().DisplayWith { @@ -25770,10 +25781,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1830: + case 1831: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:11830 +//line mysql_sql.y:11838 { locale := "" yyLOCAL = &tree.T{ @@ -25789,10 +25800,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1831: + case 1832: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:11847 +//line mysql_sql.y:11855 { locale := "" yyLOCAL = &tree.T{ @@ -25805,10 +25816,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1832: + case 1833: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:11859 +//line mysql_sql.y:11867 { locale := "" if yyDollar[2].lengthOptUnion() < 0 || yyDollar[2].lengthOptUnion() > 6 { @@ -25829,10 +25840,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1833: + case 1834: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:11879 +//line mysql_sql.y:11887 { locale := "" if yyDollar[2].lengthOptUnion() < 0 || yyDollar[2].lengthOptUnion() > 6 { @@ -25853,10 +25864,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1834: + case 1835: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:11899 +//line mysql_sql.y:11907 { locale := "" if yyDollar[2].lengthOptUnion() < 0 || yyDollar[2].lengthOptUnion() > 6 { @@ -25877,10 +25888,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1835: + case 1836: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:11919 +//line mysql_sql.y:11927 { locale := "" yyLOCAL = &tree.T{ @@ -25895,10 +25906,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1836: + case 1837: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:11935 +//line mysql_sql.y:11943 { locale := "" yyLOCAL = &tree.T{ @@ -25912,10 +25923,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1837: + case 1838: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:11948 +//line mysql_sql.y:11956 { locale := "" yyLOCAL = &tree.T{ @@ -25929,10 +25940,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1838: + case 1839: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:11961 +//line mysql_sql.y:11969 { locale := "" yyLOCAL = &tree.T{ @@ -25946,10 +25957,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1839: + case 1840: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:11974 +//line mysql_sql.y:11982 { locale := "" yyLOCAL = &tree.T{ @@ -25963,10 +25974,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1840: + case 1841: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:11987 +//line mysql_sql.y:11995 { locale := "" yyLOCAL = &tree.T{ @@ -25979,10 +25990,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1841: + case 1842: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:11999 +//line mysql_sql.y:12007 { locale := "" yyLOCAL = &tree.T{ @@ -25995,10 +26006,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1842: + case 1843: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:12011 +//line mysql_sql.y:12019 { locale := "" yyLOCAL = &tree.T{ @@ -26011,10 +26022,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1843: + case 1844: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:12023 +//line mysql_sql.y:12031 { locale := "" yyLOCAL = &tree.T{ @@ -26027,10 +26038,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1844: + case 1845: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:12035 +//line mysql_sql.y:12043 { locale := "" yyLOCAL = &tree.T{ @@ -26043,10 +26054,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1845: + case 1846: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:12047 +//line mysql_sql.y:12055 { locale := "" yyLOCAL = &tree.T{ @@ -26059,10 +26070,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1846: + case 1847: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:12059 +//line mysql_sql.y:12067 { locale := "" yyLOCAL = &tree.T{ @@ -26075,10 +26086,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1847: + case 1848: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:12071 +//line mysql_sql.y:12079 { locale := "" yyLOCAL = &tree.T{ @@ -26091,10 +26102,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1848: + case 1849: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:12083 +//line mysql_sql.y:12091 { locale := "" yyLOCAL = &tree.T{ @@ -26107,10 +26118,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1849: + case 1850: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:12095 +//line mysql_sql.y:12103 { locale := "" yyLOCAL = &tree.T{ @@ -26123,10 +26134,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1850: + case 1851: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:12107 +//line mysql_sql.y:12115 { locale := "" yyLOCAL = &tree.T{ @@ -26140,10 +26151,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1851: + case 1852: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:12120 +//line mysql_sql.y:12128 { locale := "" yyLOCAL = &tree.T{ @@ -26157,10 +26168,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1852: + case 1853: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:12133 +//line mysql_sql.y:12141 { locale := "" yyLOCAL = &tree.T{ @@ -26174,10 +26185,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1853: + case 1854: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:12146 +//line mysql_sql.y:12154 { locale := "" yyLOCAL = &tree.T{ @@ -26191,10 +26202,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1854: + case 1855: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:12159 +//line mysql_sql.y:12167 { locale := "" yyLOCAL = &tree.T{ @@ -26208,20 +26219,20 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1855: + case 1856: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:12174 +//line mysql_sql.y:12182 { yyLOCAL = &tree.Do{ Exprs: yyDollar[2].exprsUnion(), } } yyVAL.union = yyLOCAL - case 1856: + case 1857: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:12182 +//line mysql_sql.y:12190 { yyLOCAL = &tree.Declare{ Variables: yyDollar[2].strsUnion(), @@ -26230,10 +26241,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1857: + case 1858: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.Statement -//line mysql_sql.y:12191 +//line mysql_sql.y:12199 { yyLOCAL = &tree.Declare{ Variables: yyDollar[2].strsUnion(), @@ -26242,10 +26253,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1858: + case 1859: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *tree.T -//line mysql_sql.y:12201 +//line mysql_sql.y:12209 { locale := "" yyLOCAL = &tree.T{ @@ -26258,75 +26269,75 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1859: + case 1860: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []string -//line mysql_sql.y:12224 +//line mysql_sql.y:12232 { yyLOCAL = make([]string, 0, 4) yyLOCAL = append(yyLOCAL, yyDollar[1].str) } yyVAL.union = yyLOCAL - case 1860: + case 1861: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []string -//line mysql_sql.y:12229 +//line mysql_sql.y:12237 { yyLOCAL = append(yyDollar[1].strsUnion(), yyDollar[3].str) } yyVAL.union = yyLOCAL - case 1861: + case 1862: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL int32 -//line mysql_sql.y:12235 +//line mysql_sql.y:12243 { yyLOCAL = 0 } yyVAL.union = yyLOCAL - case 1863: + case 1864: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL int32 -//line mysql_sql.y:12242 +//line mysql_sql.y:12250 { yyLOCAL = 0 } yyVAL.union = yyLOCAL - case 1864: + case 1865: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL int32 -//line mysql_sql.y:12246 +//line mysql_sql.y:12254 { yyLOCAL = int32(yyDollar[2].item.(int64)) } yyVAL.union = yyLOCAL - case 1865: + case 1866: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL int32 -//line mysql_sql.y:12251 +//line mysql_sql.y:12259 { yyLOCAL = int32(-1) } yyVAL.union = yyLOCAL - case 1866: + case 1867: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL int32 -//line mysql_sql.y:12255 +//line mysql_sql.y:12263 { yyLOCAL = int32(yyDollar[2].item.(int64)) } yyVAL.union = yyLOCAL - case 1867: + case 1868: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL int32 -//line mysql_sql.y:12261 +//line mysql_sql.y:12269 { yyLOCAL = tree.GetDisplayWith(int32(yyDollar[2].item.(int64))) } yyVAL.union = yyLOCAL - case 1868: + case 1869: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.LengthScaleOpt -//line mysql_sql.y:12267 +//line mysql_sql.y:12275 { yyLOCAL = tree.LengthScaleOpt{ DisplayWith: tree.NotDefineDisplayWidth, @@ -26334,10 +26345,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1869: + case 1870: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.LengthScaleOpt -//line mysql_sql.y:12274 +//line mysql_sql.y:12282 { yyLOCAL = tree.LengthScaleOpt{ DisplayWith: tree.GetDisplayWith(int32(yyDollar[2].item.(int64))), @@ -26345,10 +26356,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1870: + case 1871: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.LengthScaleOpt -//line mysql_sql.y:12281 +//line mysql_sql.y:12289 { yyLOCAL = tree.LengthScaleOpt{ DisplayWith: tree.GetDisplayWith(int32(yyDollar[2].item.(int64))), @@ -26356,10 +26367,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1871: + case 1872: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL tree.LengthScaleOpt -//line mysql_sql.y:12290 +//line mysql_sql.y:12298 { yyLOCAL = tree.LengthScaleOpt{ DisplayWith: 38, // this is the default precision for decimal @@ -26367,10 +26378,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1872: + case 1873: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL tree.LengthScaleOpt -//line mysql_sql.y:12297 +//line mysql_sql.y:12305 { yyLOCAL = tree.LengthScaleOpt{ DisplayWith: tree.GetDisplayWith(int32(yyDollar[2].item.(int64))), @@ -26378,10 +26389,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1873: + case 1874: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL tree.LengthScaleOpt -//line mysql_sql.y:12304 +//line mysql_sql.y:12312 { yyLOCAL = tree.LengthScaleOpt{ DisplayWith: tree.GetDisplayWith(int32(yyDollar[2].item.(int64))), @@ -26389,52 +26400,52 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1874: + case 1875: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:12313 +//line mysql_sql.y:12321 { yyLOCAL = false } yyVAL.union = yyLOCAL - case 1875: + case 1876: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:12317 +//line mysql_sql.y:12325 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 1876: + case 1877: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:12321 +//line mysql_sql.y:12329 { yyLOCAL = false } yyVAL.union = yyLOCAL - case 1877: + case 1878: yyDollar = yyS[yypt-0 : yypt+1] -//line mysql_sql.y:12327 +//line mysql_sql.y:12335 { } - case 1878: + case 1879: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL bool -//line mysql_sql.y:12329 +//line mysql_sql.y:12337 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 1882: + case 1883: yyDollar = yyS[yypt-0 : yypt+1] -//line mysql_sql.y:12339 +//line mysql_sql.y:12347 { yyVAL.str = "" } - case 1883: + case 1884: yyDollar = yyS[yypt-1 : yypt+1] -//line mysql_sql.y:12343 +//line mysql_sql.y:12351 { yyVAL.str = string(yyDollar[1].str) } diff --git a/pkg/sql/parsers/dialect/mysql/mysql_sql.y b/pkg/sql/parsers/dialect/mysql/mysql_sql.y index 79ed5d3610dd9..a647fd0c230ef 100644 --- a/pkg/sql/parsers/dialect/mysql/mysql_sql.y +++ b/pkg/sql/parsers/dialect/mysql/mysql_sql.y @@ -363,7 +363,7 @@ import ( // Secondary Index %token PARSER VISIBLE INVISIBLE BTREE HASH RTREE BSI IVFFLAT MASTER HNSW -%token ZONEMAP LEADING BOTH TRAILING UNKNOWN LISTS OP_TYPE REINDEX EF_SEARCH EF_CONSTRUCTION M QUANTIZATION +%token ZONEMAP LEADING BOTH TRAILING UNKNOWN LISTS OP_TYPE REINDEX EF_SEARCH EF_CONSTRUCTION M QUANTIZATION ASYNC // Alter @@ -7539,6 +7539,8 @@ index_option_list: opt1.HnswQuantization = opt2.HnswQuantization } else if opt2.HnswEfSearch > 0 { opt1.HnswEfSearch = opt2.HnswEfSearch + } else if opt2.Async { + opt1.Async = opt2.Async } $$ = opt1 } @@ -7632,6 +7634,12 @@ index_option: io.HnswQuantization = $3 $$ = io } +| ASYNC + { + io := tree.NewIndexOption() + io.Async = true + $$ = io + } index_column_list: @@ -12546,6 +12554,7 @@ non_reserved_keyword: | ATTRIBUTE | ACTION | ALGORITHM +| ASYNC | BEGIN | BIGINT | BIT diff --git a/pkg/sql/parsers/dialect/mysql/mysql_sql_test.go b/pkg/sql/parsers/dialect/mysql/mysql_sql_test.go index 3ef99b4364390..a3a0fc7cad77e 100644 --- a/pkg/sql/parsers/dialect/mysql/mysql_sql_test.go +++ b/pkg/sql/parsers/dialect/mysql/mysql_sql_test.go @@ -811,7 +811,8 @@ var ( }, { input: "create table t (a int, b char, index if not exists idx (a, b))", }, { - input: "create table t (a int, b char, fulltext idx (a, b))", + input: "create table t (a int, b char, fulltext idx (a, b) async)", + output: "create table t (a int, b char, fulltext idx (a, b) ASYNC )", }, { input: "create table t (a int, b char, constraint p1 primary key idx using hash (a, b))", output: "create table t (a int, b char, constraint p1 primary key idx using none (a, b))", @@ -1511,6 +1512,9 @@ var ( }, { input: "create index idx using ivfflat on A (a) LISTS 10 op_type 'vector_l2_ops'", output: "create index idx using ivfflat on a (a) LISTS 10 OP_TYPE vector_l2_ops ", + }, { + input: "create index idx using ivfflat on A (a) LISTS 10 op_type 'vector_l2_ops' async", + output: "create index idx using ivfflat on a (a) LISTS 10 OP_TYPE vector_l2_ops ASYNC ", }, { input: "create index idx1 on a (a)", }, { @@ -3209,6 +3213,10 @@ var ( input: "create index idx using hnsw on A (a) M 4 ef_construction 100 ef_search 32 QUANTIZATION 'BF16' OP_TYPE 'VECTOR_L2_OPS'", output: "create index idx using hnsw on a (a) M 4 EF_CONSTRUCTION 100 EF_SEARCH 32 QUANTIZATION BF16 OP_TYPE VECTOR_L2_OPS ", }, + { + input: "create index idx using hnsw on A (a) M 4 ef_construction 100 ef_search 32 QUANTIZATION 'BF16' OP_TYPE 'VECTOR_L2_OPS' ASYNC", + output: "create index idx using hnsw on a (a) M 4 EF_CONSTRUCTION 100 EF_SEARCH 32 QUANTIZATION BF16 OP_TYPE VECTOR_L2_OPS ASYNC ", + }, { input: "CREATE TABLE `vector_index_01` ( `a` bigint NOT NULL, `b` vecf32(128) DEFAULT NULL, PRIMARY KEY (`a`), KEY `idx01` USING hnsw (`b`) m = 4 ef_search = 64 ef_construction = 100 quantization 'bf16' op_type 'vector_l2_ops' )", output: "create table vector_index_01 (a bigint not null, b vecf32(128) default null, primary key (a), index idx01 using hnsw (b) M 4 EF_CONSTRUCTION 100 EF_SEARCH 64 QUANTIZATION bf16 OP_TYPE vector_l2_ops )", diff --git a/pkg/sql/parsers/tree/create.go b/pkg/sql/parsers/tree/create.go index eb0dc13fb3364..8d1672cc11421 100644 --- a/pkg/sql/parsers/tree/create.go +++ b/pkg/sql/parsers/tree/create.go @@ -2078,6 +2078,7 @@ type IndexOption struct { HnswEfConstruction int64 HnswEfSearch int64 HnswQuantization string + Async bool } // Must follow the following sequence when test @@ -2137,6 +2138,9 @@ func (node *IndexOption) Format(ctx *FmtCtx) { if node.Visible != VISIBLE_TYPE_INVALID { ctx.WriteString(node.Visible.ToString()) } + if node.Async { + ctx.WriteString("ASYNC ") + } } func (node IndexOption) TypeName() string { return "tree.IndexOption" } diff --git a/pkg/sql/plan/build_ddl.go b/pkg/sql/plan/build_ddl.go index 620ca9e13a0a5..b7e73ddf682fc 100644 --- a/pkg/sql/plan/build_ddl.go +++ b/pkg/sql/plan/build_ddl.go @@ -1662,10 +1662,10 @@ func buildFullTextIndexTable(createTable *plan.CreateTable, indexInfos []*tree.F if indexInfo.IndexOption != nil { if indexInfo.IndexOption.ParserName != "" { indexDef.Option = &plan.IndexOption{ParserName: indexInfo.IndexOption.ParserName, NgramTokenSize: int32(3)} - indexDef.IndexAlgoParams, err = catalog.IndexParamsToJsonString(indexInfo) - if err != nil { - return err - } + } + indexDef.IndexAlgoParams, err = catalog.IndexParamsToJsonString(indexInfo) + if err != nil { + return err } if indexInfo.IndexOption.Comment != "" { indexDef.Comment = indexInfo.IndexOption.Comment diff --git a/pkg/sql/plan/build_show_util.go b/pkg/sql/plan/build_show_util.go index ff38481dabaa7..7eabd9c3b54fd 100644 --- a/pkg/sql/plan/build_show_util.go +++ b/pkg/sql/plan/build_show_util.go @@ -203,6 +203,11 @@ func ConstructCreateTableSQL(ctx CompilerContext, tableDef *plan.TableDef, snaps if ok { indexStr += " WITH PARSER " + parser } + + async, ok := paramMap[catalog.Async] + if ok && async == "true" { + indexStr += " ASYNC" + } } } else { diff --git a/pkg/vectorindex/types.go b/pkg/vectorindex/types.go index b72320725c422..0d21decf4044b 100644 --- a/pkg/vectorindex/types.go +++ b/pkg/vectorindex/types.go @@ -69,12 +69,14 @@ type HnswParam struct { Quantization string `json:"quantization"` OpType string `json:"op_type"` EfSearch string `json:"ef_search"` + Async string `json:"async"` } // IVF specified parameters type IvfParam struct { Lists string `json:"lists"` OpType string `json:"op_type"` + Async string `json:"async"` } type IvfflatIndexConfig struct { From ef894ea7796ec45decd6a472a0a1f7e420c59c5f Mon Sep 17 00:00:00 2001 From: cpegeric Date: Wed, 25 Jun 2025 15:47:42 +0100 Subject: [PATCH 158/223] skip async with DML --- pkg/sql/plan/build_dml_util.go | 84 +++++++++++++++++++++++++++------- pkg/sql/plan/types.go | 5 +- 2 files changed, 70 insertions(+), 19 deletions(-) diff --git a/pkg/sql/plan/build_dml_util.go b/pkg/sql/plan/build_dml_util.go index 973685acd96ba..f891327c5e3f1 100644 --- a/pkg/sql/plan/build_dml_util.go +++ b/pkg/sql/plan/build_dml_util.go @@ -861,8 +861,9 @@ func buildInsertPlansWithRelatedHiddenTable( // IVF indexDefs are aggregated and handled later if _, ok := multiTableIndexes[indexdef.IndexName]; !ok { multiTableIndexes[indexdef.IndexName] = &MultiTableIndex{ - IndexAlgo: catalog.ToLower(indexdef.IndexAlgo), - IndexDefs: make(map[string]*IndexDef), + IndexAlgo: catalog.ToLower(indexdef.IndexAlgo), + IndexAlgoParams: indexdef.IndexAlgoParams, + IndexDefs: make(map[string]*IndexDef), } } multiTableIndexes[indexdef.IndexName].IndexDefs[catalog.ToLower(indexdef.IndexAlgoTableType)] = indexdef @@ -873,34 +874,26 @@ func buildInsertPlansWithRelatedHiddenTable( return err } - } - /* disable fulltext - - else if postdml_flag && indexdef.TableExist && catalog.IsFullTextIndexAlgo(indexdef.IndexAlgo) { + } else if postdml_flag && indexdef.TableExist && catalog.IsFullTextIndexAlgo(indexdef.IndexAlgo) { // TODO: choose either PostInsertFullTextIndex or PreInsertFullTextIndex err = buildPostInsertFullTextIndex(stmt, ctx, builder, bindCtx, objRef, tableDef, updateColLength, sourceStep, ifInsertFromUniqueColMap, indexdef, idx) if err != nil { return err } } - */ } // TODO: choose either PostInsertFullTextIndex or PreInsertFullTextIndex - /* disable fulltext if !postdml_flag && indexdef.TableExist && catalog.IsFullTextIndexAlgo(indexdef.IndexAlgo) { err = buildPreInsertFullTextIndex(stmt, ctx, builder, bindCtx, objRef, tableDef, updateColLength, sourceStep, ifInsertFromUniqueColMap, indexdef, idx) if err != nil { return err } } - */ } - /* disable IVFFLAT buildPreInsertMultiTableIndexes(ctx, builder, bindCtx, objRef, tableDef, sourceStep, multiTableIndexes) - */ ifInsertFromUnique := false if tableDef.Pkey != nil && ifInsertFromUniqueColMap != nil { @@ -3455,6 +3448,20 @@ func IsForeignKeyChecksEnabled(ctx CompilerContext) (bool, error) { } } +func isAsync(indexAlgoParams string) (bool, error) { + if len(indexAlgoParams) > 0 { + param, err := catalog.IndexParamsStringToMap(indexAlgoParams) + if err != nil { + return false, err + } + v, ok := param[catalog.Async] + if ok { + return v == "true", nil + } + } + return false, nil +} + func buildPreInsertMultiTableIndexes(ctx CompilerContext, builder *QueryBuilder, bindCtx *BindContext, objRef *ObjectRef, tableDef *TableDef, sourceStep int32, multiTableIndexes map[string]*MultiTableIndex) error { var lastNodeId int32 @@ -3464,6 +3471,16 @@ func buildPreInsertMultiTableIndexes(ctx CompilerContext, builder *QueryBuilder, switch multiTableIndex.IndexAlgo { case catalog.MoIndexIvfFlatAlgo.ToString(): + // skip async + var async bool + async, err = isAsync(multiTableIndex.IndexAlgoParams) + if err != nil { + return err + } + if async { + continue + } + lastNodeId = appendSinkScanNode(builder, bindCtx, sourceStep) var idxRefs = make([]*ObjectRef, 3) var idxTableDefs = make([]*TableDef, 3) @@ -3537,6 +3554,15 @@ func buildDeleteMultiTableIndexes(ctx CompilerContext, builder *QueryBuilder, bi for _, multiTableIndex := range multiTableIndexes { switch multiTableIndex.IndexAlgo { case catalog.MoIndexIvfFlatAlgo.ToString(): + // skip async + var async bool + async, err = isAsync(multiTableIndex.IndexAlgoParams) + if err != nil { + return err + } + if async { + continue + } // Used by pre-insert vector index. var idxRefs = make([]*ObjectRef, 3) @@ -4197,8 +4223,9 @@ func buildDeleteIndexPlans(ctx CompilerContext, builder *QueryBuilder, bindCtx * // IVF indexDefs are aggregated and handled later if _, ok := multiTableIndexes[indexdef.IndexName]; !ok { multiTableIndexes[indexdef.IndexName] = &MultiTableIndex{ - IndexAlgo: catalog.ToLower(indexdef.IndexAlgo), - IndexDefs: make(map[string]*IndexDef), + IndexAlgo: catalog.ToLower(indexdef.IndexAlgo), + IndexAlgoParams: indexdef.IndexAlgoParams, + IndexDefs: make(map[string]*IndexDef), } } multiTableIndexes[indexdef.IndexName].IndexDefs[catalog.ToLower(indexdef.IndexAlgoTableType)] = indexdef @@ -4209,7 +4236,6 @@ func buildDeleteIndexPlans(ctx CompilerContext, builder *QueryBuilder, bindCtx * } } else if indexdef.TableExist && catalog.IsFullTextIndexAlgo(indexdef.IndexAlgo) { // TODO: choose either PostDeleteFullTextIndex or PreDeleteFullTextIndex - /* distable fulltext if postdml_flag { err = buildPostDeleteFullTextIndex(ctx, builder, bindCtx, delCtx, indexdef, idx, typMap, posMap) } else { @@ -4218,13 +4244,10 @@ func buildDeleteIndexPlans(ctx CompilerContext, builder *QueryBuilder, bindCtx * if err != nil { return err } - */ } } - /* disable ivfflat buildDeleteMultiTableIndexes(ctx, builder, bindCtx, delCtx, multiTableIndexes) - */ } return nil @@ -4258,6 +4281,15 @@ func buildDeleteIndexPlans(ctx CompilerContext, builder *QueryBuilder, bindCtx * func buildPreInsertFullTextIndex(stmt *tree.Insert, ctx CompilerContext, builder *QueryBuilder, bindCtx *BindContext, objRef *ObjectRef, tableDef *TableDef, updateColLength int, sourceStep int32, ifInsertFromUniqueColMap map[string]bool, indexdef *plan.IndexDef, idx int) error { + // skip async + async, err := isAsync(indexdef.IndexAlgoParams) + if err != nil { + return err + } + if async { + return nil + } + isUpdate := (updateColLength > 0) lastNodeId := appendSinkScanNode(builder, bindCtx, sourceStep) @@ -4656,6 +4688,15 @@ func buildDeleteRowsFullTextIndex(ctx CompilerContext, builder *QueryBuilder, bi func buildPreDeleteFullTextIndex(ctx CompilerContext, builder *QueryBuilder, bindCtx *BindContext, delCtx *dmlPlanCtx, indexdef *plan.IndexDef, idx int, typMap map[string]plan.Type, posMap map[string]int) error { + // skip async + async, err := isAsync(indexdef.IndexAlgoParams) + if err != nil { + return err + } + if async { + return nil + } + //isUpdate := delCtx.updateColLength > 0 indexObjRef, indexTableDef, err := ctx.ResolveIndexTableByRef(delCtx.objRef, indexdef.IndexTableName, nil) if err != nil { @@ -4687,6 +4728,15 @@ func buildPreDeleteFullTextIndex(ctx CompilerContext, builder *QueryBuilder, bin func buildPostDmlFullTextIndex(ctx CompilerContext, builder *QueryBuilder, bindCtx *BindContext, indexObjRef *ObjectRef, indexTableDef *TableDef, tableDef *TableDef, sourceStep int32, indexdef *plan.IndexDef, idx int, isDelete, isInsert, isDeleteWithoutFilters bool) error { + // skip async + async, err := isAsync(indexdef.IndexAlgoParams) + if err != nil { + return err + } + if async { + return nil + } + lastNodeId := appendSinkScanNode(builder, bindCtx, sourceStep) orgPkColPos, _ := getPkPos(tableDef, false) diff --git a/pkg/sql/plan/types.go b/pkg/sql/plan/types.go index 150c45d483faa..6adecde0306c3 100644 --- a/pkg/sql/plan/types.go +++ b/pkg/sql/plan/types.go @@ -475,8 +475,9 @@ type OriginTableMessageForFuzzy struct { } type MultiTableIndex struct { - IndexAlgo string - IndexDefs map[string]*plan.IndexDef + IndexAlgo string + IndexAlgoParams string + IndexDefs map[string]*plan.IndexDef } type RemapInfo struct { From 1de75a69acf8490ac08f888f096b2dc61c6f4725 Mon Sep 17 00:00:00 2001 From: cpegeric Date: Wed, 25 Jun 2025 16:00:20 +0100 Subject: [PATCH 159/223] catalog.IsIndexAsync --- pkg/catalog/secondary_index_utils.go | 14 ++++++++++++++ pkg/sql/plan/build_dml_util.go | 24 +++++------------------- 2 files changed, 19 insertions(+), 19 deletions(-) diff --git a/pkg/catalog/secondary_index_utils.go b/pkg/catalog/secondary_index_utils.go index 63f79e89c6bd7..7189bcc791320 100644 --- a/pkg/catalog/secondary_index_utils.go +++ b/pkg/catalog/secondary_index_utils.go @@ -304,6 +304,20 @@ func DefaultIvfIndexAlgoOptions() map[string]string { return res } +func IsIndexAsync(indexAlgoParams string) (bool, error) { + if len(indexAlgoParams) > 0 { + param, err := IndexParamsStringToMap(indexAlgoParams) + if err != nil { + return false, err + } + v, ok := param[Async] + if ok { + return v == "true", nil + } + } + return false, nil +} + //------------------------[END] IndexAlgoParams------------------------ // ------------------------[START] Aliaser------------------------ diff --git a/pkg/sql/plan/build_dml_util.go b/pkg/sql/plan/build_dml_util.go index f891327c5e3f1..24403ca286776 100644 --- a/pkg/sql/plan/build_dml_util.go +++ b/pkg/sql/plan/build_dml_util.go @@ -3448,20 +3448,6 @@ func IsForeignKeyChecksEnabled(ctx CompilerContext) (bool, error) { } } -func isAsync(indexAlgoParams string) (bool, error) { - if len(indexAlgoParams) > 0 { - param, err := catalog.IndexParamsStringToMap(indexAlgoParams) - if err != nil { - return false, err - } - v, ok := param[catalog.Async] - if ok { - return v == "true", nil - } - } - return false, nil -} - func buildPreInsertMultiTableIndexes(ctx CompilerContext, builder *QueryBuilder, bindCtx *BindContext, objRef *ObjectRef, tableDef *TableDef, sourceStep int32, multiTableIndexes map[string]*MultiTableIndex) error { var lastNodeId int32 @@ -3473,7 +3459,7 @@ func buildPreInsertMultiTableIndexes(ctx CompilerContext, builder *QueryBuilder, case catalog.MoIndexIvfFlatAlgo.ToString(): // skip async var async bool - async, err = isAsync(multiTableIndex.IndexAlgoParams) + async, err = catalog.IsIndexAsync(multiTableIndex.IndexAlgoParams) if err != nil { return err } @@ -3556,7 +3542,7 @@ func buildDeleteMultiTableIndexes(ctx CompilerContext, builder *QueryBuilder, bi case catalog.MoIndexIvfFlatAlgo.ToString(): // skip async var async bool - async, err = isAsync(multiTableIndex.IndexAlgoParams) + async, err = catalog.IsIndexAsync(multiTableIndex.IndexAlgoParams) if err != nil { return err } @@ -4282,7 +4268,7 @@ func buildPreInsertFullTextIndex(stmt *tree.Insert, ctx CompilerContext, builder updateColLength int, sourceStep int32, ifInsertFromUniqueColMap map[string]bool, indexdef *plan.IndexDef, idx int) error { // skip async - async, err := isAsync(indexdef.IndexAlgoParams) + async, err := catalog.IsIndexAsync(indexdef.IndexAlgoParams) if err != nil { return err } @@ -4689,7 +4675,7 @@ func buildPreDeleteFullTextIndex(ctx CompilerContext, builder *QueryBuilder, bin indexdef *plan.IndexDef, idx int, typMap map[string]plan.Type, posMap map[string]int) error { // skip async - async, err := isAsync(indexdef.IndexAlgoParams) + async, err := catalog.IsIndexAsync(indexdef.IndexAlgoParams) if err != nil { return err } @@ -4729,7 +4715,7 @@ func buildPostDmlFullTextIndex(ctx CompilerContext, builder *QueryBuilder, bindC sourceStep int32, indexdef *plan.IndexDef, idx int, isDelete, isInsert, isDeleteWithoutFilters bool) error { // skip async - async, err := isAsync(indexdef.IndexAlgoParams) + async, err := catalog.IsIndexAsync(indexdef.IndexAlgoParams) if err != nil { return err } From 9f83f62fd100919a0d92511743979494179687a5 Mon Sep 17 00:00:00 2001 From: cpegeric Date: Wed, 25 Jun 2025 16:09:11 +0100 Subject: [PATCH 160/223] async --- pkg/sql/compile/ddl.go | 9 +++++++++ pkg/sql/compile/ddl_index_algo.go | 6 +++++- pkg/sql/compile/util.go | 13 +++++++++++-- 3 files changed, 25 insertions(+), 3 deletions(-) diff --git a/pkg/sql/compile/ddl.go b/pkg/sql/compile/ddl.go index 20a8b515a6106..713403e94353f 100644 --- a/pkg/sql/compile/ddl.go +++ b/pkg/sql/compile/ddl.go @@ -2048,6 +2048,15 @@ func (s *Scope) handleVectorIvfFlatIndex( return err } + async, err := catalog.IsIndexAsync(indexDefs[catalog.SystemSI_IVFFLAT_TblType_Metadata].IndexAlgoParams) + if err != nil { + return err + } + + // TODO: ERIC CREATE PITR AND CDC TASK HERE + if async { + + } return nil } diff --git a/pkg/sql/compile/ddl_index_algo.go b/pkg/sql/compile/ddl_index_algo.go index 9e2774e26facf..ccea1eff1c191 100644 --- a/pkg/sql/compile/ddl_index_algo.go +++ b/pkg/sql/compile/ddl_index_algo.go @@ -147,7 +147,11 @@ func (s *Scope) handleFullTextIndexTable( return err } - insertSQLs := genInsertIndexTableSqlForFullTextIndex(originalTableDef, indexDef, qryDatabase) + insertSQLs, err := genInsertIndexTableSqlForFullTextIndex(originalTableDef, indexDef, qryDatabase) + if err != nil { + return err + } + for _, insertSQL := range insertSQLs { err = c.runSql(insertSQL) if err != nil { diff --git a/pkg/sql/compile/util.go b/pkg/sql/compile/util.go index 6f9c073c60b0f..82fd4820adee8 100644 --- a/pkg/sql/compile/util.go +++ b/pkg/sql/compile/util.go @@ -464,7 +464,7 @@ func GetConstraintDefFromTableDefs(defs []engine.TableDef) *engine.ConstraintDef return cstrDef } -func genInsertIndexTableSqlForFullTextIndex(originalTableDef *plan.TableDef, indexDef *plan.IndexDef, qryDatabase string) []string { +func genInsertIndexTableSqlForFullTextIndex(originalTableDef *plan.TableDef, indexDef *plan.IndexDef, qryDatabase string) ([]string, error) { src_alias := "src" pkColName := src_alias + "." + originalTableDef.Pkey.PkeyColName params := indexDef.IndexAlgoParams @@ -485,7 +485,16 @@ func genInsertIndexTableSqlForFullTextIndex(originalTableDef *plan.TableDef, ind pkColName, concat) - return []string{sql} + async, err := catalog.IsIndexAsync(params) + if err != nil { + return nil, err + } + // TODO: ERIC create PITR and CDC TASK here + if async { + + } + + return []string{sql}, nil } func genDeleteHnswIndex(proc *process.Process, indexDefs map[string]*plan.IndexDef, qryDatabase string, originalTableDef *plan.TableDef) ([]string, error) { From 4e527c4fc0a1760e14c17befa183dc496ed19e04 Mon Sep 17 00:00:00 2001 From: cpegeric Date: Wed, 25 Jun 2025 17:10:33 +0100 Subject: [PATCH 161/223] update --- pkg/catalog/secondary_index_utils.go | 4 +--- pkg/cdc/index_sinker.go | 2 +- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/pkg/catalog/secondary_index_utils.go b/pkg/catalog/secondary_index_utils.go index 7189bcc791320..a92e67be2a069 100644 --- a/pkg/catalog/secondary_index_utils.go +++ b/pkg/catalog/secondary_index_utils.go @@ -186,9 +186,7 @@ func fullTextIndexParamsToMap(def *tree.FullTextIndex) (map[string]string, error // fulltext index here if def.IndexOption != nil { parsername := strings.ToLower(def.IndexOption.ParserName) - if len(parsername) == 0 { - res["parser"] = "ngram" - } else { + if len(parsername) > 0 { if parsername != "ngram" && parsername != "default" && parsername != "json" && parsername != "json_value" { return nil, moerr.NewInternalErrorNoCtx(fmt.Sprintf("invalid parser %s", parsername)) } diff --git a/pkg/cdc/index_sinker.go b/pkg/cdc/index_sinker.go index 90cbbaf56c31e..521018ad0757a 100644 --- a/pkg/cdc/index_sinker.go +++ b/pkg/cdc/index_sinker.go @@ -97,7 +97,6 @@ var NewIndexSyncSinker = func( for _, idx := range tableDef.Indexes { if idx.TableExist && (catalog.IsHnswIndexAlgo(idx.IndexAlgo) || catalog.IsIvfIndexAlgo(idx.IndexAlgo) || catalog.IsFullTextIndexAlgo(idx.IndexAlgo)) { - //if idx.TableExist && catalog.IsHnswIndexAlgo(idx.IndexAlgo) { key := idx.IndexName sidx, ok := indexmap[key] if ok { @@ -117,6 +116,7 @@ var NewIndexSyncSinker = func( return nil, err } sqlwriters = append(sqlwriters, sqlwriter) + os.Stderr.WriteString(fmt.Sprintf("sql writer %T\n", sqlwriter)) } s := &indexSyncSinker{ From 99ce5a6496910e8753b615a8d7e44eb3591aebeb Mon Sep 17 00:00:00 2001 From: cpegeric Date: Wed, 25 Jun 2025 17:12:54 +0100 Subject: [PATCH 162/223] fix sca --- pkg/sql/compile/ddl.go | 3 ++- pkg/sql/compile/util.go | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/pkg/sql/compile/ddl.go b/pkg/sql/compile/ddl.go index 713403e94353f..3dffb8c4ff3e3 100644 --- a/pkg/sql/compile/ddl.go +++ b/pkg/sql/compile/ddl.go @@ -27,6 +27,7 @@ import ( "github.com/matrixorigin/matrixone/pkg/container/vector" "github.com/matrixorigin/matrixone/pkg/defines" "github.com/matrixorigin/matrixone/pkg/incrservice" + "github.com/matrixorigin/matrixone/pkg/logutil" "github.com/matrixorigin/matrixone/pkg/partitionservice" "github.com/matrixorigin/matrixone/pkg/pb/api" "github.com/matrixorigin/matrixone/pkg/pb/lock" @@ -2055,7 +2056,7 @@ func (s *Scope) handleVectorIvfFlatIndex( // TODO: ERIC CREATE PITR AND CDC TASK HERE if async { - + logutil.Infof("Ivfflat index Async is true") } return nil diff --git a/pkg/sql/compile/util.go b/pkg/sql/compile/util.go index 82fd4820adee8..33546aa97c145 100644 --- a/pkg/sql/compile/util.go +++ b/pkg/sql/compile/util.go @@ -24,6 +24,7 @@ import ( "github.com/matrixorigin/matrixone/pkg/catalog" "github.com/matrixorigin/matrixone/pkg/common/moerr" + "github.com/matrixorigin/matrixone/pkg/logutil" "github.com/matrixorigin/matrixone/pkg/pb/plan" "github.com/matrixorigin/matrixone/pkg/vectorindex" "github.com/matrixorigin/matrixone/pkg/vm/engine" @@ -491,7 +492,7 @@ func genInsertIndexTableSqlForFullTextIndex(originalTableDef *plan.TableDef, ind } // TODO: ERIC create PITR and CDC TASK here if async { - + logutil.Infof("fulltext index Async is true") } return []string{sql}, nil From 72231a7fd3648ef338ed1989ec3e282a01c1677b Mon Sep 17 00:00:00 2001 From: cpegeric Date: Fri, 27 Jun 2025 10:53:42 +0100 Subject: [PATCH 163/223] add cdc util --- pkg/sql/compile/cdc_util.go | 117 ++++++++++++++++++++++++++++++++++++ 1 file changed, 117 insertions(+) create mode 100644 pkg/sql/compile/cdc_util.go diff --git a/pkg/sql/compile/cdc_util.go b/pkg/sql/compile/cdc_util.go new file mode 100644 index 0000000000000..63a0693b4d206 --- /dev/null +++ b/pkg/sql/compile/cdc_util.go @@ -0,0 +1,117 @@ +// Copyright 2023 Matrix Origin +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package compile + +import ( + "fmt" + + "github.com/matrixorigin/matrixone/pkg/catalog" + "github.com/matrixorigin/matrixone/pkg/common/moerr" + "github.com/matrixorigin/matrixone/pkg/logutil" + "github.com/matrixorigin/matrixone/pkg/pb/plan" +) + +/* CDC APIs */ +type SinkerInfo struct { + SinkerType int8 + DBName string + TableName string + IndexName string +} + +func CreateTask(c *Compile, pitr_id int, sinkerinfo SinkerInfo) (bool, error) { + logutil.Infof("Create Index Task %v", sinkerinfo) + return true, nil +} + +func DeleteTask(c *Compile, sinkerinfo SinkerInfo) (bool, error) { + logutil.Infof("Delete Index Task %v", sinkerinfo) + return true, nil +} + +func getIndexPitrName(dbname string, tablename string) string { + return fmt.Sprintf("__mo_idxpitr_%s_%s", dbname, tablename) +} + +func CreateIndexPitr(c *Compile, dbname string, tablename string) (int, error) { + pitr_name := getIndexPitrName(dbname, tablename) + pitr_id := 0 + logutil.Infof("Create Index Pitr %s", pitr_name) + return pitr_id, nil +} + +func DeleteIndexPitr(c *Compile, dbname string, tablename string) error { + pitr_name := getIndexPitrName(dbname, tablename) + // remove pitr + logutil.Infof("Delete Index Pitr %s", pitr_name) + + return nil +} + +func CreateIndexCdcTask(c *Compile, tableDef *plan.TableDef, dbname string, tablename string, indexname string) error { + var err error + // create table pitr if not exists and return pitr_id + pitr_id, err := CreateIndexPitr(c, dbname, tablename) + if err != nil { + return err + } + + // create index cdc task + ok, err := CreateTask(c, pitr_id, SinkerInfo{SinkerType: 0, DBName: dbname, TableName: tablename, IndexName: indexname}) + if err != nil { + return err + } + + if !ok { + // cdc task already exist + return moerr.NewInternalError(c.proc.Ctx, fmt.Sprintf("index cdc task (%s, %s, %s) already exists", dbname, tablename, indexname)) + } + return nil +} + +func DropIndexCdcTask(c *Compile, tableDef *plan.TableDef, dbname string, tablename string, indexname string) error { + var err error + + // delete index cdc task + _, err = DeleteTask(c, SinkerInfo{SinkerType: 0, DBName: dbname, TableName: tablename, IndexName: indexname}) + if err != nil { + return err + } + + // remove pitr if no index uses the pitr + nindex := 0 + for _, idx := range tableDef.Indexes { + if idx.TableExist && + (catalog.IsHnswIndexAlgo(idx.IndexAlgo) || + catalog.IsIvfIndexAlgo(idx.IndexAlgo) || + catalog.IsFullTextIndexAlgo(idx.IndexAlgo)) { + + if idx.IndexName != indexname { + nindex++ + } + } + + } + + if nindex == 0 { + // remove pitr + err = DeleteIndexPitr(c, dbname, tablename) + if err != nil { + return err + } + } + + return nil +} From 7f7e096cad28b98a3669ba66c999c8f174a6dc69 Mon Sep 17 00:00:00 2001 From: cpegeric Date: Fri, 27 Jun 2025 11:36:55 +0100 Subject: [PATCH 164/223] create/delete cdc task --- pkg/sql/compile/cdc_util.go | 15 ++++++----- pkg/sql/compile/ddl.go | 38 ++++++++++++++++++++++----- pkg/sql/compile/ddl_index_algo.go | 26 +++++++++++++------ pkg/sql/compile/util.go | 43 +++++++------------------------ 4 files changed, 67 insertions(+), 55 deletions(-) diff --git a/pkg/sql/compile/cdc_util.go b/pkg/sql/compile/cdc_util.go index 63a0693b4d206..731bf381b5390 100644 --- a/pkg/sql/compile/cdc_util.go +++ b/pkg/sql/compile/cdc_util.go @@ -33,6 +33,8 @@ type SinkerInfo struct { func CreateTask(c *Compile, pitr_id int, sinkerinfo SinkerInfo) (bool, error) { logutil.Infof("Create Index Task %v", sinkerinfo) + //dummyurl := "mysql://root:111@127.0.0.1:6001" + // sql = fmt.Sprintf("CREATE CDC `%s` '%s' 'indexsync' '%s' '%s.%s' {'Level'='table'};", cdcname, dummyurl, dummyurl, qryDatabase, srctbl) return true, nil } @@ -48,19 +50,20 @@ func getIndexPitrName(dbname string, tablename string) string { func CreateIndexPitr(c *Compile, dbname string, tablename string) (int, error) { pitr_name := getIndexPitrName(dbname, tablename) pitr_id := 0 - logutil.Infof("Create Index Pitr %s", pitr_name) + sql := fmt.Sprintf("CREATE PITR `%s` FOR TABLE `%s` `%s` range 2 'h';", pitr_name, dbname, tablename) + logutil.Infof("Create Index Pitr %s:", pitr_name, sql) return pitr_id, nil } func DeleteIndexPitr(c *Compile, dbname string, tablename string) error { pitr_name := getIndexPitrName(dbname, tablename) // remove pitr - logutil.Infof("Delete Index Pitr %s", pitr_name) - + sql := fmt.Sprintf("DROP PITR IF EXISTS `%s`;", pitr_name) + logutil.Infof("Delete Index Pitr %s: %s", pitr_name, sql) return nil } -func CreateIndexCdcTask(c *Compile, tableDef *plan.TableDef, dbname string, tablename string, indexname string) error { +func CreateIndexCdcTask(c *Compile, tableDef *plan.TableDef, dbname string, tablename string, indexname string, sinker_type int8) error { var err error // create table pitr if not exists and return pitr_id pitr_id, err := CreateIndexPitr(c, dbname, tablename) @@ -69,7 +72,7 @@ func CreateIndexCdcTask(c *Compile, tableDef *plan.TableDef, dbname string, tabl } // create index cdc task - ok, err := CreateTask(c, pitr_id, SinkerInfo{SinkerType: 0, DBName: dbname, TableName: tablename, IndexName: indexname}) + ok, err := CreateTask(c, pitr_id, SinkerInfo{SinkerType: sinker_type, DBName: dbname, TableName: tablename, IndexName: indexname}) if err != nil { return err } @@ -85,7 +88,7 @@ func DropIndexCdcTask(c *Compile, tableDef *plan.TableDef, dbname string, tablen var err error // delete index cdc task - _, err = DeleteTask(c, SinkerInfo{SinkerType: 0, DBName: dbname, TableName: tablename, IndexName: indexname}) + _, err = DeleteTask(c, SinkerInfo{DBName: dbname, TableName: tablename, IndexName: indexname}) if err != nil { return err } diff --git a/pkg/sql/compile/ddl.go b/pkg/sql/compile/ddl.go index bbf5ef468f217..7bae3420e7b30 100644 --- a/pkg/sql/compile/ddl.go +++ b/pkg/sql/compile/ddl.go @@ -2060,9 +2060,15 @@ func (s *Scope) handleVectorIvfFlatIndex( return err } - // TODO: ERIC CREATE PITR AND CDC TASK HERE + // TODO: HNSWCDC CREATE PITR AND CDC TASK HERE if async { logutil.Infof("Ivfflat index Async is true") + sinker_type := int8(0) + err = CreateIndexCdcTask(c, originalTableDef, qryDatabase, originalTableDef.Name, + indexDefs[catalog.SystemSI_IVFFLAT_TblType_Metadata].IndexTableName, sinker_type) + if err != nil { + return err + } } return nil @@ -2126,10 +2132,11 @@ func (s *Scope) DropIndex(c *Compile) error { } // TODO: HNSWCDC delete cdc table task for vector, fulltext index - // cdc task name = __mo_cdc_{qry.Database}_{qry.Table} - // pitr name = __mo_table_pitr_{qry.Database}_{qry.Table} - // DROP PITR IF EXISTS `__mo_table_pitr_${qry.Database}_${srctable}` - // DROP CDC TASK __mo_cdc_${qry.Database}_${srctable} + tableDef := r.GetTableDef(c.proc.Ctx) + err = DropIndexCdcTask(c, tableDef, qry.Database, qry.Table, qry.IndexName) + if err != nil { + return err + } return nil } @@ -2680,6 +2687,25 @@ func (s *Scope) DropTable(c *Compile) error { } } + // TODO: HSNWCDC delete cdc task of the vector and fulltext index here + idxmap := make(map[string]bool) + for _, idx := range qry.GetTableDef().Indexes { + if idx.TableExist && + (catalog.IsHnswIndexAlgo(idx.IndexAlgo) || + catalog.IsIvfIndexAlgo(idx.IndexAlgo) || + catalog.IsFullTextIndexAlgo(idx.IndexAlgo)) { + + _, ok := idxmap[idx.IndexName] + if !ok { + idxmap[idx.IndexName] = true + err = DropIndexCdcTask(c, qry.GetTableDef(), qry.Database, qry.Table, idx.IndexName) + if err != nil { + return err + } + } + } + } + // delete all index objects record of the table in mo_catalog.mo_indexes if !qry.IsView && qry.Database != catalog.MO_CATALOG && qry.Table != catalog.MO_INDEXES { if qry.GetTableDef().Pkey != nil || len(qry.GetTableDef().Indexes) > 0 { @@ -2691,8 +2717,6 @@ func (s *Scope) DropTable(c *Compile) error { } } - // TODO: HSNWCDC delete cdc task of the vector and fulltext index here - if isTemp { if err := dbSource.Delete(c.proc.Ctx, engine.GetTempTableName(dbName, tblName)); err != nil { return err diff --git a/pkg/sql/compile/ddl_index_algo.go b/pkg/sql/compile/ddl_index_algo.go index ccea1eff1c191..4ce5d25452a87 100644 --- a/pkg/sql/compile/ddl_index_algo.go +++ b/pkg/sql/compile/ddl_index_algo.go @@ -22,6 +22,7 @@ import ( "github.com/matrixorigin/matrixone/pkg/catalog" "github.com/matrixorigin/matrixone/pkg/common/moerr" "github.com/matrixorigin/matrixone/pkg/container/vector" + "github.com/matrixorigin/matrixone/pkg/logutil" "github.com/matrixorigin/matrixone/pkg/pb/api" "github.com/matrixorigin/matrixone/pkg/pb/plan" "github.com/matrixorigin/matrixone/pkg/util/executor" @@ -158,6 +159,22 @@ func (s *Scope) handleFullTextIndexTable( return err } } + + async, err := catalog.IsIndexAsync(indexDef.IndexAlgoParams) + if err != nil { + return err + } + // TODO: HNSWCDC create PITR and CDC TASK here + if async { + logutil.Infof("fulltext index Async is true") + sinker_type := int8(0) + err = CreateIndexCdcTask(c, originalTableDef, qryDatabase, originalTableDef.Name, + indexDef.IndexTableName, sinker_type) + if err != nil { + return err + } + } + return nil } @@ -561,17 +578,10 @@ func (s *Scope) handleVectorHnswIndex( } // TODO: HNSWCDC 4. register CDC update - sqls, err = genCdcHnswIndex(c.proc, indexDefs, qryDatabase, originalTableDef) + err = createCdcHnswIndex(c, indexDefs, qryDatabase, originalTableDef) if err != nil { return err } - for _, sql := range sqls { - err = c.runSql(sql) - if err != nil { - return err - } - } - return nil } diff --git a/pkg/sql/compile/util.go b/pkg/sql/compile/util.go index b719aa206be5c..808548b078ea8 100644 --- a/pkg/sql/compile/util.go +++ b/pkg/sql/compile/util.go @@ -24,7 +24,6 @@ import ( "github.com/matrixorigin/matrixone/pkg/catalog" "github.com/matrixorigin/matrixone/pkg/common/moerr" - "github.com/matrixorigin/matrixone/pkg/logutil" "github.com/matrixorigin/matrixone/pkg/pb/plan" "github.com/matrixorigin/matrixone/pkg/vectorindex" "github.com/matrixorigin/matrixone/pkg/vm/engine" @@ -486,15 +485,6 @@ func genInsertIndexTableSqlForFullTextIndex(originalTableDef *plan.TableDef, ind pkColName, concat) - async, err := catalog.IsIndexAsync(params) - if err != nil { - return nil, err - } - // TODO: ERIC create PITR and CDC TASK here - if async { - logutil.Infof("fulltext index Async is true") - } - return []string{sql}, nil } @@ -580,35 +570,20 @@ func genBuildHnswIndex(proc *process.Process, indexDefs map[string]*plan.IndexDe // DROP CDC IF EXISTS TASK __mo_cdc_${db}_${srctable} NOTE: IF EXISTS is not valid SQL for DROP CDC // CREATE PITR IF NOT EXISTS __mo_table_pitr_${db}_${srctable} for table ${db} ${srctable) range 2 'h'; // CREATE CDC IF NOT EXISTS __mo_cdc_${db}_${srctable} 'mysql://root:111@127.0.0.1:6001' 'hnswsync' 'mysql://root:111@127.0.0.1:6001' '${db}.${srctable}' {'Level'='table'}' -func genCdcHnswIndex(proc *process.Process, indexDefs map[string]*plan.IndexDef, qryDatabase string, originalTableDef *plan.TableDef) ([]string, error) { +func createCdcHnswIndex(c *Compile, indexDefs map[string]*plan.IndexDef, qryDatabase string, originalTableDef *plan.TableDef) error { idxdef_meta, ok := indexDefs[catalog.Hnsw_TblType_Metadata] if !ok { - return nil, moerr.NewInternalErrorNoCtx("hnsw_meta index definition not found") + return moerr.NewInternalErrorNoCtx("hnsw_meta index definition not found") } srctbl := originalTableDef.Name - pitrname := fmt.Sprintf("__mo_index_pitr_%s_%s", qryDatabase, srctbl) - cdcname := fmt.Sprintf("__mo_index_cdc_%s_%s_%s", qryDatabase, srctbl, idxdef_meta.IndexName) - - var sql string + indexname := idxdef_meta.IndexName + sinker_type := int8(0) - sqls := make([]string, 0, 3) - - // CREATE PITR - sql = fmt.Sprintf("DROP PITR IF EXISTS `%s`;", pitrname) - sqls = append(sqls, sql) - - sql = fmt.Sprintf("CREATE PITR `%s` FOR TABLE `%s` `%s` range 2 'h';", pitrname, qryDatabase, srctbl) - sqls = append(sqls, sql) - - // CREATE CDC TASK - dummyurl := "mysql://root:111@127.0.0.1:6001" - sql = fmt.Sprintf("CREATE CDC `%s` '%s' 'hnswsync' '%s' '%s.%s' {'Level'='table'};", cdcname, dummyurl, dummyurl, qryDatabase, srctbl) - sqls = append(sqls, sql) - - //os.Stderr.WriteString(fmt.Sprintf("%v\n", sqls)) - // TODO: HNSWCDC remove the line below to run the above SQLs - sqls = sqls[:0] + err := CreateIndexCdcTask(c, originalTableDef, qryDatabase, srctbl, indexname, sinker_type) + if err != nil { + return err + } - return sqls, nil + return nil } From 884102ebcbe4d9887cb06b7c493967aef40b765e Mon Sep 17 00:00:00 2001 From: cpegeric Date: Fri, 27 Jun 2025 11:54:36 +0100 Subject: [PATCH 165/223] update --- pkg/sql/compile/cdc_util.go | 24 ++++++++++++++++++++++++ pkg/sql/compile/ddl.go | 2 +- 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/pkg/sql/compile/cdc_util.go b/pkg/sql/compile/cdc_util.go index 731bf381b5390..dc3bcadc99657 100644 --- a/pkg/sql/compile/cdc_util.go +++ b/pkg/sql/compile/cdc_util.go @@ -63,8 +63,27 @@ func DeleteIndexPitr(c *Compile, dbname string, tablename string) error { return nil } +func checkValidIndexCdc(tableDef *plan.TableDef, indexname string) bool { + for _, idx := range tableDef.Indexes { + if idx.IndexName == indexname { + if idx.TableExist && + (catalog.IsHnswIndexAlgo(idx.IndexAlgo) || + catalog.IsIvfIndexAlgo(idx.IndexAlgo) || + catalog.IsFullTextIndexAlgo(idx.IndexAlgo)) { + return true + } + } + } + return false +} func CreateIndexCdcTask(c *Compile, tableDef *plan.TableDef, dbname string, tablename string, indexname string, sinker_type int8) error { var err error + + if !checkValidIndexCdc(tableDef, indexname) { + // index name is not valid cdc task. ignore it + return moerr.NewInternalError(c.proc.Ctx, "CreateIndexCdcTask: index type is not valid for CDC update") + } + // create table pitr if not exists and return pitr_id pitr_id, err := CreateIndexPitr(c, dbname, tablename) if err != nil { @@ -87,6 +106,11 @@ func CreateIndexCdcTask(c *Compile, tableDef *plan.TableDef, dbname string, tabl func DropIndexCdcTask(c *Compile, tableDef *plan.TableDef, dbname string, tablename string, indexname string) error { var err error + if !checkValidIndexCdc(tableDef, indexname) { + // index name is not valid cdc task. ignore it + return nil + } + // delete index cdc task _, err = DeleteTask(c, SinkerInfo{DBName: dbname, TableName: tablename, IndexName: indexname}) if err != nil { diff --git a/pkg/sql/compile/ddl.go b/pkg/sql/compile/ddl.go index 7bae3420e7b30..355982a48eb7f 100644 --- a/pkg/sql/compile/ddl.go +++ b/pkg/sql/compile/ddl.go @@ -2687,7 +2687,7 @@ func (s *Scope) DropTable(c *Compile) error { } } - // TODO: HSNWCDC delete cdc task of the vector and fulltext index here + // TODO: HNSWCDC delete cdc task of the vector and fulltext index here idxmap := make(map[string]bool) for _, idx := range qry.GetTableDef().Indexes { if idx.TableExist && From 82b76f8bc04d8389259ef2d625e419596e54e643 Mon Sep 17 00:00:00 2001 From: cpegeric Date: Fri, 27 Jun 2025 11:57:45 +0100 Subject: [PATCH 166/223] update --- pkg/sql/compile/ddl.go | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/pkg/sql/compile/ddl.go b/pkg/sql/compile/ddl.go index 355982a48eb7f..2a069723a7f3b 100644 --- a/pkg/sql/compile/ddl.go +++ b/pkg/sql/compile/ddl.go @@ -2060,7 +2060,7 @@ func (s *Scope) handleVectorIvfFlatIndex( return err } - // TODO: HNSWCDC CREATE PITR AND CDC TASK HERE + // HNSWCDC CREATE PITR AND CDC TASK HERE if async { logutil.Infof("Ivfflat index Async is true") sinker_type := int8(0) @@ -2124,16 +2124,16 @@ func (s *Scope) DropIndex(c *Compile) error { } - //3. delete index object from mo_catalog.mo_indexes - deleteSql := fmt.Sprintf(deleteMoIndexesWithTableIdAndIndexNameFormat, r.GetTableID(c.proc.Ctx), qry.IndexName) - err = c.runSql(deleteSql) + //3. HNSWCDC delete cdc table task for vector, fulltext index + tableDef := r.GetTableDef(c.proc.Ctx) + err = DropIndexCdcTask(c, tableDef, qry.Database, qry.Table, qry.IndexName) if err != nil { return err } - // TODO: HNSWCDC delete cdc table task for vector, fulltext index - tableDef := r.GetTableDef(c.proc.Ctx) - err = DropIndexCdcTask(c, tableDef, qry.Database, qry.Table, qry.IndexName) + //4. delete index object from mo_catalog.mo_indexes + deleteSql := fmt.Sprintf(deleteMoIndexesWithTableIdAndIndexNameFormat, r.GetTableID(c.proc.Ctx), qry.IndexName) + err = c.runSql(deleteSql) if err != nil { return err } @@ -2687,7 +2687,7 @@ func (s *Scope) DropTable(c *Compile) error { } } - // TODO: HNSWCDC delete cdc task of the vector and fulltext index here + // HNSWCDC delete cdc task of the vector and fulltext index here idxmap := make(map[string]bool) for _, idx := range qry.GetTableDef().Indexes { if idx.TableExist && From 959b5270c84031ff03c49153723d7a5099d507e0 Mon Sep 17 00:00:00 2001 From: cpegeric Date: Fri, 27 Jun 2025 12:05:30 +0100 Subject: [PATCH 167/223] update --- pkg/sql/compile/ddl_index_algo.go | 3 ++- pkg/sql/compile/util.go | 26 -------------------------- 2 files changed, 2 insertions(+), 27 deletions(-) diff --git a/pkg/sql/compile/ddl_index_algo.go b/pkg/sql/compile/ddl_index_algo.go index 4ce5d25452a87..6a5b506b6125c 100644 --- a/pkg/sql/compile/ddl_index_algo.go +++ b/pkg/sql/compile/ddl_index_algo.go @@ -578,7 +578,8 @@ func (s *Scope) handleVectorHnswIndex( } // TODO: HNSWCDC 4. register CDC update - err = createCdcHnswIndex(c, indexDefs, qryDatabase, originalTableDef) + sinker_type := int8(0) + err = CreateIndexCdcTask(c, originalTableDef, qryDatabase, originalTableDef.Name, indexDefs[catalog.Hnsw_TblType_Metadata].IndexName, sinker_type) if err != nil { return err } diff --git a/pkg/sql/compile/util.go b/pkg/sql/compile/util.go index 808548b078ea8..7189b5760898f 100644 --- a/pkg/sql/compile/util.go +++ b/pkg/sql/compile/util.go @@ -561,29 +561,3 @@ func genBuildHnswIndex(proc *process.Process, indexDefs map[string]*plan.IndexDe return []string{sql}, nil } - -// TODO: HNSWCDC 4. register CDC update -// CDC Task is 'Table' level. Existing CDC task may be serving other indexes and we shall drop and create CDC task so that TableDef.Indexes is up-to-date. -// If not, new index may not be updated because the old IndexSinker has to old TableDef.Indexes in memory. -// -// DROP PITR IF EXISTS `__mo_table_pitr_${db}_${srctable}` -// DROP CDC IF EXISTS TASK __mo_cdc_${db}_${srctable} NOTE: IF EXISTS is not valid SQL for DROP CDC -// CREATE PITR IF NOT EXISTS __mo_table_pitr_${db}_${srctable} for table ${db} ${srctable) range 2 'h'; -// CREATE CDC IF NOT EXISTS __mo_cdc_${db}_${srctable} 'mysql://root:111@127.0.0.1:6001' 'hnswsync' 'mysql://root:111@127.0.0.1:6001' '${db}.${srctable}' {'Level'='table'}' -func createCdcHnswIndex(c *Compile, indexDefs map[string]*plan.IndexDef, qryDatabase string, originalTableDef *plan.TableDef) error { - - idxdef_meta, ok := indexDefs[catalog.Hnsw_TblType_Metadata] - if !ok { - return moerr.NewInternalErrorNoCtx("hnsw_meta index definition not found") - } - srctbl := originalTableDef.Name - indexname := idxdef_meta.IndexName - sinker_type := int8(0) - - err := CreateIndexCdcTask(c, originalTableDef, qryDatabase, srctbl, indexname, sinker_type) - if err != nil { - return err - } - - return nil -} From c16cf90b999989ab9eda13f9504248458a382d7c Mon Sep 17 00:00:00 2001 From: cpegeric Date: Fri, 27 Jun 2025 13:02:34 +0100 Subject: [PATCH 168/223] truncate table --- pkg/sql/compile/ddl.go | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/pkg/sql/compile/ddl.go b/pkg/sql/compile/ddl.go index 2a069723a7f3b..7e3015d7de401 100644 --- a/pkg/sql/compile/ddl.go +++ b/pkg/sql/compile/ddl.go @@ -2408,6 +2408,8 @@ func (s *Scope) TruncateTable(c *Compile) error { return err } + // TODO: HNSWCDC drop CDC task with old table Id before truncate index table + // Truncate Index Tables if needed for _, name := range tqry.IndexTableNames { var err error @@ -2519,6 +2521,8 @@ func (s *Scope) TruncateTable(c *Compile) error { return err } + // TODO: HNSWCDC create CDC task with new table Id + c.addAffectedRows(uint64(affectedRows)) return nil } From b423bcc630e71d3980286d62692bba01bf5fe926 Mon Sep 17 00:00:00 2001 From: cpegeric Date: Fri, 27 Jun 2025 13:52:13 +0100 Subject: [PATCH 169/223] truncate table --- pkg/sql/compile/ddl.go | 43 ++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 41 insertions(+), 2 deletions(-) diff --git a/pkg/sql/compile/ddl.go b/pkg/sql/compile/ddl.go index 7e3015d7de401..cbed67c3879d9 100644 --- a/pkg/sql/compile/ddl.go +++ b/pkg/sql/compile/ddl.go @@ -2396,6 +2396,27 @@ func (s *Scope) TruncateTable(c *Compile) error { } } + // TODO: HNSWCDC drop CDC task with old table Id before truncate index table + if !isTemp { + tabledef := rel.GetTableDef(c.proc.Ctx) + idxmap := make(map[string]bool) + for _, idx := range tabledef.Indexes { + if idx.TableExist && + (catalog.IsHnswIndexAlgo(idx.IndexAlgo) || + catalog.IsIvfIndexAlgo(idx.IndexAlgo) || + catalog.IsFullTextIndexAlgo(idx.IndexAlgo)) { + _, ok := idxmap[idx.IndexName] + if !ok { + idxmap[idx.IndexName] = true + e := DropIndexCdcTask(c, tabledef, dbName, tblName, idx.IndexName) + if e != nil { + return e + } + } + } + } + } + if isTemp { // memoryengine truncate always return 0, so for temporary table, just use origin tableId as newId _, err = dbSource.Truncate(c.proc.Ctx, engine.GetTempTableName(dbName, tblName)) @@ -2408,8 +2429,6 @@ func (s *Scope) TruncateTable(c *Compile) error { return err } - // TODO: HNSWCDC drop CDC task with old table Id before truncate index table - // Truncate Index Tables if needed for _, name := range tqry.IndexTableNames { var err error @@ -2522,6 +2541,26 @@ func (s *Scope) TruncateTable(c *Compile) error { } // TODO: HNSWCDC create CDC task with new table Id + if !isTemp { + tabledef := rel.GetTableDef(c.proc.Ctx) + idxmap := make(map[string]bool) + for _, idx := range tabledef.Indexes { + if idx.TableExist && + (catalog.IsHnswIndexAlgo(idx.IndexAlgo) || + catalog.IsIvfIndexAlgo(idx.IndexAlgo) || + catalog.IsFullTextIndexAlgo(idx.IndexAlgo)) { + _, ok := idxmap[idx.IndexName] + if !ok { + idxmap[idx.IndexName] = true + sinker_type := int8(0) + e := CreateIndexCdcTask(c, tabledef, dbName, tblName, idx.IndexName, sinker_type) + if e != nil { + return e + } + } + } + } + } c.addAffectedRows(uint64(affectedRows)) return nil From 20fb6e5341e98dae134398da2f24aa687c962c48 Mon Sep 17 00:00:00 2001 From: cpegeric Date: Fri, 27 Jun 2025 14:02:51 +0100 Subject: [PATCH 170/223] update --- pkg/sql/compile/cdc_util.go | 30 ++++++++++++++++++++++++++---- pkg/sql/compile/ddl.go | 18 +++--------------- 2 files changed, 29 insertions(+), 19 deletions(-) diff --git a/pkg/sql/compile/cdc_util.go b/pkg/sql/compile/cdc_util.go index dc3bcadc99657..05ba4e81a67cf 100644 --- a/pkg/sql/compile/cdc_util.go +++ b/pkg/sql/compile/cdc_util.go @@ -31,14 +31,14 @@ type SinkerInfo struct { IndexName string } -func CreateTask(c *Compile, pitr_id int, sinkerinfo SinkerInfo) (bool, error) { +func CreateCdcTask(c *Compile, pitr_id int, sinkerinfo SinkerInfo) (bool, error) { logutil.Infof("Create Index Task %v", sinkerinfo) //dummyurl := "mysql://root:111@127.0.0.1:6001" // sql = fmt.Sprintf("CREATE CDC `%s` '%s' 'indexsync' '%s' '%s.%s' {'Level'='table'};", cdcname, dummyurl, dummyurl, qryDatabase, srctbl) return true, nil } -func DeleteTask(c *Compile, sinkerinfo SinkerInfo) (bool, error) { +func DeleteCdcTask(c *Compile, sinkerinfo SinkerInfo) (bool, error) { logutil.Infof("Delete Index Task %v", sinkerinfo) return true, nil } @@ -91,7 +91,7 @@ func CreateIndexCdcTask(c *Compile, tableDef *plan.TableDef, dbname string, tabl } // create index cdc task - ok, err := CreateTask(c, pitr_id, SinkerInfo{SinkerType: sinker_type, DBName: dbname, TableName: tablename, IndexName: indexname}) + ok, err := CreateCdcTask(c, pitr_id, SinkerInfo{SinkerType: sinker_type, DBName: dbname, TableName: tablename, IndexName: indexname}) if err != nil { return err } @@ -112,7 +112,7 @@ func DropIndexCdcTask(c *Compile, tableDef *plan.TableDef, dbname string, tablen } // delete index cdc task - _, err = DeleteTask(c, SinkerInfo{DBName: dbname, TableName: tablename, IndexName: indexname}) + _, err = DeleteCdcTask(c, SinkerInfo{DBName: dbname, TableName: tablename, IndexName: indexname}) if err != nil { return err } @@ -142,3 +142,25 @@ func DropIndexCdcTask(c *Compile, tableDef *plan.TableDef, dbname string, tablen return nil } + +func DropAllIndexCdcTasks(c *Compile, tabledef *plan.TableDef, dbname string, tablename string) error { + idxmap := make(map[string]bool) + for _, idx := range tabledef.Indexes { + if idx.TableExist && + (catalog.IsHnswIndexAlgo(idx.IndexAlgo) || + catalog.IsIvfIndexAlgo(idx.IndexAlgo) || + catalog.IsFullTextIndexAlgo(idx.IndexAlgo)) { + _, ok := idxmap[idx.IndexName] + if !ok { + idxmap[idx.IndexName] = true + _, e := DeleteCdcTask(c, SinkerInfo{DBName: dbname, TableName: tablename, IndexName: idx.IndexName}) + if e != nil { + return e + } + } + } + } + + // remove pitr + return DeleteIndexPitr(c, dbname, tablename) +} diff --git a/pkg/sql/compile/ddl.go b/pkg/sql/compile/ddl.go index cbed67c3879d9..4d64462280ddc 100644 --- a/pkg/sql/compile/ddl.go +++ b/pkg/sql/compile/ddl.go @@ -2399,21 +2399,9 @@ func (s *Scope) TruncateTable(c *Compile) error { // TODO: HNSWCDC drop CDC task with old table Id before truncate index table if !isTemp { tabledef := rel.GetTableDef(c.proc.Ctx) - idxmap := make(map[string]bool) - for _, idx := range tabledef.Indexes { - if idx.TableExist && - (catalog.IsHnswIndexAlgo(idx.IndexAlgo) || - catalog.IsIvfIndexAlgo(idx.IndexAlgo) || - catalog.IsFullTextIndexAlgo(idx.IndexAlgo)) { - _, ok := idxmap[idx.IndexName] - if !ok { - idxmap[idx.IndexName] = true - e := DropIndexCdcTask(c, tabledef, dbName, tblName, idx.IndexName) - if e != nil { - return e - } - } - } + e := DropAllIndexCdcTasks(c, tabledef, dbName, tblName) + if e != nil { + return e } } From 5caab5336def7671cc3abb36499784c8b6223968 Mon Sep 17 00:00:00 2001 From: cpegeric Date: Fri, 27 Jun 2025 14:10:15 +0100 Subject: [PATCH 171/223] cleanup --- pkg/sql/compile/cdc_util.go | 31 +++++++++++++++++++++++++++++++ pkg/sql/compile/ddl.go | 19 +++---------------- 2 files changed, 34 insertions(+), 16 deletions(-) diff --git a/pkg/sql/compile/cdc_util.go b/pkg/sql/compile/cdc_util.go index 05ba4e81a67cf..6e5781d3c7e35 100644 --- a/pkg/sql/compile/cdc_util.go +++ b/pkg/sql/compile/cdc_util.go @@ -164,3 +164,34 @@ func DropAllIndexCdcTasks(c *Compile, tabledef *plan.TableDef, dbname string, ta // remove pitr return DeleteIndexPitr(c, dbname, tablename) } + +func getSinkerTypeFromAlgo(algo string) int8 { + if catalog.IsHnswIndexAlgo(algo) { + return int8(0) + } else if catalog.IsIvfIndexAlgo(algo) { + return int8(0) + } else if catalog.IsFullTextIndexAlgo(algo) { + return int8(0) + } + return int8(0) +} +func CreateAllIndexCdcTasks(c *Compile, tabledef *plan.TableDef, dbname string, tablename string) error { + idxmap := make(map[string]bool) + for _, idx := range tabledef.Indexes { + if idx.TableExist && + (catalog.IsHnswIndexAlgo(idx.IndexAlgo) || + catalog.IsIvfIndexAlgo(idx.IndexAlgo) || + catalog.IsFullTextIndexAlgo(idx.IndexAlgo)) { + _, ok := idxmap[idx.IndexName] + if !ok { + idxmap[idx.IndexName] = true + sinker_type := getSinkerTypeFromAlgo(idx.IndexAlgo) + e := CreateIndexCdcTask(c, tabledef, dbname, tablename, idx.IndexName, sinker_type) + if e != nil { + return e + } + } + } + } + return nil +} diff --git a/pkg/sql/compile/ddl.go b/pkg/sql/compile/ddl.go index 4d64462280ddc..91fa41733b171 100644 --- a/pkg/sql/compile/ddl.go +++ b/pkg/sql/compile/ddl.go @@ -2531,22 +2531,9 @@ func (s *Scope) TruncateTable(c *Compile) error { // TODO: HNSWCDC create CDC task with new table Id if !isTemp { tabledef := rel.GetTableDef(c.proc.Ctx) - idxmap := make(map[string]bool) - for _, idx := range tabledef.Indexes { - if idx.TableExist && - (catalog.IsHnswIndexAlgo(idx.IndexAlgo) || - catalog.IsIvfIndexAlgo(idx.IndexAlgo) || - catalog.IsFullTextIndexAlgo(idx.IndexAlgo)) { - _, ok := idxmap[idx.IndexName] - if !ok { - idxmap[idx.IndexName] = true - sinker_type := int8(0) - e := CreateIndexCdcTask(c, tabledef, dbName, tblName, idx.IndexName, sinker_type) - if e != nil { - return e - } - } - } + e := CreateAllIndexCdcTasks(c, tabledef, dbName, tblName) + if e != nil { + return e } } From 43e91166a6e7bb713fd0632b5111368e437f8426 Mon Sep 17 00:00:00 2001 From: cpegeric Date: Fri, 27 Jun 2025 14:18:02 +0100 Subject: [PATCH 172/223] update --- pkg/sql/compile/ddl.go | 2 +- pkg/sql/compile/ddl_index_algo.go | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/pkg/sql/compile/ddl.go b/pkg/sql/compile/ddl.go index 91fa41733b171..e8af6c9e02ffb 100644 --- a/pkg/sql/compile/ddl.go +++ b/pkg/sql/compile/ddl.go @@ -2063,7 +2063,7 @@ func (s *Scope) handleVectorIvfFlatIndex( // HNSWCDC CREATE PITR AND CDC TASK HERE if async { logutil.Infof("Ivfflat index Async is true") - sinker_type := int8(0) + sinker_type := getSinkerTypeFromAlgo(catalog.MoIndexIvfFlatAlgo.ToString()) err = CreateIndexCdcTask(c, originalTableDef, qryDatabase, originalTableDef.Name, indexDefs[catalog.SystemSI_IVFFLAT_TblType_Metadata].IndexTableName, sinker_type) if err != nil { diff --git a/pkg/sql/compile/ddl_index_algo.go b/pkg/sql/compile/ddl_index_algo.go index 6a5b506b6125c..bea5264a7abc4 100644 --- a/pkg/sql/compile/ddl_index_algo.go +++ b/pkg/sql/compile/ddl_index_algo.go @@ -167,7 +167,7 @@ func (s *Scope) handleFullTextIndexTable( // TODO: HNSWCDC create PITR and CDC TASK here if async { logutil.Infof("fulltext index Async is true") - sinker_type := int8(0) + sinker_type := getSinkerTypeFromAlgo(catalog.MOIndexFullTextAlgo.ToString()) err = CreateIndexCdcTask(c, originalTableDef, qryDatabase, originalTableDef.Name, indexDef.IndexTableName, sinker_type) if err != nil { @@ -578,7 +578,7 @@ func (s *Scope) handleVectorHnswIndex( } // TODO: HNSWCDC 4. register CDC update - sinker_type := int8(0) + sinker_type := getSinkerTypeFromAlgo(catalog.MoIndexHnswAlgo.ToString()) err = CreateIndexCdcTask(c, originalTableDef, qryDatabase, originalTableDef.Name, indexDefs[catalog.Hnsw_TblType_Metadata].IndexName, sinker_type) if err != nil { return err From a4a753d191ec13899a6587a105934df450af5438 Mon Sep 17 00:00:00 2001 From: cpegeric Date: Fri, 27 Jun 2025 14:24:09 +0100 Subject: [PATCH 173/223] update --- pkg/sql/compile/ddl.go | 19 +++---------------- 1 file changed, 3 insertions(+), 16 deletions(-) diff --git a/pkg/sql/compile/ddl.go b/pkg/sql/compile/ddl.go index e8af6c9e02ffb..6a0e4312f80e9 100644 --- a/pkg/sql/compile/ddl.go +++ b/pkg/sql/compile/ddl.go @@ -2706,22 +2706,9 @@ func (s *Scope) DropTable(c *Compile) error { } // HNSWCDC delete cdc task of the vector and fulltext index here - idxmap := make(map[string]bool) - for _, idx := range qry.GetTableDef().Indexes { - if idx.TableExist && - (catalog.IsHnswIndexAlgo(idx.IndexAlgo) || - catalog.IsIvfIndexAlgo(idx.IndexAlgo) || - catalog.IsFullTextIndexAlgo(idx.IndexAlgo)) { - - _, ok := idxmap[idx.IndexName] - if !ok { - idxmap[idx.IndexName] = true - err = DropIndexCdcTask(c, qry.GetTableDef(), qry.Database, qry.Table, idx.IndexName) - if err != nil { - return err - } - } - } + err = DropAllIndexCdcTasks(c, qry.GetTableDef(), qry.Database, qry.Table) + if err != nil { + return err } // delete all index objects record of the table in mo_catalog.mo_indexes From 42a9adc8dd399b83fc90227cd930d9cbb5cf9ab8 Mon Sep 17 00:00:00 2001 From: cpegeric Date: Fri, 27 Jun 2025 14:48:45 +0100 Subject: [PATCH 174/223] hnsw disable alter reindex --- pkg/sql/compile/ddl.go | 2 -- 1 file changed, 2 deletions(-) diff --git a/pkg/sql/compile/ddl.go b/pkg/sql/compile/ddl.go index 6a0e4312f80e9..38390e2a5527e 100644 --- a/pkg/sql/compile/ddl.go +++ b/pkg/sql/compile/ddl.go @@ -754,8 +754,6 @@ func (s *Scope) AlterTableInplace(c *Compile) error { return err } - case catalog.MoIndexHnswAlgo.ToString(): - // PASS: keep option unchange for incremental update default: return moerr.NewInternalError(c.proc.Ctx, "invalid index algo type for alter reindex") } From 2ed6051b34619ec6b8440e9bc3b9143af57b54cb Mon Sep 17 00:00:00 2001 From: cpegeric Date: Fri, 27 Jun 2025 14:57:42 +0100 Subject: [PATCH 175/223] alter reindex --- pkg/sql/compile/cdc_util.go | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/pkg/sql/compile/cdc_util.go b/pkg/sql/compile/cdc_util.go index 6e5781d3c7e35..5e10a868860b7 100644 --- a/pkg/sql/compile/cdc_util.go +++ b/pkg/sql/compile/cdc_util.go @@ -97,8 +97,9 @@ func CreateIndexCdcTask(c *Compile, tableDef *plan.TableDef, dbname string, tabl } if !ok { - // cdc task already exist - return moerr.NewInternalError(c.proc.Ctx, fmt.Sprintf("index cdc task (%s, %s, %s) already exists", dbname, tablename, indexname)) + // cdc task already exist. ignore it. IVFFLAT alter reindex will call CreateIndexCdcTask multiple times. + logutil.Infof("index cdc task (%s, %s, %s) already exists", dbname, tablename, indexname) + return nil } return nil } From 164693ea76b11acae5c06b0a04d58677a8859ae4 Mon Sep 17 00:00:00 2001 From: cpegeric Date: Fri, 27 Jun 2025 15:58:44 +0100 Subject: [PATCH 176/223] sca --- pkg/sql/compile/cdc_util.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/sql/compile/cdc_util.go b/pkg/sql/compile/cdc_util.go index 5e10a868860b7..694a3d497900d 100644 --- a/pkg/sql/compile/cdc_util.go +++ b/pkg/sql/compile/cdc_util.go @@ -51,7 +51,7 @@ func CreateIndexPitr(c *Compile, dbname string, tablename string) (int, error) { pitr_name := getIndexPitrName(dbname, tablename) pitr_id := 0 sql := fmt.Sprintf("CREATE PITR `%s` FOR TABLE `%s` `%s` range 2 'h';", pitr_name, dbname, tablename) - logutil.Infof("Create Index Pitr %s:", pitr_name, sql) + logutil.Infof("Create Index Pitr %s. sql: %s:", pitr_name, sql) return pitr_id, nil } From 7757192c0425f8d5fa78d69adf4edf15d7a63f3b Mon Sep 17 00:00:00 2001 From: cpegeric Date: Fri, 27 Jun 2025 17:01:14 +0100 Subject: [PATCH 177/223] bug fix --- pkg/sql/compile/cdc_util.go | 10 ++++------ pkg/sql/compile/ddl.go | 3 ++- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/pkg/sql/compile/cdc_util.go b/pkg/sql/compile/cdc_util.go index 694a3d497900d..c12ec94b173df 100644 --- a/pkg/sql/compile/cdc_util.go +++ b/pkg/sql/compile/cdc_util.go @@ -18,7 +18,6 @@ import ( "fmt" "github.com/matrixorigin/matrixone/pkg/catalog" - "github.com/matrixorigin/matrixone/pkg/common/moerr" "github.com/matrixorigin/matrixone/pkg/logutil" "github.com/matrixorigin/matrixone/pkg/pb/plan" ) @@ -76,14 +75,11 @@ func checkValidIndexCdc(tableDef *plan.TableDef, indexname string) bool { } return false } + +// NOTE: CreateIndexCdcTask will create CDC task without any checking. Original TableDef may be empty func CreateIndexCdcTask(c *Compile, tableDef *plan.TableDef, dbname string, tablename string, indexname string, sinker_type int8) error { var err error - if !checkValidIndexCdc(tableDef, indexname) { - // index name is not valid cdc task. ignore it - return moerr.NewInternalError(c.proc.Ctx, "CreateIndexCdcTask: index type is not valid for CDC update") - } - // create table pitr if not exists and return pitr_id pitr_id, err := CreateIndexPitr(c, dbname, tablename) if err != nil { @@ -176,6 +172,8 @@ func getSinkerTypeFromAlgo(algo string) int8 { } return int8(0) } + +// NOTE: CreateAllIndexCdcTasks will create CDC task based on existing tableDef func CreateAllIndexCdcTasks(c *Compile, tabledef *plan.TableDef, dbname string, tablename string) error { idxmap := make(map[string]bool) for _, idx := range tabledef.Indexes { diff --git a/pkg/sql/compile/ddl.go b/pkg/sql/compile/ddl.go index 38390e2a5527e..57495cecce12b 100644 --- a/pkg/sql/compile/ddl.go +++ b/pkg/sql/compile/ddl.go @@ -753,7 +753,8 @@ func (s *Scope) AlterTableInplace(c *Compile) error { if err != nil { return err } - + case catalog.MoIndexHnswAlgo.ToString(): + // PASS default: return moerr.NewInternalError(c.proc.Ctx, "invalid index algo type for alter reindex") } From 38775df56f6b090d6115c9ba3e21104fd2e091cb Mon Sep 17 00:00:00 2001 From: cpegeric Date: Fri, 27 Jun 2025 17:19:39 +0100 Subject: [PATCH 178/223] bug fix --- pkg/sql/compile/ddl.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/sql/compile/ddl.go b/pkg/sql/compile/ddl.go index 57495cecce12b..9151ab203e5bb 100644 --- a/pkg/sql/compile/ddl.go +++ b/pkg/sql/compile/ddl.go @@ -2705,7 +2705,7 @@ func (s *Scope) DropTable(c *Compile) error { } // HNSWCDC delete cdc task of the vector and fulltext index here - err = DropAllIndexCdcTasks(c, qry.GetTableDef(), qry.Database, qry.Table) + err = DropAllIndexCdcTasks(c, rel.GetTableDef(c.proc.Ctx), qry.Database, qry.Table) if err != nil { return err } From 852b8c283bd9a77e3ba1734da671a2213a255afc Mon Sep 17 00:00:00 2001 From: cpegeric Date: Mon, 30 Jun 2025 11:23:33 +0100 Subject: [PATCH 179/223] update --- pkg/sql/compile/cdc_util.go | 43 ++++++++++++++++++++++++++++++------- 1 file changed, 35 insertions(+), 8 deletions(-) diff --git a/pkg/sql/compile/cdc_util.go b/pkg/sql/compile/cdc_util.go index c12ec94b173df..c4467a0b3d636 100644 --- a/pkg/sql/compile/cdc_util.go +++ b/pkg/sql/compile/cdc_util.go @@ -140,8 +140,10 @@ func DropIndexCdcTask(c *Compile, tableDef *plan.TableDef, dbname string, tablen return nil } +// drop all cdc tasks according to tableDef func DropAllIndexCdcTasks(c *Compile, tabledef *plan.TableDef, dbname string, tablename string) error { idxmap := make(map[string]bool) + var err error for _, idx := range tabledef.Indexes { if idx.TableExist && (catalog.IsHnswIndexAlgo(idx.IndexAlgo) || @@ -150,9 +152,21 @@ func DropAllIndexCdcTasks(c *Compile, tabledef *plan.TableDef, dbname string, ta _, ok := idxmap[idx.IndexName] if !ok { idxmap[idx.IndexName] = true - _, e := DeleteCdcTask(c, SinkerInfo{DBName: dbname, TableName: tablename, IndexName: idx.IndexName}) - if e != nil { - return e + async := false + if catalog.IsHnswIndexAlgo(idx.IndexAlgo) { + // HNSW always async + async = true + } else { + async, err = catalog.IsIndexAsync(idx.IndexAlgoParams) + if err != nil { + return err + } + } + if async { + _, e := DeleteCdcTask(c, SinkerInfo{DBName: dbname, TableName: tablename, IndexName: idx.IndexName}) + if e != nil { + return e + } } } } @@ -173,9 +187,10 @@ func getSinkerTypeFromAlgo(algo string) int8 { return int8(0) } -// NOTE: CreateAllIndexCdcTasks will create CDC task based on existing tableDef +// NOTE: CreateAllIndexCdcTasks will create CDC task according to existing tableDef func CreateAllIndexCdcTasks(c *Compile, tabledef *plan.TableDef, dbname string, tablename string) error { idxmap := make(map[string]bool) + var err error for _, idx := range tabledef.Indexes { if idx.TableExist && (catalog.IsHnswIndexAlgo(idx.IndexAlgo) || @@ -184,10 +199,22 @@ func CreateAllIndexCdcTasks(c *Compile, tabledef *plan.TableDef, dbname string, _, ok := idxmap[idx.IndexName] if !ok { idxmap[idx.IndexName] = true - sinker_type := getSinkerTypeFromAlgo(idx.IndexAlgo) - e := CreateIndexCdcTask(c, tabledef, dbname, tablename, idx.IndexName, sinker_type) - if e != nil { - return e + async := false + if catalog.IsHnswIndexAlgo(idx.IndexAlgo) { + // HNSW always async + async = true + } else { + async, err = catalog.IsIndexAsync(idx.IndexAlgoParams) + if err != nil { + return err + } + } + if async { + sinker_type := getSinkerTypeFromAlgo(idx.IndexAlgo) + e := CreateIndexCdcTask(c, tabledef, dbname, tablename, idx.IndexName, sinker_type) + if e != nil { + return e + } } } } From d7241aeb01b8fe76c153a48c7c6ef75134d86fbc Mon Sep 17 00:00:00 2001 From: cpegeric Date: Mon, 30 Jun 2025 12:48:37 +0100 Subject: [PATCH 180/223] use pitr_name --- pkg/sql/compile/cdc_util.go | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/pkg/sql/compile/cdc_util.go b/pkg/sql/compile/cdc_util.go index c4467a0b3d636..feb45c0af3f9c 100644 --- a/pkg/sql/compile/cdc_util.go +++ b/pkg/sql/compile/cdc_util.go @@ -30,7 +30,7 @@ type SinkerInfo struct { IndexName string } -func CreateCdcTask(c *Compile, pitr_id int, sinkerinfo SinkerInfo) (bool, error) { +func CreateCdcTask(c *Compile, pitr_name string, sinkerinfo SinkerInfo) (bool, error) { logutil.Infof("Create Index Task %v", sinkerinfo) //dummyurl := "mysql://root:111@127.0.0.1:6001" // sql = fmt.Sprintf("CREATE CDC `%s` '%s' 'indexsync' '%s' '%s.%s' {'Level'='table'};", cdcname, dummyurl, dummyurl, qryDatabase, srctbl) @@ -46,12 +46,11 @@ func getIndexPitrName(dbname string, tablename string) string { return fmt.Sprintf("__mo_idxpitr_%s_%s", dbname, tablename) } -func CreateIndexPitr(c *Compile, dbname string, tablename string) (int, error) { +func CreateIndexPitr(c *Compile, dbname string, tablename string) (string, error) { pitr_name := getIndexPitrName(dbname, tablename) - pitr_id := 0 sql := fmt.Sprintf("CREATE PITR `%s` FOR TABLE `%s` `%s` range 2 'h';", pitr_name, dbname, tablename) logutil.Infof("Create Index Pitr %s. sql: %s:", pitr_name, sql) - return pitr_id, nil + return pitr_name, nil } func DeleteIndexPitr(c *Compile, dbname string, tablename string) error { @@ -80,14 +79,14 @@ func checkValidIndexCdc(tableDef *plan.TableDef, indexname string) bool { func CreateIndexCdcTask(c *Compile, tableDef *plan.TableDef, dbname string, tablename string, indexname string, sinker_type int8) error { var err error - // create table pitr if not exists and return pitr_id - pitr_id, err := CreateIndexPitr(c, dbname, tablename) + // create table pitr if not exists and return pitr_name + pitr_name, err := CreateIndexPitr(c, dbname, tablename) if err != nil { return err } // create index cdc task - ok, err := CreateCdcTask(c, pitr_id, SinkerInfo{SinkerType: sinker_type, DBName: dbname, TableName: tablename, IndexName: indexname}) + ok, err := CreateCdcTask(c, pitr_name, SinkerInfo{SinkerType: sinker_type, DBName: dbname, TableName: tablename, IndexName: indexname}) if err != nil { return err } From b6639d2f37353ad466f28210ef16bfeaf118d1a7 Mon Sep 17 00:00:00 2001 From: cpegeric Date: Mon, 30 Jun 2025 14:59:22 +0100 Subject: [PATCH 181/223] add check pitr before create --- pkg/sql/compile/cdc_util.go | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/pkg/sql/compile/cdc_util.go b/pkg/sql/compile/cdc_util.go index feb45c0af3f9c..9ec4ece0a824e 100644 --- a/pkg/sql/compile/cdc_util.go +++ b/pkg/sql/compile/cdc_util.go @@ -47,8 +47,25 @@ func getIndexPitrName(dbname string, tablename string) string { } func CreateIndexPitr(c *Compile, dbname string, tablename string) (string, error) { + var sql string pitr_name := getIndexPitrName(dbname, tablename) - sql := fmt.Sprintf("CREATE PITR `%s` FOR TABLE `%s` `%s` range 2 'h';", pitr_name, dbname, tablename) + + // check pitr exists before create + /* + sql = fmt.Sprintf("SHOW PITR WHERE pitr_name = '%s'", pitr_name) + res, err := c.runSqlWithResult(sql, NoAccountId) + if err != nil { + return pitr_name, err + } + defer res.Close() + + if len(res.Batches) > 0 && res.Batches[0].RowCount() > 0 { + // pitr already exists + return pitr_name, nil + } + */ + + sql = fmt.Sprintf("CREATE PITR `%s` FOR TABLE `%s` `%s` range 2 'h';", pitr_name, dbname, tablename) logutil.Infof("Create Index Pitr %s. sql: %s:", pitr_name, sql) return pitr_name, nil } From 49a4cefadfaf4b91643a530e86d0a1ced9871220 Mon Sep 17 00:00:00 2001 From: cpegeric Date: Mon, 30 Jun 2025 15:35:39 +0100 Subject: [PATCH 182/223] update --- pkg/sql/compile/cdc_util.go | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/pkg/sql/compile/cdc_util.go b/pkg/sql/compile/cdc_util.go index 9ec4ece0a824e..16499c524a9af 100644 --- a/pkg/sql/compile/cdc_util.go +++ b/pkg/sql/compile/cdc_util.go @@ -51,8 +51,8 @@ func CreateIndexPitr(c *Compile, dbname string, tablename string) (string, error pitr_name := getIndexPitrName(dbname, tablename) // check pitr exists before create + sql = fmt.Sprintf("SHOW PITR WHERE pitr_name = '%s'", pitr_name) /* - sql = fmt.Sprintf("SHOW PITR WHERE pitr_name = '%s'", pitr_name) res, err := c.runSqlWithResult(sql, NoAccountId) if err != nil { return pitr_name, err @@ -67,6 +67,13 @@ func CreateIndexPitr(c *Compile, dbname string, tablename string) (string, error sql = fmt.Sprintf("CREATE PITR `%s` FOR TABLE `%s` `%s` range 2 'h';", pitr_name, dbname, tablename) logutil.Infof("Create Index Pitr %s. sql: %s:", pitr_name, sql) + /* + err := c.runSql(sql) + if err != nil { + return pitr_name, err + } + */ + return pitr_name, nil } @@ -75,6 +82,13 @@ func DeleteIndexPitr(c *Compile, dbname string, tablename string) error { // remove pitr sql := fmt.Sprintf("DROP PITR IF EXISTS `%s`;", pitr_name) logutil.Infof("Delete Index Pitr %s: %s", pitr_name, sql) + /* + err := c.runSql(sql) + if err != nil { + return err + } + */ + return nil } From f09eb13062d2b24cd077fa9d472fb0a89df32f5e Mon Sep 17 00:00:00 2001 From: cpegeric Date: Mon, 30 Jun 2025 15:48:51 +0100 Subject: [PATCH 183/223] update --- pkg/sql/compile/cdc_util.go | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/pkg/sql/compile/cdc_util.go b/pkg/sql/compile/cdc_util.go index 16499c524a9af..87b7ac2a27571 100644 --- a/pkg/sql/compile/cdc_util.go +++ b/pkg/sql/compile/cdc_util.go @@ -15,11 +15,13 @@ package compile import ( + "context" "fmt" "github.com/matrixorigin/matrixone/pkg/catalog" "github.com/matrixorigin/matrixone/pkg/logutil" "github.com/matrixorigin/matrixone/pkg/pb/plan" + "github.com/matrixorigin/matrixone/pkg/txn/client" ) /* CDC APIs */ @@ -30,16 +32,27 @@ type SinkerInfo struct { IndexName string } -func CreateCdcTask(c *Compile, pitr_name string, sinkerinfo SinkerInfo) (bool, error) { - logutil.Infof("Create Index Task %v", sinkerinfo) +func RegisterJob(ctx context.Context, txn client.TxnOperator, pitr_name string, info *SinkerInfo) (bool, error) { //dummyurl := "mysql://root:111@127.0.0.1:6001" // sql = fmt.Sprintf("CREATE CDC `%s` '%s' 'indexsync' '%s' '%s.%s' {'Level'='table'};", cdcname, dummyurl, dummyurl, qryDatabase, srctbl) return true, nil } +func DeregisterJob(ctx context.Context, txn client.TxnOperator, info *SinkerInfo) (bool, error) { + + return true, nil +} + +/* start here */ +func CreateCdcTask(c *Compile, pitr_name string, sinkerinfo SinkerInfo) (bool, error) { + logutil.Infof("Create Index Task %v", sinkerinfo) + + return RegisterJob(c.proc.Ctx, c.proc.GetTxnOperator(), pitr_name, &sinkerinfo) +} + func DeleteCdcTask(c *Compile, sinkerinfo SinkerInfo) (bool, error) { logutil.Infof("Delete Index Task %v", sinkerinfo) - return true, nil + return DeregisterJob(c.proc.Ctx, c.proc.GetTxnOperator(), &sinkerinfo) } func getIndexPitrName(dbname string, tablename string) string { From 22e91b3d08f5c43e3118bbe5dbcd16f21e826a93 Mon Sep 17 00:00:00 2001 From: cpegeric Date: Mon, 30 Jun 2025 15:50:59 +0100 Subject: [PATCH 184/223] update --- pkg/sql/compile/cdc_util.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkg/sql/compile/cdc_util.go b/pkg/sql/compile/cdc_util.go index 87b7ac2a27571..f081c5d282637 100644 --- a/pkg/sql/compile/cdc_util.go +++ b/pkg/sql/compile/cdc_util.go @@ -38,7 +38,7 @@ func RegisterJob(ctx context.Context, txn client.TxnOperator, pitr_name string, return true, nil } -func DeregisterJob(ctx context.Context, txn client.TxnOperator, info *SinkerInfo) (bool, error) { +func UnregisterJob(ctx context.Context, txn client.TxnOperator, info *SinkerInfo) (bool, error) { return true, nil } @@ -52,7 +52,7 @@ func CreateCdcTask(c *Compile, pitr_name string, sinkerinfo SinkerInfo) (bool, e func DeleteCdcTask(c *Compile, sinkerinfo SinkerInfo) (bool, error) { logutil.Infof("Delete Index Task %v", sinkerinfo) - return DeregisterJob(c.proc.Ctx, c.proc.GetTxnOperator(), &sinkerinfo) + return UnregisterJob(c.proc.Ctx, c.proc.GetTxnOperator(), &sinkerinfo) } func getIndexPitrName(dbname string, tablename string) string { From 04393a1041e7b6d308246da18635a3ea7ec13e39 Mon Sep 17 00:00:00 2001 From: cpegeric Date: Mon, 30 Jun 2025 16:21:08 +0100 Subject: [PATCH 185/223] consumer --- pkg/cdc/consumer.go | 79 ++++++++++++++++++++++++++++++++++++++++ pkg/cdc/consumer_test.go | 18 +++++++++ 2 files changed, 97 insertions(+) create mode 100644 pkg/cdc/consumer.go create mode 100644 pkg/cdc/consumer_test.go diff --git a/pkg/cdc/consumer.go b/pkg/cdc/consumer.go new file mode 100644 index 0000000000000..7cba41424a77c --- /dev/null +++ b/pkg/cdc/consumer.go @@ -0,0 +1,79 @@ +package cdc + +import ( + "github.com/matrixorigin/matrixone/pkg/logutil" + "github.com/matrixorigin/matrixone/pkg/txn/client" +) + +type DataRetriever interface { + Next() (insertBatch *AtomicBatch, deleteBatch *AtomicBatch, noMoreData bool, err error) + UpdateWatermark() error +} + +type TxnRetriever struct { + Txn *client.TxnOperator +} + +func (r *TxnRetriever) Next() (insertBatch *AtomicBatch, deleteBatch *AtomicBatch, noMoreData bool, err error) { + logutil.Infof("TxRetriever Next()") + return nil, nil, true, nil +} + +func (r *TxnRetriever) UpdateWatermark() error { + logutil.Infof("TxnRetriever.UpdateWatermark()") + return nil +} + +var _ DataRetriever = new(TxnRetriever) + +func NewTxnRetriever(txn *client.TxnOperator) DataRetriever { + return &TxnRetriever{Txn: txn} +} + +type Consumer interface { + Consume(DataRetriever) error + Reset() + Close() +} + +type IndexConsumer struct { +} + +var _ Consumer = new(IndexConsumer) + +func NewIndexConsumer() (Consumer, error) { + + return &IndexConsumer{}, nil +} + +func (c *IndexConsumer) Consume(r DataRetriever) error { + noMoreData := false + var insertBatch, deleteBatch *AtomicBatch + var err error + + for !noMoreData { + + insertBatch, deleteBatch, noMoreData, err = r.Next() + if err != nil { + return err + } + + if noMoreData { + return nil + } + + // update index + var _ = insertBatch + var _ = deleteBatch + + } + return nil +} + +func (c *IndexConsumer) Reset() { + logutil.Infof("IndexConsumer.Reset") +} + +func (c *IndexConsumer) Close() { + logutil.Infof("IndexConsumer.Close") +} diff --git a/pkg/cdc/consumer_test.go b/pkg/cdc/consumer_test.go new file mode 100644 index 0000000000000..b1e47d94123c4 --- /dev/null +++ b/pkg/cdc/consumer_test.go @@ -0,0 +1,18 @@ +package cdc + +import ( + "testing" + + "github.com/stretchr/testify/require" +) + +func TestConsumer(t *testing.T) { + r := NewTxnRetriever(nil) + + consumer, err := NewIndexConsumer() + require.NoError(t, err) + err = consumer.Consume(r) + require.NoError(t, err) + consumer.Reset() + consumer.Close() +} From 340093511dd8afdc3b75a5d2d5782d96b11af127 Mon Sep 17 00:00:00 2001 From: cpegeric Date: Mon, 30 Jun 2025 16:24:22 +0100 Subject: [PATCH 186/223] license --- pkg/cdc/consumer.go | 14 ++++++++++++++ pkg/cdc/consumer_test.go | 14 ++++++++++++++ 2 files changed, 28 insertions(+) diff --git a/pkg/cdc/consumer.go b/pkg/cdc/consumer.go index 7cba41424a77c..79e277237bfab 100644 --- a/pkg/cdc/consumer.go +++ b/pkg/cdc/consumer.go @@ -1,3 +1,17 @@ +// Copyright 2024 Matrix Origin +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + package cdc import ( diff --git a/pkg/cdc/consumer_test.go b/pkg/cdc/consumer_test.go index b1e47d94123c4..be8ceec9ed88b 100644 --- a/pkg/cdc/consumer_test.go +++ b/pkg/cdc/consumer_test.go @@ -1,3 +1,17 @@ +// Copyright 2024 Matrix Origin +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + package cdc import ( From 11c74ff6a57a1f8f4ab877161d3b1b1bc7c21151 Mon Sep 17 00:00:00 2001 From: cpegeric Date: Mon, 30 Jun 2025 16:58:30 +0100 Subject: [PATCH 187/223] update --- pkg/cdc/consumer.go | 58 ++++++++++++++++++++++++++++++++++++++-- pkg/cdc/consumer_test.go | 11 +++++++- 2 files changed, 66 insertions(+), 3 deletions(-) diff --git a/pkg/cdc/consumer.go b/pkg/cdc/consumer.go index 79e277237bfab..f2b9546393f5a 100644 --- a/pkg/cdc/consumer.go +++ b/pkg/cdc/consumer.go @@ -15,8 +15,11 @@ package cdc import ( + "github.com/matrixorigin/matrixone/pkg/catalog" "github.com/matrixorigin/matrixone/pkg/logutil" + "github.com/matrixorigin/matrixone/pkg/pb/plan" "github.com/matrixorigin/matrixone/pkg/txn/client" + "github.com/matrixorigin/matrixone/pkg/util/executor" ) type DataRetriever interface { @@ -44,6 +47,13 @@ func NewTxnRetriever(txn *client.TxnOperator) DataRetriever { return &TxnRetriever{Txn: txn} } +type ConsumerInfo struct { + ConsumerType int8 + TableName string + DbName string + IndexName string +} + type Consumer interface { Consume(DataRetriever) error Reset() @@ -51,13 +61,57 @@ type Consumer interface { } type IndexConsumer struct { + cnUUID string + info *ConsumerInfo + dbTblInfo *DbTableInfo + tableDef *plan.TableDef + sqlWriter IndexSqlWriter + exec executor.SQLExecutor + rowdata []any + rowdelete []any } var _ Consumer = new(IndexConsumer) -func NewIndexConsumer() (Consumer, error) { +func NewIndexConsumer(cnUUID string, + tableDef *plan.TableDef, + info *ConsumerInfo) (Consumer, error) { + + exec, err := sqlExecutorFactory(cnUUID) + if err != nil { + return nil, err + } + + dbTblInfo := &DbTableInfo{SinkDbName: info.DbName, SinkTblName: info.TableName} + + ie := &IndexEntry{indexes: make([]*plan.IndexDef, 0, 3)} + + for _, idx := range tableDef.Indexes { + if idx.TableExist && (catalog.IsHnswIndexAlgo(idx.IndexAlgo) || catalog.IsIvfIndexAlgo(idx.IndexAlgo) || catalog.IsFullTextIndexAlgo(idx.IndexAlgo)) { + key := idx.IndexName + if key == info.IndexName { + if len(ie.algo) == 0 { + ie.algo = idx.IndexAlgo + } + ie.indexes = append(ie.indexes, idx) + } + } + + } + + sqlwriter, err := NewIndexSqlWriter(ie.algo, dbTblInfo, tableDef, ie.indexes) + + c := &IndexConsumer{cnUUID: cnUUID, + info: info, + dbTblInfo: dbTblInfo, + tableDef: tableDef, + sqlWriter: sqlwriter, + exec: exec, + rowdata: make([]any, len(tableDef.Cols)), + rowdelete: make([]any, 1), + } - return &IndexConsumer{}, nil + return c, nil } func (c *IndexConsumer) Consume(r DataRetriever) error { diff --git a/pkg/cdc/consumer_test.go b/pkg/cdc/consumer_test.go index be8ceec9ed88b..57b048db33685 100644 --- a/pkg/cdc/consumer_test.go +++ b/pkg/cdc/consumer_test.go @@ -17,13 +17,22 @@ package cdc import ( "testing" + "github.com/matrixorigin/matrixone/pkg/container/types" + "github.com/prashantv/gostub" "github.com/stretchr/testify/require" ) func TestConsumer(t *testing.T) { + sqlexecstub := gostub.Stub(&sqlExecutorFactory, mockSqlExecutorFactory) + defer sqlexecstub.Reset() + r := NewTxnRetriever(nil) - consumer, err := NewIndexConsumer() + tblDef := newTestTableDef("pk", types.T_int64, "vec", types.T_array_float32, 4) + cnUUID := "a-b-c-d" + info := &ConsumerInfo{DbName: "db", TableName: "tbl", IndexName: "hnsw_idx"} + + consumer, err := NewIndexConsumer(cnUUID, tblDef, info) require.NoError(t, err) err = consumer.Consume(r) require.NoError(t, err) From 7d106fbe87a80cb727f8ff2a4c11877ee94fa96e Mon Sep 17 00:00:00 2001 From: cpegeric Date: Mon, 30 Jun 2025 17:42:48 +0100 Subject: [PATCH 188/223] update --- pkg/cdc/consumer.go | 243 ++++++++++++++++++++++++++++++++++++--- pkg/cdc/consumer_test.go | 6 +- 2 files changed, 229 insertions(+), 20 deletions(-) diff --git a/pkg/cdc/consumer.go b/pkg/cdc/consumer.go index f2b9546393f5a..d7e353aa2291e 100644 --- a/pkg/cdc/consumer.go +++ b/pkg/cdc/consumer.go @@ -15,11 +15,17 @@ package cdc import ( + "context" + "os" + "sync" + "time" + "github.com/matrixorigin/matrixone/pkg/catalog" "github.com/matrixorigin/matrixone/pkg/logutil" "github.com/matrixorigin/matrixone/pkg/pb/plan" "github.com/matrixorigin/matrixone/pkg/txn/client" "github.com/matrixorigin/matrixone/pkg/util/executor" + "github.com/matrixorigin/matrixone/pkg/vectorindex" ) type DataRetriever interface { @@ -55,20 +61,22 @@ type ConsumerInfo struct { } type Consumer interface { - Consume(DataRetriever) error + Consume(context.Context, DataRetriever) error Reset() Close() } type IndexConsumer struct { - cnUUID string - info *ConsumerInfo - dbTblInfo *DbTableInfo - tableDef *plan.TableDef - sqlWriter IndexSqlWriter - exec executor.SQLExecutor - rowdata []any - rowdelete []any + cnUUID string + info *ConsumerInfo + dbTblInfo *DbTableInfo + tableDef *plan.TableDef + sqlWriter IndexSqlWriter + exec executor.SQLExecutor + rowdata []any + rowdelete []any + sqlBufSendCh chan []byte + done chan bool } var _ Consumer = new(IndexConsumer) @@ -102,39 +110,98 @@ func NewIndexConsumer(cnUUID string, sqlwriter, err := NewIndexSqlWriter(ie.algo, dbTblInfo, tableDef, ie.indexes) c := &IndexConsumer{cnUUID: cnUUID, - info: info, - dbTblInfo: dbTblInfo, - tableDef: tableDef, - sqlWriter: sqlwriter, - exec: exec, - rowdata: make([]any, len(tableDef.Cols)), - rowdelete: make([]any, 1), + info: info, + dbTblInfo: dbTblInfo, + tableDef: tableDef, + sqlWriter: sqlwriter, + exec: exec, + rowdata: make([]any, len(tableDef.Cols)), + rowdelete: make([]any, 1), + sqlBufSendCh: make(chan []byte), + done: make(chan bool), } return c, nil } -func (c *IndexConsumer) Consume(r DataRetriever) error { +func (c *IndexConsumer) Consume(ctx context.Context, r DataRetriever) error { noMoreData := false var insertBatch, deleteBatch *AtomicBatch + errch := make(chan error, 2) var err error + // create thread to poll sql + var wg sync.WaitGroup + wg.Add(1) + go func() { + defer wg.Done() + + newctx, cancel := context.WithTimeout(context.Background(), time.Hour) + defer cancel() + opts := executor.Options{} + err := c.exec.ExecTxn(newctx, + func(exec executor.TxnExecutor) error { + for { + select { + case <-ctx.Done(): + return nil + case e2 := <-errch: + return e2 + case sql, ok := <-c.sqlBufSendCh: + if !ok { + // channel closed + return nil + } + + // update SQL + res, err := exec.Exec(string(sql), opts.StatementOption()) + if err != nil { + return err + } + res.Close() + } + } + }, opts) + if err != nil { + errch <- err + return + } + + }() + + // read data for !noMoreData { insertBatch, deleteBatch, noMoreData, err = r.Next() if err != nil { + errch <- err + noMoreData = true return err } if noMoreData { + close(c.sqlBufSendCh) return nil } // update index - var _ = insertBatch - var _ = deleteBatch + + // sinkTail will save sql to the slice + err := c.sinkTail(ctx, insertBatch, deleteBatch) + if err != nil { + // error out + errch <- err + noMoreData = true + } } + + wg.Wait() + + if len(errch) > 0 { + return <-errch + } + return nil } @@ -145,3 +212,141 @@ func (c *IndexConsumer) Reset() { func (c *IndexConsumer) Close() { logutil.Infof("IndexConsumer.Close") } + +// upsertBatch and deleteBatch is sorted by ts +// for the same ts, delete first, then upsert +func (c *IndexConsumer) sinkTail(ctx context.Context, upsertBatch, deleteBatch *AtomicBatch) error { + var err error + + upsertIter := upsertBatch.GetRowIterator().(*atomicBatchRowIter) + deleteIter := deleteBatch.GetRowIterator().(*atomicBatchRowIter) + defer func() { + upsertIter.Close() + deleteIter.Close() + }() + + // output sql until one iterator reach the end + upsertIterHasNext, deleteIterHasNext := upsertIter.Next(), deleteIter.Next() + for upsertIterHasNext && deleteIterHasNext { + upsertItem, deleteItem := upsertIter.Item(), deleteIter.Item() + // compare ts, ignore pk + if upsertItem.Ts.LT(&deleteItem.Ts) { + if err = c.sinkUpsert(ctx, upsertIter); err != nil { + return err + } + // get next item + upsertIterHasNext = upsertIter.Next() + } else { + if err = c.sinkDelete(ctx, deleteIter); err != nil { + return err + } + // get next item + deleteIterHasNext = deleteIter.Next() + } + } + + // output the rest of upsert iterator + for upsertIterHasNext { + if err = c.sinkUpsert(ctx, upsertIter); err != nil { + return err + } + // get next item + upsertIterHasNext = upsertIter.Next() + } + + // output the rest of delete iterator + for deleteIterHasNext { + if err = c.sinkDelete(ctx, deleteIter); err != nil { + return err + } + // get next item + deleteIterHasNext = deleteIter.Next() + } + c.flushCdc() + return nil +} + +func (c *IndexConsumer) sinkUpsert(ctx context.Context, upsertIter *atomicBatchRowIter) (err error) { + + // get row from the batch + if err = upsertIter.Row(ctx, c.rowdata); err != nil { + return err + } + + if !c.sqlWriter.CheckLastOp(vectorindex.CDC_UPSERT) { + // last op is not UPSERT, sendSql first + // send SQL + err = c.sendSql(c.sqlWriter) + if err != nil { + return err + } + + } + + c.sqlWriter.Upsert(ctx, c.rowdata) + + if c.sqlWriter.Full() { + // send SQL + err = c.sendSql(c.sqlWriter) + if err != nil { + return err + } + } + + return nil +} + +func (c *IndexConsumer) sinkDelete(ctx context.Context, deleteIter *atomicBatchRowIter) (err error) { + + // get row from the batch + if err = deleteIter.Row(ctx, c.rowdelete); err != nil { + return err + } + + if !c.sqlWriter.CheckLastOp(vectorindex.CDC_DELETE) { + // last op is not DELETE, sendSql first + // send SQL + err = c.sendSql(c.sqlWriter) + if err != nil { + return err + } + + } + + c.sqlWriter.Delete(ctx, c.rowdelete) + + if c.sqlWriter.Full() { + // send SQL + err = c.sendSql(c.sqlWriter) + if err != nil { + return err + } + } + + return nil +} + +func (c *IndexConsumer) sendSql(writer IndexSqlWriter) error { + if writer.Empty() { + return nil + } + + // generate sql from cdc + sql, err := writer.ToSql() + if err != nil { + return err + } + + c.sqlBufSendCh <- sql + os.Stderr.WriteString(string(sql)) + os.Stderr.WriteString("\n") + + // reset + writer.Reset() + + return nil +} + +func (c *IndexConsumer) flushCdc() error { + return c.sendSql(c.sqlWriter) +} diff --git a/pkg/cdc/consumer_test.go b/pkg/cdc/consumer_test.go index 57b048db33685..167025ed661a3 100644 --- a/pkg/cdc/consumer_test.go +++ b/pkg/cdc/consumer_test.go @@ -15,6 +15,7 @@ package cdc import ( + "context" "testing" "github.com/matrixorigin/matrixone/pkg/container/types" @@ -23,6 +24,9 @@ import ( ) func TestConsumer(t *testing.T) { + ctx, cancel := context.WithCancel(context.Background()) + defer cancel() + sqlexecstub := gostub.Stub(&sqlExecutorFactory, mockSqlExecutorFactory) defer sqlexecstub.Reset() @@ -34,7 +38,7 @@ func TestConsumer(t *testing.T) { consumer, err := NewIndexConsumer(cnUUID, tblDef, info) require.NoError(t, err) - err = consumer.Consume(r) + err = consumer.Consume(ctx, r) require.NoError(t, err) consumer.Reset() consumer.Close() From d4e19e645e204b1504be27ed3dbfa38e55233b66 Mon Sep 17 00:00:00 2001 From: cpegeric Date: Tue, 1 Jul 2025 08:24:47 +0100 Subject: [PATCH 189/223] use transaction from DataRetriever --- pkg/cdc/consumer.go | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/pkg/cdc/consumer.go b/pkg/cdc/consumer.go index d7e353aa2291e..5c24fe32f81ba 100644 --- a/pkg/cdc/consumer.go +++ b/pkg/cdc/consumer.go @@ -31,10 +31,11 @@ import ( type DataRetriever interface { Next() (insertBatch *AtomicBatch, deleteBatch *AtomicBatch, noMoreData bool, err error) UpdateWatermark() error + GetTxn() client.TxnOperator } type TxnRetriever struct { - Txn *client.TxnOperator + Txn client.TxnOperator } func (r *TxnRetriever) Next() (insertBatch *AtomicBatch, deleteBatch *AtomicBatch, noMoreData bool, err error) { @@ -47,9 +48,13 @@ func (r *TxnRetriever) UpdateWatermark() error { return nil } +func (r *TxnRetriever) GetTxn() client.TxnOperator { + return r.Txn +} + var _ DataRetriever = new(TxnRetriever) -func NewTxnRetriever(txn *client.TxnOperator) DataRetriever { +func NewTxnRetriever(txn client.TxnOperator) DataRetriever { return &TxnRetriever{Txn: txn} } @@ -139,6 +144,7 @@ func (c *IndexConsumer) Consume(ctx context.Context, r DataRetriever) error { newctx, cancel := context.WithTimeout(context.Background(), time.Hour) defer cancel() opts := executor.Options{} + opts.WithTxn(r.GetTxn()) err := c.exec.ExecTxn(newctx, func(exec executor.TxnExecutor) error { for { From 1704875ea99da1a84f726f4ff7513ac361e6090e Mon Sep 17 00:00:00 2001 From: cpegeric Date: Tue, 1 Jul 2025 09:29:29 +0100 Subject: [PATCH 190/223] update watermark --- pkg/cdc/consumer.go | 39 +++++++++++++++++++-------------------- 1 file changed, 19 insertions(+), 20 deletions(-) diff --git a/pkg/cdc/consumer.go b/pkg/cdc/consumer.go index 5c24fe32f81ba..972987e2c0b53 100644 --- a/pkg/cdc/consumer.go +++ b/pkg/cdc/consumer.go @@ -29,33 +29,27 @@ import ( ) type DataRetriever interface { - Next() (insertBatch *AtomicBatch, deleteBatch *AtomicBatch, noMoreData bool, err error) - UpdateWatermark() error - GetTxn() client.TxnOperator + Next() (insertBatch *AtomicBatch, deleteBatch *AtomicBatch, noMoreData bool, datatype int8, err error) + UpdateWatermark(executor.TxnExecutor) error } type TxnRetriever struct { - Txn client.TxnOperator } -func (r *TxnRetriever) Next() (insertBatch *AtomicBatch, deleteBatch *AtomicBatch, noMoreData bool, err error) { +func (r *TxnRetriever) Next() (insertBatch *AtomicBatch, deleteBatch *AtomicBatch, noMoreData bool, datatype int8, err error) { logutil.Infof("TxRetriever Next()") - return nil, nil, true, nil + return nil, nil, true, 0, nil } -func (r *TxnRetriever) UpdateWatermark() error { +func (r *TxnRetriever) UpdateWatermark(executor.TxnExecutor) error { logutil.Infof("TxnRetriever.UpdateWatermark()") return nil } -func (r *TxnRetriever) GetTxn() client.TxnOperator { - return r.Txn -} - var _ DataRetriever = new(TxnRetriever) func NewTxnRetriever(txn client.TxnOperator) DataRetriever { - return &TxnRetriever{Txn: txn} + return &TxnRetriever{} } type ConsumerInfo struct { @@ -134,6 +128,7 @@ func (c *IndexConsumer) Consume(ctx context.Context, r DataRetriever) error { var insertBatch, deleteBatch *AtomicBatch errch := make(chan error, 2) var err error + datatype := int8(0) // create thread to poll sql var wg sync.WaitGroup @@ -144,7 +139,6 @@ func (c *IndexConsumer) Consume(ctx context.Context, r DataRetriever) error { newctx, cancel := context.WithTimeout(context.Background(), time.Hour) defer cancel() opts := executor.Options{} - opts.WithTxn(r.GetTxn()) err := c.exec.ExecTxn(newctx, func(exec executor.TxnExecutor) error { for { @@ -156,6 +150,7 @@ func (c *IndexConsumer) Consume(ctx context.Context, r DataRetriever) error { case sql, ok := <-c.sqlBufSendCh: if !ok { // channel closed + r.UpdateWatermark(exec) return nil } @@ -178,7 +173,7 @@ func (c *IndexConsumer) Consume(ctx context.Context, r DataRetriever) error { // read data for !noMoreData { - insertBatch, deleteBatch, noMoreData, err = r.Next() + insertBatch, deleteBatch, noMoreData, datatype, err = r.Next() if err != nil { errch <- err noMoreData = true @@ -192,12 +187,16 @@ func (c *IndexConsumer) Consume(ctx context.Context, r DataRetriever) error { // update index - // sinkTail will save sql to the slice - err := c.sinkTail(ctx, insertBatch, deleteBatch) - if err != nil { - // error out - errch <- err - noMoreData = true + if datatype == 0 { + + } else { + // sinkTail will save sql to the slice + err := c.sinkTail(ctx, insertBatch, deleteBatch) + if err != nil { + // error out + errch <- err + noMoreData = true + } } } From 4c4c3a86482e9aee70935a44f08c216033cd85f0 Mon Sep 17 00:00:00 2001 From: cpegeric Date: Tue, 1 Jul 2025 09:34:54 +0100 Subject: [PATCH 191/223] update --- pkg/cdc/consumer.go | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/pkg/cdc/consumer.go b/pkg/cdc/consumer.go index 972987e2c0b53..8e4da88b6397a 100644 --- a/pkg/cdc/consumer.go +++ b/pkg/cdc/consumer.go @@ -150,8 +150,7 @@ func (c *IndexConsumer) Consume(ctx context.Context, r DataRetriever) error { case sql, ok := <-c.sqlBufSendCh: if !ok { // channel closed - r.UpdateWatermark(exec) - return nil + return r.UpdateWatermark(exec) } // update SQL From 7b02d814c3cc26f33c8bb5d3976a61293a9f9e07 Mon Sep 17 00:00:00 2001 From: cpegeric Date: Tue, 1 Jul 2025 10:14:19 +0100 Subject: [PATCH 192/223] update --- pkg/cdc/consumer.go | 104 ++++++++++++++++++++++++++++++-------------- 1 file changed, 72 insertions(+), 32 deletions(-) diff --git a/pkg/cdc/consumer.go b/pkg/cdc/consumer.go index 8e4da88b6397a..1f83c0055e053 100644 --- a/pkg/cdc/consumer.go +++ b/pkg/cdc/consumer.go @@ -16,6 +16,7 @@ package cdc import ( "context" + "fmt" "os" "sync" "time" @@ -29,16 +30,17 @@ import ( ) type DataRetriever interface { - Next() (insertBatch *AtomicBatch, deleteBatch *AtomicBatch, noMoreData bool, datatype int8, err error) + Next() (insertBatch *AtomicBatch, deleteBatch *AtomicBatch, noMoreData bool, err error) UpdateWatermark(executor.TxnExecutor) error + GetDataType() int8 } type TxnRetriever struct { } -func (r *TxnRetriever) Next() (insertBatch *AtomicBatch, deleteBatch *AtomicBatch, noMoreData bool, datatype int8, err error) { +func (r *TxnRetriever) Next() (insertBatch *AtomicBatch, deleteBatch *AtomicBatch, noMoreData bool, err error) { logutil.Infof("TxRetriever Next()") - return nil, nil, true, 0, nil + return nil, nil, true, nil } func (r *TxnRetriever) UpdateWatermark(executor.TxnExecutor) error { @@ -46,6 +48,10 @@ func (r *TxnRetriever) UpdateWatermark(executor.TxnExecutor) error { return nil } +func (r *TxnRetriever) GetDataType() int8 { + return 0 +} + var _ DataRetriever = new(TxnRetriever) func NewTxnRetriever(txn client.TxnOperator) DataRetriever { @@ -128,7 +134,7 @@ func (c *IndexConsumer) Consume(ctx context.Context, r DataRetriever) error { var insertBatch, deleteBatch *AtomicBatch errch := make(chan error, 2) var err error - datatype := int8(0) + datatype := r.GetDataType() // create thread to poll sql var wg sync.WaitGroup @@ -136,35 +142,68 @@ func (c *IndexConsumer) Consume(ctx context.Context, r DataRetriever) error { go func() { defer wg.Done() - newctx, cancel := context.WithTimeout(context.Background(), time.Hour) - defer cancel() - opts := executor.Options{} - err := c.exec.ExecTxn(newctx, - func(exec executor.TxnExecutor) error { - for { - select { - case <-ctx.Done(): - return nil - case e2 := <-errch: - return e2 - case sql, ok := <-c.sqlBufSendCh: - if !ok { - // channel closed - return r.UpdateWatermark(exec) - } - - // update SQL - res, err := exec.Exec(string(sql), opts.StatementOption()) + if datatype == 0 { + // SNAPSHOT + for { + select { + case <-ctx.Done(): + return + case e2 := <-errch: + errch <- e2 + return + case sql, ok := <-c.sqlBufSendCh: + if !ok { + return + } + func() { + newctx, cancel := context.WithTimeout(context.Background(), time.Hour) + defer cancel() + //os.Stderr.WriteString("Wait for BEGIN but sql. execute anyway\n") + opts := executor.Options{} + res, err := c.exec.Exec(newctx, string(sql), opts) if err != nil { - return err + logutil.Errorf("cdc indexConsumer(%v) send sql failed, err: %v, sql: %s", c.dbTblInfo, err, string(sql)) + os.Stderr.WriteString(fmt.Sprintf("sql executor run failed. %s\n", string(sql))) + os.Stderr.WriteString(fmt.Sprintf("err :%v\n", err)) + errch <- err } res.Close() - } + }() } - }, opts) - if err != nil { - errch <- err - return + } + + } else { + // TAIL + newctx, cancel := context.WithTimeout(context.Background(), time.Hour) + defer cancel() + opts := executor.Options{} + err := c.exec.ExecTxn(newctx, + func(exec executor.TxnExecutor) error { + for { + select { + case <-ctx.Done(): + return nil + case e2 := <-errch: + return e2 + case sql, ok := <-c.sqlBufSendCh: + if !ok { + // channel closed + return r.UpdateWatermark(exec) + } + + // update SQL + res, err := exec.Exec(string(sql), opts.StatementOption()) + if err != nil { + return err + } + res.Close() + } + } + }, opts) + if err != nil { + errch <- err + return + } } }() @@ -172,21 +211,22 @@ func (c *IndexConsumer) Consume(ctx context.Context, r DataRetriever) error { // read data for !noMoreData { - insertBatch, deleteBatch, noMoreData, datatype, err = r.Next() + insertBatch, deleteBatch, noMoreData, err = r.Next() if err != nil { errch <- err noMoreData = true - return err + continue } if noMoreData { close(c.sqlBufSendCh) - return nil + continue } // update index if datatype == 0 { + // SNAPSHOT } else { // sinkTail will save sql to the slice From 16600d3786ca0d725723a9ec71a94504e12b80ad Mon Sep 17 00:00:00 2001 From: cpegeric Date: Tue, 1 Jul 2025 10:18:17 +0100 Subject: [PATCH 193/223] statement option --- pkg/cdc/consumer.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkg/cdc/consumer.go b/pkg/cdc/consumer.go index 1f83c0055e053..27d62d809f1bd 100644 --- a/pkg/cdc/consumer.go +++ b/pkg/cdc/consumer.go @@ -31,7 +31,7 @@ import ( type DataRetriever interface { Next() (insertBatch *AtomicBatch, deleteBatch *AtomicBatch, noMoreData bool, err error) - UpdateWatermark(executor.TxnExecutor) error + UpdateWatermark(executor.TxnExecutor, executor.StatementOption) error GetDataType() int8 } @@ -43,7 +43,7 @@ func (r *TxnRetriever) Next() (insertBatch *AtomicBatch, deleteBatch *AtomicBatc return nil, nil, true, nil } -func (r *TxnRetriever) UpdateWatermark(executor.TxnExecutor) error { +func (r *TxnRetriever) UpdateWatermark(executor.TxnExecutor, executor.StatementOption) error { logutil.Infof("TxnRetriever.UpdateWatermark()") return nil } @@ -188,7 +188,7 @@ func (c *IndexConsumer) Consume(ctx context.Context, r DataRetriever) error { case sql, ok := <-c.sqlBufSendCh: if !ok { // channel closed - return r.UpdateWatermark(exec) + return r.UpdateWatermark(exec, opts.StatementOption()) } // update SQL From ab06863850e0a7a0d052b952feb22b5c31ac4391 Mon Sep 17 00:00:00 2001 From: cpegeric Date: Tue, 1 Jul 2025 10:31:25 +0100 Subject: [PATCH 194/223] statement option --- pkg/cdc/consumer.go | 33 ++++++++++++++++++++++++++------- pkg/cdc/consumer_test.go | 2 -- 2 files changed, 26 insertions(+), 9 deletions(-) diff --git a/pkg/cdc/consumer.go b/pkg/cdc/consumer.go index 27d62d809f1bd..9e92aa2d8f764 100644 --- a/pkg/cdc/consumer.go +++ b/pkg/cdc/consumer.go @@ -22,6 +22,7 @@ import ( "time" "github.com/matrixorigin/matrixone/pkg/catalog" + "github.com/matrixorigin/matrixone/pkg/container/batch" "github.com/matrixorigin/matrixone/pkg/logutil" "github.com/matrixorigin/matrixone/pkg/pb/plan" "github.com/matrixorigin/matrixone/pkg/txn/client" @@ -67,8 +68,6 @@ type ConsumerInfo struct { type Consumer interface { Consume(context.Context, DataRetriever) error - Reset() - Close() } type IndexConsumer struct { @@ -227,6 +226,12 @@ func (c *IndexConsumer) Consume(ctx context.Context, r DataRetriever) error { if datatype == 0 { // SNAPSHOT + err := c.sinkSnapshot(ctx, insertBatch) + if err != nil { + // error out + errch <- err + noMoreData = true + } } else { // sinkTail will save sql to the slice @@ -249,12 +254,26 @@ func (c *IndexConsumer) Consume(ctx context.Context, r DataRetriever) error { return nil } -func (c *IndexConsumer) Reset() { - logutil.Infof("IndexConsumer.Reset") -} +func (c *IndexConsumer) sinkSnapshot(ctx context.Context, bat *batch.Batch) error { + var err error + + for i := 0; i < batchRowCount(bat); i++ { + if err = extractRowFromEveryVector(ctx, bat, i, c.rowdata); err != nil { + return err + } -func (c *IndexConsumer) Close() { - logutil.Infof("IndexConsumer.Close") + err = c.sqlWriter.Upsert(ctx, c.rowdata) + if err != nil { + return err + } + + if c.sqlWriter.Full() { + err = c.sendSql(c.sqlWriter) + if err != nil { + return err + } + } + } } // upsertBatch and deleteBatch is sorted by ts diff --git a/pkg/cdc/consumer_test.go b/pkg/cdc/consumer_test.go index 167025ed661a3..f76422c9308f2 100644 --- a/pkg/cdc/consumer_test.go +++ b/pkg/cdc/consumer_test.go @@ -40,6 +40,4 @@ func TestConsumer(t *testing.T) { require.NoError(t, err) err = consumer.Consume(ctx, r) require.NoError(t, err) - consumer.Reset() - consumer.Close() } From e83058f129cd6c9ef1d2279a2f21b16406aa9914 Mon Sep 17 00:00:00 2001 From: cpegeric Date: Tue, 1 Jul 2025 10:35:54 +0100 Subject: [PATCH 195/223] snapshot --- pkg/cdc/consumer.go | 29 ++++++++++++++++------------- 1 file changed, 16 insertions(+), 13 deletions(-) diff --git a/pkg/cdc/consumer.go b/pkg/cdc/consumer.go index 9e92aa2d8f764..1ae9b1cb4cdb2 100644 --- a/pkg/cdc/consumer.go +++ b/pkg/cdc/consumer.go @@ -22,7 +22,6 @@ import ( "time" "github.com/matrixorigin/matrixone/pkg/catalog" - "github.com/matrixorigin/matrixone/pkg/container/batch" "github.com/matrixorigin/matrixone/pkg/logutil" "github.com/matrixorigin/matrixone/pkg/pb/plan" "github.com/matrixorigin/matrixone/pkg/txn/client" @@ -254,26 +253,30 @@ func (c *IndexConsumer) Consume(ctx context.Context, r DataRetriever) error { return nil } -func (c *IndexConsumer) sinkSnapshot(ctx context.Context, bat *batch.Batch) error { +func (c *IndexConsumer) sinkSnapshot(ctx context.Context, upsertBatch *AtomicBatch) error { var err error - for i := 0; i < batchRowCount(bat); i++ { - if err = extractRowFromEveryVector(ctx, bat, i, c.rowdata); err != nil { - return err - } - - err = c.sqlWriter.Upsert(ctx, c.rowdata) - if err != nil { - return err - } + for _, bat := range upsertBatch.Batches { + for i := 0; i < batchRowCount(bat); i++ { + if err = extractRowFromEveryVector(ctx, bat, i, c.rowdata); err != nil { + return err + } - if c.sqlWriter.Full() { - err = c.sendSql(c.sqlWriter) + err = c.sqlWriter.Upsert(ctx, c.rowdata) if err != nil { return err } + + if c.sqlWriter.Full() { + err = c.sendSql(c.sqlWriter) + if err != nil { + return err + } + } } } + + return nil } // upsertBatch and deleteBatch is sorted by ts From 952b57ab163f6e7745dfb3b28abf5d69def81c8c Mon Sep 17 00:00:00 2001 From: cpegeric Date: Tue, 1 Jul 2025 10:51:11 +0100 Subject: [PATCH 196/223] run --- pkg/cdc/consumer.go | 136 +++++++++++++++++++++++--------------------- 1 file changed, 71 insertions(+), 65 deletions(-) diff --git a/pkg/cdc/consumer.go b/pkg/cdc/consumer.go index 1ae9b1cb4cdb2..5009f7262e074 100644 --- a/pkg/cdc/consumer.go +++ b/pkg/cdc/consumer.go @@ -127,6 +127,76 @@ func NewIndexConsumer(cnUUID string, return c, nil } +func (c *IndexConsumer) run(ctx context.Context, errch chan error, r DataRetriever) { + + datatype := r.GetDataType() + + if datatype == 0 { + // SNAPSHOT + for { + select { + case <-ctx.Done(): + return + case e2 := <-errch: + errch <- e2 + return + case sql, ok := <-c.sqlBufSendCh: + if !ok { + return + } + func() { + newctx, cancel := context.WithTimeout(context.Background(), time.Hour) + defer cancel() + //os.Stderr.WriteString("Wait for BEGIN but sql. execute anyway\n") + opts := executor.Options{} + res, err := c.exec.Exec(newctx, string(sql), opts) + if err != nil { + logutil.Errorf("cdc indexConsumer(%v) send sql failed, err: %v, sql: %s", c.dbTblInfo, err, string(sql)) + os.Stderr.WriteString(fmt.Sprintf("sql executor run failed. %s\n", string(sql))) + os.Stderr.WriteString(fmt.Sprintf("err :%v\n", err)) + errch <- err + } + res.Close() + }() + } + } + + } else { + // TAIL + newctx, cancel := context.WithTimeout(context.Background(), time.Hour) + defer cancel() + opts := executor.Options{} + err := c.exec.ExecTxn(newctx, + func(exec executor.TxnExecutor) error { + for { + select { + case <-ctx.Done(): + return nil + case e2 := <-errch: + return e2 + case sql, ok := <-c.sqlBufSendCh: + if !ok { + // channel closed + return r.UpdateWatermark(exec, opts.StatementOption()) + } + + // update SQL + res, err := exec.Exec(string(sql), opts.StatementOption()) + if err != nil { + return err + } + res.Close() + } + } + }, opts) + if err != nil { + errch <- err + return + } + } + +} + func (c *IndexConsumer) Consume(ctx context.Context, r DataRetriever) error { noMoreData := false var insertBatch, deleteBatch *AtomicBatch @@ -139,71 +209,7 @@ func (c *IndexConsumer) Consume(ctx context.Context, r DataRetriever) error { wg.Add(1) go func() { defer wg.Done() - - if datatype == 0 { - // SNAPSHOT - for { - select { - case <-ctx.Done(): - return - case e2 := <-errch: - errch <- e2 - return - case sql, ok := <-c.sqlBufSendCh: - if !ok { - return - } - func() { - newctx, cancel := context.WithTimeout(context.Background(), time.Hour) - defer cancel() - //os.Stderr.WriteString("Wait for BEGIN but sql. execute anyway\n") - opts := executor.Options{} - res, err := c.exec.Exec(newctx, string(sql), opts) - if err != nil { - logutil.Errorf("cdc indexConsumer(%v) send sql failed, err: %v, sql: %s", c.dbTblInfo, err, string(sql)) - os.Stderr.WriteString(fmt.Sprintf("sql executor run failed. %s\n", string(sql))) - os.Stderr.WriteString(fmt.Sprintf("err :%v\n", err)) - errch <- err - } - res.Close() - }() - } - } - - } else { - // TAIL - newctx, cancel := context.WithTimeout(context.Background(), time.Hour) - defer cancel() - opts := executor.Options{} - err := c.exec.ExecTxn(newctx, - func(exec executor.TxnExecutor) error { - for { - select { - case <-ctx.Done(): - return nil - case e2 := <-errch: - return e2 - case sql, ok := <-c.sqlBufSendCh: - if !ok { - // channel closed - return r.UpdateWatermark(exec, opts.StatementOption()) - } - - // update SQL - res, err := exec.Exec(string(sql), opts.StatementOption()) - if err != nil { - return err - } - res.Close() - } - } - }, opts) - if err != nil { - errch <- err - return - } - } - + c.run(ctx, errch, r) }() // read data From 06af88a96a8e710dc9d25a1f1227168420578db3 Mon Sep 17 00:00:00 2001 From: cpegeric Date: Tue, 1 Jul 2025 12:01:59 +0100 Subject: [PATCH 197/223] update --- pkg/cdc/consumer.go | 25 +++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/pkg/cdc/consumer.go b/pkg/cdc/consumer.go index 5009f7262e074..a2a72b0cb84f3 100644 --- a/pkg/cdc/consumer.go +++ b/pkg/cdc/consumer.go @@ -79,7 +79,6 @@ type IndexConsumer struct { rowdata []any rowdelete []any sqlBufSendCh chan []byte - done chan bool } var _ Consumer = new(IndexConsumer) @@ -113,15 +112,14 @@ func NewIndexConsumer(cnUUID string, sqlwriter, err := NewIndexSqlWriter(ie.algo, dbTblInfo, tableDef, ie.indexes) c := &IndexConsumer{cnUUID: cnUUID, - info: info, - dbTblInfo: dbTblInfo, - tableDef: tableDef, - sqlWriter: sqlwriter, - exec: exec, - rowdata: make([]any, len(tableDef.Cols)), - rowdelete: make([]any, 1), - sqlBufSendCh: make(chan []byte), - done: make(chan bool), + info: info, + dbTblInfo: dbTblInfo, + tableDef: tableDef, + sqlWriter: sqlwriter, + exec: exec, + rowdata: make([]any, len(tableDef.Cols)), + rowdelete: make([]any, 1), + //sqlBufSendCh: make(chan []byte), } return c, nil @@ -202,6 +200,13 @@ func (c *IndexConsumer) Consume(ctx context.Context, r DataRetriever) error { var insertBatch, deleteBatch *AtomicBatch errch := make(chan error, 2) var err error + + c.sqlBufSendCh = make(chan []byte) + defer func() { + c.sqlBufSendCh = nil + c.sqlWriter.Reset() + }() + datatype := r.GetDataType() // create thread to poll sql From c72197d89f3a5f7c0ec49893140db19f86ef3698 Mon Sep 17 00:00:00 2001 From: cpegeric Date: Tue, 1 Jul 2025 12:15:39 +0100 Subject: [PATCH 198/223] move to idxcdc --- pkg/idxcdc/consumer.go | 448 ++++++++++++++++++ pkg/idxcdc/consumer_test.go | 109 +++++ pkg/idxcdc/index_sqlwriter.go | 647 +++++++++++++++++++++++++ pkg/idxcdc/types.go | 527 +++++++++++++++++++++ pkg/idxcdc/util.go | 861 ++++++++++++++++++++++++++++++++++ 5 files changed, 2592 insertions(+) create mode 100644 pkg/idxcdc/consumer.go create mode 100644 pkg/idxcdc/consumer_test.go create mode 100644 pkg/idxcdc/index_sqlwriter.go create mode 100644 pkg/idxcdc/types.go create mode 100644 pkg/idxcdc/util.go diff --git a/pkg/idxcdc/consumer.go b/pkg/idxcdc/consumer.go new file mode 100644 index 0000000000000..d0d1b3bbb6c50 --- /dev/null +++ b/pkg/idxcdc/consumer.go @@ -0,0 +1,448 @@ +// Copyright 2024 Matrix Origin +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package cdc + +import ( + "context" + "fmt" + "os" + "sync" + "time" + + "github.com/matrixorigin/matrixone/pkg/catalog" + "github.com/matrixorigin/matrixone/pkg/common/moerr" + "github.com/matrixorigin/matrixone/pkg/common/runtime" + "github.com/matrixorigin/matrixone/pkg/logutil" + "github.com/matrixorigin/matrixone/pkg/pb/plan" + "github.com/matrixorigin/matrixone/pkg/util/executor" + "github.com/matrixorigin/matrixone/pkg/vectorindex" +) + +type IndexEntry struct { + algo string + indexes []*plan.IndexDef +} + +var sqlExecutorFactory = _sqlExecutorFactory + +func _sqlExecutorFactory(cnUUID string) (executor.SQLExecutor, error) { + // sql executor + v, ok := runtime.ServiceRuntime(cnUUID).GetGlobalVariables(runtime.InternalSQLExecutor) + if !ok { + //os.Stderr.WriteString(fmt.Sprintf("sql executor create failed. cnUUID = %s\n", cnUUID)) + return nil, moerr.NewNotSupportedNoCtx("no implement sqlExecutor") + } + exec := v.(executor.SQLExecutor) + return exec, nil +} + +type DataRetriever interface { + Next() (insertBatch *AtomicBatch, deleteBatch *AtomicBatch, noMoreData bool, err error) + UpdateWatermark(executor.TxnExecutor, executor.StatementOption) error + GetDataType() int8 +} + +type TxnRetriever struct { +} + +func (r *TxnRetriever) Next() (insertBatch *AtomicBatch, deleteBatch *AtomicBatch, noMoreData bool, err error) { + logutil.Infof("TxRetriever Next()") + return nil, nil, true, nil +} + +func (r *TxnRetriever) UpdateWatermark(executor.TxnExecutor, executor.StatementOption) error { + logutil.Infof("TxnRetriever.UpdateWatermark()") + return nil +} + +func (r *TxnRetriever) GetDataType() int8 { + return 0 +} + +var _ DataRetriever = new(TxnRetriever) + +func NewTxnRetriever() DataRetriever { + return &TxnRetriever{} +} + +type ConsumerInfo struct { + ConsumerType int8 + TableName string + DbName string + IndexName string +} + +type Consumer interface { + Consume(context.Context, DataRetriever) error +} + +type IndexConsumer struct { + cnUUID string + info *ConsumerInfo + dbTblInfo *DbTableInfo + tableDef *plan.TableDef + sqlWriter IndexSqlWriter + exec executor.SQLExecutor + rowdata []any + rowdelete []any + sqlBufSendCh chan []byte +} + +var _ Consumer = new(IndexConsumer) + +func NewIndexConsumer(cnUUID string, + tableDef *plan.TableDef, + info *ConsumerInfo) (Consumer, error) { + + exec, err := sqlExecutorFactory(cnUUID) + if err != nil { + return nil, err + } + + dbTblInfo := &DbTableInfo{SinkDbName: info.DbName, SinkTblName: info.TableName} + + ie := &IndexEntry{indexes: make([]*plan.IndexDef, 0, 3)} + + for _, idx := range tableDef.Indexes { + if idx.TableExist && (catalog.IsHnswIndexAlgo(idx.IndexAlgo) || catalog.IsIvfIndexAlgo(idx.IndexAlgo) || catalog.IsFullTextIndexAlgo(idx.IndexAlgo)) { + key := idx.IndexName + if key == info.IndexName { + if len(ie.algo) == 0 { + ie.algo = idx.IndexAlgo + } + ie.indexes = append(ie.indexes, idx) + } + } + + } + + sqlwriter, err := NewIndexSqlWriter(ie.algo, dbTblInfo, tableDef, ie.indexes) + + c := &IndexConsumer{cnUUID: cnUUID, + info: info, + dbTblInfo: dbTblInfo, + tableDef: tableDef, + sqlWriter: sqlwriter, + exec: exec, + rowdata: make([]any, len(tableDef.Cols)), + rowdelete: make([]any, 1), + //sqlBufSendCh: make(chan []byte), + } + + return c, nil +} + +func (c *IndexConsumer) run(ctx context.Context, errch chan error, r DataRetriever) { + + datatype := r.GetDataType() + + if datatype == 0 { + // SNAPSHOT + for { + select { + case <-ctx.Done(): + return + case e2 := <-errch: + errch <- e2 + return + case sql, ok := <-c.sqlBufSendCh: + if !ok { + return + } + func() { + newctx, cancel := context.WithTimeout(context.Background(), time.Hour) + defer cancel() + //os.Stderr.WriteString("Wait for BEGIN but sql. execute anyway\n") + opts := executor.Options{} + res, err := c.exec.Exec(newctx, string(sql), opts) + if err != nil { + logutil.Errorf("cdc indexConsumer(%v) send sql failed, err: %v, sql: %s", c.dbTblInfo, err, string(sql)) + os.Stderr.WriteString(fmt.Sprintf("sql executor run failed. %s\n", string(sql))) + os.Stderr.WriteString(fmt.Sprintf("err :%v\n", err)) + errch <- err + } + res.Close() + }() + } + } + + } else { + // TAIL + newctx, cancel := context.WithTimeout(context.Background(), time.Hour) + defer cancel() + opts := executor.Options{} + err := c.exec.ExecTxn(newctx, + func(exec executor.TxnExecutor) error { + for { + select { + case <-ctx.Done(): + return nil + case e2 := <-errch: + return e2 + case sql, ok := <-c.sqlBufSendCh: + if !ok { + // channel closed + return r.UpdateWatermark(exec, opts.StatementOption()) + } + + // update SQL + res, err := exec.Exec(string(sql), opts.StatementOption()) + if err != nil { + return err + } + res.Close() + } + } + }, opts) + if err != nil { + errch <- err + return + } + } + +} + +func (c *IndexConsumer) Consume(ctx context.Context, r DataRetriever) error { + noMoreData := false + var insertBatch, deleteBatch *AtomicBatch + errch := make(chan error, 2) + var err error + + c.sqlBufSendCh = make(chan []byte) + defer func() { + c.sqlBufSendCh = nil + c.sqlWriter.Reset() + }() + + datatype := r.GetDataType() + + // create thread to poll sql + var wg sync.WaitGroup + wg.Add(1) + go func() { + defer wg.Done() + c.run(ctx, errch, r) + }() + + // read data + for !noMoreData { + + insertBatch, deleteBatch, noMoreData, err = r.Next() + if err != nil { + errch <- err + noMoreData = true + continue + } + + if noMoreData { + close(c.sqlBufSendCh) + continue + } + + // update index + + if datatype == 0 { + // SNAPSHOT + err := c.sinkSnapshot(ctx, insertBatch) + if err != nil { + // error out + errch <- err + noMoreData = true + } + + } else { + // sinkTail will save sql to the slice + err := c.sinkTail(ctx, insertBatch, deleteBatch) + if err != nil { + // error out + errch <- err + noMoreData = true + } + } + + } + + wg.Wait() + + if len(errch) > 0 { + return <-errch + } + + return nil +} + +func (c *IndexConsumer) sinkSnapshot(ctx context.Context, upsertBatch *AtomicBatch) error { + var err error + + for _, bat := range upsertBatch.Batches { + for i := 0; i < batchRowCount(bat); i++ { + if err = extractRowFromEveryVector(ctx, bat, i, c.rowdata); err != nil { + return err + } + + err = c.sqlWriter.Upsert(ctx, c.rowdata) + if err != nil { + return err + } + + if c.sqlWriter.Full() { + err = c.sendSql(c.sqlWriter) + if err != nil { + return err + } + } + } + } + + return nil +} + +// upsertBatch and deleteBatch is sorted by ts +// for the same ts, delete first, then upsert +func (c *IndexConsumer) sinkTail(ctx context.Context, upsertBatch, deleteBatch *AtomicBatch) error { + var err error + + upsertIter := upsertBatch.GetRowIterator().(*atomicBatchRowIter) + deleteIter := deleteBatch.GetRowIterator().(*atomicBatchRowIter) + defer func() { + upsertIter.Close() + deleteIter.Close() + }() + + // output sql until one iterator reach the end + upsertIterHasNext, deleteIterHasNext := upsertIter.Next(), deleteIter.Next() + for upsertIterHasNext && deleteIterHasNext { + upsertItem, deleteItem := upsertIter.Item(), deleteIter.Item() + // compare ts, ignore pk + if upsertItem.Ts.LT(&deleteItem.Ts) { + if err = c.sinkUpsert(ctx, upsertIter); err != nil { + return err + } + // get next item + upsertIterHasNext = upsertIter.Next() + } else { + if err = c.sinkDelete(ctx, deleteIter); err != nil { + return err + } + // get next item + deleteIterHasNext = deleteIter.Next() + } + } + + // output the rest of upsert iterator + for upsertIterHasNext { + if err = c.sinkUpsert(ctx, upsertIter); err != nil { + return err + } + // get next item + upsertIterHasNext = upsertIter.Next() + } + + // output the rest of delete iterator + for deleteIterHasNext { + if err = c.sinkDelete(ctx, deleteIter); err != nil { + return err + } + // get next item + deleteIterHasNext = deleteIter.Next() + } + c.flushCdc() + return nil +} + +func (c *IndexConsumer) sinkUpsert(ctx context.Context, upsertIter *atomicBatchRowIter) (err error) { + + // get row from the batch + if err = upsertIter.Row(ctx, c.rowdata); err != nil { + return err + } + + if !c.sqlWriter.CheckLastOp(vectorindex.CDC_UPSERT) { + // last op is not UPSERT, sendSql first + // send SQL + err = c.sendSql(c.sqlWriter) + if err != nil { + return err + } + + } + + c.sqlWriter.Upsert(ctx, c.rowdata) + + if c.sqlWriter.Full() { + // send SQL + err = c.sendSql(c.sqlWriter) + if err != nil { + return err + } + } + + return nil +} + +func (c *IndexConsumer) sinkDelete(ctx context.Context, deleteIter *atomicBatchRowIter) (err error) { + + // get row from the batch + if err = deleteIter.Row(ctx, c.rowdelete); err != nil { + return err + } + + if !c.sqlWriter.CheckLastOp(vectorindex.CDC_DELETE) { + // last op is not DELETE, sendSql first + // send SQL + err = c.sendSql(c.sqlWriter) + if err != nil { + return err + } + + } + + c.sqlWriter.Delete(ctx, c.rowdelete) + + if c.sqlWriter.Full() { + // send SQL + err = c.sendSql(c.sqlWriter) + if err != nil { + return err + } + } + + return nil +} + +func (c *IndexConsumer) sendSql(writer IndexSqlWriter) error { + if writer.Empty() { + return nil + } + + // generate sql from cdc + sql, err := writer.ToSql() + if err != nil { + return err + } + + c.sqlBufSendCh <- sql + os.Stderr.WriteString(string(sql)) + os.Stderr.WriteString("\n") + + // reset + writer.Reset() + + return nil +} + +func (c *IndexConsumer) flushCdc() error { + return c.sendSql(c.sqlWriter) +} diff --git a/pkg/idxcdc/consumer_test.go b/pkg/idxcdc/consumer_test.go new file mode 100644 index 0000000000000..fb236f965a5bc --- /dev/null +++ b/pkg/idxcdc/consumer_test.go @@ -0,0 +1,109 @@ +// Copyright 2024 Matrix Origin +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package cdc + +import ( + "context" + "testing" + + "github.com/matrixorigin/matrixone/pkg/catalog" + "github.com/matrixorigin/matrixone/pkg/container/types" + "github.com/matrixorigin/matrixone/pkg/pb/plan" + "github.com/matrixorigin/matrixone/pkg/util/executor" + "github.com/prashantv/gostub" + "github.com/stretchr/testify/require" +) + +func newTestTableDef(pkName string, pkType types.T, vecColName string, vecType types.T, vecWidth int32) *plan.TableDef { + return &plan.TableDef{ + Name: "test_orig_tbl", + Name2ColIndex: map[string]int32{ + pkName: 0, + vecColName: 1, + "dummy": 2, // Add another col to make sure pk/vec col indices are used + }, + Cols: []*plan.ColDef{ + {Name: pkName, Typ: plan.Type{Id: int32(pkType)}}, + {Name: vecColName, Typ: plan.Type{Id: int32(vecType), Width: vecWidth}}, + {Name: "dummy", Typ: plan.Type{Id: int32(types.T_int32)}}, + }, + Pkey: &plan.PrimaryKeyDef{ + Names: []string{pkName}, + PkeyColName: pkName, + }, + Indexes: []*plan.IndexDef{ + { + IndexName: "hnsw_idx", + TableExist: true, + IndexAlgo: catalog.MoIndexHnswAlgo.ToString(), + IndexAlgoTableType: catalog.Hnsw_TblType_Metadata, + IndexTableName: "meta_tbl", + Parts: []string{vecColName}, + IndexAlgoParams: `{"m":"16","ef_construction":"200","ef_search":"100","op_type":"vector_l2_ops"}`, + }, + { + IndexName: "hnsw_idx", + TableExist: true, + IndexAlgo: catalog.MoIndexHnswAlgo.ToString(), + IndexAlgoTableType: catalog.Hnsw_TblType_Storage, + IndexTableName: "storage_tbl", + Parts: []string{vecColName}, + IndexAlgoParams: `{"m":"16","ef_construction":"200","ef_search":"100","op_type":"vector_l2_ops"}`, + }, + }, + } +} + +type MockSQLExecutor struct { +} + +// Exec exec a sql in a exists txn. +func (exec MockSQLExecutor) Exec(ctx context.Context, sql string, opts executor.Options) (executor.Result, error) { + + return executor.Result{}, nil +} + +var _ executor.SQLExecutor = new(MockSQLExecutor) + +func mockSqlExecutorFactory(uuid string) (executor.SQLExecutor, error) { + return MockSQLExecutor{}, nil +} + +// ExecTxn executor sql in a txn. execFunc can use TxnExecutor to exec multiple sql +// in a transaction. +// NOTE: Pass SQL stmts one by one to TxnExecutor.Exec(). If you pass multiple SQL stmts to +// TxnExecutor.Exec() as `\n` seperated string, it will only execute the first SQL statement causing Bug. +func (exec MockSQLExecutor) ExecTxn(ctx context.Context, execFunc func(txn executor.TxnExecutor) error, opts executor.Options) error { + return nil +} + +func TestConsumer(t *testing.T) { + ctx, cancel := context.WithCancel(context.Background()) + defer cancel() + + sqlexecstub := gostub.Stub(&sqlExecutorFactory, mockSqlExecutorFactory) + defer sqlexecstub.Reset() + + r := NewTxnRetriever() + + tblDef := newTestTableDef("pk", types.T_int64, "vec", types.T_array_float32, 4) + cnUUID := "a-b-c-d" + info := &ConsumerInfo{DbName: "db", TableName: "tbl", IndexName: "hnsw_idx"} + + consumer, err := NewIndexConsumer(cnUUID, tblDef, info) + require.NoError(t, err) + err = consumer.Consume(ctx, r) + require.NoError(t, err) +} diff --git a/pkg/idxcdc/index_sqlwriter.go b/pkg/idxcdc/index_sqlwriter.go new file mode 100644 index 0000000000000..57c1ce70dee07 --- /dev/null +++ b/pkg/idxcdc/index_sqlwriter.go @@ -0,0 +1,647 @@ +// Copyright 2024 Matrix Origin +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package cdc + +import ( + "context" + "encoding/json" + "fmt" + "strings" + + "github.com/matrixorigin/matrixone/pkg/catalog" + "github.com/matrixorigin/matrixone/pkg/common/moerr" + "github.com/matrixorigin/matrixone/pkg/container/types" + "github.com/matrixorigin/matrixone/pkg/pb/plan" + "github.com/matrixorigin/matrixone/pkg/vectorindex" +) + +const ( + MAX_CDC_DATA_SIZE = 8192 +) + +// IndexSqlWriter interface +type IndexSqlWriter interface { + CheckLastOp(op string) bool + Upsert(ctx context.Context, row []any) error + Insert(ctx context.Context, row []any) error + Delete(ctx context.Context, row []any) error + Full() bool + ToSql() ([]byte, error) + Reset() + Empty() bool +} + +// Base implementation of IVFFLAT and FULLTEXT. Their implementation are simliar. +type BaseIndexSqlWriter struct { + lastCdcOp string + vbuf []byte + ndata int + param string + tabledef *plan.TableDef + indexdef []*plan.IndexDef + dbTblInfo *DbTableInfo + algo string + pkPos int32 + pkType *types.Type + partsPos []int32 + partsType []*types.Type + srcPos []int32 + srcType []*types.Type + dbName string +} + +// Fulltext Sql Writer. Only one hidden secondary index table +type FulltextSqlWriter struct { + BaseIndexSqlWriter + indexTableName string +} + +// Ivfflat Sql writer. Three hidden secondary index tables +type IvfflatSqlWriter struct { + BaseIndexSqlWriter + centroids_tbl string + entries_tbl string + meta_tbl string + ivfparam vectorindex.IvfParam +} + +// Hnsw Sql Writer. Use the vectorindex.VectorIndeXCdc JSON format +type HnswSqlWriter[T types.RealNumbers] struct { + cdc *vectorindex.VectorIndexCdc[T] + meta vectorindex.HnswCdcParam + tabledef *plan.TableDef + indexdef []*plan.IndexDef + dbTblInfo *DbTableInfo + pkPos int32 + pkType *types.Type + partsPos []int32 + partsType []*types.Type + srcPos []int32 + srcType []*types.Type + dbName string +} + +// check FulltextSqlWriter is the interface of IndexSqlWriter +var _ IndexSqlWriter = new(FulltextSqlWriter) +var _ IndexSqlWriter = new(IvfflatSqlWriter) +var _ IndexSqlWriter = new(HnswSqlWriter[float32]) + +// check algo type to return the correct sql writer +func NewIndexSqlWriter(algo string, dbTblInfo *DbTableInfo, tabledef *plan.TableDef, indexdef []*plan.IndexDef) (IndexSqlWriter, error) { + algo = catalog.ToLower(algo) + switch algo { + case catalog.MOIndexFullTextAlgo.ToString(): + return NewFulltextSqlWriter(algo, dbTblInfo, tabledef, indexdef) + case catalog.MoIndexIvfFlatAlgo.ToString(): + return NewIvfflatSqlWriter(algo, dbTblInfo, tabledef, indexdef) + case catalog.MoIndexHnswAlgo.ToString(): + return NewHnswSqlWriter(algo, dbTblInfo, tabledef, indexdef) + default: + return IndexSqlWriter(nil), moerr.NewInternalErrorNoCtx("IndexSqlWriter: invalid algo type") + + } +} + +// Implementation of Base Index SqlWriter +func (w *BaseIndexSqlWriter) Full() bool { + return w.ndata >= MAX_CDC_DATA_SIZE +} + +// return true when last op is empty or last op == current op +func (w *BaseIndexSqlWriter) CheckLastOp(op string) bool { + return len(w.lastCdcOp) == 0 || w.lastCdcOp == op +} + +func (w *BaseIndexSqlWriter) writeRow(ctx context.Context, row []any) error { + var err error + + w.vbuf = appendString(w.vbuf, "ROW(") + + // pk + if w.tabledef.Pkey.PkeyColName == catalog.CPrimaryKeyColName { + cpkType := &types.Type{Oid: types.T_varbinary, Width: w.pkType.Width, Scale: w.pkType.Scale} + w.vbuf, err = convertColIntoSql(ctx, row[w.pkPos], cpkType, w.vbuf) + if err != nil { + return err + } + } else { + w.vbuf, err = convertColIntoSql(ctx, row[w.pkPos], w.pkType, w.vbuf) + if err != nil { + return err + } + } + + for i, t := range w.partsType { + w.vbuf = appendString(w.vbuf, ",") + pos := w.partsPos[i] + w.vbuf, err = convertColIntoSql(ctx, row[pos], t, w.vbuf) + if err != nil { + return err + } + } + + w.vbuf = appendString(w.vbuf, ")") + w.ndata += 1 + return nil +} + +func (w *BaseIndexSqlWriter) writeDeleteRow(ctx context.Context, row []any) error { + var err error + + if w.tabledef.Pkey.PkeyColName == catalog.CPrimaryKeyColName { + cpkType := &types.Type{Oid: types.T_varbinary, Width: w.pkType.Width, Scale: w.pkType.Scale} + w.vbuf, err = convertColIntoSql(ctx, row[0], cpkType, w.vbuf) + if err != nil { + return err + } + } else { + w.vbuf, err = convertColIntoSql(ctx, row[0], w.pkType, w.vbuf) + if err != nil { + return err + } + + } + w.ndata += 1 + return nil +} + +func (w *BaseIndexSqlWriter) Upsert(ctx context.Context, row []any) error { + + if len(w.lastCdcOp) == 0 { + // init + w.lastCdcOp = vectorindex.CDC_UPSERT + return w.writeRow(ctx, row) + + } + + if w.lastCdcOp != vectorindex.CDC_UPSERT { + // different from previous operation and generate SQL before append new UPSERT + return moerr.NewInternalErrorNoCtx("FulltextSqlWriter.Upsert: append different op") + } + + // same as previous operation and append to VALUES ROW(), ROW(),... + w.vbuf = appendString(w.vbuf, ",") + return w.writeRow(ctx, row) +} + +func (w *BaseIndexSqlWriter) Insert(ctx context.Context, row []any) error { + + if len(w.lastCdcOp) == 0 { + // init + w.lastCdcOp = vectorindex.CDC_INSERT + return w.writeRow(ctx, row) + + } + + if w.lastCdcOp != vectorindex.CDC_INSERT { + // different from previous operation and generate SQL before append new UPSERT + return moerr.NewInternalErrorNoCtx("FulltextSqlWriter.Insert: append different op") + } + + // same as previous operation and append to VALUES ROW(), ROW(),... + w.vbuf = appendString(w.vbuf, ",") + return w.writeRow(ctx, row) +} + +func (w *BaseIndexSqlWriter) Delete(ctx context.Context, row []any) error { + + if len(w.lastCdcOp) == 0 { + // init + w.lastCdcOp = vectorindex.CDC_DELETE + return w.writeDeleteRow(ctx, row) + } + + if w.lastCdcOp != vectorindex.CDC_DELETE { + // different from previous operation and generate SQL before append new UPSERT + return moerr.NewInternalErrorNoCtx("FulltextSqlWriter.Delete: append different op") + } + + // same as previous operation and append to IN () + w.vbuf = appendString(w.vbuf, ",") + return w.writeDeleteRow(ctx, row) +} + +func (w *BaseIndexSqlWriter) Reset() { + w.lastCdcOp = "" + w.vbuf = w.vbuf[:0] + w.ndata = 0 +} + +func (w *BaseIndexSqlWriter) Empty() bool { + return len(w.vbuf) == 0 +} + +// New Fulltext Sql Writer +func NewFulltextSqlWriter(algo string, dbTblInfo *DbTableInfo, tabledef *plan.TableDef, indexdef []*plan.IndexDef) (IndexSqlWriter, error) { + w := &FulltextSqlWriter{BaseIndexSqlWriter: BaseIndexSqlWriter{algo: algo, tabledef: tabledef, indexdef: indexdef, dbTblInfo: dbTblInfo, vbuf: make([]byte, 0, 1024)}} + + w.pkPos = tabledef.Name2ColIndex[tabledef.Pkey.PkeyColName] + typ := tabledef.Cols[w.pkPos].Typ + w.pkType = &types.Type{Oid: types.T(typ.Id), Width: typ.Width, Scale: typ.Scale} + + nparts := len(w.indexdef[0].Parts) + w.partsPos = make([]int32, nparts) + w.partsType = make([]*types.Type, nparts) + + for i, part := range w.indexdef[0].Parts { + w.partsPos[i] = tabledef.Name2ColIndex[part] + typ = tabledef.Cols[w.partsPos[i]].Typ + w.partsType[i] = &types.Type{Oid: types.T(typ.Id), Width: typ.Width, Scale: typ.Scale} + } + + w.srcPos = make([]int32, nparts+1) + w.srcType = make([]*types.Type, nparts+1) + + w.srcPos[0] = w.pkPos + w.srcType[0] = w.pkType + for i := range w.partsType { + w.srcPos[i+1] = w.partsPos[i] + w.srcType[i+1] = w.partsType[i] + } + + w.indexTableName = w.indexdef[0].IndexTableName + w.dbName = tabledef.DbName + + return w, nil +} + +// with src as (select cast(serial(cast(column_0 as bigint), cast(column_1 as bigint)) as varchar) as id, column_2 as body, column_3 as title from +// (values row(1, 2, 'body', 'title'), row(2, 3, 'body is heavy', 'I do not know'))) select f.* from src +// cross apply fulltext_index_tokenize('{"parser":"ngram"}', 61, id, body, title) as f; +func (w *FulltextSqlWriter) ToSql() ([]byte, error) { + defer w.Reset() + + if len(w.lastCdcOp) == 0 { + return nil, nil + } + + switch w.lastCdcOp { + case vectorindex.CDC_DELETE: + return w.toFulltextDelete() + case vectorindex.CDC_UPSERT: + return w.toFulltextUpsert(true) + case vectorindex.CDC_INSERT: + return w.toFulltextUpsert(false) + default: + return nil, moerr.NewInternalErrorNoCtx("FulltextSqlWriter: invalid CDC type") + } +} + +func (w *FulltextSqlWriter) toFulltextDelete() ([]byte, error) { + sql := fmt.Sprintf("DELETE FROM `%s`.`%s` WHERE `%s` IN (%s)", w.dbTblInfo.SinkDbName, w.indexTableName, catalog.FullTextIndex_TabCol_Id, string(w.vbuf)) + return []byte(sql), nil +} + +func (w *FulltextSqlWriter) toFulltextUpsert(upsert bool) ([]byte, error) { + + var sql string + + coldefs := make([]string, 0, len(w.srcPos)) + cnames := make([]string, 0, len(w.srcPos)) + for i, pos := range w.srcPos { + typstr := w.srcType[i].DescString() + coldefs = append(coldefs, fmt.Sprintf("CAST(column_%d as %s) as `%s`", i, typstr, w.tabledef.Cols[pos].Name)) + cnames = append(cnames, w.tabledef.Cols[pos].Name) + } + + cols := strings.Join(coldefs, ", ") + cnames_str := strings.Join(cnames, ", ") + + if !upsert { + sql += fmt.Sprintf("REPLACE INTO `%s`.`%s` ", w.dbName, w.indexTableName) + } else { + sql += fmt.Sprintf("INSERT INTO `%s`.`%s` ", w.dbName, w.indexTableName) + } + + sql += fmt.Sprintf("WITH src as (SELECT %s FROM (VALUES %s)) ", cols, string(w.vbuf)) + sql += fmt.Sprintf("SELECT f.* FROM src CROSS APPLY fulltext_index_tokenize('%s', %d, %s) as f", w.param, w.pkType.Oid, cnames_str) + + return []byte(sql), nil +} + +// Implementation of HNSW Sql writer +func NewHnswSqlWriter(algo string, dbTblInfo *DbTableInfo, tabledef *plan.TableDef, indexdef []*plan.IndexDef) (IndexSqlWriter, error) { + w := &HnswSqlWriter[float32]{tabledef: tabledef, indexdef: indexdef, dbTblInfo: dbTblInfo, cdc: vectorindex.NewVectorIndexCdc[float32]()} + + // check the tabledef and indexdef + if len(tabledef.Pkey.Names) != 1 { + return nil, moerr.NewInternalErrorNoCtx("hnsw index table only have one primary key") + } + + if len(indexdef) != 2 { + return nil, moerr.NewInternalErrorNoCtx("hnsw index table must have 2 secondary tables") + } + + idxdef := indexdef[0] + if len(idxdef.Parts) != 1 { + return nil, moerr.NewInternalErrorNoCtx("hnsw index table only have one vector part") + } + + paramstr := idxdef.IndexAlgoParams + var meta, storage string + for _, idx := range indexdef { + if idx.IndexAlgoTableType == catalog.Hnsw_TblType_Metadata { + meta = idx.IndexTableName + } + if idx.IndexAlgoTableType == catalog.Hnsw_TblType_Storage { + storage = idx.IndexTableName + } + } + + if len(meta) == 0 || len(storage) == 0 { + return nil, moerr.NewInternalErrorNoCtx("hnsw index table either meta or storage hidden index table not exist") + } + + var hnswparam vectorindex.HnswParam + if len(paramstr) > 0 { + err := json.Unmarshal([]byte(paramstr), &hnswparam) + if err != nil { + return nil, moerr.NewInternalErrorNoCtx("hnsw sync sinker. failed to convert hnsw param json") + } + } + + w.pkPos = tabledef.Name2ColIndex[tabledef.Pkey.PkeyColName] + typ := tabledef.Cols[w.pkPos].Typ + w.pkType = &types.Type{Oid: types.T(typ.Id), Width: typ.Width, Scale: typ.Scale} + + if w.pkType.Oid != types.T_int64 { + return nil, moerr.NewInternalErrorNoCtx("NewHnswSqlWriter: primary key is not bigint") + } + + nparts := len(idxdef.Parts) + w.partsPos = make([]int32, nparts) + w.partsType = make([]*types.Type, nparts) + + for i, part := range idxdef.Parts { + w.partsPos[i] = tabledef.Name2ColIndex[part] + typ = tabledef.Cols[w.partsPos[i]].Typ + w.partsType[i] = &types.Type{Oid: types.T(typ.Id), Width: typ.Width, Scale: typ.Scale} + } + + if w.partsType[0].Oid != types.T_array_float32 { + return nil, moerr.NewInternalErrorNoCtx("NewHnswSqlWriter: part is not vecf32") + } + + w.srcPos = make([]int32, nparts+1) + w.srcType = make([]*types.Type, nparts+1) + + w.srcPos[0] = w.pkPos + w.srcType[0] = w.pkType + for i := range w.partsType { + w.srcPos[i+1] = w.partsPos[i] + w.srcType[i+1] = w.partsType[i] + } + + w.dbName = tabledef.DbName + + w.meta = vectorindex.HnswCdcParam{ + MetaTbl: meta, + IndexTbl: storage, + DbName: dbTblInfo.SinkDbName, + Table: dbTblInfo.SinkTblName, + Params: hnswparam, + Dimension: tabledef.Cols[w.partsPos[0]].Typ.Width, + } + + return w, nil +} + +func (w *HnswSqlWriter[T]) Reset() { + w.cdc.Data = w.cdc.Data[:0] +} + +func (w *HnswSqlWriter[T]) Full() bool { + return len(w.cdc.Data) >= cap(w.cdc.Data) +} + +func (w *HnswSqlWriter[T]) Empty() bool { + return len(w.cdc.Data) == 0 +} + +func (w *HnswSqlWriter[T]) CheckLastOp(op string) bool { + return true +} + +func (w *HnswSqlWriter[T]) Insert(ctx context.Context, row []any) error { + key, ok := row[w.pkPos].(int64) + if !ok { + return moerr.NewInternalError(ctx, "invalid key type. not int64") + } + v, ok := row[w.partsPos[0]].([]T) + if !ok { + return moerr.NewInternalError(ctx, "invalid vector type. not []float32") + } + + if v == nil { + // vector is nil, do Delete + w.cdc.Delete(key) + return nil + } + + w.cdc.Insert(key, v) + return nil +} + +func (w *HnswSqlWriter[T]) Upsert(ctx context.Context, row []any) error { + key, ok := row[w.pkPos].(int64) + if !ok { + return moerr.NewInternalError(ctx, "invalid key type. not int64") + } + v, ok := row[w.partsPos[0]].([]T) + if !ok { + return moerr.NewInternalError(ctx, "invalid vector type. not []float32") + } + + if v == nil { + // vector is nil, do Delete + w.cdc.Delete(key) + return nil + } + + w.cdc.Upsert(key, v) + return nil +} + +func (w *HnswSqlWriter[T]) Delete(ctx context.Context, row []any) error { + // first column is the primary key + key, ok := row[0].(int64) + if !ok { + return moerr.NewInternalError(ctx, "invalid key type. not int64") + } + w.cdc.Delete(key) + return nil +} + +func (w *HnswSqlWriter[T]) ToSql() ([]byte, error) { + + // generate sql from cdc + js, err := w.cdc.ToJson() + if err != nil { + return nil, err + } + // pad extra space at the front and send SQL + sql := fmt.Sprintf("SELECT hnsw_cdc_update('%s', '%s', %d, '%s');", w.meta.DbName, w.meta.Table, w.meta.Dimension, js) + + return []byte(sql), nil +} + +// Implementation of Ivfflat Sql writer +func NewIvfflatSqlWriter(algo string, dbTblInfo *DbTableInfo, tabledef *plan.TableDef, indexdef []*plan.IndexDef) (IndexSqlWriter, error) { + w := &IvfflatSqlWriter{BaseIndexSqlWriter: BaseIndexSqlWriter{algo: algo, tabledef: tabledef, indexdef: indexdef, dbTblInfo: dbTblInfo, vbuf: make([]byte, 0, 1024)}} + + if len(indexdef) != 3 { + return nil, moerr.NewInternalErrorNoCtx("ivf index table must have 3 secondary tables") + } + + idxdef := indexdef[0] + if len(idxdef.Parts) != 1 { + return nil, moerr.NewInternalErrorNoCtx("ivf index table only have one vector part") + } + + paramstr := idxdef.IndexAlgoParams + var centroids_tbl, entries_tbl, meta_tbl string + for _, idx := range indexdef { + if idx.IndexAlgoTableType == catalog.SystemSI_IVFFLAT_TblType_Metadata { + meta_tbl = idx.IndexTableName + } + if idx.IndexAlgoTableType == catalog.SystemSI_IVFFLAT_TblType_Centroids { + centroids_tbl = idx.IndexTableName + } + if idx.IndexAlgoTableType == catalog.SystemSI_IVFFLAT_TblType_Entries { + entries_tbl = idx.IndexTableName + } + } + + if len(centroids_tbl) == 0 || len(entries_tbl) == 0 || len(meta_tbl) == 0 { + return nil, moerr.NewInternalErrorNoCtx("ivf index table either meta or centroids or entries hidden index table not exist") + } + + var ivfparam vectorindex.IvfParam + if len(paramstr) > 0 { + err := json.Unmarshal([]byte(paramstr), &ivfparam) + if err != nil { + return nil, moerr.NewInternalErrorNoCtx("ivf sync sinker. failed to convert ivf param json") + } + } + + w.ivfparam = ivfparam + + w.pkPos = tabledef.Name2ColIndex[tabledef.Pkey.PkeyColName] + typ := tabledef.Cols[w.pkPos].Typ + w.pkType = &types.Type{Oid: types.T(typ.Id), Width: typ.Width, Scale: typ.Scale} + + nparts := len(w.indexdef[0].Parts) + w.partsPos = make([]int32, nparts) + w.partsType = make([]*types.Type, nparts) + + for i, part := range w.indexdef[0].Parts { + w.partsPos[i] = tabledef.Name2ColIndex[part] + typ = tabledef.Cols[w.partsPos[i]].Typ + w.partsType[i] = &types.Type{Oid: types.T(typ.Id), Width: typ.Width, Scale: typ.Scale} + } + + w.srcPos = make([]int32, nparts+1) + w.srcType = make([]*types.Type, nparts+1) + + w.srcPos[0] = w.pkPos + w.srcType[0] = w.pkType + for i := range w.partsType { + w.srcPos[i+1] = w.partsPos[i] + w.srcType[i+1] = w.partsType[i] + } + + w.centroids_tbl = centroids_tbl + w.entries_tbl = entries_tbl + w.meta_tbl = meta_tbl + + return w, nil +} + +// REPLACE INTO __mo_index_secondary_0197786c-285f-70cb-9337-e484a3ff92c4(__mo_index_centroid_fk_version, __mo_index_centroid_fk_id, __mo_index_pri_col, __mo_index_centroid_fk_entry) +// with centroid as (select * from __mo_index_secondary_0197786c-285f-70bb-b277-2cef56da590a where __mo_index_centroid_version = 0), +// src as (select column_0 as id, cast(column_1 as vecf32(3)) as embed from (values row(2005,'[0.4532634, 0.7297859, 0.48885703]'), row(2009, '[0.68150306, 0.6950923, 0.16590895] '))) +// select __mo_index_centroid_version, __mo_index_centroid_id, id, embed from src centroidx('vector_l2_ops') join centroid using (__mo_index_centroid, embed); +func (w *IvfflatSqlWriter) ToSql() ([]byte, error) { + defer w.Reset() + + if len(w.lastCdcOp) == 0 { + return nil, nil + } + + switch w.lastCdcOp { + case vectorindex.CDC_DELETE: + return w.toIvfflatDelete() + case vectorindex.CDC_UPSERT: + return w.toIvfflatUpsert(true) + case vectorindex.CDC_INSERT: + return w.toIvfflatUpsert(false) + default: + return nil, moerr.NewInternalErrorNoCtx("IvfflatSqlWriter: invalid CDC type") + } +} + +// catalog.SystemSI_IVFFLAT_TblCol_Entries_version +// catalog.SystemSI_IVFFLAT_TblCol_Entries_pk +// catalog.CPrimaryKeyColName +func (w *IvfflatSqlWriter) toIvfflatDelete() ([]byte, error) { + sql := fmt.Sprintf("DELETE FROM `%s`.`%s` WHERE `%s` IN (%s)", w.dbTblInfo.SinkDbName, w.entries_tbl, + catalog.SystemSI_IVFFLAT_TblCol_Entries_pk, + string(w.vbuf)) + return []byte(sql), nil + +} + +func (w *IvfflatSqlWriter) toIvfflatUpsert(upsert bool) ([]byte, error) { + + var sql string + + coldefs := make([]string, 0, len(w.srcPos)) + cnames := make([]string, 0, len(w.srcPos)) + for i := range w.srcPos { + typstr := w.srcType[i].DescString() + cnames = append(cnames, fmt.Sprintf("src%d", i)) + coldefs = append(coldefs, fmt.Sprintf("CAST(column_%d as %s) as `%s`", i, typstr, cnames[i])) + } + + cols := strings.Join(coldefs, ", ") + cnames_str := strings.Join(cnames, ", ") + + if !upsert { + sql += fmt.Sprintf("REPLACE INTO `%s`.`%s` ", w.dbTblInfo.SinkDbName, w.entries_tbl) + } else { + sql += fmt.Sprintf("INSERT INTO `%s`.`%s` ", w.dbTblInfo.SinkDbName, w.entries_tbl) + } + + sql += fmt.Sprintf("(`%s`, `%s`, `%s`, `%s`) ", + catalog.SystemSI_IVFFLAT_TblCol_Entries_version, + catalog.SystemSI_IVFFLAT_TblCol_Entries_id, + catalog.SystemSI_IVFFLAT_TblCol_Entries_pk, + catalog.SystemSI_IVFFLAT_TblCol_Entries_entry) + + versql := fmt.Sprintf("SELECT CAST(%s as BIGINT) FROM `%s`.`%s` WHERE `%s` = 'version'", catalog.SystemSI_IVFFLAT_TblCol_Metadata_val, + w.dbTblInfo.SinkDbName, w.meta_tbl, catalog.SystemSI_IVFFLAT_TblCol_Metadata_key) + + sql += fmt.Sprintf("WITH centroid as (SELECT * FROM `%s`.`%s` WHERE `%s` = (%s) ), ", w.dbTblInfo.SinkDbName, w.centroids_tbl, catalog.SystemSI_IVFFLAT_TblCol_Centroids_version, versql) + sql += fmt.Sprintf("src as (SELECT %s FROM (VALUES %s)) ", cols, string(w.vbuf)) + sql += fmt.Sprintf("SELECT `%s`, `%s`, %s FROM src CENTROIDX('%s') JOIN centroid using (`%s`, `%s`)", + catalog.SystemSI_IVFFLAT_TblCol_Centroids_version, + catalog.SystemSI_IVFFLAT_TblCol_Centroids_id, + cnames_str, + w.ivfparam.OpType, + catalog.SystemSI_IVFFLAT_TblCol_Centroids_centroid, + cnames[1]) + + return []byte(sql), nil +} diff --git a/pkg/idxcdc/types.go b/pkg/idxcdc/types.go new file mode 100644 index 0000000000000..a9d51dafc607e --- /dev/null +++ b/pkg/idxcdc/types.go @@ -0,0 +1,527 @@ +// Copyright 2024 Matrix Origin +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package cdc + +import ( + "bytes" + "context" + "encoding/hex" + "encoding/json" + "fmt" + "strings" + "sync" + "time" + + "github.com/google/uuid" + "github.com/matrixorigin/matrixone/pkg/common/mpool" + "github.com/matrixorigin/matrixone/pkg/container/batch" + "github.com/matrixorigin/matrixone/pkg/container/types" + "github.com/matrixorigin/matrixone/pkg/container/vector" + "github.com/matrixorigin/matrixone/pkg/logutil" + v2 "github.com/matrixorigin/matrixone/pkg/util/metric/v2" + "github.com/matrixorigin/matrixone/pkg/vm/engine/readutil" + "github.com/tidwall/btree" +) + +const ( + CDCSourceUriPrefix = "mysql://" + CDCSinkUriPrefix = "mysql://" + + CDCState_Common = "common" + CDCState_Error = "error" +) + +const ( + CDCDefaultSendSqlTimeout = "10m" + CDCDefaultRetryTimes = -1 + CDCDefaultRetryDuration = 30 * time.Minute + CDCDefaultTaskExtra_InitSnapshotSplitTxn = true + CDCDefaultTaskExtra_MaxSQLLen = 4 * 1024 * 1024 +) + +const ( + CDCSinkType_MySQL = "mysql" + CDCSinkType_MO = "matrixone" + CDCSinkType_Console = "console" + CDCSinkType_IndexSync = "indexsync" +) + +const ( + CDCPitrGranularity_Table = "table" + CDCPitrGranularity_DB = "database" + CDCPitrGranularity_Account = "account" + CDCPitrGranularity_Cluster = "cluster" + CDCPitrGranularity_All = "*" +) + +const ( + CDCRequestOptions_Level = "Level" + CDCRequestOptions_Exclude = "Exclude" + CDCRequestOptions_StartTs = "StartTs" + CDCRequestOptions_EndTs = "EndTs" + CDCRequestOptions_SendSqlTimeout = "SendSqlTimeout" + CDCRequestOptions_InitSnapshotSplitTxn = "InitSnapshotSplitTxn" + CDCRequestOptions_MaxSqlLength = "MaxSqlLength" + CDCRequestOptions_NoFull = "NoFull" + CDCRequestOptions_ConfigFile = "ConfigFile" +) + +const ( + CDCTaskExtraOptions_MaxSqlLength = CDCRequestOptions_MaxSqlLength + CDCTaskExtraOptions_SendSqlTimeout = CDCRequestOptions_SendSqlTimeout + CDCTaskExtraOptions_InitSnapshotSplitTxn = CDCRequestOptions_InitSnapshotSplitTxn +) + +var CDCRequestOptions = []string{ + CDCRequestOptions_Level, + CDCRequestOptions_Exclude, + CDCRequestOptions_StartTs, + CDCRequestOptions_EndTs, + CDCRequestOptions_MaxSqlLength, + CDCRequestOptions_SendSqlTimeout, + CDCRequestOptions_InitSnapshotSplitTxn, + CDCRequestOptions_ConfigFile, + CDCRequestOptions_NoFull, +} + +var CDCTaskExtraOptions = []string{ + CDCTaskExtraOptions_MaxSqlLength, + CDCTaskExtraOptions_SendSqlTimeout, + CDCTaskExtraOptions_InitSnapshotSplitTxn, +} + +var ( + EnableConsoleSink = false +) + +type TaskId = uuid.UUID + +func NewTaskId() TaskId { + return uuid.Must(uuid.NewV7()) +} + +// func StringToTaskId(s string) (TaskId, error) { +// return uuid.Parse(s) +// } + +type Reader interface { + Run(ctx context.Context, ar *ActiveRoutine) + Close() +} + +type TableReader interface { + Run(ctx context.Context, ar *ActiveRoutine) + Close() + Info() *DbTableInfo + GetWg() *sync.WaitGroup +} + +// Sinker manages and drains the sql parts +type Sinker interface { + Run(ctx context.Context, ar *ActiveRoutine) + Sink(ctx context.Context, data *DecoderOutput) + SendBegin() + SendCommit() + SendRollback() + // SendDummy to guarantee the last sql is sent + SendDummy() + // Error must be called after Sink + Error() error + ClearError() + Reset() + Close() +} + +// Sink represents the destination mysql or matrixone +type Sink interface { + Send(ctx context.Context, ar *ActiveRoutine, sqlBuf []byte, needRetry bool) error + SendBegin(ctx context.Context) error + SendCommit(ctx context.Context) error + SendRollback(ctx context.Context) error + Close() +} + +type IWatermarkUpdater interface { + Run(ctx context.Context, ar *ActiveRoutine) + InsertIntoDb(dbTableInfo *DbTableInfo, watermark types.TS) error + GetFromMem(dbName, tblName string) types.TS + GetFromDb(dbName, tblName string) (watermark types.TS, err error) + UpdateMem(dbName, tblName string, watermark types.TS) + DeleteFromMem(dbName, tblName string) + DeleteFromDb(dbName, tblName string) error + SaveErrMsg(dbName, tblName string, errMsg string) error +} + +type ActiveRoutine struct { + sync.Mutex + Pause chan struct{} + Cancel chan struct{} +} + +func (ar *ActiveRoutine) ClosePause() { + ar.Lock() + defer ar.Unlock() + close(ar.Pause) + // can't set to nil, because some goroutines may still be running, when it goes next round loop, + // it found the channel is nil, not closed, will hang there forever +} + +func (ar *ActiveRoutine) CloseCancel() { + ar.Lock() + defer ar.Unlock() + close(ar.Cancel) +} + +func NewCdcActiveRoutine() *ActiveRoutine { + return &ActiveRoutine{ + Pause: make(chan struct{}), + Cancel: make(chan struct{}), + } +} + +type OutputType int + +const ( + OutputTypeSnapshot OutputType = iota + OutputTypeTail +) + +func (t OutputType) String() string { + switch t { + case OutputTypeSnapshot: + return "Snapshot" + case OutputTypeTail: + return "Tail" + default: + return "usp output type" + } +} + +type DecoderOutput struct { + outputTyp OutputType + noMoreData bool + fromTs, toTs types.TS + checkpointBat *batch.Batch + insertAtmBatch *AtomicBatch + deleteAtmBatch *AtomicBatch +} + +type RowType int + +const ( + NoOp RowType = iota + InsertRow + DeleteRow +) + +type RowIterator interface { + Next() bool + Row(ctx context.Context, row []any) error + Close() +} + +type DbTableInfo struct { + SourceDbId uint64 + SourceDbName string + SourceTblId uint64 + SourceTblName string + SourceCreateSql string + + SinkDbName string + SinkTblName string + + IdChanged bool +} + +func (info DbTableInfo) String() string { + return fmt.Sprintf("%v(%v).%v(%v) -> %v.%v, %v", + info.SourceDbName, + info.SourceDbId, + info.SourceTblName, + info.SourceTblId, + info.SinkDbName, + info.SinkTblName, + info.IdChanged, + ) +} + +func (info DbTableInfo) Clone() *DbTableInfo { + return &DbTableInfo{ + SourceDbId: info.SourceDbId, + SourceDbName: info.SourceDbName, + SourceTblId: info.SourceTblId, + SourceTblName: info.SourceTblName, + SourceCreateSql: info.SourceCreateSql, + SinkDbName: info.SinkDbName, + SinkTblName: info.SinkTblName, + IdChanged: info.IdChanged, + } +} + +func (info DbTableInfo) OnlyDiffinTblId(t *DbTableInfo) bool { + if info.SourceDbId != t.SourceDbId || + info.SourceDbName != t.SourceDbName || + info.SourceTblName != t.SourceTblName || + info.SourceCreateSql != t.SourceCreateSql { + return false + } + return info.SourceTblId != t.SourceTblId +} + +// AtomicBatch holds batches from [Tail_wip,...,Tail_done] or [Tail_done]. +// These batches have atomicity +type AtomicBatch struct { + Mp *mpool.MPool + Batches []*batch.Batch + Rows *btree.BTreeG[AtomicBatchRow] +} + +func NewAtomicBatch(mp *mpool.MPool) *AtomicBatch { + opts := btree.Options{ + Degree: 64, + } + ret := &AtomicBatch{ + Mp: mp, + Rows: btree.NewBTreeGOptions(AtomicBatchRow.Less, opts), + } + return ret +} + +type AtomicBatchRow struct { + Ts types.TS + Pk []byte + Offset int + Src *batch.Batch +} + +func (row AtomicBatchRow) Less(other AtomicBatchRow) bool { + //ts asc + if row.Ts.LT(&other.Ts) { + return true + } + if row.Ts.GT(&other.Ts) { + return false + } + //pk asc + return bytes.Compare(row.Pk, other.Pk) < 0 +} + +func (bat *AtomicBatch) RowCount() int { + c := 0 + for _, b := range bat.Batches { + rows := 0 + if b != nil && len(b.Vecs) > 0 { + rows = b.Vecs[0].Length() + } + c += rows + } + + if c != bat.Rows.Len() { + logutil.Errorf("inconsistent row count, sum rows of batches: %d, rows of btree: %d\n", c, bat.Rows.Len()) + } + return c +} + +func (bat *AtomicBatch) Allocated() int { + size := 0 + for _, b := range bat.Batches { + size += b.Allocated() + } + return size +} + +func (bat *AtomicBatch) Append( + packer *types.Packer, + batch *batch.Batch, + tsColIdx, compositedPkColIdx int, +) { + start := time.Now() + defer func() { + v2.CdcAppendDurationHistogram.Observe(time.Since(start).Seconds()) + }() + + if batch != nil { + //ts columns + tsVec := vector.MustFixedColWithTypeCheck[types.TS](batch.Vecs[tsColIdx]) + //composited pk columns + compositedPkBytes := readutil.EncodePrimaryKeyVector(batch.Vecs[compositedPkColIdx], packer) + + for i, pk := range compositedPkBytes { + // if ts is constant, then tsVec[0] is the ts for all rows + ts := tsVec[0] + if i < len(tsVec) { + ts = tsVec[i] + } + + row := AtomicBatchRow{ + Ts: ts, + Pk: pk, + Offset: i, + Src: batch, + } + bat.Rows.Set(row) + } + + bat.Batches = append(bat.Batches, batch) + } +} + +func (bat *AtomicBatch) Close() { + for _, oneBat := range bat.Batches { + oneBat.Clean(bat.Mp) + } + if bat.Rows != nil { + bat.Rows.Clear() + bat.Rows = nil + } + bat.Batches = nil + bat.Mp = nil +} + +func (bat *AtomicBatch) GetRowIterator() RowIterator { + return &atomicBatchRowIter{ + iter: bat.Rows.Iter(), + } +} + +//func (bat *AtomicBatch) DebugString(tableDef *plan.TableDef, isDelete bool) string { +// ctx := context.Background() +// keys := make([]string, 0, bat.Rows.Len()) +// iter := bat.Rows.Iter() +// defer iter.Release() +// for iter.Next() { +// row := iter.Item() +// s, err := getRowPkAndTsFromBat(ctx, row.Src, tableDef, isDelete, row.Offset) +// if err != nil { +// return "" +// } +// keys = append(keys, s) +// } +// return fmt.Sprintf("count=%d, key=%v", bat.Rows.Len(), keys) +//} + +var _ RowIterator = new(atomicBatchRowIter) + +type atomicBatchRowIter struct { + iter btree.IterG[AtomicBatchRow] +} + +func (iter *atomicBatchRowIter) Item() AtomicBatchRow { + return iter.iter.Item() +} + +func (iter *atomicBatchRowIter) Next() bool { + return iter.iter.Next() +} + +func (iter *atomicBatchRowIter) Row(ctx context.Context, row []any) error { + batchRow := iter.iter.Item() + return extractRowFromEveryVector( + ctx, + batchRow.Src, + batchRow.Offset, + row, + ) +} + +func (iter *atomicBatchRowIter) Close() { + iter.iter.Release() +} + +type UriInfo struct { + SinkTyp string `json:"_"` + User string `json:"user"` + Password string `json:"-"` + Ip string `json:"ip"` + Port int `json:"port"` + PasswordStart int `json:"-"` + PasswordEnd int `json:"-"` + Reserved string `json:"reserved"` +} + +func (info *UriInfo) GetEncodedPassword() (string, error) { + return AesCFBEncode([]byte(info.Password)) +} + +func (info *UriInfo) String() string { + return fmt.Sprintf("%s%s:%s@%s:%d", CDCSourceUriPrefix, info.User, "******", info.Ip, info.Port) +} + +type PatternTable struct { + Database string `json:"database"` + Table string `json:"table"` +} + +func (table PatternTable) String() string { + return fmt.Sprintf("%s.%s", table.Database, table.Table) +} + +type PatternTuple struct { + Source PatternTable `json:"Source"` + Sink PatternTable `json:"Sink"` + OriginString string `json:"-"` + Reserved string `json:"reserved"` +} + +func (tuple *PatternTuple) String() string { + if tuple == nil { + return "" + } + return fmt.Sprintf("%s,%s", tuple.Source, tuple.Sink) +} + +type PatternTuples struct { + Pts []*PatternTuple `json:"pts"` + Reserved string `json:"reserved"` +} + +func (pts *PatternTuples) Append(pt *PatternTuple) { + pts.Pts = append(pts.Pts, pt) +} + +func (pts *PatternTuples) String() string { + if pts.Pts == nil { + return "" + } + ss := make([]string, 0) + for _, pt := range pts.Pts { + ss = append(ss, pt.String()) + } + return strings.Join(ss, ",") +} + +// JsonEncode encodes the object to json +func JsonEncode(value any) (string, error) { + jbytes, err := json.Marshal(value) + if err != nil { + return "", err + } + + return hex.EncodeToString(jbytes), nil +} + +// JsonDecode decodes the json bytes to objects +func JsonDecode(jbytes string, value any) error { + jRawBytes, err := hex.DecodeString(jbytes) + if err != nil { + return err + } + + err = json.Unmarshal(jRawBytes, value) + if err != nil { + return err + } + return nil +} diff --git a/pkg/idxcdc/util.go b/pkg/idxcdc/util.go new file mode 100644 index 0000000000000..329526fd9c2db --- /dev/null +++ b/pkg/idxcdc/util.go @@ -0,0 +1,861 @@ +// Copyright 2024 Matrix Origin +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package cdc + +import ( + "context" + "crypto/aes" + "crypto/cipher" + cryptorand "crypto/rand" + "database/sql" + "encoding/hex" + "fmt" + "math" + "math/rand" + "slices" + "strconv" + "strings" + "time" + + "go.uber.org/zap" + + "github.com/matrixorigin/matrixone/pkg/catalog" + "github.com/matrixorigin/matrixone/pkg/common/moerr" + "github.com/matrixorigin/matrixone/pkg/common/mpool" + "github.com/matrixorigin/matrixone/pkg/container/batch" + "github.com/matrixorigin/matrixone/pkg/container/bytejson" + "github.com/matrixorigin/matrixone/pkg/container/types" + "github.com/matrixorigin/matrixone/pkg/container/vector" + "github.com/matrixorigin/matrixone/pkg/logutil" + "github.com/matrixorigin/matrixone/pkg/pb/plan" + "github.com/matrixorigin/matrixone/pkg/pb/timestamp" + "github.com/matrixorigin/matrixone/pkg/txn/client" + v2 "github.com/matrixorigin/matrixone/pkg/util/metric/v2" + "github.com/matrixorigin/matrixone/pkg/vm/engine" +) + +// extractRowFromEveryVector gets the j row from the every vector and outputs the row +// bat columns layout: +// 1. data: user defined cols | cpk (if needed) | commit-ts +// 2. tombstone: pk/cpk | commit-ts +// return user defined cols for data or only one cpk column for tombstone +func extractRowFromEveryVector( + ctx context.Context, + dataSet *batch.Batch, + rowIndex int, + row []any, +) error { + for i := 0; i < len(row); i++ { + vec := dataSet.Vecs[i] + rowIndexBackup := rowIndex + if vec.IsConstNull() { + row[i] = nil + continue + } + if vec.IsConst() { + rowIndex = 0 + } + + if err := extractRowFromVector(ctx, vec, i, row, rowIndex); err != nil { + return err + } + rowIndex = rowIndexBackup + } + return nil +} + +//func extractRowFromWantedVecs( +// ctx context.Context, +// dataSet *batch.Batch, +// rowIndex int, +// wantedVecIdxes []int, +// row []any, +//) error { +// for i := 0; i < len(row); i++ { +// vec := dataSet.Vecs[wantedVecIdxes[i]] +// rowIndexBackup := rowIndex +// if vec.IsConstNull() { +// row[i] = nil +// continue +// } +// if vec.IsConst() { +// rowIndex = 0 +// } +// +// err := extractRowFromVector(ctx, vec, i, row, rowIndex) +// if err != nil { +// return err +// } +// rowIndex = rowIndexBackup +// } +// return nil +//} + +// extractRowFromVector gets the rowIndex row from the i vector +func extractRowFromVector(ctx context.Context, vec *vector.Vector, i int, row []any, rowIndex int) error { + if vec.IsConstNull() || vec.GetNulls().Contains(uint64(rowIndex)) { + row[i] = nil + return nil + } + + switch vec.GetType().Oid { //get col + case types.T_json: + row[i] = types.DecodeJson(copyBytes(vec.GetBytesAt(rowIndex))) + case types.T_bool: + row[i] = vector.GetFixedAtWithTypeCheck[bool](vec, rowIndex) + case types.T_bit: + row[i] = vector.GetFixedAtWithTypeCheck[uint64](vec, rowIndex) + case types.T_int8: + row[i] = vector.GetFixedAtWithTypeCheck[int8](vec, rowIndex) + case types.T_uint8: + row[i] = vector.GetFixedAtWithTypeCheck[uint8](vec, rowIndex) + case types.T_int16: + row[i] = vector.GetFixedAtWithTypeCheck[int16](vec, rowIndex) + case types.T_uint16: + row[i] = vector.GetFixedAtWithTypeCheck[uint16](vec, rowIndex) + case types.T_int32: + row[i] = vector.GetFixedAtWithTypeCheck[int32](vec, rowIndex) + case types.T_uint32: + row[i] = vector.GetFixedAtWithTypeCheck[uint32](vec, rowIndex) + case types.T_int64: + row[i] = vector.GetFixedAtWithTypeCheck[int64](vec, rowIndex) + case types.T_uint64: + row[i] = vector.GetFixedAtWithTypeCheck[uint64](vec, rowIndex) + case types.T_float32: + row[i] = vector.GetFixedAtWithTypeCheck[float32](vec, rowIndex) + case types.T_float64: + row[i] = vector.GetFixedAtWithTypeCheck[float64](vec, rowIndex) + case types.T_char, types.T_varchar, types.T_blob, types.T_text, types.T_binary, types.T_varbinary, types.T_datalink: + row[i] = copyBytes(vec.GetBytesAt(rowIndex)) + case types.T_array_float32: + // NOTE: Don't merge it with T_varchar. You will get raw binary in the SQL output + //+------------------------------+ + //| abs(cast([1,2,3] as vecf32)) | + //+------------------------------+ + //| �? @ @@ | + //+------------------------------+ + row[i] = vector.GetArrayAt[float32](vec, rowIndex) + case types.T_array_float64: + row[i] = vector.GetArrayAt[float64](vec, rowIndex) + case types.T_date: + row[i] = vector.GetFixedAtWithTypeCheck[types.Date](vec, rowIndex) + case types.T_datetime: + scale := vec.GetType().Scale + row[i] = vector.GetFixedAtWithTypeCheck[types.Datetime](vec, rowIndex).String2(scale) + case types.T_time: + scale := vec.GetType().Scale + row[i] = vector.GetFixedAtWithTypeCheck[types.Time](vec, rowIndex).String2(scale) + case types.T_timestamp: + scale := vec.GetType().Scale + //TODO:get the right timezone + //timeZone := ses.GetTimeZone() + timeZone := time.UTC + row[i] = vector.GetFixedAtWithTypeCheck[types.Timestamp](vec, rowIndex).String2(timeZone, scale) + case types.T_decimal64: + scale := vec.GetType().Scale + row[i] = vector.GetFixedAtWithTypeCheck[types.Decimal64](vec, rowIndex).Format(scale) + case types.T_decimal128: + scale := vec.GetType().Scale + row[i] = vector.GetFixedAtWithTypeCheck[types.Decimal128](vec, rowIndex).Format(scale) + case types.T_uuid: + row[i] = vector.GetFixedAtWithTypeCheck[types.Uuid](vec, rowIndex).String() + case types.T_Rowid: + row[i] = vector.GetFixedAtWithTypeCheck[types.Rowid](vec, rowIndex) + case types.T_Blockid: + row[i] = vector.GetFixedAtWithTypeCheck[types.Blockid](vec, rowIndex) + case types.T_TS: + row[i] = vector.GetFixedAtWithTypeCheck[types.TS](vec, rowIndex) + case types.T_enum: + row[i] = vector.GetFixedAtWithTypeCheck[types.Enum](vec, rowIndex) + default: + logutil.Error( + "Failed to extract row from vector, unsupported type", + zap.Int("typeID", int(vec.GetType().Oid))) + return moerr.NewInternalErrorf(ctx, "extractRowFromVector : unsupported type %d", vec.GetType().Oid) + } + return nil +} + +func copyBytes(src []byte) []byte { + if len(src) > 0 { + dst := make([]byte, len(src)) + copy(dst, src) + return dst + } else { + return []byte{} + } +} + +func convertColIntoSql( + ctx context.Context, + data any, + typ *types.Type, + sqlBuff []byte) ([]byte, error) { + if data == nil { + sqlBuff = appendString(sqlBuff, "NULL") + return sqlBuff, nil + } + var temp string + switch typ.Oid { //get col + case types.T_json: + sqlBuff = appendByte(sqlBuff, '\'') + temp = data.(bytejson.ByteJson).String() + sqlBuff = appendString(sqlBuff, temp) + sqlBuff = appendByte(sqlBuff, '\'') + case types.T_bool: + b := data.(bool) + if b { + temp = "true" + } else { + temp = "false" + } + sqlBuff = appendString(sqlBuff, temp) + case types.T_bit: + value := data.(uint64) + bitLength := typ.Width + byteLength := (bitLength + 7) / 8 + b := types.EncodeUint64(&value)[:byteLength] + slices.Reverse(b) + sqlBuff = appendByte(sqlBuff, '\'') + sqlBuff = appendBytes(sqlBuff, b) + sqlBuff = appendByte(sqlBuff, '\'') + case types.T_int8: + value := data.(int8) + sqlBuff = appendInt64(sqlBuff, int64(value)) + case types.T_uint8: + value := data.(uint8) + sqlBuff = appendUint64(sqlBuff, uint64(value)) + case types.T_int16: + value := data.(int16) + sqlBuff = appendInt64(sqlBuff, int64(value)) + case types.T_uint16: + value := data.(uint16) + sqlBuff = appendUint64(sqlBuff, uint64(value)) + case types.T_int32: + value := data.(int32) + sqlBuff = appendInt64(sqlBuff, int64(value)) + case types.T_uint32: + value := data.(uint32) + sqlBuff = appendUint64(sqlBuff, uint64(value)) + case types.T_int64: + value := data.(int64) + sqlBuff = appendInt64(sqlBuff, value) + case types.T_uint64: + value := data.(uint64) + sqlBuff = appendUint64(sqlBuff, value) + case types.T_float32: + value := data.(float32) + sqlBuff = appendFloat64(sqlBuff, float64(value), 32) + case types.T_float64: + value := data.(float64) + sqlBuff = appendFloat64(sqlBuff, value, 64) + case types.T_binary, types.T_varbinary, types.T_blob: + sqlBuff = appendHex(sqlBuff, data.([]byte)) + case types.T_char, + types.T_varchar, + types.T_text, + types.T_datalink: + value := string(data.([]byte)) + value = strings.Replace(value, "\\", "\\\\", -1) + value = strings.Replace(value, "'", "\\'", -1) + sqlBuff = appendByte(sqlBuff, '\'') + sqlBuff = appendBytes(sqlBuff, []byte(value)) + sqlBuff = appendByte(sqlBuff, '\'') + case types.T_array_float32: + // NOTE: Don't merge it with T_varchar. You will get raw binary in the SQL output + //+------------------------------+ + //| abs(cast([1,2,3] as vecf32)) | + //+------------------------------+ + //| �? @ @@ | + //+------------------------------+ + value := data.([]float32) + sqlBuff = appendByte(sqlBuff, '\'') + sqlBuff = appendString(sqlBuff, types.ArrayToString(value)) + sqlBuff = appendByte(sqlBuff, '\'') + case types.T_array_float64: + value := data.([]float64) + sqlBuff = appendByte(sqlBuff, '\'') + sqlBuff = appendString(sqlBuff, types.ArrayToString(value)) + sqlBuff = appendByte(sqlBuff, '\'') + case types.T_date: + value := data.(types.Date) + sqlBuff = appendByte(sqlBuff, '\'') + sqlBuff = appendString(sqlBuff, value.String()) + sqlBuff = appendByte(sqlBuff, '\'') + case types.T_datetime: + value := data.(string) + sqlBuff = appendByte(sqlBuff, '\'') + sqlBuff = appendString(sqlBuff, value) + sqlBuff = appendByte(sqlBuff, '\'') + case types.T_time: + value := data.(string) + sqlBuff = appendByte(sqlBuff, '\'') + sqlBuff = appendString(sqlBuff, value) + sqlBuff = appendByte(sqlBuff, '\'') + case types.T_timestamp: + value := data.(string) + sqlBuff = appendByte(sqlBuff, '\'') + sqlBuff = appendString(sqlBuff, value) + sqlBuff = appendByte(sqlBuff, '\'') + case types.T_decimal64: + value := data.(string) + sqlBuff = appendByte(sqlBuff, '\'') + sqlBuff = appendString(sqlBuff, value) + sqlBuff = appendByte(sqlBuff, '\'') + case types.T_decimal128: + value := data.(string) + sqlBuff = appendByte(sqlBuff, '\'') + sqlBuff = appendString(sqlBuff, value) + sqlBuff = appendByte(sqlBuff, '\'') + case types.T_uuid: + value := data.(string) + sqlBuff = appendByte(sqlBuff, '\'') + sqlBuff = appendString(sqlBuff, value) + sqlBuff = appendByte(sqlBuff, '\'') + case types.T_Rowid: + value := data.(types.Rowid) + sqlBuff = appendByte(sqlBuff, '\'') + sqlBuff = appendString(sqlBuff, value.String()) + sqlBuff = appendByte(sqlBuff, '\'') + case types.T_Blockid: + value := data.(types.Blockid) + sqlBuff = appendByte(sqlBuff, '\'') + sqlBuff = appendString(sqlBuff, value.String()) + sqlBuff = appendByte(sqlBuff, '\'') + case types.T_TS: + value := data.(types.TS) + sqlBuff = appendByte(sqlBuff, '\'') + sqlBuff = appendString(sqlBuff, value.ToString()) + sqlBuff = appendByte(sqlBuff, '\'') + case types.T_enum: + value := data.(types.Enum) + sqlBuff = appendByte(sqlBuff, '\'') + sqlBuff = appendString(sqlBuff, value.String()) + sqlBuff = appendByte(sqlBuff, '\'') + default: + logutil.Error( + "Failed to extract row from vector, unsupported type", + zap.Int("typeID", int(typ.Oid))) + return nil, moerr.NewInternalErrorf(ctx, "extractRowFromVector : unsupported type %d", typ.Oid) + } + + return sqlBuff, nil +} + +func appendHex(dst []byte, src []byte) []byte { + dst = append(dst, "x'"...) + dst = hex.AppendEncode(dst, src) + dst = append(dst, '\'') + return dst +} + +func appendByte(buf []byte, d byte) []byte { + return append(buf, d) +} + +func appendBytes(buf []byte, data []byte) []byte { + return append(buf, data...) +} + +func appendString(buf []byte, s string) []byte { + return appendBytes(buf, []byte(s)) +} + +func appendInt64(buf []byte, value int64) []byte { + return strconv.AppendInt(buf, value, 10) +} + +func appendUint64(buf []byte, value uint64) []byte { + return strconv.AppendUint(buf, value, 10) +} + +func appendFloat64(buf []byte, value float64, bitSize int) []byte { + if !math.IsInf(value, 0) { + buf = strconv.AppendFloat(buf, value, 'f', -1, bitSize) + } else { + if math.IsInf(value, 1) { + buf = append(buf, []byte("+Infinity")...) + } else { + buf = append(buf, []byte("-Infinity")...) + } + } + return buf +} + +func floatArrayToString[T float32 | float64](arr []T) string { + str := "'[" + for i, v := range arr { + if i == 0 { + str += fmt.Sprintf("%f", v) + } else { + str += fmt.Sprintf(",%f", v) + } + } + str += "]'" + return str +} + +//func getPkIdxesAndTypes(ctx context.Context, tableDef *plan.TableDef) (pkIdxes []int, pkAndTsTypes []*types.Type, err error) { +// pkIdxes = make([]int, 0, len(tableDef.Pkey.Names)) +// pkAndTsTypes = make([]*types.Type, 0, len(tableDef.Pkey.Names)+1) +// for _, colName := range tableDef.Pkey.Names { +// idx, ok := tableDef.Name2ColIndex[colName] +// if !ok { +// err = moerr.NewInternalErrorf(ctx, "pk column %s not found", colName) +// return +// } +// +// pkIdxes = append(pkIdxes, int(idx)) +// +// col := tableDef.Cols[idx] +// pkAndTsTypes = append(pkAndTsTypes, &types.Type{ +// Oid: types.T(col.Typ.Id), +// Width: col.Typ.Width, +// Scale: col.Typ.Scale, +// }) +// } +// pkAndTsTypes = append(pkAndTsTypes, &types.Type{ +// Oid: types.T_TS, +// Size: types.TxnTsSize, +// }) +// return +//} +// +//// getPksFromBat gets the pk from the bat, pk is separated by ',' if it's a multi-column pk +//func getAllPkAndTsFromBat( +// ctx context.Context, +// bat *batch.Batch, +// tableDef *plan.TableDef, +// isDelete bool, +//) (pks []string, err error) { +// if bat == nil || len(bat.Vecs) == 0 { +// return +// } +// +// pkIdxes, pkAndTsTypes, err := getPkIdxesAndTypes(ctx, tableDef) +// if err != nil { +// return +// } +// +// // pk and ts +// var wantedIdxes []int +// if isDelete { +// wantedIdxes = []int{0, 1} +// } else { +// wantedIdxes = append(pkIdxes, len(bat.Vecs)-1) +// } +// readRow := make([]any, len(wantedIdxes)) +// dataRow := make([]any, len(pkAndTsTypes)) +// +// pks = make([]string, bat.Vecs[0].Length()) +// for i := 0; i < len(pks); i++ { +// if pks[i], err = getPkAndTsFromRow(ctx, bat, isDelete, i, pkAndTsTypes, wantedIdxes, readRow, dataRow); err != nil { +// return +// } +// } +// return +//} +// +//func getRowPkAndTsFromBat( +// ctx context.Context, +// bat *batch.Batch, +// tableDef *plan.TableDef, +// isDelete bool, +// offset int, +//) (s string, err error) { +// if bat == nil || len(bat.Vecs) == 0 || offset < 0 || offset >= bat.Vecs[0].Length() { +// return +// } +// +// pkIdxes, pkAndTsTypes, err := getPkIdxesAndTypes(ctx, tableDef) +// if err != nil { +// return +// } +// +// // pk and ts +// var wantedIdxes []int +// if isDelete { +// wantedIdxes = []int{0, 1} +// } else { +// wantedIdxes = append(pkIdxes, len(bat.Vecs)-1) +// } +// readRow := make([]any, len(wantedIdxes)) +// dataRow := make([]any, len(pkAndTsTypes)) +// +// return getPkAndTsFromRow(ctx, bat, isDelete, offset, pkAndTsTypes, wantedIdxes, readRow, dataRow) +//} +// +//func getPkAndTsFromRow( +// ctx context.Context, +// bat *batch.Batch, +// isDelete bool, +// offset int, +// pkAndTsTypes []*types.Type, +// wantedIdxes []int, +// readRow []any, +// dataRow []any, +//) (s string, err error) { +// if err = extractRowFromWantedVecs(ctx, bat, offset, wantedIdxes, readRow); err != nil { +// return +// } +// +// row := &readRow +// if isDelete && len(pkAndTsTypes) > 2 { +// // composite pk +// var pkTuple types.Tuple +// if pkTuple, _, err = unpackWithSchema(readRow[0].([]byte)); err != nil { +// return +// } +// +// for j := range pkTuple { +// dataRow[j] = pkTuple[j] +// } +// dataRow[len(pkTuple)] = readRow[1] +// +// row = &dataRow +// } +// +// pkBytes := make([]byte, 0, 64) +// for j := range pkAndTsTypes { +// if j != 0 { +// pkBytes = appendByte(pkBytes, ',') +// } +// if pkBytes, err = convertColIntoSql(ctx, (*row)[j], pkAndTsTypes[j], pkBytes); err != nil { +// return +// } +// } +// s = string(pkBytes) +// return +//} + +var OpenDbConn = func(user, password string, ip string, port int, timeout string) (db *sql.DB, err error) { + logutil.Infof("openDbConn timeout = %s", timeout) + dsn := fmt.Sprintf("%s:%s@tcp(%s:%d)/?readTimeout=%s&timeout=%s&writeTimeout=%s&multiStatements=true", + user, password, ip, port, timeout, timeout, timeout) + for i := 0; i < 3; i++ { + if db, err = tryConn(dsn); err == nil { + // TODO check table existence + return + } + v2.CdcMysqlConnErrorCounter.Inc() + time.Sleep(time.Second) + } + logutil.Error("cdc task OpenDbConn failed") + return +} + +var openDb = sql.Open + +var tryConn = func(dsn string) (*sql.DB, error) { + db, err := openDb("mysql-mo", dsn) + if err != nil { + return nil, err + } else { + db.SetConnMaxLifetime(time.Minute * 3) + db.SetMaxOpenConns(1) + db.SetMaxIdleConns(1) + time.Sleep(time.Millisecond * 100) + + //ping opens the connection + err = db.Ping() + if err != nil { + return nil, err + } + } + return db, err +} + +var GetTxnOp = func( + ctx context.Context, + cnEngine engine.Engine, + cnTxnClient client.TxnClient, + info string, +) (client.TxnOperator, error) { + nowTs := cnEngine.LatestLogtailAppliedTime() + createByOpt := client.WithTxnCreateBy( + 0, + "", + info, + 0) + return cnTxnClient.New(ctx, nowTs, createByOpt) +} + +var GetTxn = func( + ctx context.Context, + cnEngine engine.Engine, + txnOp client.TxnOperator, +) error { + return cnEngine.New(ctx, txnOp) +} + +var FinishTxnOp = func(ctx context.Context, inputErr error, txnOp client.TxnOperator, cnEngine engine.Engine) { + //same timeout value as it in frontend + ctx2, cancel := context.WithTimeoutCause(ctx, cnEngine.Hints().CommitOrRollbackTimeout, moerr.CauseFinishTxnOp) + defer cancel() + if inputErr != nil { + _ = txnOp.Rollback(ctx2) + } else { + _ = txnOp.Commit(ctx2) + } +} + +var GetRelationById = func(ctx context.Context, cnEngine engine.Engine, txnOp client.TxnOperator, tableId uint64) (dbName string, tblName string, rel engine.Relation, err error) { + return cnEngine.GetRelationById(ctx, txnOp, tableId) +} + +var GetSnapshotTS = func(txnOp client.TxnOperator) timestamp.Timestamp { + return txnOp.SnapshotTS() +} + +var CollectChanges = func(ctx context.Context, rel engine.Relation, fromTs, toTs types.TS, mp *mpool.MPool) (engine.ChangesHandle, error) { + return rel.CollectChanges(ctx, fromTs, toTs, mp) +} + +var EnterRunSql = func(txnOp client.TxnOperator) { + txnOp.EnterRunSql() +} + +var ExitRunSql = func(txnOp client.TxnOperator) { + txnOp.ExitRunSql() +} + +var GetTableDef = func( + ctx context.Context, + txnOp client.TxnOperator, + cnEngine engine.Engine, + tblId uint64, +) (*plan.TableDef, error) { + _, _, rel, err := cnEngine.GetRelationById(ctx, txnOp, tblId) + if err != nil { + return nil, err + } + + return rel.CopyTableDef(ctx), nil +} + +const ( + InitKeyId = "4e3da275-5003-4ca0-8667-5d3cdbecdd35" + InsertDataKeyFormat = "replace into mo_catalog.mo_data_key (account_id, key_id, encrypted_key) values (%d, '%s', '%s')" +) + +var AesKey string + +func AesCFBEncode(data []byte) (string, error) { + return aesCFBEncodeWithKey(data, []byte(AesKey)) +} + +func aesCFBEncodeWithKey(data []byte, aesKey []byte) (string, error) { + if len(aesKey) == 0 { + return "", moerr.NewInternalErrorNoCtx("AesKey is not initialized") + } + + block, err := aes.NewCipher(aesKey) + if err != nil { + return "", err + } + + encoded := make([]byte, aes.BlockSize+len(data)) + iv := encoded[:aes.BlockSize] + salt := generateSalt(aes.BlockSize) + copy(iv, salt) + stream := cipher.NewCTR(block, iv) + stream.XORKeyStream(encoded[aes.BlockSize:], data) + return hex.EncodeToString(encoded), nil +} + +func AesCFBDecode(ctx context.Context, data string) (string, error) { + return AesCFBDecodeWithKey(ctx, data, []byte(AesKey)) +} + +var AesCFBDecodeWithKey = func(ctx context.Context, data string, aesKey []byte) (string, error) { + if len(aesKey) == 0 { + return "", moerr.NewInternalErrorNoCtx("AesKey is not initialized") + } + + encodedData, err := hex.DecodeString(data) + if err != nil { + return "", err + } + block, err := aes.NewCipher(aesKey) + if err != nil { + return "", err + } + if len(encodedData) < aes.BlockSize { + return "", moerr.NewInternalError(ctx, "encoded string is too short") + } + iv := encodedData[:aes.BlockSize] + encodedData = encodedData[aes.BlockSize:] + stream := cipher.NewCTR(block, iv) + stream.XORKeyStream(encodedData, encodedData) + return string(encodedData), nil +} + +func generateSalt(n int) []byte { + buf := make([]byte, n) + r := rand.New(rand.NewSource(time.Now().UTC().UnixNano())) + r.Read(buf) + for i := 0; i < n; i++ { + buf[i] &= 0x7f + if buf[i] == 0 || buf[i] == '$' { + buf[i]++ + } + } + return buf +} + +var ( + encrypt = aesCFBEncodeWithKey + cryptoRandRead = cryptorand.Read +) + +func GetInitDataKeySql(kek string) (_ string, err error) { + aesKey := make([]byte, 32) + if _, err = cryptoRandRead(aesKey); err != nil { + return + } + + encryptedKey, err := encrypt(aesKey, []byte(kek)) + if err != nil { + return + } + + return fmt.Sprintf(InsertDataKeyFormat, catalog.System_Account, InitKeyId, encryptedKey), nil +} + +func batchRowCount(bat *batch.Batch) int { + if bat == nil || len(bat.Vecs) == 0 { + return 0 + } + return bat.Vecs[0].Length() +} + +// AddSingleQuotesJoin [a, b, c] -> 'a','b','c' +func AddSingleQuotesJoin(s []string) string { + if len(s) == 0 { + return "" + } + return "'" + strings.Join(s, "','") + "'" +} + +func GenDbTblKey(dbName, tblName string) string { + return dbName + "." + tblName +} + +func SplitDbTblKey(dbTblKey string) (dbName, tblName string) { + s := strings.Split(dbTblKey, ".") + if len(s) != 2 { + return + } + return s[0], s[1] +} + +func addStartMetrics(insertData, deleteData *batch.Batch) { + count := float64(batchRowCount(insertData) + batchRowCount(deleteData)) + allocated := float64(insertData.Allocated() + deleteData.Allocated()) + v2.CdcTotalProcessingRecordCountGauge.Add(count) + v2.CdcHoldChangesBytesGauge.Add(allocated) + v2.CdcReadRecordCounter.Add(count) +} + +func addSnapshotEndMetrics(insertData *batch.Batch) { + count := float64(batchRowCount(insertData)) + allocated := float64(insertData.Allocated()) + v2.CdcTotalProcessingRecordCountGauge.Sub(count) + v2.CdcHoldChangesBytesGauge.Sub(allocated) + v2.CdcSinkRecordCounter.Add(count) +} + +func addTailEndMetrics(bat *AtomicBatch) { + count := float64(bat.RowCount()) + allocated := float64(bat.Allocated()) + v2.CdcTotalProcessingRecordCountGauge.Sub(count) + v2.CdcHoldChangesBytesGauge.Sub(allocated) + v2.CdcSinkRecordCounter.Add(count) +} + +// uriHasPrefix +func uriHasPrefix(uri string, prefix string) bool { + if len(uri) < len(prefix) || strings.ToLower(uri[:len(prefix)]) != prefix { + return false + } + return true +} + +/* +ExtractUriInfo extracts the uriInfo +return serialized uriInfo +*/ +func ExtractUriInfo( + ctx context.Context, + uri string, + uriPrefix string, +) (string, UriInfo, error) { + ok, uriInfo := compositedUriInfo(uri, uriPrefix) + if !ok { + return "", UriInfo{}, moerr.NewInternalErrorf(ctx, "invalid uri format: %s", uri) + } + + jsonUriInfo, err := JsonEncode(&uriInfo) + if err != nil { + return "", UriInfo{}, err + } + return jsonUriInfo, uriInfo, nil +} + +// compositedUriInfo uri according to the format: mysql://root:111@127.0.0.1:6001 +// if valid, return true and extracted info +// !!!NOTE!!! +// user and password does not have the special character ( ':' '@' ) +func compositedUriInfo(uri string, uriPrefix string) (bool, UriInfo) { + if !uriHasPrefix(uri, uriPrefix) { + return false, UriInfo{} + } + //locate user password + rest := uri[len(uriPrefix):] + seps := strings.Split(rest, "@") + if len(seps) != 2 || len(seps[0]) == 0 || len(seps[1]) == 0 { + return false, UriInfo{} + } + seps2 := strings.Split(seps[0], ":") + if len(seps2) < 2 { + return false, UriInfo{} + } + userName := strings.Join(seps2[0:len(seps2)-1], ":") + password := seps2[len(seps2)-1] + passwordStart := len(uriPrefix) + len(userName) + 1 + passwordEnd := passwordStart + len(password) + if passwordEnd > len(uri) || password != uri[passwordStart:passwordEnd] { + return false, UriInfo{} + } + + sep3 := strings.Split(seps[1], ":") + if len(sep3) != 2 || len(sep3[0]) == 0 || len(sep3[1]) == 0 { + return false, UriInfo{} + } + ip := sep3[0] + port := sep3[1] + portInt32, err := strconv.ParseUint(port, 10, 32) + if err != nil || portInt32 > 65535 { + return false, UriInfo{} + } + return true, UriInfo{ + User: userName, + Password: password, + Ip: ip, + Port: int(portInt32), + PasswordStart: passwordStart, + PasswordEnd: passwordEnd, + } +} From 1d2b203dacfe2069f0e1c6ed8532a4cc8a3319c9 Mon Sep 17 00:00:00 2001 From: cpegeric Date: Tue, 1 Jul 2025 12:22:00 +0100 Subject: [PATCH 199/223] update --- pkg/idxcdc/consumer.go | 8 ++----- pkg/idxcdc/index_sqlwriter.go | 40 +++++++++++++++++------------------ 2 files changed, 22 insertions(+), 26 deletions(-) diff --git a/pkg/idxcdc/consumer.go b/pkg/idxcdc/consumer.go index d0d1b3bbb6c50..cad4e0ae1418d 100644 --- a/pkg/idxcdc/consumer.go +++ b/pkg/idxcdc/consumer.go @@ -91,7 +91,6 @@ type Consumer interface { type IndexConsumer struct { cnUUID string info *ConsumerInfo - dbTblInfo *DbTableInfo tableDef *plan.TableDef sqlWriter IndexSqlWriter exec executor.SQLExecutor @@ -111,8 +110,6 @@ func NewIndexConsumer(cnUUID string, return nil, err } - dbTblInfo := &DbTableInfo{SinkDbName: info.DbName, SinkTblName: info.TableName} - ie := &IndexEntry{indexes: make([]*plan.IndexDef, 0, 3)} for _, idx := range tableDef.Indexes { @@ -128,11 +125,10 @@ func NewIndexConsumer(cnUUID string, } - sqlwriter, err := NewIndexSqlWriter(ie.algo, dbTblInfo, tableDef, ie.indexes) + sqlwriter, err := NewIndexSqlWriter(ie.algo, info, tableDef, ie.indexes) c := &IndexConsumer{cnUUID: cnUUID, info: info, - dbTblInfo: dbTblInfo, tableDef: tableDef, sqlWriter: sqlwriter, exec: exec, @@ -168,7 +164,7 @@ func (c *IndexConsumer) run(ctx context.Context, errch chan error, r DataRetriev opts := executor.Options{} res, err := c.exec.Exec(newctx, string(sql), opts) if err != nil { - logutil.Errorf("cdc indexConsumer(%v) send sql failed, err: %v, sql: %s", c.dbTblInfo, err, string(sql)) + logutil.Errorf("cdc indexConsumer(%v) send sql failed, err: %v, sql: %s", c.info, err, string(sql)) os.Stderr.WriteString(fmt.Sprintf("sql executor run failed. %s\n", string(sql))) os.Stderr.WriteString(fmt.Sprintf("err :%v\n", err)) errch <- err diff --git a/pkg/idxcdc/index_sqlwriter.go b/pkg/idxcdc/index_sqlwriter.go index 57c1ce70dee07..a205ae9e2b9f7 100644 --- a/pkg/idxcdc/index_sqlwriter.go +++ b/pkg/idxcdc/index_sqlwriter.go @@ -51,7 +51,7 @@ type BaseIndexSqlWriter struct { param string tabledef *plan.TableDef indexdef []*plan.IndexDef - dbTblInfo *DbTableInfo + info *ConsumerInfo algo string pkPos int32 pkType *types.Type @@ -83,7 +83,7 @@ type HnswSqlWriter[T types.RealNumbers] struct { meta vectorindex.HnswCdcParam tabledef *plan.TableDef indexdef []*plan.IndexDef - dbTblInfo *DbTableInfo + info *ConsumerInfo pkPos int32 pkType *types.Type partsPos []int32 @@ -99,15 +99,15 @@ var _ IndexSqlWriter = new(IvfflatSqlWriter) var _ IndexSqlWriter = new(HnswSqlWriter[float32]) // check algo type to return the correct sql writer -func NewIndexSqlWriter(algo string, dbTblInfo *DbTableInfo, tabledef *plan.TableDef, indexdef []*plan.IndexDef) (IndexSqlWriter, error) { +func NewIndexSqlWriter(algo string, info *ConsumerInfo, tabledef *plan.TableDef, indexdef []*plan.IndexDef) (IndexSqlWriter, error) { algo = catalog.ToLower(algo) switch algo { case catalog.MOIndexFullTextAlgo.ToString(): - return NewFulltextSqlWriter(algo, dbTblInfo, tabledef, indexdef) + return NewFulltextSqlWriter(algo, info, tabledef, indexdef) case catalog.MoIndexIvfFlatAlgo.ToString(): - return NewIvfflatSqlWriter(algo, dbTblInfo, tabledef, indexdef) + return NewIvfflatSqlWriter(algo, info, tabledef, indexdef) case catalog.MoIndexHnswAlgo.ToString(): - return NewHnswSqlWriter(algo, dbTblInfo, tabledef, indexdef) + return NewHnswSqlWriter(algo, info, tabledef, indexdef) default: return IndexSqlWriter(nil), moerr.NewInternalErrorNoCtx("IndexSqlWriter: invalid algo type") @@ -244,8 +244,8 @@ func (w *BaseIndexSqlWriter) Empty() bool { } // New Fulltext Sql Writer -func NewFulltextSqlWriter(algo string, dbTblInfo *DbTableInfo, tabledef *plan.TableDef, indexdef []*plan.IndexDef) (IndexSqlWriter, error) { - w := &FulltextSqlWriter{BaseIndexSqlWriter: BaseIndexSqlWriter{algo: algo, tabledef: tabledef, indexdef: indexdef, dbTblInfo: dbTblInfo, vbuf: make([]byte, 0, 1024)}} +func NewFulltextSqlWriter(algo string, info *ConsumerInfo, tabledef *plan.TableDef, indexdef []*plan.IndexDef) (IndexSqlWriter, error) { + w := &FulltextSqlWriter{BaseIndexSqlWriter: BaseIndexSqlWriter{algo: algo, tabledef: tabledef, indexdef: indexdef, info: info, vbuf: make([]byte, 0, 1024)}} w.pkPos = tabledef.Name2ColIndex[tabledef.Pkey.PkeyColName] typ := tabledef.Cols[w.pkPos].Typ @@ -300,7 +300,7 @@ func (w *FulltextSqlWriter) ToSql() ([]byte, error) { } func (w *FulltextSqlWriter) toFulltextDelete() ([]byte, error) { - sql := fmt.Sprintf("DELETE FROM `%s`.`%s` WHERE `%s` IN (%s)", w.dbTblInfo.SinkDbName, w.indexTableName, catalog.FullTextIndex_TabCol_Id, string(w.vbuf)) + sql := fmt.Sprintf("DELETE FROM `%s`.`%s` WHERE `%s` IN (%s)", w.info.DbName, w.indexTableName, catalog.FullTextIndex_TabCol_Id, string(w.vbuf)) return []byte(sql), nil } @@ -332,8 +332,8 @@ func (w *FulltextSqlWriter) toFulltextUpsert(upsert bool) ([]byte, error) { } // Implementation of HNSW Sql writer -func NewHnswSqlWriter(algo string, dbTblInfo *DbTableInfo, tabledef *plan.TableDef, indexdef []*plan.IndexDef) (IndexSqlWriter, error) { - w := &HnswSqlWriter[float32]{tabledef: tabledef, indexdef: indexdef, dbTblInfo: dbTblInfo, cdc: vectorindex.NewVectorIndexCdc[float32]()} +func NewHnswSqlWriter(algo string, info *ConsumerInfo, tabledef *plan.TableDef, indexdef []*plan.IndexDef) (IndexSqlWriter, error) { + w := &HnswSqlWriter[float32]{tabledef: tabledef, indexdef: indexdef, info: info, cdc: vectorindex.NewVectorIndexCdc[float32]()} // check the tabledef and indexdef if len(tabledef.Pkey.Names) != 1 { @@ -409,8 +409,8 @@ func NewHnswSqlWriter(algo string, dbTblInfo *DbTableInfo, tabledef *plan.TableD w.meta = vectorindex.HnswCdcParam{ MetaTbl: meta, IndexTbl: storage, - DbName: dbTblInfo.SinkDbName, - Table: dbTblInfo.SinkTblName, + DbName: info.DbName, + Table: info.TableName, Params: hnswparam, Dimension: tabledef.Cols[w.partsPos[0]].Typ.Width, } @@ -498,8 +498,8 @@ func (w *HnswSqlWriter[T]) ToSql() ([]byte, error) { } // Implementation of Ivfflat Sql writer -func NewIvfflatSqlWriter(algo string, dbTblInfo *DbTableInfo, tabledef *plan.TableDef, indexdef []*plan.IndexDef) (IndexSqlWriter, error) { - w := &IvfflatSqlWriter{BaseIndexSqlWriter: BaseIndexSqlWriter{algo: algo, tabledef: tabledef, indexdef: indexdef, dbTblInfo: dbTblInfo, vbuf: make([]byte, 0, 1024)}} +func NewIvfflatSqlWriter(algo string, info *ConsumerInfo, tabledef *plan.TableDef, indexdef []*plan.IndexDef) (IndexSqlWriter, error) { + w := &IvfflatSqlWriter{BaseIndexSqlWriter: BaseIndexSqlWriter{algo: algo, tabledef: tabledef, indexdef: indexdef, info: info, vbuf: make([]byte, 0, 1024)}} if len(indexdef) != 3 { return nil, moerr.NewInternalErrorNoCtx("ivf index table must have 3 secondary tables") @@ -596,7 +596,7 @@ func (w *IvfflatSqlWriter) ToSql() ([]byte, error) { // catalog.SystemSI_IVFFLAT_TblCol_Entries_pk // catalog.CPrimaryKeyColName func (w *IvfflatSqlWriter) toIvfflatDelete() ([]byte, error) { - sql := fmt.Sprintf("DELETE FROM `%s`.`%s` WHERE `%s` IN (%s)", w.dbTblInfo.SinkDbName, w.entries_tbl, + sql := fmt.Sprintf("DELETE FROM `%s`.`%s` WHERE `%s` IN (%s)", w.info.DbName, w.entries_tbl, catalog.SystemSI_IVFFLAT_TblCol_Entries_pk, string(w.vbuf)) return []byte(sql), nil @@ -619,9 +619,9 @@ func (w *IvfflatSqlWriter) toIvfflatUpsert(upsert bool) ([]byte, error) { cnames_str := strings.Join(cnames, ", ") if !upsert { - sql += fmt.Sprintf("REPLACE INTO `%s`.`%s` ", w.dbTblInfo.SinkDbName, w.entries_tbl) + sql += fmt.Sprintf("REPLACE INTO `%s`.`%s` ", w.info.DbName, w.entries_tbl) } else { - sql += fmt.Sprintf("INSERT INTO `%s`.`%s` ", w.dbTblInfo.SinkDbName, w.entries_tbl) + sql += fmt.Sprintf("INSERT INTO `%s`.`%s` ", w.info.DbName, w.entries_tbl) } sql += fmt.Sprintf("(`%s`, `%s`, `%s`, `%s`) ", @@ -631,9 +631,9 @@ func (w *IvfflatSqlWriter) toIvfflatUpsert(upsert bool) ([]byte, error) { catalog.SystemSI_IVFFLAT_TblCol_Entries_entry) versql := fmt.Sprintf("SELECT CAST(%s as BIGINT) FROM `%s`.`%s` WHERE `%s` = 'version'", catalog.SystemSI_IVFFLAT_TblCol_Metadata_val, - w.dbTblInfo.SinkDbName, w.meta_tbl, catalog.SystemSI_IVFFLAT_TblCol_Metadata_key) + w.info.DbName, w.meta_tbl, catalog.SystemSI_IVFFLAT_TblCol_Metadata_key) - sql += fmt.Sprintf("WITH centroid as (SELECT * FROM `%s`.`%s` WHERE `%s` = (%s) ), ", w.dbTblInfo.SinkDbName, w.centroids_tbl, catalog.SystemSI_IVFFLAT_TblCol_Centroids_version, versql) + sql += fmt.Sprintf("WITH centroid as (SELECT * FROM `%s`.`%s` WHERE `%s` = (%s) ), ", w.info.DbName, w.centroids_tbl, catalog.SystemSI_IVFFLAT_TblCol_Centroids_version, versql) sql += fmt.Sprintf("src as (SELECT %s FROM (VALUES %s)) ", cols, string(w.vbuf)) sql += fmt.Sprintf("SELECT `%s`, `%s`, %s FROM src CENTROIDX('%s') JOIN centroid using (`%s`, `%s`)", catalog.SystemSI_IVFFLAT_TblCol_Centroids_version, From ffa5da713c7aa8b7e8f9618a73f1f66030cc1242 Mon Sep 17 00:00:00 2001 From: cpegeric Date: Tue, 1 Jul 2025 12:25:16 +0100 Subject: [PATCH 200/223] update --- pkg/idxcdc/consumer_test.go | 8 + pkg/idxcdc/index_sqlwriter_test.go | 238 +++++++++++++++++++++++++++++ 2 files changed, 246 insertions(+) create mode 100644 pkg/idxcdc/index_sqlwriter_test.go diff --git a/pkg/idxcdc/consumer_test.go b/pkg/idxcdc/consumer_test.go index fb236f965a5bc..51af020bd4eab 100644 --- a/pkg/idxcdc/consumer_test.go +++ b/pkg/idxcdc/consumer_test.go @@ -66,6 +66,14 @@ func newTestTableDef(pkName string, pkType types.T, vecColName string, vecType t } } +func newTestConsumerInfo() *ConsumerInfo { + return &ConsumerInfo{ + DbName: "test_db", + TableName: "test_tbl", + IndexName: "hnsw_idx", + } +} + type MockSQLExecutor struct { } diff --git a/pkg/idxcdc/index_sqlwriter_test.go b/pkg/idxcdc/index_sqlwriter_test.go new file mode 100644 index 0000000000000..149296ff8f6c5 --- /dev/null +++ b/pkg/idxcdc/index_sqlwriter_test.go @@ -0,0 +1,238 @@ +// Copyright 2024 Matrix Origin +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package cdc + +import ( + "context" + "fmt" + "testing" + + "github.com/matrixorigin/matrixone/pkg/catalog" + "github.com/matrixorigin/matrixone/pkg/container/types" + "github.com/matrixorigin/matrixone/pkg/pb/plan" + "github.com/stretchr/testify/require" +) + +func newTestIvfflatTableDef(pkName string, pkType types.T, vecColName string, vecType types.T, vecWidth int32) *plan.TableDef { + return &plan.TableDef{ + Name: "test_orig_tbl", + Name2ColIndex: map[string]int32{ + pkName: 0, + vecColName: 1, + "dummy": 2, // Add another col to make sure pk/vec col indices are used + }, + Cols: []*plan.ColDef{ + {Name: pkName, Typ: plan.Type{Id: int32(pkType)}}, + {Name: vecColName, Typ: plan.Type{Id: int32(vecType), Width: vecWidth}}, + {Name: "dummy", Typ: plan.Type{Id: int32(types.T_int32)}}, + }, + Pkey: &plan.PrimaryKeyDef{ + Names: []string{pkName}, + PkeyColName: pkName, + }, + Indexes: []*plan.IndexDef{ + { + IndexName: "ivfidx", + TableExist: true, + IndexAlgo: catalog.MoIndexIvfFlatAlgo.ToString(), + IndexAlgoTableType: catalog.SystemSI_IVFFLAT_TblType_Metadata, + IndexTableName: "meta_tbl", + Parts: []string{vecColName}, + IndexAlgoParams: `{"lists":"16","op_type":"vector_l2_ops"}`, + }, + { + IndexName: "ivfidx", + TableExist: true, + IndexAlgo: catalog.MoIndexIvfFlatAlgo.ToString(), + IndexAlgoTableType: catalog.SystemSI_IVFFLAT_TblType_Centroids, + IndexTableName: "centroids_tbl", + Parts: []string{vecColName}, + IndexAlgoParams: `{"lists":"16","op_type":"vector_l2_ops"}`, + }, + { + IndexName: "ivfidx", + TableExist: true, + IndexAlgo: catalog.MoIndexIvfFlatAlgo.ToString(), + IndexAlgoTableType: catalog.SystemSI_IVFFLAT_TblType_Entries, + IndexTableName: "entries_tbl", + Parts: []string{vecColName}, + IndexAlgoParams: `{"lists":"16","op_type":"vector_l2_ops"}`, + }, + }, + DbName: "mydb", + } +} + +func newTestFulltextTableDef(pkName string, pkType types.T, vecColName string, vecType types.T, vecWidth int32) *plan.TableDef { + return &plan.TableDef{ + Name: "test_orig_tbl", + Name2ColIndex: map[string]int32{ + pkName: 0, + vecColName: 1, + "dummy": 2, // Add another col to make sure pk/vec col indices are used + }, + Cols: []*plan.ColDef{ + {Name: pkName, Typ: plan.Type{Id: int32(pkType)}}, + {Name: vecColName, Typ: plan.Type{Id: int32(vecType), Width: vecWidth}}, + {Name: "dummy", Typ: plan.Type{Id: int32(types.T_int32)}}, + }, + Pkey: &plan.PrimaryKeyDef{ + Names: []string{pkName}, + PkeyColName: pkName, + }, + Indexes: []*plan.IndexDef{ + { + IndexName: "fulltext_idx", + TableExist: true, + IndexAlgo: catalog.MOIndexFullTextAlgo.ToString(), + IndexAlgoTableType: "", + IndexTableName: "fulltext_tbl", + Parts: []string{vecColName}, + IndexAlgoParams: `{"parser":"ngram"}`, + }, + }, + DbName: "mydb", + } +} + +func newTestFulltextTableDef2Parts(pkName string, pkType types.T, vecColName string, vecColName2 string, vecType types.T, vecWidth int32) *plan.TableDef { + return &plan.TableDef{ + Name: "test_orig_tbl", + Name2ColIndex: map[string]int32{ + pkName: 0, + vecColName: 1, + vecColName2: 2, + "dummy": 3, // Add another col to make sure pk/vec col indices are used + }, + Cols: []*plan.ColDef{ + {Name: pkName, Typ: plan.Type{Id: int32(pkType)}}, + {Name: vecColName, Typ: plan.Type{Id: int32(vecType), Width: vecWidth}}, + {Name: vecColName2, Typ: plan.Type{Id: int32(vecType), Width: vecWidth}}, + {Name: "dummy", Typ: plan.Type{Id: int32(types.T_int32)}}, + }, + Pkey: &plan.PrimaryKeyDef{ + Names: []string{pkName}, + PkeyColName: pkName, + }, + Indexes: []*plan.IndexDef{ + { + IndexName: "fulltext_idx", + TableExist: true, + IndexAlgo: catalog.MOIndexFullTextAlgo.ToString(), + IndexAlgoTableType: "", + IndexTableName: "fulltext_tbl", + Parts: []string{vecColName, vecColName2}, + IndexAlgoParams: `{"parser":"ngram"}`, + }, + }, + DbName: "mydb", + } +} + +func TestNewFulltextSqlWriter(t *testing.T) { + var ctx context.Context + + tabledef := newTestFulltextTableDef("id", types.T_int64, "body", types.T_varchar, 256) + consumerInfo := newTestConsumerInfo() + + writer, err := NewIndexSqlWriter("fulltext", consumerInfo, tabledef, tabledef.Indexes) + require.Nil(t, err) + + row := []any{int64(1000), []uint8("hello world"), nil} + err = writer.Upsert(ctx, row) + require.Nil(t, err) + + row = []any{int64(2000), []uint8("hello world"), nil} + err = writer.Upsert(ctx, row) + require.Nil(t, err) + + bytes, err := writer.ToSql() + require.Nil(t, err) + fmt.Println(string(bytes)) + +} + +func TestNewFulltextSqlWriterCPkey(t *testing.T) { + var ctx context.Context + + tabledef := newTestFulltextTableDef2Parts("__mo_cpkey", types.T_varbinary, "body", "title", types.T_varchar, 256) + consumerInfo := newTestConsumerInfo() + + writer, err := NewIndexSqlWriter("fulltext", consumerInfo, tabledef, tabledef.Indexes) + require.Nil(t, err) + + row := []any{[]uint8("abcdef12"), []uint8("hello world"), []uint8("one title"), nil} + err = writer.Upsert(ctx, row) + require.Nil(t, err) + + row = []any{[]uint8("abc"), []uint8("hello world"), []uint8("two title"), nil} + err = writer.Upsert(ctx, row) + require.Nil(t, err) + + bytes, err := writer.ToSql() + require.Nil(t, err) + fmt.Println(string(bytes)) + +} + +func TestNewHnswSqlWriter(t *testing.T) { + var ctx context.Context + + tabledef := newTestTableDef("pk", types.T_int64, "vec", types.T_array_float32, 3) + consumerInfo := newTestConsumerInfo() + + writer, err := NewHnswSqlWriter("fulltext", consumerInfo, tabledef, tabledef.Indexes) + require.Nil(t, err) + row := []any{int64(1000), []float32{1, 2, 3}, nil} + err = writer.Upsert(ctx, row) + require.Nil(t, err) + + row = []any{int64(2000), []float32{5, 6, 7}, nil} + err = writer.Insert(ctx, row) + require.Nil(t, err) + + row = []any{int64(3000), []float32{5, 6, 7}, nil} + err = writer.Delete(ctx, row) + require.Nil(t, err) + + bytes, err := writer.ToSql() + require.Nil(t, err) + fmt.Println(string(bytes)) +} + +func TestNewIvfflatSqlWriter(t *testing.T) { + var ctx context.Context + + tabledef := newTestIvfflatTableDef("pk", types.T_int64, "vec", types.T_array_float64, 3) + consumerInfo := newTestConsumerInfo() + + writer, err := NewIvfflatSqlWriter("ivfflat", consumerInfo, tabledef, tabledef.Indexes) + require.Nil(t, err) + row := []any{int64(1000), []float64{1, 2, 3}, nil} + err = writer.Insert(ctx, row) + require.Nil(t, err) + + row = []any{int64(2000), []float64{5, 6, 7}, nil} + err = writer.Insert(ctx, row) + require.Nil(t, err) + + row = []any{int64(3000), []float64{5, 6, 7}, nil} + err = writer.Insert(ctx, row) + require.Nil(t, err) + + bytes, err := writer.ToSql() + require.Nil(t, err) + fmt.Println(string(bytes)) +} From fc4b7d251ba0f12b180517b1126e2b8ef7e5545a Mon Sep 17 00:00:00 2001 From: cpegeric Date: Tue, 1 Jul 2025 12:33:18 +0100 Subject: [PATCH 201/223] update idxcdc --- pkg/idxcdc/consumer.go | 2 +- pkg/idxcdc/consumer_test.go | 2 +- pkg/idxcdc/index_sqlwriter.go | 2 +- pkg/idxcdc/index_sqlwriter_test.go | 2 +- pkg/idxcdc/types.go | 2 +- pkg/idxcdc/util.go | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/pkg/idxcdc/consumer.go b/pkg/idxcdc/consumer.go index cad4e0ae1418d..b8f6b67f25e88 100644 --- a/pkg/idxcdc/consumer.go +++ b/pkg/idxcdc/consumer.go @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -package cdc +package idxcdc import ( "context" diff --git a/pkg/idxcdc/consumer_test.go b/pkg/idxcdc/consumer_test.go index 51af020bd4eab..84769b1ab9643 100644 --- a/pkg/idxcdc/consumer_test.go +++ b/pkg/idxcdc/consumer_test.go @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -package cdc +package idxcdc import ( "context" diff --git a/pkg/idxcdc/index_sqlwriter.go b/pkg/idxcdc/index_sqlwriter.go index a205ae9e2b9f7..8282ce72c4324 100644 --- a/pkg/idxcdc/index_sqlwriter.go +++ b/pkg/idxcdc/index_sqlwriter.go @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -package cdc +package idxcdc import ( "context" diff --git a/pkg/idxcdc/index_sqlwriter_test.go b/pkg/idxcdc/index_sqlwriter_test.go index 149296ff8f6c5..bb12e457e2cff 100644 --- a/pkg/idxcdc/index_sqlwriter_test.go +++ b/pkg/idxcdc/index_sqlwriter_test.go @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -package cdc +package idxcdc import ( "context" diff --git a/pkg/idxcdc/types.go b/pkg/idxcdc/types.go index a9d51dafc607e..c2651959fdbfc 100644 --- a/pkg/idxcdc/types.go +++ b/pkg/idxcdc/types.go @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -package cdc +package idxcdc import ( "bytes" diff --git a/pkg/idxcdc/util.go b/pkg/idxcdc/util.go index 329526fd9c2db..ea272bf5285d4 100644 --- a/pkg/idxcdc/util.go +++ b/pkg/idxcdc/util.go @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -package cdc +package idxcdc import ( "context" From 3b0ca173e9cfb9e2e20e7fec5dd5feadfe21a110 Mon Sep 17 00:00:00 2001 From: cpegeric Date: Tue, 1 Jul 2025 12:35:11 +0100 Subject: [PATCH 202/223] update --- pkg/cdc/consumer.go | 429 --------------------------------------- pkg/cdc/consumer_test.go | 43 ---- 2 files changed, 472 deletions(-) delete mode 100644 pkg/cdc/consumer.go delete mode 100644 pkg/cdc/consumer_test.go diff --git a/pkg/cdc/consumer.go b/pkg/cdc/consumer.go deleted file mode 100644 index a2a72b0cb84f3..0000000000000 --- a/pkg/cdc/consumer.go +++ /dev/null @@ -1,429 +0,0 @@ -// Copyright 2024 Matrix Origin -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package cdc - -import ( - "context" - "fmt" - "os" - "sync" - "time" - - "github.com/matrixorigin/matrixone/pkg/catalog" - "github.com/matrixorigin/matrixone/pkg/logutil" - "github.com/matrixorigin/matrixone/pkg/pb/plan" - "github.com/matrixorigin/matrixone/pkg/txn/client" - "github.com/matrixorigin/matrixone/pkg/util/executor" - "github.com/matrixorigin/matrixone/pkg/vectorindex" -) - -type DataRetriever interface { - Next() (insertBatch *AtomicBatch, deleteBatch *AtomicBatch, noMoreData bool, err error) - UpdateWatermark(executor.TxnExecutor, executor.StatementOption) error - GetDataType() int8 -} - -type TxnRetriever struct { -} - -func (r *TxnRetriever) Next() (insertBatch *AtomicBatch, deleteBatch *AtomicBatch, noMoreData bool, err error) { - logutil.Infof("TxRetriever Next()") - return nil, nil, true, nil -} - -func (r *TxnRetriever) UpdateWatermark(executor.TxnExecutor, executor.StatementOption) error { - logutil.Infof("TxnRetriever.UpdateWatermark()") - return nil -} - -func (r *TxnRetriever) GetDataType() int8 { - return 0 -} - -var _ DataRetriever = new(TxnRetriever) - -func NewTxnRetriever(txn client.TxnOperator) DataRetriever { - return &TxnRetriever{} -} - -type ConsumerInfo struct { - ConsumerType int8 - TableName string - DbName string - IndexName string -} - -type Consumer interface { - Consume(context.Context, DataRetriever) error -} - -type IndexConsumer struct { - cnUUID string - info *ConsumerInfo - dbTblInfo *DbTableInfo - tableDef *plan.TableDef - sqlWriter IndexSqlWriter - exec executor.SQLExecutor - rowdata []any - rowdelete []any - sqlBufSendCh chan []byte -} - -var _ Consumer = new(IndexConsumer) - -func NewIndexConsumer(cnUUID string, - tableDef *plan.TableDef, - info *ConsumerInfo) (Consumer, error) { - - exec, err := sqlExecutorFactory(cnUUID) - if err != nil { - return nil, err - } - - dbTblInfo := &DbTableInfo{SinkDbName: info.DbName, SinkTblName: info.TableName} - - ie := &IndexEntry{indexes: make([]*plan.IndexDef, 0, 3)} - - for _, idx := range tableDef.Indexes { - if idx.TableExist && (catalog.IsHnswIndexAlgo(idx.IndexAlgo) || catalog.IsIvfIndexAlgo(idx.IndexAlgo) || catalog.IsFullTextIndexAlgo(idx.IndexAlgo)) { - key := idx.IndexName - if key == info.IndexName { - if len(ie.algo) == 0 { - ie.algo = idx.IndexAlgo - } - ie.indexes = append(ie.indexes, idx) - } - } - - } - - sqlwriter, err := NewIndexSqlWriter(ie.algo, dbTblInfo, tableDef, ie.indexes) - - c := &IndexConsumer{cnUUID: cnUUID, - info: info, - dbTblInfo: dbTblInfo, - tableDef: tableDef, - sqlWriter: sqlwriter, - exec: exec, - rowdata: make([]any, len(tableDef.Cols)), - rowdelete: make([]any, 1), - //sqlBufSendCh: make(chan []byte), - } - - return c, nil -} - -func (c *IndexConsumer) run(ctx context.Context, errch chan error, r DataRetriever) { - - datatype := r.GetDataType() - - if datatype == 0 { - // SNAPSHOT - for { - select { - case <-ctx.Done(): - return - case e2 := <-errch: - errch <- e2 - return - case sql, ok := <-c.sqlBufSendCh: - if !ok { - return - } - func() { - newctx, cancel := context.WithTimeout(context.Background(), time.Hour) - defer cancel() - //os.Stderr.WriteString("Wait for BEGIN but sql. execute anyway\n") - opts := executor.Options{} - res, err := c.exec.Exec(newctx, string(sql), opts) - if err != nil { - logutil.Errorf("cdc indexConsumer(%v) send sql failed, err: %v, sql: %s", c.dbTblInfo, err, string(sql)) - os.Stderr.WriteString(fmt.Sprintf("sql executor run failed. %s\n", string(sql))) - os.Stderr.WriteString(fmt.Sprintf("err :%v\n", err)) - errch <- err - } - res.Close() - }() - } - } - - } else { - // TAIL - newctx, cancel := context.WithTimeout(context.Background(), time.Hour) - defer cancel() - opts := executor.Options{} - err := c.exec.ExecTxn(newctx, - func(exec executor.TxnExecutor) error { - for { - select { - case <-ctx.Done(): - return nil - case e2 := <-errch: - return e2 - case sql, ok := <-c.sqlBufSendCh: - if !ok { - // channel closed - return r.UpdateWatermark(exec, opts.StatementOption()) - } - - // update SQL - res, err := exec.Exec(string(sql), opts.StatementOption()) - if err != nil { - return err - } - res.Close() - } - } - }, opts) - if err != nil { - errch <- err - return - } - } - -} - -func (c *IndexConsumer) Consume(ctx context.Context, r DataRetriever) error { - noMoreData := false - var insertBatch, deleteBatch *AtomicBatch - errch := make(chan error, 2) - var err error - - c.sqlBufSendCh = make(chan []byte) - defer func() { - c.sqlBufSendCh = nil - c.sqlWriter.Reset() - }() - - datatype := r.GetDataType() - - // create thread to poll sql - var wg sync.WaitGroup - wg.Add(1) - go func() { - defer wg.Done() - c.run(ctx, errch, r) - }() - - // read data - for !noMoreData { - - insertBatch, deleteBatch, noMoreData, err = r.Next() - if err != nil { - errch <- err - noMoreData = true - continue - } - - if noMoreData { - close(c.sqlBufSendCh) - continue - } - - // update index - - if datatype == 0 { - // SNAPSHOT - err := c.sinkSnapshot(ctx, insertBatch) - if err != nil { - // error out - errch <- err - noMoreData = true - } - - } else { - // sinkTail will save sql to the slice - err := c.sinkTail(ctx, insertBatch, deleteBatch) - if err != nil { - // error out - errch <- err - noMoreData = true - } - } - - } - - wg.Wait() - - if len(errch) > 0 { - return <-errch - } - - return nil -} - -func (c *IndexConsumer) sinkSnapshot(ctx context.Context, upsertBatch *AtomicBatch) error { - var err error - - for _, bat := range upsertBatch.Batches { - for i := 0; i < batchRowCount(bat); i++ { - if err = extractRowFromEveryVector(ctx, bat, i, c.rowdata); err != nil { - return err - } - - err = c.sqlWriter.Upsert(ctx, c.rowdata) - if err != nil { - return err - } - - if c.sqlWriter.Full() { - err = c.sendSql(c.sqlWriter) - if err != nil { - return err - } - } - } - } - - return nil -} - -// upsertBatch and deleteBatch is sorted by ts -// for the same ts, delete first, then upsert -func (c *IndexConsumer) sinkTail(ctx context.Context, upsertBatch, deleteBatch *AtomicBatch) error { - var err error - - upsertIter := upsertBatch.GetRowIterator().(*atomicBatchRowIter) - deleteIter := deleteBatch.GetRowIterator().(*atomicBatchRowIter) - defer func() { - upsertIter.Close() - deleteIter.Close() - }() - - // output sql until one iterator reach the end - upsertIterHasNext, deleteIterHasNext := upsertIter.Next(), deleteIter.Next() - for upsertIterHasNext && deleteIterHasNext { - upsertItem, deleteItem := upsertIter.Item(), deleteIter.Item() - // compare ts, ignore pk - if upsertItem.Ts.LT(&deleteItem.Ts) { - if err = c.sinkUpsert(ctx, upsertIter); err != nil { - return err - } - // get next item - upsertIterHasNext = upsertIter.Next() - } else { - if err = c.sinkDelete(ctx, deleteIter); err != nil { - return err - } - // get next item - deleteIterHasNext = deleteIter.Next() - } - } - - // output the rest of upsert iterator - for upsertIterHasNext { - if err = c.sinkUpsert(ctx, upsertIter); err != nil { - return err - } - // get next item - upsertIterHasNext = upsertIter.Next() - } - - // output the rest of delete iterator - for deleteIterHasNext { - if err = c.sinkDelete(ctx, deleteIter); err != nil { - return err - } - // get next item - deleteIterHasNext = deleteIter.Next() - } - c.flushCdc() - return nil -} - -func (c *IndexConsumer) sinkUpsert(ctx context.Context, upsertIter *atomicBatchRowIter) (err error) { - - // get row from the batch - if err = upsertIter.Row(ctx, c.rowdata); err != nil { - return err - } - - if !c.sqlWriter.CheckLastOp(vectorindex.CDC_UPSERT) { - // last op is not UPSERT, sendSql first - // send SQL - err = c.sendSql(c.sqlWriter) - if err != nil { - return err - } - - } - - c.sqlWriter.Upsert(ctx, c.rowdata) - - if c.sqlWriter.Full() { - // send SQL - err = c.sendSql(c.sqlWriter) - if err != nil { - return err - } - } - - return nil -} - -func (c *IndexConsumer) sinkDelete(ctx context.Context, deleteIter *atomicBatchRowIter) (err error) { - - // get row from the batch - if err = deleteIter.Row(ctx, c.rowdelete); err != nil { - return err - } - - if !c.sqlWriter.CheckLastOp(vectorindex.CDC_DELETE) { - // last op is not DELETE, sendSql first - // send SQL - err = c.sendSql(c.sqlWriter) - if err != nil { - return err - } - - } - - c.sqlWriter.Delete(ctx, c.rowdelete) - - if c.sqlWriter.Full() { - // send SQL - err = c.sendSql(c.sqlWriter) - if err != nil { - return err - } - } - - return nil -} - -func (c *IndexConsumer) sendSql(writer IndexSqlWriter) error { - if writer.Empty() { - return nil - } - - // generate sql from cdc - sql, err := writer.ToSql() - if err != nil { - return err - } - - c.sqlBufSendCh <- sql - os.Stderr.WriteString(string(sql)) - os.Stderr.WriteString("\n") - - // reset - writer.Reset() - - return nil -} - -func (c *IndexConsumer) flushCdc() error { - return c.sendSql(c.sqlWriter) -} diff --git a/pkg/cdc/consumer_test.go b/pkg/cdc/consumer_test.go deleted file mode 100644 index f76422c9308f2..0000000000000 --- a/pkg/cdc/consumer_test.go +++ /dev/null @@ -1,43 +0,0 @@ -// Copyright 2024 Matrix Origin -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package cdc - -import ( - "context" - "testing" - - "github.com/matrixorigin/matrixone/pkg/container/types" - "github.com/prashantv/gostub" - "github.com/stretchr/testify/require" -) - -func TestConsumer(t *testing.T) { - ctx, cancel := context.WithCancel(context.Background()) - defer cancel() - - sqlexecstub := gostub.Stub(&sqlExecutorFactory, mockSqlExecutorFactory) - defer sqlexecstub.Reset() - - r := NewTxnRetriever(nil) - - tblDef := newTestTableDef("pk", types.T_int64, "vec", types.T_array_float32, 4) - cnUUID := "a-b-c-d" - info := &ConsumerInfo{DbName: "db", TableName: "tbl", IndexName: "hnsw_idx"} - - consumer, err := NewIndexConsumer(cnUUID, tblDef, info) - require.NoError(t, err) - err = consumer.Consume(ctx, r) - require.NoError(t, err) -} From fab81f19a311354fbe6ae3fb3a9100fd86d6474d Mon Sep 17 00:00:00 2001 From: cpegeric Date: Tue, 1 Jul 2025 12:41:04 +0100 Subject: [PATCH 203/223] tail use insert, snapshot use upsert --- pkg/idxcdc/consumer.go | 12 ++++++------ pkg/idxcdc/index_sqlwriter.go | 4 ++-- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/pkg/idxcdc/consumer.go b/pkg/idxcdc/consumer.go index b8f6b67f25e88..4abf19aa7e0d2 100644 --- a/pkg/idxcdc/consumer.go +++ b/pkg/idxcdc/consumer.go @@ -323,7 +323,7 @@ func (c *IndexConsumer) sinkTail(ctx context.Context, upsertBatch, deleteBatch * upsertItem, deleteItem := upsertIter.Item(), deleteIter.Item() // compare ts, ignore pk if upsertItem.Ts.LT(&deleteItem.Ts) { - if err = c.sinkUpsert(ctx, upsertIter); err != nil { + if err = c.sinkInsert(ctx, upsertIter); err != nil { return err } // get next item @@ -339,7 +339,7 @@ func (c *IndexConsumer) sinkTail(ctx context.Context, upsertBatch, deleteBatch * // output the rest of upsert iterator for upsertIterHasNext { - if err = c.sinkUpsert(ctx, upsertIter); err != nil { + if err = c.sinkInsert(ctx, upsertIter); err != nil { return err } // get next item @@ -358,15 +358,15 @@ func (c *IndexConsumer) sinkTail(ctx context.Context, upsertBatch, deleteBatch * return nil } -func (c *IndexConsumer) sinkUpsert(ctx context.Context, upsertIter *atomicBatchRowIter) (err error) { +func (c *IndexConsumer) sinkInsert(ctx context.Context, upsertIter *atomicBatchRowIter) (err error) { // get row from the batch if err = upsertIter.Row(ctx, c.rowdata); err != nil { return err } - if !c.sqlWriter.CheckLastOp(vectorindex.CDC_UPSERT) { - // last op is not UPSERT, sendSql first + if !c.sqlWriter.CheckLastOp(vectorindex.CDC_INSERT) { + // last op is not INSERT, sendSql first // send SQL err = c.sendSql(c.sqlWriter) if err != nil { @@ -375,7 +375,7 @@ func (c *IndexConsumer) sinkUpsert(ctx context.Context, upsertIter *atomicBatchR } - c.sqlWriter.Upsert(ctx, c.rowdata) + c.sqlWriter.Insert(ctx, c.rowdata) if c.sqlWriter.Full() { // send SQL diff --git a/pkg/idxcdc/index_sqlwriter.go b/pkg/idxcdc/index_sqlwriter.go index 8282ce72c4324..16423444f4139 100644 --- a/pkg/idxcdc/index_sqlwriter.go +++ b/pkg/idxcdc/index_sqlwriter.go @@ -319,7 +319,7 @@ func (w *FulltextSqlWriter) toFulltextUpsert(upsert bool) ([]byte, error) { cols := strings.Join(coldefs, ", ") cnames_str := strings.Join(cnames, ", ") - if !upsert { + if upsert { sql += fmt.Sprintf("REPLACE INTO `%s`.`%s` ", w.dbName, w.indexTableName) } else { sql += fmt.Sprintf("INSERT INTO `%s`.`%s` ", w.dbName, w.indexTableName) @@ -618,7 +618,7 @@ func (w *IvfflatSqlWriter) toIvfflatUpsert(upsert bool) ([]byte, error) { cols := strings.Join(coldefs, ", ") cnames_str := strings.Join(cnames, ", ") - if !upsert { + if upsert { sql += fmt.Sprintf("REPLACE INTO `%s`.`%s` ", w.info.DbName, w.entries_tbl) } else { sql += fmt.Sprintf("INSERT INTO `%s`.`%s` ", w.info.DbName, w.entries_tbl) From 268ab6e04537b18a5de21a660b3bfd7101568659 Mon Sep 17 00:00:00 2001 From: cpegeric Date: Tue, 1 Jul 2025 12:51:03 +0100 Subject: [PATCH 204/223] update --- pkg/idxcdc/consumer.go | 60 +++++++++++++------------------------ pkg/idxcdc/consumer_test.go | 24 +++++++++++++++ 2 files changed, 44 insertions(+), 40 deletions(-) diff --git a/pkg/idxcdc/consumer.go b/pkg/idxcdc/consumer.go index 4abf19aa7e0d2..922cd6803fd75 100644 --- a/pkg/idxcdc/consumer.go +++ b/pkg/idxcdc/consumer.go @@ -30,6 +30,25 @@ import ( "github.com/matrixorigin/matrixone/pkg/vectorindex" ) +/* CDC API */ +type DataRetriever interface { + Next() (insertBatch *AtomicBatch, deleteBatch *AtomicBatch, noMoreData bool, err error) + UpdateWatermark(executor.TxnExecutor, executor.StatementOption) error + GetDataType() int8 +} + +type ConsumerInfo struct { + ConsumerType int8 + TableName string + DbName string + IndexName string +} + +type Consumer interface { + Consume(context.Context, DataRetriever) error +} + +/* IndexConsumer */ type IndexEntry struct { algo string indexes []*plan.IndexDef @@ -48,46 +67,7 @@ func _sqlExecutorFactory(cnUUID string) (executor.SQLExecutor, error) { return exec, nil } -type DataRetriever interface { - Next() (insertBatch *AtomicBatch, deleteBatch *AtomicBatch, noMoreData bool, err error) - UpdateWatermark(executor.TxnExecutor, executor.StatementOption) error - GetDataType() int8 -} - -type TxnRetriever struct { -} - -func (r *TxnRetriever) Next() (insertBatch *AtomicBatch, deleteBatch *AtomicBatch, noMoreData bool, err error) { - logutil.Infof("TxRetriever Next()") - return nil, nil, true, nil -} - -func (r *TxnRetriever) UpdateWatermark(executor.TxnExecutor, executor.StatementOption) error { - logutil.Infof("TxnRetriever.UpdateWatermark()") - return nil -} - -func (r *TxnRetriever) GetDataType() int8 { - return 0 -} - -var _ DataRetriever = new(TxnRetriever) - -func NewTxnRetriever() DataRetriever { - return &TxnRetriever{} -} - -type ConsumerInfo struct { - ConsumerType int8 - TableName string - DbName string - IndexName string -} - -type Consumer interface { - Consume(context.Context, DataRetriever) error -} - +/* IndexConsumer */ type IndexConsumer struct { cnUUID string info *ConsumerInfo diff --git a/pkg/idxcdc/consumer_test.go b/pkg/idxcdc/consumer_test.go index 84769b1ab9643..26fd70d871ac9 100644 --- a/pkg/idxcdc/consumer_test.go +++ b/pkg/idxcdc/consumer_test.go @@ -20,12 +20,36 @@ import ( "github.com/matrixorigin/matrixone/pkg/catalog" "github.com/matrixorigin/matrixone/pkg/container/types" + "github.com/matrixorigin/matrixone/pkg/logutil" "github.com/matrixorigin/matrixone/pkg/pb/plan" "github.com/matrixorigin/matrixone/pkg/util/executor" "github.com/prashantv/gostub" "github.com/stretchr/testify/require" ) +type TxnRetriever struct { +} + +func (r *TxnRetriever) Next() (insertBatch *AtomicBatch, deleteBatch *AtomicBatch, noMoreData bool, err error) { + logutil.Infof("TxRetriever Next()") + return nil, nil, true, nil +} + +func (r *TxnRetriever) UpdateWatermark(executor.TxnExecutor, executor.StatementOption) error { + logutil.Infof("TxnRetriever.UpdateWatermark()") + return nil +} + +func (r *TxnRetriever) GetDataType() int8 { + return 0 +} + +var _ DataRetriever = new(TxnRetriever) + +func NewTxnRetriever() DataRetriever { + return &TxnRetriever{} +} + func newTestTableDef(pkName string, pkType types.T, vecColName string, vecType types.T, vecWidth int32) *plan.TableDef { return &plan.TableDef{ Name: "test_orig_tbl", From d06cb28dc7903a5f23ec60a9f1a41f70c9468b50 Mon Sep 17 00:00:00 2001 From: cpegeric Date: Tue, 1 Jul 2025 14:10:29 +0100 Subject: [PATCH 205/223] update --- pkg/idxcdc/consumer.go | 4 ++-- pkg/idxcdc/types.go | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/pkg/idxcdc/consumer.go b/pkg/idxcdc/consumer.go index 922cd6803fd75..97ca9f847be5c 100644 --- a/pkg/idxcdc/consumer.go +++ b/pkg/idxcdc/consumer.go @@ -124,7 +124,7 @@ func (c *IndexConsumer) run(ctx context.Context, errch chan error, r DataRetriev datatype := r.GetDataType() - if datatype == 0 { + if datatype == int8(OutputTypeSnapshot) { // SNAPSHOT for { select { @@ -229,7 +229,7 @@ func (c *IndexConsumer) Consume(ctx context.Context, r DataRetriever) error { // update index - if datatype == 0 { + if datatype == int8(OutputTypeSnapshot) { // SNAPSHOT err := c.sinkSnapshot(ctx, insertBatch) if err != nil { diff --git a/pkg/idxcdc/types.go b/pkg/idxcdc/types.go index c2651959fdbfc..2e33d53c94141 100644 --- a/pkg/idxcdc/types.go +++ b/pkg/idxcdc/types.go @@ -191,7 +191,7 @@ func NewCdcActiveRoutine() *ActiveRoutine { } } -type OutputType int +type OutputType int8 const ( OutputTypeSnapshot OutputType = iota From 76b2c62a2edb8f7f6098272f3d8eb2b347d05d17 Mon Sep 17 00:00:00 2001 From: cpegeric Date: Tue, 1 Jul 2025 14:22:16 +0100 Subject: [PATCH 206/223] mock retriever --- pkg/idxcdc/consumer_test.go | 33 +++++++++++++++++++++------------ 1 file changed, 21 insertions(+), 12 deletions(-) diff --git a/pkg/idxcdc/consumer_test.go b/pkg/idxcdc/consumer_test.go index 26fd70d871ac9..20938e598080e 100644 --- a/pkg/idxcdc/consumer_test.go +++ b/pkg/idxcdc/consumer_test.go @@ -27,28 +27,32 @@ import ( "github.com/stretchr/testify/require" ) -type TxnRetriever struct { +type MockRetriever struct { + insertBatch *AtomicBatch + deleteBatch *AtomicBatch + noMoreData bool + dtype int8 } -func (r *TxnRetriever) Next() (insertBatch *AtomicBatch, deleteBatch *AtomicBatch, noMoreData bool, err error) { +func (r *MockRetriever) Next() (insertBatch *AtomicBatch, deleteBatch *AtomicBatch, noMoreData bool, err error) { logutil.Infof("TxRetriever Next()") - return nil, nil, true, nil + if !r.noMoreData { + r.noMoreData = true + return r.insertBatch, r.deleteBatch, false, nil + } + return nil, nil, r.noMoreData, nil } -func (r *TxnRetriever) UpdateWatermark(executor.TxnExecutor, executor.StatementOption) error { +func (r *MockRetriever) UpdateWatermark(executor.TxnExecutor, executor.StatementOption) error { logutil.Infof("TxnRetriever.UpdateWatermark()") return nil } -func (r *TxnRetriever) GetDataType() int8 { - return 0 +func (r *MockRetriever) GetDataType() int8 { + return r.dtype } -var _ DataRetriever = new(TxnRetriever) - -func NewTxnRetriever() DataRetriever { - return &TxnRetriever{} -} +var _ DataRetriever = new(MockRetriever) func newTestTableDef(pkName string, pkType types.T, vecColName string, vecType types.T, vecWidth int32) *plan.TableDef { return &plan.TableDef{ @@ -128,7 +132,12 @@ func TestConsumer(t *testing.T) { sqlexecstub := gostub.Stub(&sqlExecutorFactory, mockSqlExecutorFactory) defer sqlexecstub.Reset() - r := NewTxnRetriever() + r := &MockRetriever{ + insertBatch: nil, + deleteBatch: nil, + noMoreData: true, + dtype: int8(OutputTypeSnapshot), + } tblDef := newTestTableDef("pk", types.T_int64, "vec", types.T_array_float32, 4) cnUUID := "a-b-c-d" From 98439c864b2326c8f5549e396af8050ec0c19ca1 Mon Sep 17 00:00:00 2001 From: cpegeric Date: Tue, 1 Jul 2025 14:51:39 +0100 Subject: [PATCH 207/223] flush at the end --- pkg/idxcdc/consumer.go | 4 ++ pkg/idxcdc/consumer_test.go | 101 +++++++++++++++++++++++++++++++++++- 2 files changed, 104 insertions(+), 1 deletion(-) diff --git a/pkg/idxcdc/consumer.go b/pkg/idxcdc/consumer.go index 97ca9f847be5c..100b77f923bcc 100644 --- a/pkg/idxcdc/consumer.go +++ b/pkg/idxcdc/consumer.go @@ -223,6 +223,10 @@ func (c *IndexConsumer) Consume(ctx context.Context, r DataRetriever) error { } if noMoreData { + err := c.flushCdc() + if err != nil { + errch <- err + } close(c.sqlBufSendCh) continue } diff --git a/pkg/idxcdc/consumer_test.go b/pkg/idxcdc/consumer_test.go index 20938e598080e..0dbf4ccabb175 100644 --- a/pkg/idxcdc/consumer_test.go +++ b/pkg/idxcdc/consumer_test.go @@ -16,15 +16,23 @@ package idxcdc import ( "context" + "errors" + "strings" "testing" "github.com/matrixorigin/matrixone/pkg/catalog" + "github.com/matrixorigin/matrixone/pkg/common/moerr" + "github.com/matrixorigin/matrixone/pkg/container/batch" "github.com/matrixorigin/matrixone/pkg/container/types" + "github.com/matrixorigin/matrixone/pkg/container/vector" "github.com/matrixorigin/matrixone/pkg/logutil" "github.com/matrixorigin/matrixone/pkg/pb/plan" + "github.com/matrixorigin/matrixone/pkg/testutil" + "github.com/matrixorigin/matrixone/pkg/txn/client" "github.com/matrixorigin/matrixone/pkg/util/executor" "github.com/prashantv/gostub" "github.com/stretchr/testify/require" + "github.com/tidwall/btree" ) type MockRetriever struct { @@ -108,6 +116,7 @@ type MockSQLExecutor struct { // Exec exec a sql in a exists txn. func (exec MockSQLExecutor) Exec(ctx context.Context, sql string, opts executor.Options) (executor.Result, error) { + //fmt.Println(sql) return executor.Result{}, nil } @@ -117,12 +126,53 @@ func mockSqlExecutorFactory(uuid string) (executor.SQLExecutor, error) { return MockSQLExecutor{}, nil } +type MockErrorTxnExecutor struct { + database string + ctx context.Context +} + +func (exec *MockErrorTxnExecutor) Use(db string) { + exec.database = db +} + +func (exec *MockErrorTxnExecutor) Exec( + sql string, + statementOption executor.StatementOption, +) (executor.Result, error) { + if strings.Contains(sql, "FAILSQL") { + return executor.Result{}, moerr.NewInternalErrorNoCtx("db error") + } else if strings.Contains(sql, "MULTI_ERROR_NO_ROLLBACK") { + var errs error + errs = errors.Join(errs, moerr.NewInternalErrorNoCtx("db error")) + errs = errors.Join(errs, moerr.NewInternalErrorNoCtx("db error 2")) + return executor.Result{}, errs + } else if strings.Contains(sql, "MULTI_ERROR_ROLLBACK") { + var errs error + errs = errors.Join(errs, moerr.NewInternalErrorNoCtx("db error")) + errs = errors.Join(errs, moerr.NewQueryInterrupted(exec.ctx)) + return executor.Result{}, errs + } + + //fmt.Println(sql) + return executor.Result{}, nil +} + +func (exec *MockErrorTxnExecutor) LockTable(table string) error { + return nil +} + +func (exec *MockErrorTxnExecutor) Txn() client.TxnOperator { + return nil +} + // ExecTxn executor sql in a txn. execFunc can use TxnExecutor to exec multiple sql // in a transaction. // NOTE: Pass SQL stmts one by one to TxnExecutor.Exec(). If you pass multiple SQL stmts to // TxnExecutor.Exec() as `\n` seperated string, it will only execute the first SQL statement causing Bug. func (exec MockSQLExecutor) ExecTxn(ctx context.Context, execFunc func(txn executor.TxnExecutor) error, opts executor.Options) error { - return nil + txnexec := &MockErrorTxnExecutor{ctx: ctx} + err := execFunc(txnexec) + return err } func TestConsumer(t *testing.T) { @@ -148,3 +198,52 @@ func TestConsumer(t *testing.T) { err = consumer.Consume(ctx, r) require.NoError(t, err) } + +func TestHnswSnapshot(t *testing.T) { + + proc := testutil.NewProcess() + + ctx, cancel := context.WithCancel(context.Background()) + defer cancel() + + sqlexecstub := gostub.Stub(&sqlExecutorFactory, mockSqlExecutorFactory) + defer sqlexecstub.Reset() + + tblDef := newTestTableDef("pk", types.T_int64, "vec", types.T_array_float32, 4) + cnUUID := "a-b-c-d" + info := &ConsumerInfo{DbName: "db", TableName: "tbl", IndexName: "hnsw_idx"} + + consumer, err := NewIndexConsumer(cnUUID, tblDef, info) + require.NoError(t, err) + + t.Run("snapshot", func(t *testing.T) { + + bat := testutil.NewBatchWithVectors( + []*vector.Vector{ + testutil.NewVector(2, types.T_int64.ToType(), proc.Mp(), false, []int64{1, 2}), + testutil.NewVector(2, types.T_array_float32.ToType(), proc.Mp(), false, [][]float32{{0.1, 0.2}, {0.3, 0.4}}), + testutil.NewVector(2, types.T_int32.ToType(), proc.Mp(), false, []int32{1, 2}), + }, nil) + + defer bat.Clean(testutil.TestUtilMp) + + insertAtomicBat := &AtomicBatch{ + Mp: nil, + Batches: []*batch.Batch{bat}, + Rows: btree.NewBTreeGOptions(AtomicBatchRow.Less, btree.Options{Degree: 64}), + } + + output := &MockRetriever{ + dtype: int8(OutputTypeSnapshot), + insertBatch: insertAtomicBat, + deleteBatch: nil, + noMoreData: false, + } + err := consumer.Consume(ctx, output) + require.NoError(t, err) + //sql, err := c.sqlWriters[0].ToSql() + //require.NoError(t, err) + //require.Equal(t, string(sql), `SELECT hnsw_cdc_update('sink_db', 'sink_tbl', 2, '{"cdc":[{"t":"U","pk":1,"v":[0.1,0.2]},{"t":"U","pk":2,"v":[0.3,0.4]}]}');`) + }) + +} From e0aca7435fdfc2e7b80152c3ea534685364dac81 Mon Sep 17 00:00:00 2001 From: cpegeric Date: Wed, 2 Jul 2025 09:38:24 +0100 Subject: [PATCH 208/223] update test --- pkg/idxcdc/consumer_test.go | 63 ++++++++++++++++++++++++++++++------- 1 file changed, 52 insertions(+), 11 deletions(-) diff --git a/pkg/idxcdc/consumer_test.go b/pkg/idxcdc/consumer_test.go index 0dbf4ccabb175..c4e983b1c7a5e 100644 --- a/pkg/idxcdc/consumer_test.go +++ b/pkg/idxcdc/consumer_test.go @@ -111,24 +111,27 @@ func newTestConsumerInfo() *ConsumerInfo { } type MockSQLExecutor struct { + txnexec executor.TxnExecutor + sqls []string } // Exec exec a sql in a exists txn. -func (exec MockSQLExecutor) Exec(ctx context.Context, sql string, opts executor.Options) (executor.Result, error) { - - //fmt.Println(sql) +func (exec *MockSQLExecutor) Exec(ctx context.Context, sql string, opts executor.Options) (executor.Result, error) { + exec.sqls = append(exec.sqls, sql) + //fmt.Printf("Exec %p %v\n", exec.sqls, exec.sqls) return executor.Result{}, nil } var _ executor.SQLExecutor = new(MockSQLExecutor) func mockSqlExecutorFactory(uuid string) (executor.SQLExecutor, error) { - return MockSQLExecutor{}, nil + return &MockSQLExecutor{}, nil } type MockErrorTxnExecutor struct { database string ctx context.Context + sqls []string } func (exec *MockErrorTxnExecutor) Use(db string) { @@ -153,7 +156,8 @@ func (exec *MockErrorTxnExecutor) Exec( return executor.Result{}, errs } - //fmt.Println(sql) + exec.sqls = append(exec.sqls, sql) + //fmt.Printf("APPEND %s", sql) return executor.Result{}, nil } @@ -170,8 +174,10 @@ func (exec *MockErrorTxnExecutor) Txn() client.TxnOperator { // NOTE: Pass SQL stmts one by one to TxnExecutor.Exec(). If you pass multiple SQL stmts to // TxnExecutor.Exec() as `\n` seperated string, it will only execute the first SQL statement causing Bug. func (exec MockSQLExecutor) ExecTxn(ctx context.Context, execFunc func(txn executor.TxnExecutor) error, opts executor.Options) error { - txnexec := &MockErrorTxnExecutor{ctx: ctx} - err := execFunc(txnexec) + exec.txnexec = &MockErrorTxnExecutor{ctx: ctx} + err := execFunc(exec.txnexec) + exec.sqls = exec.txnexec.(*MockErrorTxnExecutor).sqls + //fmt.Printf("ExecTxn %v\n", exec.sqls) return err } @@ -191,7 +197,8 @@ func TestConsumer(t *testing.T) { tblDef := newTestTableDef("pk", types.T_int64, "vec", types.T_array_float32, 4) cnUUID := "a-b-c-d" - info := &ConsumerInfo{DbName: "db", TableName: "tbl", IndexName: "hnsw_idx"} + info := newTestConsumerInfo() // &ConsumerInfo{DbName: "sink_db", TableName: "sink_tbl", IndexName: "hnsw_idx"} + //info := &ConsumerInfo{DbName: "db", TableName: "tbl", IndexName: "hnsw_idx"} consumer, err := NewIndexConsumer(cnUUID, tblDef, info) require.NoError(t, err) @@ -209,9 +216,9 @@ func TestHnswSnapshot(t *testing.T) { sqlexecstub := gostub.Stub(&sqlExecutorFactory, mockSqlExecutorFactory) defer sqlexecstub.Reset() - tblDef := newTestTableDef("pk", types.T_int64, "vec", types.T_array_float32, 4) + tblDef := newTestTableDef("pk", types.T_int64, "vec", types.T_array_float32, 2) cnUUID := "a-b-c-d" - info := &ConsumerInfo{DbName: "db", TableName: "tbl", IndexName: "hnsw_idx"} + info := newTestConsumerInfo() // &ConsumerInfo{DbName: "sink_db", TableName: "sink_tbl", IndexName: "hnsw_idx"} consumer, err := NewIndexConsumer(cnUUID, tblDef, info) require.NoError(t, err) @@ -241,9 +248,43 @@ func TestHnswSnapshot(t *testing.T) { } err := consumer.Consume(ctx, output) require.NoError(t, err) + sqls := consumer.(*IndexConsumer).exec.(*MockSQLExecutor).sqls + require.Equal(t, len(sqls), 1) + sql := sqls[0] + require.Equal(t, string(sql), `SELECT hnsw_cdc_update('test_db', 'test_tbl', 2, '{"cdc":[{"t":"U","pk":1,"v":[0.1,0.2]},{"t":"U","pk":2,"v":[0.3,0.4]}]}');`) + + //fmt.Printf("Consume %p %v\n", consumer.(*IndexConsumer).exec.(*MockSQLExecutor).sqls, consumer.(*IndexConsumer).exec.(*MockSQLExecutor).sqls) + }) + + t.Run("noMoreData", func(t *testing.T) { + + /* + bat := testutil.NewBatchWithVectors( + []*vector.Vector{ + testutil.NewVector(2, types.T_int64.ToType(), proc.Mp(), false, []int64{1, 2}), + testutil.NewVector(2, types.T_array_float32.ToType(), proc.Mp(), false, [][]float32{{0.1, 0.2}, {0.3, 0.4}}), + testutil.NewVector(2, types.T_int32.ToType(), proc.Mp(), false, []int32{1, 2}), + }, nil) + + defer bat.Clean(testutil.TestUtilMp) + + insertAtomicBat := &AtomicBatch{ + Mp: nil, + Batches: []*batch.Batch{bat}, + Rows: btree.NewBTreeGOptions(AtomicBatchRow.Less, btree.Options{Degree: 64}), + } + */ + + output := &MockRetriever{ + dtype: int8(OutputTypeSnapshot), + insertBatch: nil, + deleteBatch: nil, + noMoreData: true, + } + err := consumer.Consume(ctx, output) + require.NoError(t, err) //sql, err := c.sqlWriters[0].ToSql() //require.NoError(t, err) //require.Equal(t, string(sql), `SELECT hnsw_cdc_update('sink_db', 'sink_tbl', 2, '{"cdc":[{"t":"U","pk":1,"v":[0.1,0.2]},{"t":"U","pk":2,"v":[0.3,0.4]}]}');`) }) - } From 352655dd66c73767347fb91a8469e4034718d2e4 Mon Sep 17 00:00:00 2001 From: cpegeric Date: Wed, 2 Jul 2025 09:44:22 +0100 Subject: [PATCH 209/223] update --- pkg/idxcdc/consumer_test.go | 33 ++++++++------------------------- 1 file changed, 8 insertions(+), 25 deletions(-) diff --git a/pkg/idxcdc/consumer_test.go b/pkg/idxcdc/consumer_test.go index c4e983b1c7a5e..58f9499d1f3f6 100644 --- a/pkg/idxcdc/consumer_test.go +++ b/pkg/idxcdc/consumer_test.go @@ -220,10 +220,9 @@ func TestHnswSnapshot(t *testing.T) { cnUUID := "a-b-c-d" info := newTestConsumerInfo() // &ConsumerInfo{DbName: "sink_db", TableName: "sink_tbl", IndexName: "hnsw_idx"} - consumer, err := NewIndexConsumer(cnUUID, tblDef, info) - require.NoError(t, err) - t.Run("snapshot", func(t *testing.T) { + consumer, err := NewIndexConsumer(cnUUID, tblDef, info) + require.NoError(t, err) bat := testutil.NewBatchWithVectors( []*vector.Vector{ @@ -246,7 +245,7 @@ func TestHnswSnapshot(t *testing.T) { deleteBatch: nil, noMoreData: false, } - err := consumer.Consume(ctx, output) + err = consumer.Consume(ctx, output) require.NoError(t, err) sqls := consumer.(*IndexConsumer).exec.(*MockSQLExecutor).sqls require.Equal(t, len(sqls), 1) @@ -257,23 +256,8 @@ func TestHnswSnapshot(t *testing.T) { }) t.Run("noMoreData", func(t *testing.T) { - - /* - bat := testutil.NewBatchWithVectors( - []*vector.Vector{ - testutil.NewVector(2, types.T_int64.ToType(), proc.Mp(), false, []int64{1, 2}), - testutil.NewVector(2, types.T_array_float32.ToType(), proc.Mp(), false, [][]float32{{0.1, 0.2}, {0.3, 0.4}}), - testutil.NewVector(2, types.T_int32.ToType(), proc.Mp(), false, []int32{1, 2}), - }, nil) - - defer bat.Clean(testutil.TestUtilMp) - - insertAtomicBat := &AtomicBatch{ - Mp: nil, - Batches: []*batch.Batch{bat}, - Rows: btree.NewBTreeGOptions(AtomicBatchRow.Less, btree.Options{Degree: 64}), - } - */ + consumer, err := NewIndexConsumer(cnUUID, tblDef, info) + require.NoError(t, err) output := &MockRetriever{ dtype: int8(OutputTypeSnapshot), @@ -281,10 +265,9 @@ func TestHnswSnapshot(t *testing.T) { deleteBatch: nil, noMoreData: true, } - err := consumer.Consume(ctx, output) + err = consumer.Consume(ctx, output) require.NoError(t, err) - //sql, err := c.sqlWriters[0].ToSql() - //require.NoError(t, err) - //require.Equal(t, string(sql), `SELECT hnsw_cdc_update('sink_db', 'sink_tbl', 2, '{"cdc":[{"t":"U","pk":1,"v":[0.1,0.2]},{"t":"U","pk":2,"v":[0.3,0.4]}]}');`) + sqls := consumer.(*IndexConsumer).exec.(*MockSQLExecutor).sqls + require.Equal(t, len(sqls), 0) }) } From 2567793d7c687ce7e7d97c6cd18d10702a30d57a Mon Sep 17 00:00:00 2001 From: cpegeric Date: Wed, 2 Jul 2025 09:55:03 +0100 Subject: [PATCH 210/223] add test --- pkg/idxcdc/consumer_test.go | 92 +++++++++++++++++++++++++++++++++++-- 1 file changed, 88 insertions(+), 4 deletions(-) diff --git a/pkg/idxcdc/consumer_test.go b/pkg/idxcdc/consumer_test.go index 58f9499d1f3f6..85482543f55f2 100644 --- a/pkg/idxcdc/consumer_test.go +++ b/pkg/idxcdc/consumer_test.go @@ -17,6 +17,7 @@ package idxcdc import ( "context" "errors" + "fmt" "strings" "testing" @@ -173,7 +174,7 @@ func (exec *MockErrorTxnExecutor) Txn() client.TxnOperator { // in a transaction. // NOTE: Pass SQL stmts one by one to TxnExecutor.Exec(). If you pass multiple SQL stmts to // TxnExecutor.Exec() as `\n` seperated string, it will only execute the first SQL statement causing Bug. -func (exec MockSQLExecutor) ExecTxn(ctx context.Context, execFunc func(txn executor.TxnExecutor) error, opts executor.Options) error { +func (exec *MockSQLExecutor) ExecTxn(ctx context.Context, execFunc func(txn executor.TxnExecutor) error, opts executor.Options) error { exec.txnexec = &MockErrorTxnExecutor{ctx: ctx} err := execFunc(exec.txnexec) exec.sqls = exec.txnexec.(*MockErrorTxnExecutor).sqls @@ -197,8 +198,7 @@ func TestConsumer(t *testing.T) { tblDef := newTestTableDef("pk", types.T_int64, "vec", types.T_array_float32, 4) cnUUID := "a-b-c-d" - info := newTestConsumerInfo() // &ConsumerInfo{DbName: "sink_db", TableName: "sink_tbl", IndexName: "hnsw_idx"} - //info := &ConsumerInfo{DbName: "db", TableName: "tbl", IndexName: "hnsw_idx"} + info := newTestConsumerInfo() consumer, err := NewIndexConsumer(cnUUID, tblDef, info) require.NoError(t, err) @@ -218,7 +218,7 @@ func TestHnswSnapshot(t *testing.T) { tblDef := newTestTableDef("pk", types.T_int64, "vec", types.T_array_float32, 2) cnUUID := "a-b-c-d" - info := newTestConsumerInfo() // &ConsumerInfo{DbName: "sink_db", TableName: "sink_tbl", IndexName: "hnsw_idx"} + info := newTestConsumerInfo() t.Run("snapshot", func(t *testing.T) { consumer, err := NewIndexConsumer(cnUUID, tblDef, info) @@ -271,3 +271,87 @@ func TestHnswSnapshot(t *testing.T) { require.Equal(t, len(sqls), 0) }) } + +func TestHnswTail(t *testing.T) { + + proc := testutil.NewProcess() + + ctx, cancel := context.WithCancel(context.Background()) + defer cancel() + + sqlexecstub := gostub.Stub(&sqlExecutorFactory, mockSqlExecutorFactory) + defer sqlexecstub.Reset() + + tblDef := newTestTableDef("pk", types.T_int64, "vec", types.T_array_float32, 2) + cnUUID := "a-b-c-d" + info := newTestConsumerInfo() + + consumer, err := NewIndexConsumer(cnUUID, tblDef, info) + require.NoError(t, err) + + bat := testutil.NewBatchWithVectors( + []*vector.Vector{ + testutil.NewVector(2, types.T_int64.ToType(), proc.Mp(), false, []int64{1, 2}), + testutil.NewVector(2, types.T_array_float32.ToType(), proc.Mp(), false, [][]float32{{0.1, 0.2}, {0.3, 0.4}}), + testutil.NewVector(2, types.T_int32.ToType(), proc.Mp(), false, []int64{1, 2}), + }, nil) + defer bat.Clean(testutil.TestUtilMp) + + fromTs := types.BuildTS(1, 0) + insertAtomicBat := &AtomicBatch{ + Mp: nil, + Batches: []*batch.Batch{bat}, + Rows: btree.NewBTreeGOptions(AtomicBatchRow.Less, btree.Options{Degree: 64}), + } + insertAtomicBat.Rows.Set(AtomicBatchRow{Ts: fromTs, Pk: []byte{1}, Offset: 0, Src: bat}) + insertAtomicBat.Rows.Set(AtomicBatchRow{Ts: fromTs, Pk: []byte{2}, Offset: 1, Src: bat}) + + delbat := testutil.NewBatchWithVectors( + []*vector.Vector{ + testutil.NewVector(2, types.T_int64.ToType(), proc.Mp(), false, []int64{1, 2}), + testutil.NewVector(2, types.T_array_float32.ToType(), proc.Mp(), false, [][]float32{{0.1, 0.2}, {0.3, 0.4}}), + testutil.NewVector(2, types.T_int32.ToType(), proc.Mp(), false, []int64{1, 2}), + }, nil) + + defer delbat.Clean(testutil.TestUtilMp) + + delfromTs := types.BuildTS(2, 0) + delAtomicBat := &AtomicBatch{ + Mp: nil, + Batches: []*batch.Batch{delbat}, + Rows: btree.NewBTreeGOptions(AtomicBatchRow.Less, btree.Options{Degree: 64}), + } + delAtomicBat.Rows.Set(AtomicBatchRow{Ts: delfromTs, Pk: []byte{1}, Offset: 0, Src: bat}) + delAtomicBat.Rows.Set(AtomicBatchRow{Ts: delfromTs, Pk: []byte{2}, Offset: 1, Src: bat}) + + output := &MockRetriever{ + dtype: int8(OutputTypeTail), + insertBatch: insertAtomicBat, + deleteBatch: delAtomicBat, + noMoreData: false, + } + + err = consumer.Consume(ctx, output) + require.NoError(t, err) + sqls := consumer.(*IndexConsumer).exec.(*MockSQLExecutor).txnexec.(*MockErrorTxnExecutor).sqls + + require.Equal(t, len(sqls), 1) + fmt.Printf("RES: %v\n", sqls) + + row1 := []any{int64(1), []float32{0.1, 0.2}} + row2 := []any{int64(2), []float32{0.3, 0.4}} + + writer, _ := NewHnswSqlWriter("hnsw", info, tblDef, tblDef.Indexes) + writer.Insert(ctx, row1) + writer.Insert(ctx, row2) + writer.Delete(ctx, row1) + writer.Delete(ctx, row2) + /* + cdcForJson.Start = "1-0" + cdcForJson.End = "2-0" + */ + expectedSqlBytes, _ := writer.ToSql() + + require.Equal(t, string(expectedSqlBytes), sqls[0]) + +} From ccf384c8fb34e0cad5ed144665f440ca8c1ccf5d Mon Sep 17 00:00:00 2001 From: cpegeric Date: Wed, 2 Jul 2025 13:50:19 +0100 Subject: [PATCH 211/223] update --- pkg/sql/compile/cdc_util.go | 30 ++++++++++++------------------ 1 file changed, 12 insertions(+), 18 deletions(-) diff --git a/pkg/sql/compile/cdc_util.go b/pkg/sql/compile/cdc_util.go index f081c5d282637..6230a4515c8e3 100644 --- a/pkg/sql/compile/cdc_util.go +++ b/pkg/sql/compile/cdc_util.go @@ -19,40 +19,34 @@ import ( "fmt" "github.com/matrixorigin/matrixone/pkg/catalog" + "github.com/matrixorigin/matrixone/pkg/idxcdc" "github.com/matrixorigin/matrixone/pkg/logutil" "github.com/matrixorigin/matrixone/pkg/pb/plan" "github.com/matrixorigin/matrixone/pkg/txn/client" ) /* CDC APIs */ -type SinkerInfo struct { - SinkerType int8 - DBName string - TableName string - IndexName string -} - -func RegisterJob(ctx context.Context, txn client.TxnOperator, pitr_name string, info *SinkerInfo) (bool, error) { +func RegisterJob(ctx context.Context, txn client.TxnOperator, pitr_name string, info *idxcdc.ConsumerInfo) (bool, error) { //dummyurl := "mysql://root:111@127.0.0.1:6001" // sql = fmt.Sprintf("CREATE CDC `%s` '%s' 'indexsync' '%s' '%s.%s' {'Level'='table'};", cdcname, dummyurl, dummyurl, qryDatabase, srctbl) return true, nil } -func UnregisterJob(ctx context.Context, txn client.TxnOperator, info *SinkerInfo) (bool, error) { +func UnregisterJob(ctx context.Context, txn client.TxnOperator, info *idxcdc.ConsumerInfo) (bool, error) { return true, nil } /* start here */ -func CreateCdcTask(c *Compile, pitr_name string, sinkerinfo SinkerInfo) (bool, error) { - logutil.Infof("Create Index Task %v", sinkerinfo) +func CreateCdcTask(c *Compile, pitr_name string, consumerinfo idxcdc.ConsumerInfo) (bool, error) { + logutil.Infof("Create Index Task %v", consumerinfo) - return RegisterJob(c.proc.Ctx, c.proc.GetTxnOperator(), pitr_name, &sinkerinfo) + return RegisterJob(c.proc.Ctx, c.proc.GetTxnOperator(), pitr_name, &consumerinfo) } -func DeleteCdcTask(c *Compile, sinkerinfo SinkerInfo) (bool, error) { - logutil.Infof("Delete Index Task %v", sinkerinfo) - return UnregisterJob(c.proc.Ctx, c.proc.GetTxnOperator(), &sinkerinfo) +func DeleteCdcTask(c *Compile, consumerinfo idxcdc.ConsumerInfo) (bool, error) { + logutil.Infof("Delete Index Task %v", consumerinfo) + return UnregisterJob(c.proc.Ctx, c.proc.GetTxnOperator(), &consumerinfo) } func getIndexPitrName(dbname string, tablename string) string { @@ -130,7 +124,7 @@ func CreateIndexCdcTask(c *Compile, tableDef *plan.TableDef, dbname string, tabl } // create index cdc task - ok, err := CreateCdcTask(c, pitr_name, SinkerInfo{SinkerType: sinker_type, DBName: dbname, TableName: tablename, IndexName: indexname}) + ok, err := CreateCdcTask(c, pitr_name, idxcdc.ConsumerInfo{ConsumerType: sinker_type, DbName: dbname, TableName: tablename, IndexName: indexname}) if err != nil { return err } @@ -152,7 +146,7 @@ func DropIndexCdcTask(c *Compile, tableDef *plan.TableDef, dbname string, tablen } // delete index cdc task - _, err = DeleteCdcTask(c, SinkerInfo{DBName: dbname, TableName: tablename, IndexName: indexname}) + _, err = DeleteCdcTask(c, idxcdc.ConsumerInfo{DbName: dbname, TableName: tablename, IndexName: indexname}) if err != nil { return err } @@ -206,7 +200,7 @@ func DropAllIndexCdcTasks(c *Compile, tabledef *plan.TableDef, dbname string, ta } } if async { - _, e := DeleteCdcTask(c, SinkerInfo{DBName: dbname, TableName: tablename, IndexName: idx.IndexName}) + _, e := DeleteCdcTask(c, idxcdc.ConsumerInfo{DbName: dbname, TableName: tablename, IndexName: idx.IndexName}) if e != nil { return e } From 0b6cfd99469a8846536ded331f51ab3cb60f63fb Mon Sep 17 00:00:00 2001 From: cpegeric Date: Thu, 3 Jul 2025 09:19:42 +0100 Subject: [PATCH 212/223] add cnUUID --- pkg/sql/compile/cdc_util.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/pkg/sql/compile/cdc_util.go b/pkg/sql/compile/cdc_util.go index 6230a4515c8e3..640018e8f5ecb 100644 --- a/pkg/sql/compile/cdc_util.go +++ b/pkg/sql/compile/cdc_util.go @@ -26,13 +26,13 @@ import ( ) /* CDC APIs */ -func RegisterJob(ctx context.Context, txn client.TxnOperator, pitr_name string, info *idxcdc.ConsumerInfo) (bool, error) { +func RegisterJob(ctx context.Context, cnUUID string, txn client.TxnOperator, pitr_name string, info *idxcdc.ConsumerInfo) (bool, error) { //dummyurl := "mysql://root:111@127.0.0.1:6001" // sql = fmt.Sprintf("CREATE CDC `%s` '%s' 'indexsync' '%s' '%s.%s' {'Level'='table'};", cdcname, dummyurl, dummyurl, qryDatabase, srctbl) return true, nil } -func UnregisterJob(ctx context.Context, txn client.TxnOperator, info *idxcdc.ConsumerInfo) (bool, error) { +func UnregisterJob(ctx context.Context, cnUUID string, txn client.TxnOperator, info *idxcdc.ConsumerInfo) (bool, error) { return true, nil } @@ -41,12 +41,12 @@ func UnregisterJob(ctx context.Context, txn client.TxnOperator, info *idxcdc.Con func CreateCdcTask(c *Compile, pitr_name string, consumerinfo idxcdc.ConsumerInfo) (bool, error) { logutil.Infof("Create Index Task %v", consumerinfo) - return RegisterJob(c.proc.Ctx, c.proc.GetTxnOperator(), pitr_name, &consumerinfo) + return RegisterJob(c.proc.Ctx, c.proc.GetService(), c.proc.GetTxnOperator(), pitr_name, &consumerinfo) } func DeleteCdcTask(c *Compile, consumerinfo idxcdc.ConsumerInfo) (bool, error) { logutil.Infof("Delete Index Task %v", consumerinfo) - return UnregisterJob(c.proc.Ctx, c.proc.GetTxnOperator(), &consumerinfo) + return UnregisterJob(c.proc.Ctx, c.proc.GetService(), c.proc.GetTxnOperator(), &consumerinfo) } func getIndexPitrName(dbname string, tablename string) string { From 97113c4a86711c89d47702f9e1239524b57d5465 Mon Sep 17 00:00:00 2001 From: cpegeric Date: Thu, 3 Jul 2025 10:00:54 +0100 Subject: [PATCH 213/223] remove unneccessary code --- pkg/idxcdc/consumer.go | 18 --- pkg/idxcdc/types.go | 242 +++-------------------------------------- 2 files changed, 14 insertions(+), 246 deletions(-) diff --git a/pkg/idxcdc/consumer.go b/pkg/idxcdc/consumer.go index 100b77f923bcc..ed691d0ae2891 100644 --- a/pkg/idxcdc/consumer.go +++ b/pkg/idxcdc/consumer.go @@ -30,24 +30,6 @@ import ( "github.com/matrixorigin/matrixone/pkg/vectorindex" ) -/* CDC API */ -type DataRetriever interface { - Next() (insertBatch *AtomicBatch, deleteBatch *AtomicBatch, noMoreData bool, err error) - UpdateWatermark(executor.TxnExecutor, executor.StatementOption) error - GetDataType() int8 -} - -type ConsumerInfo struct { - ConsumerType int8 - TableName string - DbName string - IndexName string -} - -type Consumer interface { - Consume(context.Context, DataRetriever) error -} - /* IndexConsumer */ type IndexEntry struct { algo string diff --git a/pkg/idxcdc/types.go b/pkg/idxcdc/types.go index 2e33d53c94141..f784154aeef4f 100644 --- a/pkg/idxcdc/types.go +++ b/pkg/idxcdc/types.go @@ -20,8 +20,6 @@ import ( "encoding/hex" "encoding/json" "fmt" - "strings" - "sync" "time" "github.com/google/uuid" @@ -30,6 +28,7 @@ import ( "github.com/matrixorigin/matrixone/pkg/container/types" "github.com/matrixorigin/matrixone/pkg/container/vector" "github.com/matrixorigin/matrixone/pkg/logutil" + "github.com/matrixorigin/matrixone/pkg/util/executor" v2 "github.com/matrixorigin/matrixone/pkg/util/metric/v2" "github.com/matrixorigin/matrixone/pkg/vm/engine/readutil" "github.com/tidwall/btree" @@ -44,18 +43,7 @@ const ( ) const ( - CDCDefaultSendSqlTimeout = "10m" - CDCDefaultRetryTimes = -1 - CDCDefaultRetryDuration = 30 * time.Minute - CDCDefaultTaskExtra_InitSnapshotSplitTxn = true - CDCDefaultTaskExtra_MaxSQLLen = 4 * 1024 * 1024 -) - -const ( - CDCSinkType_MySQL = "mysql" - CDCSinkType_MO = "matrixone" - CDCSinkType_Console = "console" - CDCSinkType_IndexSync = "indexsync" + ConsumerType_IndexSync = 0 ) const ( @@ -66,45 +54,22 @@ const ( CDCPitrGranularity_All = "*" ) -const ( - CDCRequestOptions_Level = "Level" - CDCRequestOptions_Exclude = "Exclude" - CDCRequestOptions_StartTs = "StartTs" - CDCRequestOptions_EndTs = "EndTs" - CDCRequestOptions_SendSqlTimeout = "SendSqlTimeout" - CDCRequestOptions_InitSnapshotSplitTxn = "InitSnapshotSplitTxn" - CDCRequestOptions_MaxSqlLength = "MaxSqlLength" - CDCRequestOptions_NoFull = "NoFull" - CDCRequestOptions_ConfigFile = "ConfigFile" -) - -const ( - CDCTaskExtraOptions_MaxSqlLength = CDCRequestOptions_MaxSqlLength - CDCTaskExtraOptions_SendSqlTimeout = CDCRequestOptions_SendSqlTimeout - CDCTaskExtraOptions_InitSnapshotSplitTxn = CDCRequestOptions_InitSnapshotSplitTxn -) - -var CDCRequestOptions = []string{ - CDCRequestOptions_Level, - CDCRequestOptions_Exclude, - CDCRequestOptions_StartTs, - CDCRequestOptions_EndTs, - CDCRequestOptions_MaxSqlLength, - CDCRequestOptions_SendSqlTimeout, - CDCRequestOptions_InitSnapshotSplitTxn, - CDCRequestOptions_ConfigFile, - CDCRequestOptions_NoFull, +type DataRetriever interface { + Next() (insertBatch *AtomicBatch, deleteBatch *AtomicBatch, noMoreData bool, err error) + UpdateWatermark(executor.TxnExecutor, executor.StatementOption) error + GetDataType() int8 } -var CDCTaskExtraOptions = []string{ - CDCTaskExtraOptions_MaxSqlLength, - CDCTaskExtraOptions_SendSqlTimeout, - CDCTaskExtraOptions_InitSnapshotSplitTxn, +type ConsumerInfo struct { + ConsumerType int8 + TableName string + DbName string + IndexName string } -var ( - EnableConsoleSink = false -) +type Consumer interface { + Consume(context.Context, DataRetriever) error +} type TaskId = uuid.UUID @@ -112,85 +77,6 @@ func NewTaskId() TaskId { return uuid.Must(uuid.NewV7()) } -// func StringToTaskId(s string) (TaskId, error) { -// return uuid.Parse(s) -// } - -type Reader interface { - Run(ctx context.Context, ar *ActiveRoutine) - Close() -} - -type TableReader interface { - Run(ctx context.Context, ar *ActiveRoutine) - Close() - Info() *DbTableInfo - GetWg() *sync.WaitGroup -} - -// Sinker manages and drains the sql parts -type Sinker interface { - Run(ctx context.Context, ar *ActiveRoutine) - Sink(ctx context.Context, data *DecoderOutput) - SendBegin() - SendCommit() - SendRollback() - // SendDummy to guarantee the last sql is sent - SendDummy() - // Error must be called after Sink - Error() error - ClearError() - Reset() - Close() -} - -// Sink represents the destination mysql or matrixone -type Sink interface { - Send(ctx context.Context, ar *ActiveRoutine, sqlBuf []byte, needRetry bool) error - SendBegin(ctx context.Context) error - SendCommit(ctx context.Context) error - SendRollback(ctx context.Context) error - Close() -} - -type IWatermarkUpdater interface { - Run(ctx context.Context, ar *ActiveRoutine) - InsertIntoDb(dbTableInfo *DbTableInfo, watermark types.TS) error - GetFromMem(dbName, tblName string) types.TS - GetFromDb(dbName, tblName string) (watermark types.TS, err error) - UpdateMem(dbName, tblName string, watermark types.TS) - DeleteFromMem(dbName, tblName string) - DeleteFromDb(dbName, tblName string) error - SaveErrMsg(dbName, tblName string, errMsg string) error -} - -type ActiveRoutine struct { - sync.Mutex - Pause chan struct{} - Cancel chan struct{} -} - -func (ar *ActiveRoutine) ClosePause() { - ar.Lock() - defer ar.Unlock() - close(ar.Pause) - // can't set to nil, because some goroutines may still be running, when it goes next round loop, - // it found the channel is nil, not closed, will hang there forever -} - -func (ar *ActiveRoutine) CloseCancel() { - ar.Lock() - defer ar.Unlock() - close(ar.Cancel) -} - -func NewCdcActiveRoutine() *ActiveRoutine { - return &ActiveRoutine{ - Pause: make(chan struct{}), - Cancel: make(chan struct{}), - } -} - type OutputType int8 const ( @@ -209,15 +95,6 @@ func (t OutputType) String() string { } } -type DecoderOutput struct { - outputTyp OutputType - noMoreData bool - fromTs, toTs types.TS - checkpointBat *batch.Batch - insertAtmBatch *AtomicBatch - deleteAtmBatch *AtomicBatch -} - type RowType int const ( @@ -232,54 +109,6 @@ type RowIterator interface { Close() } -type DbTableInfo struct { - SourceDbId uint64 - SourceDbName string - SourceTblId uint64 - SourceTblName string - SourceCreateSql string - - SinkDbName string - SinkTblName string - - IdChanged bool -} - -func (info DbTableInfo) String() string { - return fmt.Sprintf("%v(%v).%v(%v) -> %v.%v, %v", - info.SourceDbName, - info.SourceDbId, - info.SourceTblName, - info.SourceTblId, - info.SinkDbName, - info.SinkTblName, - info.IdChanged, - ) -} - -func (info DbTableInfo) Clone() *DbTableInfo { - return &DbTableInfo{ - SourceDbId: info.SourceDbId, - SourceDbName: info.SourceDbName, - SourceTblId: info.SourceTblId, - SourceTblName: info.SourceTblName, - SourceCreateSql: info.SourceCreateSql, - SinkDbName: info.SinkDbName, - SinkTblName: info.SinkTblName, - IdChanged: info.IdChanged, - } -} - -func (info DbTableInfo) OnlyDiffinTblId(t *DbTableInfo) bool { - if info.SourceDbId != t.SourceDbId || - info.SourceDbName != t.SourceDbName || - info.SourceTblName != t.SourceTblName || - info.SourceCreateSql != t.SourceCreateSql { - return false - } - return info.SourceTblId != t.SourceTblId -} - // AtomicBatch holds batches from [Tail_wip,...,Tail_done] or [Tail_done]. // These batches have atomicity type AtomicBatch struct { @@ -459,49 +288,6 @@ func (info *UriInfo) String() string { return fmt.Sprintf("%s%s:%s@%s:%d", CDCSourceUriPrefix, info.User, "******", info.Ip, info.Port) } -type PatternTable struct { - Database string `json:"database"` - Table string `json:"table"` -} - -func (table PatternTable) String() string { - return fmt.Sprintf("%s.%s", table.Database, table.Table) -} - -type PatternTuple struct { - Source PatternTable `json:"Source"` - Sink PatternTable `json:"Sink"` - OriginString string `json:"-"` - Reserved string `json:"reserved"` -} - -func (tuple *PatternTuple) String() string { - if tuple == nil { - return "" - } - return fmt.Sprintf("%s,%s", tuple.Source, tuple.Sink) -} - -type PatternTuples struct { - Pts []*PatternTuple `json:"pts"` - Reserved string `json:"reserved"` -} - -func (pts *PatternTuples) Append(pt *PatternTuple) { - pts.Pts = append(pts.Pts, pt) -} - -func (pts *PatternTuples) String() string { - if pts.Pts == nil { - return "" - } - ss := make([]string, 0) - for _, pt := range pts.Pts { - ss = append(ss, pt.String()) - } - return strings.Join(ss, ",") -} - // JsonEncode encodes the object to json func JsonEncode(value any) (string, error) { jbytes, err := json.Marshal(value) From 7259ddcce5fca60eb1bde719679e50c9a007d966 Mon Sep 17 00:00:00 2001 From: cpegeric Date: Thu, 3 Jul 2025 10:12:56 +0100 Subject: [PATCH 214/223] update --- pkg/idxcdc/types.go | 4 +++- pkg/sql/compile/cdc_util.go | 6 +++--- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/pkg/idxcdc/types.go b/pkg/idxcdc/types.go index f784154aeef4f..c2204ff7ed9ca 100644 --- a/pkg/idxcdc/types.go +++ b/pkg/idxcdc/types.go @@ -42,8 +42,10 @@ const ( CDCState_Error = "error" ) +type ConsumerType int8 + const ( - ConsumerType_IndexSync = 0 + ConsumerType_IndexSync ConsumerType = iota ) const ( diff --git a/pkg/sql/compile/cdc_util.go b/pkg/sql/compile/cdc_util.go index 640018e8f5ecb..31dff5de08de0 100644 --- a/pkg/sql/compile/cdc_util.go +++ b/pkg/sql/compile/cdc_util.go @@ -215,11 +215,11 @@ func DropAllIndexCdcTasks(c *Compile, tabledef *plan.TableDef, dbname string, ta func getSinkerTypeFromAlgo(algo string) int8 { if catalog.IsHnswIndexAlgo(algo) { - return int8(0) + return int8(idxcdc.ConsumerType_IndexSync) } else if catalog.IsIvfIndexAlgo(algo) { - return int8(0) + return int8(idxcdc.ConsumerType_IndexSync) } else if catalog.IsFullTextIndexAlgo(algo) { - return int8(0) + return int8(idxcdc.ConsumerType_IndexSync) } return int8(0) } From 5aa0926de138fa4832188abf15d422015a5fc5b2 Mon Sep 17 00:00:00 2001 From: cpegeric Date: Thu, 3 Jul 2025 10:32:24 +0100 Subject: [PATCH 215/223] api --- pkg/idxcdc/api.go | 41 +++++++++++++++++++++++++++++++++++++ pkg/sql/compile/cdc_util.go | 5 ++--- 2 files changed, 43 insertions(+), 3 deletions(-) create mode 100644 pkg/idxcdc/api.go diff --git a/pkg/idxcdc/api.go b/pkg/idxcdc/api.go new file mode 100644 index 0000000000000..932e4fd37e768 --- /dev/null +++ b/pkg/idxcdc/api.go @@ -0,0 +1,41 @@ +// Copyright 2024 Matrix Origin +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +package idxcdc + +import ( + "context" + + "github.com/matrixorigin/matrixone/pkg/common/moerr" + "github.com/matrixorigin/matrixone/pkg/pb/plan" + "github.com/matrixorigin/matrixone/pkg/txn/client" +) + +func RegisterJob(ctx context.Context, cnUUID string, txn client.TxnOperator, pitr_name string, info *ConsumerInfo) (bool, error) { + return true, nil +} + +func UnregisterJob(ctx context.Context, cnUUID string, txn client.TxnOperator, info *ConsumerInfo) (bool, error) { + return true, nil +} + +func NewConsumer(cnUUID string, + tableDef *plan.TableDef, + info *ConsumerInfo) (Consumer, error) { + + if info.ConsumerType != int8(ConsumerType_IndexSync) { + return nil, moerr.NewInternalErrorNoCtx("invalid index cdc consumer type") + } + + return NewIndexConsumer(cnUUID, tableDef, info) +} diff --git a/pkg/sql/compile/cdc_util.go b/pkg/sql/compile/cdc_util.go index 31dff5de08de0..4df276965938e 100644 --- a/pkg/sql/compile/cdc_util.go +++ b/pkg/sql/compile/cdc_util.go @@ -29,12 +29,11 @@ import ( func RegisterJob(ctx context.Context, cnUUID string, txn client.TxnOperator, pitr_name string, info *idxcdc.ConsumerInfo) (bool, error) { //dummyurl := "mysql://root:111@127.0.0.1:6001" // sql = fmt.Sprintf("CREATE CDC `%s` '%s' 'indexsync' '%s' '%s.%s' {'Level'='table'};", cdcname, dummyurl, dummyurl, qryDatabase, srctbl) - return true, nil + return idxcdc.RegisterJob(ctx, cnUUID, txn, pitr_name, info) } func UnregisterJob(ctx context.Context, cnUUID string, txn client.TxnOperator, info *idxcdc.ConsumerInfo) (bool, error) { - - return true, nil + return idxcdc.UnregisterJob(ctx, cnUUID, txn, info) } /* start here */ From 7a6ba7e309a135f94b696fea45ab0309f953a5f6 Mon Sep 17 00:00:00 2001 From: cpegeric Date: Tue, 8 Jul 2025 11:41:18 +0100 Subject: [PATCH 216/223] bug fix cdc --- pkg/idxcdc/consumer.go | 3 +++ pkg/sql/compile/cdc_util.go | 32 ++++++++++++++----------------- pkg/sql/compile/ddl.go | 25 ++++++++++++++++++++---- pkg/sql/compile/ddl_index_algo.go | 4 ++-- 4 files changed, 40 insertions(+), 24 deletions(-) diff --git a/pkg/idxcdc/consumer.go b/pkg/idxcdc/consumer.go index ed691d0ae2891..2c3f06415dfcb 100644 --- a/pkg/idxcdc/consumer.go +++ b/pkg/idxcdc/consumer.go @@ -88,6 +88,9 @@ func NewIndexConsumer(cnUUID string, } sqlwriter, err := NewIndexSqlWriter(ie.algo, info, tableDef, ie.indexes) + if err != nil { + return nil, err + } c := &IndexConsumer{cnUUID: cnUUID, info: info, diff --git a/pkg/sql/compile/cdc_util.go b/pkg/sql/compile/cdc_util.go index 4df276965938e..6c0a0f03b3d25 100644 --- a/pkg/sql/compile/cdc_util.go +++ b/pkg/sql/compile/cdc_util.go @@ -71,14 +71,12 @@ func CreateIndexPitr(c *Compile, dbname string, tablename string) (string, error } */ - sql = fmt.Sprintf("CREATE PITR `%s` FOR TABLE `%s` `%s` range 2 'h';", pitr_name, dbname, tablename) + sql = fmt.Sprintf("CREATE PITR IF NOT EXISTS `%s` FOR TABLE `%s` `%s` range 2 'h' INTERNAL;", pitr_name, dbname, tablename) logutil.Infof("Create Index Pitr %s. sql: %s:", pitr_name, sql) - /* - err := c.runSql(sql) - if err != nil { - return pitr_name, err - } - */ + err := c.runSql(sql) + if err != nil { + return pitr_name, err + } return pitr_name, nil } @@ -86,14 +84,12 @@ func CreateIndexPitr(c *Compile, dbname string, tablename string) (string, error func DeleteIndexPitr(c *Compile, dbname string, tablename string) error { pitr_name := getIndexPitrName(dbname, tablename) // remove pitr - sql := fmt.Sprintf("DROP PITR IF EXISTS `%s`;", pitr_name) + sql := fmt.Sprintf("DROP PITR IF EXISTS `%s` INTERNAL;", pitr_name) logutil.Infof("Delete Index Pitr %s: %s", pitr_name, sql) - /* - err := c.runSql(sql) - if err != nil { - return err - } - */ + err := c.runSql(sql) + if err != nil { + return err + } return nil } @@ -113,7 +109,7 @@ func checkValidIndexCdc(tableDef *plan.TableDef, indexname string) bool { } // NOTE: CreateIndexCdcTask will create CDC task without any checking. Original TableDef may be empty -func CreateIndexCdcTask(c *Compile, tableDef *plan.TableDef, dbname string, tablename string, indexname string, sinker_type int8) error { +func CreateIndexCdcTask(c *Compile, dbname string, tablename string, indexname string, sinker_type int8) error { var err error // create table pitr if not exists and return pitr_name @@ -224,10 +220,10 @@ func getSinkerTypeFromAlgo(algo string) int8 { } // NOTE: CreateAllIndexCdcTasks will create CDC task according to existing tableDef -func CreateAllIndexCdcTasks(c *Compile, tabledef *plan.TableDef, dbname string, tablename string) error { +func CreateAllIndexCdcTasks(c *Compile, indexes []*plan.IndexDef, dbname string, tablename string) error { idxmap := make(map[string]bool) var err error - for _, idx := range tabledef.Indexes { + for _, idx := range indexes { if idx.TableExist && (catalog.IsHnswIndexAlgo(idx.IndexAlgo) || catalog.IsIvfIndexAlgo(idx.IndexAlgo) || @@ -247,7 +243,7 @@ func CreateAllIndexCdcTasks(c *Compile, tabledef *plan.TableDef, dbname string, } if async { sinker_type := getSinkerTypeFromAlgo(idx.IndexAlgo) - e := CreateIndexCdcTask(c, tabledef, dbname, tablename, idx.IndexName, sinker_type) + e := CreateIndexCdcTask(c, dbname, tablename, idx.IndexName, sinker_type) if e != nil { return e } diff --git a/pkg/sql/compile/ddl.go b/pkg/sql/compile/ddl.go index d59d585df50c0..0d8d43862ced0 100644 --- a/pkg/sql/compile/ddl.go +++ b/pkg/sql/compile/ddl.go @@ -1465,6 +1465,21 @@ func (s *Scope) CreateTable(c *Compile) error { ) return err } + + // TODO: HNSWCDC create PITR and CDC for index async update + ct, err := GetConstraintDef(c.proc.Ctx, newRelation) + if err != nil { + return err + } + for _, constraint := range ct.Cts { + if idxdef, ok := constraint.(*engine.IndexDef); ok && len(idxdef.Indexes) > 0 { + err = CreateAllIndexCdcTasks(c, idxdef.Indexes, dbName, tblName) + if err != nil { + return err + } + } + } + } err = maybeCreateAutoIncrement( @@ -2085,7 +2100,7 @@ func (s *Scope) handleVectorIvfFlatIndex( if async { logutil.Infof("Ivfflat index Async is true") sinker_type := getSinkerTypeFromAlgo(catalog.MoIndexIvfFlatAlgo.ToString()) - err = CreateIndexCdcTask(c, originalTableDef, qryDatabase, originalTableDef.Name, + err = CreateIndexCdcTask(c, qryDatabase, originalTableDef.Name, indexDefs[catalog.SystemSI_IVFFLAT_TblType_Metadata].IndexTableName, sinker_type) if err != nil { return err @@ -2115,6 +2130,9 @@ func (s *Scope) DropIndex(c *Compile) error { return err } + // old tabledef + oldTableDef := r.GetTableDef(c.proc.Ctx) + //1. build and update constraint def oldCt, err := GetConstraintDef(c.proc.Ctx, r) if err != nil { @@ -2146,8 +2164,7 @@ func (s *Scope) DropIndex(c *Compile) error { } //3. HNSWCDC delete cdc table task for vector, fulltext index - tableDef := r.GetTableDef(c.proc.Ctx) - err = DropIndexCdcTask(c, tableDef, qry.Database, qry.Table, qry.IndexName) + err = DropIndexCdcTask(c, oldTableDef, qry.Database, qry.Table, qry.IndexName) if err != nil { return err } @@ -2552,7 +2569,7 @@ func (s *Scope) TruncateTable(c *Compile) error { // TODO: HNSWCDC create CDC task with new table Id if !isTemp { tabledef := rel.GetTableDef(c.proc.Ctx) - e := CreateAllIndexCdcTasks(c, tabledef, dbName, tblName) + e := CreateAllIndexCdcTasks(c, tabledef.Indexes, dbName, tblName) if e != nil { return e } diff --git a/pkg/sql/compile/ddl_index_algo.go b/pkg/sql/compile/ddl_index_algo.go index bea5264a7abc4..4857f18b10ffb 100644 --- a/pkg/sql/compile/ddl_index_algo.go +++ b/pkg/sql/compile/ddl_index_algo.go @@ -168,7 +168,7 @@ func (s *Scope) handleFullTextIndexTable( if async { logutil.Infof("fulltext index Async is true") sinker_type := getSinkerTypeFromAlgo(catalog.MOIndexFullTextAlgo.ToString()) - err = CreateIndexCdcTask(c, originalTableDef, qryDatabase, originalTableDef.Name, + err = CreateIndexCdcTask(c, qryDatabase, originalTableDef.Name, indexDef.IndexTableName, sinker_type) if err != nil { return err @@ -579,7 +579,7 @@ func (s *Scope) handleVectorHnswIndex( // TODO: HNSWCDC 4. register CDC update sinker_type := getSinkerTypeFromAlgo(catalog.MoIndexHnswAlgo.ToString()) - err = CreateIndexCdcTask(c, originalTableDef, qryDatabase, originalTableDef.Name, indexDefs[catalog.Hnsw_TblType_Metadata].IndexName, sinker_type) + err = CreateIndexCdcTask(c, qryDatabase, originalTableDef.Name, indexDefs[catalog.Hnsw_TblType_Metadata].IndexName, sinker_type) if err != nil { return err } From a5ed28466cd29cb5d3f8cc82d33a197b5777e969 Mon Sep 17 00:00:00 2001 From: cpegeric Date: Tue, 8 Jul 2025 11:59:11 +0100 Subject: [PATCH 217/223] bvt test --- test/distributed/cases/vector/vector_hnsw_sync.result | 9 --------- test/distributed/cases/vector/vector_hnsw_sync.sql | 9 --------- 2 files changed, 18 deletions(-) diff --git a/test/distributed/cases/vector/vector_hnsw_sync.result b/test/distributed/cases/vector/vector_hnsw_sync.result index aa9c5e350ae2e..2dc9bbc64d908 100644 --- a/test/distributed/cases/vector/vector_hnsw_sync.result +++ b/test/distributed/cases/vector/vector_hnsw_sync.result @@ -4,8 +4,6 @@ create database if not exists hnsw_cdc; use hnsw_cdc; create table t1(a bigint primary key, b vecf32(3),c int,key c_k(c)); create index idx01 using hnsw on t1(b) op_type "vector_l2_ops" M 48 EF_CONSTRUCTION 64 EF_SEARCH 64; -drop pitr if exists `__mo_table_pitr_t1`; -create pitr `__mo_table_pitr_t1` for table hnsw_cdc t1 range 2 'h'; create cdc `__mo_cdc_t1_idx01` 'mysql://root:111@127.0.0.1:6001' 'indexsync' 'mysql://root:111@127.0.0.1:6001' 'hnsw_cdc.t1' {'Level'='table'}; insert into t1 values (0, "[1,2,3]", 1); UPDATE t1 set b = '[4,5,6]' where a = 0; @@ -24,12 +22,9 @@ select * from t1 order by L2_DISTANCE(b,"[2,3,4]") ASC LIMIT 10; a b c 0 [4, 5, 6] 1 drop cdc task `__mo_cdc_t1_idx01`; -drop pitr if exists `__mo_table_pitr_t1`; drop table t1; create table t2(a bigint primary key, b vecf32(128)); create index idx2 using hnsw on t2(b) op_type "vector_l2_ops" M 48 EF_CONSTRUCTION 64 EF_SEARCH 64; -drop pitr if exists `__mo_table_pitr_t2`; -create pitr `__mo_table_pitr_t2` for table hnsw_cdc t2 range 2 'h'; create cdc `__mo_cdc_hnsw_cdc_t2_idx2` 'mysql://root:111@127.0.0.1:6001' 'indexsync' 'mysql://root:111@127.0.0.1:6001' 'hnsw_cdc.t2' {'Level'='table'}; load data infile {'filepath'='$resources/vector/sift128_base_10k.csv.gz', 'compression'='gzip'} into table t2 fields terminated by ':' parallel 'true'; select count(*) from t2; @@ -45,7 +40,6 @@ select * from t2 order by L2_DISTANCE(b, "[0, 16, 35, 5, 32, 31, 14, 10, 11, 78, a b 0 [0, 16, 35, 5, 32, 31, 14, 10, 11, 78, 55, 10, 45, 83, 11, 6, 14, 57, 102, 75, 20, 8, 3, 5, 67, 17, 19, 26, 5, 0, 1, 22, 60, 26, 7, 1, 18, 22, 84, 53, 85, 119, 119, 4, 24, 18, 7, 7, 1, 81, 106, 102, 72, 30, 6, 0, 9, 1, 9, 119, 72, 1, 4, 33, 119, 29, 6, 1, 0, 1, 14, 52, 119, 30, 3, 0, 0, 55, 92, 111, 2, 5, 4, 9, 22, 89, 96, 14, 1, 0, 1, 82, 59, 16, 20, 5, 25, 14, 11, 4, 0, 0, 1, 26, 47, 23, 4, 0, 0, 4, 38, 83, 30, 14, 9, 4, 9, 17, 23, 41, 0, 0, 2, 8, 19, 25, 23, 1] drop cdc task `__mo_cdc_hnsw_cdc_t2_idx2`; -drop pitr if exists `__mo_table_pitr_t2`; drop table t2; create table t3(a bigint primary key, b vecf32(128)); load data infile {'filepath'='$resources/vector/sift128_base_10k.csv.gz', 'compression'='gzip'} into table t3 fields terminated by ':' parallel 'true'; @@ -53,8 +47,6 @@ select count(*) from t3; count(*) 10000 create index idx3 using hnsw on t3(b) op_type "vector_l2_ops" M 48 EF_CONSTRUCTION 64 EF_SEARCH 64; -drop pitr if exists `__mo_table_pitr_hnsw_cdc_t3`; -create pitr `__mo_table_pitr_hnsw_cdc_t3` for table hnsw_cdc t3 range 2 'h'; create cdc `__mo_cdc_hnsw_cdc_t3_idx3` 'mysql://root:111@127.0.0.1:6001' 'indexsync' 'mysql://root:111@127.0.0.1:6001' 'hnsw_cdc.t3' {'Level'='table'}; load data infile {'filepath'='$resources/vector/sift128_base_10k_2.csv.gz', 'compression'='gzip'} into table t3 fields terminated by ':' parallel 'true'; select count(*) from t3; @@ -76,6 +68,5 @@ select * from t3 order by L2_DISTANCE(b, "[0, 0, 0, 0, 0, 101, 82, 4, 2, 0, 0, 0 a b 19999 [0, 0, 0, 0, 0, 101, 82, 4, 2, 0, 0, 0, 3, 133, 133, 8, 46, 1, 2, 13, 15, 29, 87, 50, 22, 1, 0, 16, 25, 6, 18, 49, 5, 2, 0, 2, 3, 59, 70, 19, 18, 2, 0, 11, 42, 37, 30, 13, 133, 13, 4, 53, 28, 3, 8, 42, 77, 6, 11, 103, 36, 0, 0, 32, 7, 15, 59, 27, 2, 0, 2, 5, 14, 5, 55, 52, 51, 3, 2, 5, 133, 21, 10, 38, 26, 1, 0, 64, 71, 3, 10, 118, 53, 5, 6, 28, 33, 26, 73, 15, 0, 0, 0, 22, 13, 15, 133, 133, 4, 0, 0, 15, 107, 62, 46, 91, 9, 1, 7, 16, 28, 4, 0, 27, 33, 4, 15, 25] drop cdc task `__mo_cdc_hnsw_cdc_t3_idx3`; -drop pitr if exists `__mo_table_pitr_hnsw_cdc_t3`; drop table t3; drop database hnsw_cdc; diff --git a/test/distributed/cases/vector/vector_hnsw_sync.sql b/test/distributed/cases/vector/vector_hnsw_sync.sql index d5dd43f65648d..2a4dbeeb38d6c 100644 --- a/test/distributed/cases/vector/vector_hnsw_sync.sql +++ b/test/distributed/cases/vector/vector_hnsw_sync.sql @@ -9,8 +9,6 @@ create table t1(a bigint primary key, b vecf32(3),c int,key c_k(c)); -- empty data create index idx01 using hnsw on t1(b) op_type "vector_l2_ops" M 48 EF_CONSTRUCTION 64 EF_SEARCH 64; -drop pitr if exists `__mo_table_pitr_t1`; -create pitr `__mo_table_pitr_t1` for table hnsw_cdc t1 range 2 'h'; create cdc `__mo_cdc_t1_idx01` 'mysql://root:111@127.0.0.1:6001' 'indexsync' 'mysql://root:111@127.0.0.1:6001' 'hnsw_cdc.t1' {'Level'='table'}; -- show cdc all; @@ -41,14 +39,11 @@ select * from t1 order by L2_DISTANCE(b,"[4,5,6]") ASC LIMIT 10; select * from t1 order by L2_DISTANCE(b,"[2,3,4]") ASC LIMIT 10; drop cdc task `__mo_cdc_t1_idx01`; -drop pitr if exists `__mo_table_pitr_t1`; drop table t1; -- t2 create table t2(a bigint primary key, b vecf32(128)); create index idx2 using hnsw on t2(b) op_type "vector_l2_ops" M 48 EF_CONSTRUCTION 64 EF_SEARCH 64; -drop pitr if exists `__mo_table_pitr_t2`; -create pitr `__mo_table_pitr_t2` for table hnsw_cdc t2 range 2 'h'; create cdc `__mo_cdc_hnsw_cdc_t2_idx2` 'mysql://root:111@127.0.0.1:6001' 'indexsync' 'mysql://root:111@127.0.0.1:6001' 'hnsw_cdc.t2' {'Level'='table'}; -- select sleep(30); @@ -69,7 +64,6 @@ select * from t2 order by L2_DISTANCE(b, "[0, 16, 35, 5, 32, 31, 14, 10, 11, 78, drop cdc task `__mo_cdc_hnsw_cdc_t2_idx2`; -drop pitr if exists `__mo_table_pitr_t2`; drop table t2; -- end t2 @@ -83,8 +77,6 @@ select count(*) from t3; create index idx3 using hnsw on t3(b) op_type "vector_l2_ops" M 48 EF_CONSTRUCTION 64 EF_SEARCH 64; -drop pitr if exists `__mo_table_pitr_hnsw_cdc_t3`; -create pitr `__mo_table_pitr_hnsw_cdc_t3` for table hnsw_cdc t3 range 2 'h'; create cdc `__mo_cdc_hnsw_cdc_t3_idx3` 'mysql://root:111@127.0.0.1:6001' 'indexsync' 'mysql://root:111@127.0.0.1:6001' 'hnsw_cdc.t3' {'Level'='table'}; -- select sleep(30); @@ -105,7 +97,6 @@ select * from t3 order by L2_DISTANCE(b, "[59, 0, 0, 1, 1, 1, 5, 100, 41, 0, 0, select * from t3 order by L2_DISTANCE(b, "[0, 0, 0, 0, 0, 101, 82, 4, 2, 0, 0, 0, 3, 133, 133, 8, 46, 1, 2, 13, 15, 29, 87, 50, 22, 1, 0, 16, 25, 6, 18, 49, 5, 2, 0, 2, 3, 59, 70, 19, 18, 2, 0, 11, 42, 37, 30, 13, 133, 13, 4, 53, 28, 3, 8, 42, 77, 6, 11, 103, 36, 0, 0, 32, 7, 15, 59, 27, 2, 0, 2, 5, 14, 5, 55, 52, 51, 3, 2, 5, 133, 21, 10, 38, 26, 1, 0, 64, 71, 3, 10, 118, 53, 5, 6, 28, 33, 26, 73, 15, 0, 0, 0, 22, 13, 15, 133, 133, 4, 0, 0, 15, 107, 62, 46, 91, 9, 1, 7, 16, 28, 4, 0, 27, 33, 4, 15, 25]") ASC LIMIT 1; drop cdc task `__mo_cdc_hnsw_cdc_t3_idx3`; -drop pitr if exists `__mo_table_pitr_hnsw_cdc_t3`; drop table t3; -- end t3 From 839a494b3d4eacf5aee605eaaac0d04b51859bef Mon Sep 17 00:00:00 2001 From: cpegeric Date: Tue, 8 Jul 2025 13:23:21 +0100 Subject: [PATCH 218/223] fix drop index --- pkg/idxcdc/util.go | 4 ++++ pkg/sql/compile/cdc_util.go | 7 ++++++- pkg/sql/compile/ddl.go | 11 +++++------ 3 files changed, 15 insertions(+), 7 deletions(-) diff --git a/pkg/idxcdc/util.go b/pkg/idxcdc/util.go index ea272bf5285d4..3fe5d04e07431 100644 --- a/pkg/idxcdc/util.go +++ b/pkg/idxcdc/util.go @@ -394,6 +394,7 @@ func appendFloat64(buf []byte, value float64, bitSize int) []byte { return buf } +/* func floatArrayToString[T float32 | float64](arr []T) string { str := "'[" for i, v := range arr { @@ -406,6 +407,7 @@ func floatArrayToString[T float32 | float64](arr []T) string { str += "]'" return str } +*/ //func getPkIdxesAndTypes(ctx context.Context, tableDef *plan.TableDef) (pkIdxes []int, pkAndTsTypes []*types.Type, err error) { // pkIdxes = make([]int, 0, len(tableDef.Pkey.Names)) @@ -761,6 +763,7 @@ func SplitDbTblKey(dbTblKey string) (dbName, tblName string) { return s[0], s[1] } +/* func addStartMetrics(insertData, deleteData *batch.Batch) { count := float64(batchRowCount(insertData) + batchRowCount(deleteData)) allocated := float64(insertData.Allocated() + deleteData.Allocated()) @@ -784,6 +787,7 @@ func addTailEndMetrics(bat *AtomicBatch) { v2.CdcHoldChangesBytesGauge.Sub(allocated) v2.CdcSinkRecordCounter.Add(count) } +*/ // uriHasPrefix func uriHasPrefix(uri string, prefix string) bool { diff --git a/pkg/sql/compile/cdc_util.go b/pkg/sql/compile/cdc_util.go index 6c0a0f03b3d25..72165215b9b13 100644 --- a/pkg/sql/compile/cdc_util.go +++ b/pkg/sql/compile/cdc_util.go @@ -176,6 +176,7 @@ func DropIndexCdcTask(c *Compile, tableDef *plan.TableDef, dbname string, tablen func DropAllIndexCdcTasks(c *Compile, tabledef *plan.TableDef, dbname string, tablename string) error { idxmap := make(map[string]bool) var err error + hasindex := false for _, idx := range tabledef.Indexes { if idx.TableExist && (catalog.IsHnswIndexAlgo(idx.IndexAlgo) || @@ -195,6 +196,7 @@ func DropAllIndexCdcTasks(c *Compile, tabledef *plan.TableDef, dbname string, ta } } if async { + hasindex = true _, e := DeleteCdcTask(c, idxcdc.ConsumerInfo{DbName: dbname, TableName: tablename, IndexName: idx.IndexName}) if e != nil { return e @@ -205,7 +207,10 @@ func DropAllIndexCdcTasks(c *Compile, tabledef *plan.TableDef, dbname string, ta } // remove pitr - return DeleteIndexPitr(c, dbname, tablename) + if hasindex { + return DeleteIndexPitr(c, dbname, tablename) + } + return nil } func getSinkerTypeFromAlgo(algo string) int8 { diff --git a/pkg/sql/compile/ddl.go b/pkg/sql/compile/ddl.go index 0d8d43862ced0..40b9af0ae27dc 100644 --- a/pkg/sql/compile/ddl.go +++ b/pkg/sql/compile/ddl.go @@ -2161,12 +2161,11 @@ func (s *Scope) DropIndex(c *Compile) error { return err } - } - - //3. HNSWCDC delete cdc table task for vector, fulltext index - err = DropIndexCdcTask(c, oldTableDef, qry.Database, qry.Table, qry.IndexName) - if err != nil { - return err + //3. HNSWCDC delete cdc table task for vector, fulltext index + err = DropIndexCdcTask(c, oldTableDef, qry.Database, qry.Table, qry.IndexName) + if err != nil { + return err + } } //4. delete index object from mo_catalog.mo_indexes From 6ed579a6cacd4542b2cf5555f2ecf632d3df17b1 Mon Sep 17 00:00:00 2001 From: cpegeric Date: Tue, 8 Jul 2025 14:01:35 +0100 Subject: [PATCH 219/223] fix sca --- pkg/sql/compile/cdc_util.go | 16 ---------------- 1 file changed, 16 deletions(-) diff --git a/pkg/sql/compile/cdc_util.go b/pkg/sql/compile/cdc_util.go index 72165215b9b13..d5dc19606fd4f 100644 --- a/pkg/sql/compile/cdc_util.go +++ b/pkg/sql/compile/cdc_util.go @@ -55,22 +55,6 @@ func getIndexPitrName(dbname string, tablename string) string { func CreateIndexPitr(c *Compile, dbname string, tablename string) (string, error) { var sql string pitr_name := getIndexPitrName(dbname, tablename) - - // check pitr exists before create - sql = fmt.Sprintf("SHOW PITR WHERE pitr_name = '%s'", pitr_name) - /* - res, err := c.runSqlWithResult(sql, NoAccountId) - if err != nil { - return pitr_name, err - } - defer res.Close() - - if len(res.Batches) > 0 && res.Batches[0].RowCount() > 0 { - // pitr already exists - return pitr_name, nil - } - */ - sql = fmt.Sprintf("CREATE PITR IF NOT EXISTS `%s` FOR TABLE `%s` `%s` range 2 'h' INTERNAL;", pitr_name, dbname, tablename) logutil.Infof("Create Index Pitr %s. sql: %s:", pitr_name, sql) err := c.runSql(sql) From 9edbd11f74ce8b6201d3aa8e01259af15b563c56 Mon Sep 17 00:00:00 2001 From: cpegeric Date: Wed, 9 Jul 2025 16:18:42 +0100 Subject: [PATCH 220/223] bug fix thread id --- pkg/vectorindex/hnsw/sync.go | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/pkg/vectorindex/hnsw/sync.go b/pkg/vectorindex/hnsw/sync.go index a321c0811cc65..ae01e67751a1f 100644 --- a/pkg/vectorindex/hnsw/sync.go +++ b/pkg/vectorindex/hnsw/sync.go @@ -241,11 +241,11 @@ func (s *HnswSync) checkContains(proc *process.Process) (maxcap uint, midx []int nthread := int(s.tblcfg.ThreadsBuild) for k := 0; k < nthread; k++ { wg.Add(1) - go func() { + go func(tid int) { defer wg.Done() for j, row := range s.cdc.Data { - if j%nthread != k { + if j%nthread != tid { continue } @@ -271,7 +271,7 @@ func (s *HnswSync) checkContains(proc *process.Process) (maxcap uint, midx []int } } - }() + }(k) } wg.Wait() @@ -293,12 +293,12 @@ func (s *HnswSync) insertAllInParallel(proc *process.Process, maxcap uint) error nthread := int(s.tblcfg.ThreadsBuild) for i := 0; i < nthread; i++ { wg.Add(1) - go func() { + go func(tid int) { defer wg.Done() for j, row := range s.cdc.Data { - if j%nthread != i { + if j%nthread != tid { continue } @@ -319,7 +319,7 @@ func (s *HnswSync) insertAllInParallel(proc *process.Process, maxcap uint) error // Len counter already incremented. Just add to last model last.AddWithoutIncr(row.PKey, row.Vec) } - }() + }(i) } wg.Wait() From f1b19627ab03cbc0ccda7d82788f3fdea7916f65 Mon Sep 17 00:00:00 2001 From: cpegeric Date: Tue, 22 Jul 2025 14:43:31 +0100 Subject: [PATCH 221/223] rename idxcdc to iscp --- pkg/{idxcdc => iscp}/api.go | 2 +- pkg/{idxcdc => iscp}/consumer.go | 94 +++++++++++--------- pkg/{idxcdc => iscp}/consumer_test.go | 20 +++-- pkg/{idxcdc => iscp}/index_sqlwriter.go | 2 +- pkg/{idxcdc => iscp}/index_sqlwriter_test.go | 2 +- pkg/{idxcdc => iscp}/types.go | 40 +++++++-- pkg/{idxcdc => iscp}/util.go | 2 +- pkg/sql/compile/cdc_util.go | 26 +++--- 8 files changed, 114 insertions(+), 74 deletions(-) rename pkg/{idxcdc => iscp}/api.go (98%) rename pkg/{idxcdc => iscp}/consumer.go (90%) rename pkg/{idxcdc => iscp}/consumer_test.go (95%) rename pkg/{idxcdc => iscp}/index_sqlwriter.go (99%) rename pkg/{idxcdc => iscp}/index_sqlwriter_test.go (99%) rename pkg/{idxcdc => iscp}/types.go (92%) rename pkg/{idxcdc => iscp}/util.go (99%) diff --git a/pkg/idxcdc/api.go b/pkg/iscp/api.go similarity index 98% rename from pkg/idxcdc/api.go rename to pkg/iscp/api.go index 932e4fd37e768..e5418d8a949e3 100644 --- a/pkg/idxcdc/api.go +++ b/pkg/iscp/api.go @@ -11,7 +11,7 @@ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. -package idxcdc +package iscp import ( "context" diff --git a/pkg/idxcdc/consumer.go b/pkg/iscp/consumer.go similarity index 90% rename from pkg/idxcdc/consumer.go rename to pkg/iscp/consumer.go index 2c3f06415dfcb..bb7d3c44cb53c 100644 --- a/pkg/idxcdc/consumer.go +++ b/pkg/iscp/consumer.go @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -package idxcdc +package iscp import ( "context" @@ -109,7 +109,7 @@ func (c *IndexConsumer) run(ctx context.Context, errch chan error, r DataRetriev datatype := r.GetDataType() - if datatype == int8(OutputTypeSnapshot) { + if datatype == ISCPDataType_Snapshot { // SNAPSHOT for { select { @@ -175,12 +175,56 @@ func (c *IndexConsumer) run(ctx context.Context, errch chan error, r DataRetriev } +func (c *IndexConsumer) processISCPData(ctx context.Context, data *ISCPData, datatype int8, errch chan error) bool { + // release the data + defer data.Done() + + insertBatch := data.insertBatch + deleteBatch := data.deleteBatch + noMoreData := data.noMoreData + err := data.err + if err != nil { + errch <- err + return true + } + + if noMoreData { + err := c.flushCdc() + if err != nil { + errch <- err + } + close(c.sqlBufSendCh) + return noMoreData + } + + // update index + + if datatype == ISCPDataType_Snapshot { + // SNAPSHOT + err := c.sinkSnapshot(ctx, insertBatch) + if err != nil { + // error out + errch <- err + noMoreData = true + } + + } else { + // sinkTail will save sql to the slice + err := c.sinkTail(ctx, insertBatch, deleteBatch) + if err != nil { + // error out + errch <- err + noMoreData = true + } + } + + return noMoreData + +} + func (c *IndexConsumer) Consume(ctx context.Context, r DataRetriever) error { noMoreData := false - var insertBatch, deleteBatch *AtomicBatch errch := make(chan error, 2) - var err error - c.sqlBufSendCh = make(chan []byte) defer func() { c.sqlBufSendCh = nil @@ -199,44 +243,8 @@ func (c *IndexConsumer) Consume(ctx context.Context, r DataRetriever) error { // read data for !noMoreData { - - insertBatch, deleteBatch, noMoreData, err = r.Next() - if err != nil { - errch <- err - noMoreData = true - continue - } - - if noMoreData { - err := c.flushCdc() - if err != nil { - errch <- err - } - close(c.sqlBufSendCh) - continue - } - - // update index - - if datatype == int8(OutputTypeSnapshot) { - // SNAPSHOT - err := c.sinkSnapshot(ctx, insertBatch) - if err != nil { - // error out - errch <- err - noMoreData = true - } - - } else { - // sinkTail will save sql to the slice - err := c.sinkTail(ctx, insertBatch, deleteBatch) - if err != nil { - // error out - errch <- err - noMoreData = true - } - } - + data := r.Next() + noMoreData = c.processISCPData(ctx, data, datatype, errch) } wg.Wait() diff --git a/pkg/idxcdc/consumer_test.go b/pkg/iscp/consumer_test.go similarity index 95% rename from pkg/idxcdc/consumer_test.go rename to pkg/iscp/consumer_test.go index 85482543f55f2..811322ad4faef 100644 --- a/pkg/idxcdc/consumer_test.go +++ b/pkg/iscp/consumer_test.go @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -package idxcdc +package iscp import ( "context" @@ -43,13 +43,17 @@ type MockRetriever struct { dtype int8 } -func (r *MockRetriever) Next() (insertBatch *AtomicBatch, deleteBatch *AtomicBatch, noMoreData bool, err error) { +func (r *MockRetriever) Next() *ISCPData { logutil.Infof("TxRetriever Next()") if !r.noMoreData { r.noMoreData = true - return r.insertBatch, r.deleteBatch, false, nil + d := &ISCPData{insertBatch: r.insertBatch, deleteBatch: r.deleteBatch, noMoreData: false, err: nil} + d.Set(0) // never close + return d } - return nil, nil, r.noMoreData, nil + d := &ISCPData{insertBatch: nil, deleteBatch: nil, noMoreData: r.noMoreData, err: nil} + d.Set(0) // never close + return d } func (r *MockRetriever) UpdateWatermark(executor.TxnExecutor, executor.StatementOption) error { @@ -193,7 +197,7 @@ func TestConsumer(t *testing.T) { insertBatch: nil, deleteBatch: nil, noMoreData: true, - dtype: int8(OutputTypeSnapshot), + dtype: ISCPDataType_Snapshot, } tblDef := newTestTableDef("pk", types.T_int64, "vec", types.T_array_float32, 4) @@ -240,7 +244,7 @@ func TestHnswSnapshot(t *testing.T) { } output := &MockRetriever{ - dtype: int8(OutputTypeSnapshot), + dtype: ISCPDataType_Snapshot, insertBatch: insertAtomicBat, deleteBatch: nil, noMoreData: false, @@ -260,7 +264,7 @@ func TestHnswSnapshot(t *testing.T) { require.NoError(t, err) output := &MockRetriever{ - dtype: int8(OutputTypeSnapshot), + dtype: ISCPDataType_Snapshot, insertBatch: nil, deleteBatch: nil, noMoreData: true, @@ -325,7 +329,7 @@ func TestHnswTail(t *testing.T) { delAtomicBat.Rows.Set(AtomicBatchRow{Ts: delfromTs, Pk: []byte{2}, Offset: 1, Src: bat}) output := &MockRetriever{ - dtype: int8(OutputTypeTail), + dtype: ISCPDataType_Tail, insertBatch: insertAtomicBat, deleteBatch: delAtomicBat, noMoreData: false, diff --git a/pkg/idxcdc/index_sqlwriter.go b/pkg/iscp/index_sqlwriter.go similarity index 99% rename from pkg/idxcdc/index_sqlwriter.go rename to pkg/iscp/index_sqlwriter.go index 16423444f4139..b17fccbc6cfc2 100644 --- a/pkg/idxcdc/index_sqlwriter.go +++ b/pkg/iscp/index_sqlwriter.go @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -package idxcdc +package iscp import ( "context" diff --git a/pkg/idxcdc/index_sqlwriter_test.go b/pkg/iscp/index_sqlwriter_test.go similarity index 99% rename from pkg/idxcdc/index_sqlwriter_test.go rename to pkg/iscp/index_sqlwriter_test.go index bb12e457e2cff..587d27f67827b 100644 --- a/pkg/idxcdc/index_sqlwriter_test.go +++ b/pkg/iscp/index_sqlwriter_test.go @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -package idxcdc +package iscp import ( "context" diff --git a/pkg/idxcdc/types.go b/pkg/iscp/types.go similarity index 92% rename from pkg/idxcdc/types.go rename to pkg/iscp/types.go index c2204ff7ed9ca..5d3358facb569 100644 --- a/pkg/idxcdc/types.go +++ b/pkg/iscp/types.go @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -package idxcdc +package iscp import ( "bytes" @@ -20,6 +20,7 @@ import ( "encoding/hex" "encoding/json" "fmt" + "sync/atomic" "time" "github.com/google/uuid" @@ -56,8 +57,35 @@ const ( CDCPitrGranularity_All = "*" ) +type ISCPData struct { + refcnt atomic.Int32 + + insertBatch *AtomicBatch + deleteBatch *AtomicBatch + noMoreData bool + err error +} + +func (d *ISCPData) Set(cnt int) { + d.refcnt.Add(int32(cnt)) +} + +func (d *ISCPData) Done() { + newRefcnt := d.refcnt.Add(-1) + if newRefcnt == 0 { + if d.insertBatch != nil { + d.insertBatch.Close() + d.insertBatch = nil + } + if d.deleteBatch != nil { + d.deleteBatch.Close() + d.deleteBatch = nil + } + } +} + type DataRetriever interface { - Next() (insertBatch *AtomicBatch, deleteBatch *AtomicBatch, noMoreData bool, err error) + Next() *ISCPData UpdateWatermark(executor.TxnExecutor, executor.StatementOption) error GetDataType() int8 } @@ -79,13 +107,12 @@ func NewTaskId() TaskId { return uuid.Must(uuid.NewV7()) } -type OutputType int8 - const ( - OutputTypeSnapshot OutputType = iota - OutputTypeTail + ISCPDataType_Snapshot int8 = iota + ISCPDataType_Tail ) +/* func (t OutputType) String() string { switch t { case OutputTypeSnapshot: @@ -96,6 +123,7 @@ func (t OutputType) String() string { return "usp output type" } } +*/ type RowType int diff --git a/pkg/idxcdc/util.go b/pkg/iscp/util.go similarity index 99% rename from pkg/idxcdc/util.go rename to pkg/iscp/util.go index 3fe5d04e07431..423d5a51a01e7 100644 --- a/pkg/idxcdc/util.go +++ b/pkg/iscp/util.go @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -package idxcdc +package iscp import ( "context" diff --git a/pkg/sql/compile/cdc_util.go b/pkg/sql/compile/cdc_util.go index d5dc19606fd4f..aefcd7ffd1ef3 100644 --- a/pkg/sql/compile/cdc_util.go +++ b/pkg/sql/compile/cdc_util.go @@ -19,31 +19,31 @@ import ( "fmt" "github.com/matrixorigin/matrixone/pkg/catalog" - "github.com/matrixorigin/matrixone/pkg/idxcdc" + "github.com/matrixorigin/matrixone/pkg/iscp" "github.com/matrixorigin/matrixone/pkg/logutil" "github.com/matrixorigin/matrixone/pkg/pb/plan" "github.com/matrixorigin/matrixone/pkg/txn/client" ) /* CDC APIs */ -func RegisterJob(ctx context.Context, cnUUID string, txn client.TxnOperator, pitr_name string, info *idxcdc.ConsumerInfo) (bool, error) { +func RegisterJob(ctx context.Context, cnUUID string, txn client.TxnOperator, pitr_name string, info *iscp.ConsumerInfo) (bool, error) { //dummyurl := "mysql://root:111@127.0.0.1:6001" // sql = fmt.Sprintf("CREATE CDC `%s` '%s' 'indexsync' '%s' '%s.%s' {'Level'='table'};", cdcname, dummyurl, dummyurl, qryDatabase, srctbl) - return idxcdc.RegisterJob(ctx, cnUUID, txn, pitr_name, info) + return iscp.RegisterJob(ctx, cnUUID, txn, pitr_name, info) } -func UnregisterJob(ctx context.Context, cnUUID string, txn client.TxnOperator, info *idxcdc.ConsumerInfo) (bool, error) { - return idxcdc.UnregisterJob(ctx, cnUUID, txn, info) +func UnregisterJob(ctx context.Context, cnUUID string, txn client.TxnOperator, info *iscp.ConsumerInfo) (bool, error) { + return iscp.UnregisterJob(ctx, cnUUID, txn, info) } /* start here */ -func CreateCdcTask(c *Compile, pitr_name string, consumerinfo idxcdc.ConsumerInfo) (bool, error) { +func CreateCdcTask(c *Compile, pitr_name string, consumerinfo iscp.ConsumerInfo) (bool, error) { logutil.Infof("Create Index Task %v", consumerinfo) return RegisterJob(c.proc.Ctx, c.proc.GetService(), c.proc.GetTxnOperator(), pitr_name, &consumerinfo) } -func DeleteCdcTask(c *Compile, consumerinfo idxcdc.ConsumerInfo) (bool, error) { +func DeleteCdcTask(c *Compile, consumerinfo iscp.ConsumerInfo) (bool, error) { logutil.Infof("Delete Index Task %v", consumerinfo) return UnregisterJob(c.proc.Ctx, c.proc.GetService(), c.proc.GetTxnOperator(), &consumerinfo) } @@ -103,7 +103,7 @@ func CreateIndexCdcTask(c *Compile, dbname string, tablename string, indexname s } // create index cdc task - ok, err := CreateCdcTask(c, pitr_name, idxcdc.ConsumerInfo{ConsumerType: sinker_type, DbName: dbname, TableName: tablename, IndexName: indexname}) + ok, err := CreateCdcTask(c, pitr_name, iscp.ConsumerInfo{ConsumerType: sinker_type, DbName: dbname, TableName: tablename, IndexName: indexname}) if err != nil { return err } @@ -125,7 +125,7 @@ func DropIndexCdcTask(c *Compile, tableDef *plan.TableDef, dbname string, tablen } // delete index cdc task - _, err = DeleteCdcTask(c, idxcdc.ConsumerInfo{DbName: dbname, TableName: tablename, IndexName: indexname}) + _, err = DeleteCdcTask(c, iscp.ConsumerInfo{DbName: dbname, TableName: tablename, IndexName: indexname}) if err != nil { return err } @@ -181,7 +181,7 @@ func DropAllIndexCdcTasks(c *Compile, tabledef *plan.TableDef, dbname string, ta } if async { hasindex = true - _, e := DeleteCdcTask(c, idxcdc.ConsumerInfo{DbName: dbname, TableName: tablename, IndexName: idx.IndexName}) + _, e := DeleteCdcTask(c, iscp.ConsumerInfo{DbName: dbname, TableName: tablename, IndexName: idx.IndexName}) if e != nil { return e } @@ -199,11 +199,11 @@ func DropAllIndexCdcTasks(c *Compile, tabledef *plan.TableDef, dbname string, ta func getSinkerTypeFromAlgo(algo string) int8 { if catalog.IsHnswIndexAlgo(algo) { - return int8(idxcdc.ConsumerType_IndexSync) + return int8(iscp.ConsumerType_IndexSync) } else if catalog.IsIvfIndexAlgo(algo) { - return int8(idxcdc.ConsumerType_IndexSync) + return int8(iscp.ConsumerType_IndexSync) } else if catalog.IsFullTextIndexAlgo(algo) { - return int8(idxcdc.ConsumerType_IndexSync) + return int8(iscp.ConsumerType_IndexSync) } return int8(0) } From 44c63ff8a6482daeb3cc79bc0e5f0d036b3d695f Mon Sep 17 00:00:00 2001 From: cpegeric Date: Tue, 22 Jul 2025 16:10:14 +0100 Subject: [PATCH 222/223] fix sca --- pkg/cdc/index_sinker_test.go | 2 +- pkg/iscp/consumer_test.go | 2 +- pkg/vectorindex/hnsw/model_test.go | 2 +- pkg/vectorindex/hnsw/sync_test.go | 22 +++++++++++----------- 4 files changed, 14 insertions(+), 14 deletions(-) diff --git a/pkg/cdc/index_sinker_test.go b/pkg/cdc/index_sinker_test.go index ed428214b529b..2ee095618cf8c 100644 --- a/pkg/cdc/index_sinker_test.go +++ b/pkg/cdc/index_sinker_test.go @@ -444,7 +444,7 @@ func TestHnswSyncSinker_RunError(t *testing.T) { func TestHnswSyncSinker_Sink(t *testing.T) { ctx := context.Background() - proc := testutil.NewProcess() + proc := testutil.NewProcess(t) sqlexecstub := gostub.Stub(&sqlExecutorFactory, mockSqlExecutorFactory) defer sqlexecstub.Reset() diff --git a/pkg/iscp/consumer_test.go b/pkg/iscp/consumer_test.go index 811322ad4faef..587e7e8c8ba80 100644 --- a/pkg/iscp/consumer_test.go +++ b/pkg/iscp/consumer_test.go @@ -212,7 +212,7 @@ func TestConsumer(t *testing.T) { func TestHnswSnapshot(t *testing.T) { - proc := testutil.NewProcess() + proc := testutil.NewProcess(t) ctx, cancel := context.WithCancel(context.Background()) defer cancel() diff --git a/pkg/vectorindex/hnsw/model_test.go b/pkg/vectorindex/hnsw/model_test.go index 84bcf03691da8..531fadb133ac5 100644 --- a/pkg/vectorindex/hnsw/model_test.go +++ b/pkg/vectorindex/hnsw/model_test.go @@ -59,7 +59,7 @@ func TestModel(t *testing.T) { v1000 := []float32{1000, 2000, 3000} m := mpool.MustNewZero() - proc := testutil.NewProcessWithMPool("", m) + proc := testutil.NewProcessWithMPool(t, "", m) // stub runSql function runSql = mock_runSql diff --git a/pkg/vectorindex/hnsw/sync_test.go b/pkg/vectorindex/hnsw/sync_test.go index 26d614d7d7935..cea0c9ffe4775 100644 --- a/pkg/vectorindex/hnsw/sync_test.go +++ b/pkg/vectorindex/hnsw/sync_test.go @@ -56,7 +56,7 @@ func mock_runTxn(proc *process.Process, fn func(exec executor.TxnExecutor) error func TestSyncUpsertWithEmpty(t *testing.T) { m := mpool.MustNewZero() - proc := testutil.NewProcessWithMPool("", m) + proc := testutil.NewProcessWithMPool(t, "", m) runSql = mock_runSql_empty runSql_streaming = mock_runSql_streaming @@ -84,7 +84,7 @@ func TestSyncUpsertWithEmpty(t *testing.T) { func TestSyncUpsert(t *testing.T) { m := mpool.MustNewZero() - proc := testutil.NewProcessWithMPool("", m) + proc := testutil.NewProcessWithMPool(t, "", m) runSql = mock_runSql runSql_streaming = mock_runSql_streaming @@ -113,7 +113,7 @@ func TestSyncUpsert(t *testing.T) { func TestSyncDelete(t *testing.T) { m := mpool.MustNewZero() - proc := testutil.NewProcessWithMPool("", m) + proc := testutil.NewProcessWithMPool(t, "", m) runSql = mock_runSql runSql_streaming = mock_runSql_streaming @@ -138,7 +138,7 @@ func TestSyncDelete(t *testing.T) { func TestSyncDeleteAndInsert(t *testing.T) { m := mpool.MustNewZero() - proc := testutil.NewProcessWithMPool("", m) + proc := testutil.NewProcessWithMPool(t, "", m) runSql = mock_runSql runSql_streaming = mock_runSql_streaming @@ -172,7 +172,7 @@ func TestSyncDeleteAndInsert(t *testing.T) { func TestSyncUpdate(t *testing.T) { m := mpool.MustNewZero() - proc := testutil.NewProcessWithMPool("", m) + proc := testutil.NewProcessWithMPool(t, "", m) runSql = mock_runSql runSql_streaming = mock_runSql_streaming @@ -198,7 +198,7 @@ func TestSyncUpdate(t *testing.T) { func TestSyncDeleteAndUpsert(t *testing.T) { m := mpool.MustNewZero() - proc := testutil.NewProcessWithMPool("", m) + proc := testutil.NewProcessWithMPool(t, "", m) runSql = mock_runSql runSql_streaming = mock_runSql_streaming @@ -232,7 +232,7 @@ func TestSyncDeleteAndUpsert(t *testing.T) { func TestSyncAddOneModel(t *testing.T) { m := mpool.MustNewZero() - proc := testutil.NewProcessWithMPool("", m) + proc := testutil.NewProcessWithMPool(t, "", m) runSql = mock_runSql runSql_streaming = mock_runSql_streaming @@ -261,7 +261,7 @@ func TestSyncAddOneModel(t *testing.T) { func TestSyncDelete2Files(t *testing.T) { m := mpool.MustNewZero() - proc := testutil.NewProcessWithMPool("", m) + proc := testutil.NewProcessWithMPool(t, "", m) runSql = mock_runSql_2files runSql_streaming = mock_runSql_streaming_2files @@ -286,7 +286,7 @@ func TestSyncDelete2Files(t *testing.T) { func TestSyncDeleteShuffle2Files(t *testing.T) { m := mpool.MustNewZero() - proc := testutil.NewProcessWithMPool("", m) + proc := testutil.NewProcessWithMPool(t, "", m) runSql = mock_runSql_2files runSql_streaming = mock_runSql_streaming_2files @@ -314,7 +314,7 @@ func TestSyncDeleteShuffle2Files(t *testing.T) { func TestSyncUpdateShuffle2Files(t *testing.T) { m := mpool.MustNewZero() - proc := testutil.NewProcessWithMPool("", m) + proc := testutil.NewProcessWithMPool(t, "", m) runSql = mock_runSql_2files runSql_streaming = mock_runSql_streaming_2files @@ -343,7 +343,7 @@ func TestSyncUpdateShuffle2Files(t *testing.T) { func TestSyncUpdateInsertShuffle2Files(t *testing.T) { m := mpool.MustNewZero() - proc := testutil.NewProcessWithMPool("", m) + proc := testutil.NewProcessWithMPool(t, "", m) runSql = mock_runSql_2files runSql_streaming = mock_runSql_streaming_2files From 254f20e17b6fb1199334b3645e686d005df79ea7 Mon Sep 17 00:00:00 2001 From: cpegeric Date: Wed, 23 Jul 2025 09:06:05 +0100 Subject: [PATCH 223/223] fix sca --- pkg/cdc/index_sinker_test.go | 2 +- pkg/iscp/consumer_test.go | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/pkg/cdc/index_sinker_test.go b/pkg/cdc/index_sinker_test.go index 2ee095618cf8c..6c3c298057aa9 100644 --- a/pkg/cdc/index_sinker_test.go +++ b/pkg/cdc/index_sinker_test.go @@ -636,7 +636,7 @@ func TestHnswSyncSinker_ErrorHandling(t *testing.T) { func TestHnswSyncSinker_Sink_AtomicBatch(t *testing.T) { - proc := testutil.NewProcess() + proc := testutil.NewProcess(t) dbTblInfo := newTestDbTableInfo() ctx := context.Background() diff --git a/pkg/iscp/consumer_test.go b/pkg/iscp/consumer_test.go index 587e7e8c8ba80..c4a669bb3ed6a 100644 --- a/pkg/iscp/consumer_test.go +++ b/pkg/iscp/consumer_test.go @@ -278,7 +278,7 @@ func TestHnswSnapshot(t *testing.T) { func TestHnswTail(t *testing.T) { - proc := testutil.NewProcess() + proc := testutil.NewProcess(t) ctx, cancel := context.WithCancel(context.Background()) defer cancel()

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