commit 51961625402b28ce09c863bb94bcaff63f0a1c4e
parent 361671870e145d0feb8e6e200e5f59a9e0fc9b83
Author: Jan Edmund Lazo <jan.lazo@mail.utoronto.ca>
Date: Thu, 20 Nov 2025 01:29:39 -0500
feat(version): support multiple Vim versions
Group up to 15 vimpatch numbers in 1 line to guard against
'make formatc'.
1-liner for vim_versions, num_patches.
Automate '*Version' to remove version.h macros.
'-V1 -v' lists merged Vim versions.
Diffstat:
8 files changed, 4367 insertions(+), 2489 deletions(-)
diff --git a/scripts/vimpatch.lua b/scripts/vimpatch.lua
@@ -19,58 +19,105 @@ local function vimpatch_sh_list_tokens()
return systemlist({ { 'bash', '-c', 'scripts/vim-patch.sh -M' } })
end
--- Generates the lines to be inserted into the src/nvim/version.c
--- `included_patches[]` definition.
+-- Generate the data,lines to update src/nvim/version.c.
+-- - `vim_versions[]`
+-- - `Versions[]`
+-- - `num_patches[]`
+-- - `included_patchsets[]`
local function gen_version_c_lines()
- -- Sets of merged Vim x.y.zzzz patch numbers.
- local merged_patch_sets = {}
+ -- List of version sets where each set contains:
+ -- 1. major_minor_version (int)
+ -- 2. major_minor_version (string)
+ -- 3. set of merged patch numbers
+ local merged_version_list = {}
for _, token in ipairs(vimpatch_sh_list_tokens()) do
local major_version, minor_version, patch_num = string.match(token, '^(%d+).(%d+).(%d+)$')
local n = tonumber(patch_num)
- -- TODO(@janlazo): Allow multiple Vim versions
- -- if n then
- if n and major_version == '8' and minor_version == '1' then
+ if n then
local major_minor_version = major_version * 100 + minor_version
- merged_patch_sets[major_minor_version] = merged_patch_sets[major_minor_version] or {}
- table.insert(merged_patch_sets[major_minor_version], n)
+ local len = #merged_version_list
+ if len == 0 or merged_version_list[len][1] ~= major_minor_version then
+ local vstr = '"' .. major_version .. '.' .. minor_version .. '"'
+ table.insert(merged_version_list, { major_minor_version, vstr, { n } })
+ else
+ table.insert(merged_version_list[len][3], n)
+ end
end
end
- local sorted_versions = {}
- for k, _ in pairs(merged_patch_sets) do
- table.insert(sorted_versions, k)
- end
- table.sort(sorted_versions)
- local lines = {}
- for _, major_minor_version in ipairs(sorted_versions) do
- -- table.insert(lines, string.format(' // major minor version: %s', major_minor_version))
- local patch_set = merged_patch_sets[major_minor_version]
+ local major_vim_versions = {}
+ local major_vim_versions_str = {}
+ local num_patches = {}
+ local patch_lines = {}
+ for _, version_set in ipairs(merged_version_list) do
+ local major_minor_version, major_minor_version_str, patch_set = unpack(version_set)
+ table.insert(major_vim_versions, major_minor_version)
+ table.insert(major_vim_versions_str, major_minor_version_str)
+ table.insert(num_patches, #patch_set)
+ table.insert(patch_lines, ' (const int[]) { // ' .. major_minor_version)
+
+ local patchset_set = {}
for i = #patch_set, 1, -1 do
local patch = patch_set[i]
- table.insert(lines, string.format(' %s,', patch))
- if patch > 0 then
- local oldest_unmerged_patch = patch_set[i - 1] and (patch_set[i - 1] + 1) or 0
- for unmerged_patch = patch -1, oldest_unmerged_patch, -1 do
- table.insert(lines, string.format(' // %s,', unmerged_patch))
+ local next_patch = patch_set[i - 1]
+ local patch_diff = patch - (next_patch or 0)
+ table.insert(patchset_set, patch)
+
+ -- guard against last patch or `make formatc`
+ if #patchset_set > 15 or i == 1 or patch_diff > 1 then
+ table.insert(patch_lines, ' ' .. table.concat(patchset_set, ', ') .. ',')
+ patchset_set = {}
+ end
+ if i == 1 and patch > 0 then
+ local line = ' // 0'
+ if patch > 1 then
+ line = line .. '-' .. (patch - 1)
+ end
+ table.insert(patch_lines, line)
+ elseif patch_diff > 1 then
+ local line = ' // ' .. (next_patch + 1)
+ if patch_diff > 2 then
+ line = line .. '-' .. (patch - 1)
end
+ table.insert(patch_lines, line)
end
end
+
+ table.insert(patch_lines, ' },')
end
- return lines
+ return major_vim_versions, major_vim_versions_str, num_patches, patch_lines
end
local function patch_version_c()
- local lines = gen_version_c_lines()
+ local major_vim_versions, major_vim_versions_str, num_patches, patch_lines = gen_version_c_lines()
nvim.nvim_command('silent noswapfile noautocmd edit src/nvim/version.c')
- nvim.nvim_command('/static const int included_patches')
+ nvim.nvim_command([[/^char \*Versions]])
+ -- Replace the line.
+ nvim.nvim_call_function('setline', {
+ nvim.nvim_eval('line(".")'),
+ 'char *Versions[] = { ' .. table.concat(major_vim_versions_str, ', ') .. ' };',
+ })
+ nvim.nvim_command([[/^static const int vim_versions]])
+ -- Replace the line.
+ nvim.nvim_call_function('setline', {
+ nvim.nvim_eval('line(".")'),
+ 'static const int vim_versions[] = { ' .. table.concat(major_vim_versions, ', ') .. ' };',
+ })
+ nvim.nvim_command([[/^static const int num_patches]])
+ -- Replace the line.
+ nvim.nvim_call_function('setline', {
+ nvim.nvim_eval('line(".")'),
+ 'static const int num_patches[] = { ' .. table.concat(num_patches, ', ') .. ' };',
+ })
+ nvim.nvim_command([[/^static const int \*included_patchsets]])
-- Delete the existing lines.
nvim.nvim_command('silent normal! j0d/};\rk')
-- Insert the lines.
nvim.nvim_call_function('append', {
nvim.nvim_eval('line(".")'),
- lines,
+ patch_lines,
})
nvim.nvim_command('silent write')
end
diff --git a/src/nvim/buffer.c b/src/nvim/buffer.c
@@ -3800,14 +3800,15 @@ static int chk_modeline(linenr_T lnum, int flags)
continue;
}
+ const int vim_version = min_vim_version();
if (*e == ':'
&& (s[0] != 'V'
|| strncmp(skipwhite(e + 1), "set", 3) == 0)
&& (s[3] == ':'
- || (VIM_VERSION_100 >= vers && isdigit((uint8_t)s[3]))
- || (VIM_VERSION_100 < vers && s[3] == '<')
- || (VIM_VERSION_100 > vers && s[3] == '>')
- || (VIM_VERSION_100 == vers && s[3] == '='))) {
+ || (vim_version >= vers && isdigit((uint8_t)s[3]))
+ || (vim_version < vers && s[3] == '<')
+ || (vim_version > vers && s[3] == '>')
+ || (vim_version == vers && s[3] == '='))) {
break;
}
}
diff --git a/src/nvim/eval/funcs.c b/src/nvim/eval/funcs.c
@@ -2812,14 +2812,10 @@ static void f_has(typval_T *argvars, typval_T *rettv, EvalFuncData fptr)
int minor = atoi(end + 1);
// Expect "patch-9.9.01234".
- n = (major < VIM_VERSION_MAJOR
- || (major == VIM_VERSION_MAJOR
- && (minor < VIM_VERSION_MINOR
- || (minor == VIM_VERSION_MINOR
- && has_vim_patch(atoi(end + 3))))));
+ n = has_vim_patch(atoi(end + 3), major * 100 + minor);
}
} else if (ascii_isdigit(name[5])) {
- n = has_vim_patch(atoi(name + 5));
+ n = has_vim_patch(atoi(name + 5), 0);
}
} else if (STRNICMP(name, "nvim-", 5) == 0) {
// Expect "nvim-x.y.z"
diff --git a/src/nvim/eval/vars.c b/src/nvim/eval/vars.c
@@ -281,8 +281,9 @@ void evalvars_init(void)
hash_add(&compat_hashtab, p->vv_di.di_key);
}
}
- set_vim_var_nr(VV_VERSION, VIM_VERSION_100);
- set_vim_var_nr(VV_VERSIONLONG, VIM_VERSION_100 * 10000 + highest_patch());
+ const int vim_version = min_vim_version();
+ set_vim_var_nr(VV_VERSION, vim_version);
+ set_vim_var_nr(VV_VERSIONLONG, vim_version * 10000 + highest_patch());
dict_T *const msgpack_types_dict = tv_dict_alloc();
for (size_t i = 0; i < ARRAY_SIZE(msgpack_type_names); i++) {
diff --git a/src/nvim/memline.c b/src/nvim/memline.c
@@ -330,7 +330,7 @@ int ml_open(buf_T *buf)
b0p->b0_magic_int = B0_MAGIC_INT;
b0p->b0_magic_short = (int16_t)B0_MAGIC_SHORT;
b0p->b0_magic_char = B0_MAGIC_CHAR;
- xstrlcpy(xstpcpy(b0p->b0_version, "VIM "), Version, 6);
+ xstrlcpy(xstpcpy(b0p->b0_version, "VIM "), Versions[0], 6);
long_to_char((long)mfp->mf_page_size, b0p->b0_page_size);
if (!buf->b_spell) {
diff --git a/src/nvim/version.c b/src/nvim/version.c
@@ -45,7 +45,7 @@
#endif
#define NVIM_VERSION_LONG "NVIM " NVIM_VERSION_MEDIUM // NOLINT(bugprone-suspicious-missing-comma)
-char *Version = VIM_VERSION_SHORT;
+char *Versions[] = { "8.1", "8.2", "9.0", "9.1" };
char *longVersion = NVIM_VERSION_LONG;
char *version_buildtype = "Build type: " NVIM_VERSION_BUILD_TYPE;
// Reproducible builds: omit compile info in Release builds. #15424
@@ -56,2432 +56,4209 @@ char *version_cflags = "Compilation: " NVIM_VERSION_CFLAGS;
#include "version.c.generated.h"
// clang-format off
-static const int included_patches[] = {
- 2424,
- 2423,
- 2422,
- 2421,
- 2420,
- 2419,
- // 2418,
- 2417,
- 2416,
- // 2415,
- 2414,
- 2413,
- 2412,
- 2411,
- 2410,
- 2409,
- 2408,
- 2407,
- 2406,
- 2405,
- 2404,
- 2403,
- 2402,
- 2401,
- 2400,
- // 2399,
- 2398,
- 2397,
- 2396,
- 2395,
- 2394,
- 2393,
- 2392,
- 2391,
- 2390,
- 2389,
- 2388,
- 2387,
- // 2386,
- 2385,
- 2384,
- 2383,
- 2382,
- // 2381,
- 2380,
- 2379,
- 2378,
- 2377,
- 2376,
- 2375,
- 2374,
- 2373,
- 2372,
- 2371,
- 2370,
- 2369,
- 2368,
- 2367,
- 2366,
- 2365,
- 2364,
- 2363,
- // 2362,
- 2361,
- 2360,
- 2359,
- 2358,
- 2357,
- 2356,
- 2355,
- 2354,
- 2353,
- 2352,
- // 2351,
- 2350,
- 2349,
- 2348,
- 2347,
- 2346,
- 2345,
- 2344,
- 2343,
- 2342,
- 2341,
- 2340,
- 2339,
- 2338,
- 2337,
- 2336,
- 2335,
- 2334,
- 2333,
- 2332,
- 2331,
- 2330,
- 2329,
- 2328,
- 2327,
- 2326,
- 2325,
- // 2324,
- 2323,
- 2322,
- 2321,
- 2320,
- 2319,
- 2318,
- 2317,
- 2316,
- 2315,
- 2314,
- 2313,
- 2312,
- 2311,
- 2310,
- 2309,
- 2308,
- 2307,
- 2306,
- 2305,
- 2304,
- 2303,
- 2302,
- 2301,
- 2300,
- 2299,
- 2298,
- 2297,
- 2296,
- 2295,
- 2294,
- 2293,
- // 2292,
- 2291,
- 2290,
- 2289,
- 2288,
- 2287,
- 2286,
- 2285,
- 2284,
- 2283,
- 2282,
- 2281,
- 2280,
- // 2279,
- 2278,
- 2277,
- 2276,
- 2275,
- 2274,
- // 2273,
- 2272,
- 2271,
- 2270,
- 2269,
- 2268,
- 2267,
- 2266,
- 2265,
- 2264,
- 2263,
- 2262,
- 2261,
- 2260,
- 2259,
- 2258,
- 2257,
- 2256,
- 2255,
- 2254,
- 2253,
- 2252,
- // 2251,
- // 2250,
- 2249,
- 2248,
- 2247,
- 2246,
- 2245,
- 2244,
- 2243,
- 2242,
- // 2241,
- 2240,
- 2239,
- 2238,
- 2237,
- 2236,
- 2235,
- 2234,
- 2233,
- // 2232,
- 2231,
- // 2230,
- 2229,
- 2228,
- 2227,
- 2226,
- 2225,
- 2224,
- 2223,
- 2222,
- 2221,
- 2220,
- // 2219,
- 2218,
- 2217,
- 2216,
- 2215,
- 2214,
- 2213,
- 2212,
- 2211,
- 2210,
- 2209,
- // 2208,
- 2207,
- 2206,
- 2205,
- 2204,
- 2203,
- 2202,
- 2201,
- 2200,
- 2199,
- 2198,
- 2197,
- 2196,
- // 2195,
- 2194,
- // 2193,
- // 2192,
- 2191,
- 2190,
- // 2189,
- 2188,
- 2187,
- 2186,
- 2185,
- 2184,
- 2183,
- 2182,
- // 2181,
- 2180,
- 2179,
- 2178,
- 2177,
- // 2176,
- 2175,
- 2174,
- 2173,
- 2172,
- 2171,
- 2170,
- 2169,
- 2168,
- 2167,
- 2166,
- 2165,
- 2164,
- 2163,
- 2162,
- 2161,
- 2160,
- 2159,
- // 2158,
- 2157,
- // 2156,
- // 2155,
- 2154,
- // 2153,
- 2152,
- 2151,
- 2150,
- 2149,
- 2148,
- 2147,
- 2146,
- 2145,
- 2144,
- 2143,
- // 2142,
- 2141,
- 2140,
- // 2139,
- 2138,
- 2137,
- 2136,
- 2135,
- 2134,
- 2133,
- 2132,
- 2131,
- 2130,
- 2129,
- 2128,
- 2127,
- 2126,
- 2125,
- 2124,
- 2123,
- 2122,
- // 2121,
- 2120,
- 2119,
- 2118,
- 2117,
- 2116,
- 2115,
- 2114,
- 2113,
- 2112,
- 2111,
- 2110,
- 2109,
- 2108,
- 2107,
- 2106,
- 2105,
- 2104,
- 2103,
- 2102,
- 2101,
- 2100,
- 2099,
- 2098,
- 2097,
- 2096,
- 2095,
- 2094,
- // 2093,
- // 2092,
- 2091,
- 2090,
- 2089,
- 2088,
- 2087,
- 2086,
- 2085,
- 2084,
- 2083,
- 2082,
- 2081,
- // 2080,
- 2079,
- 2078,
- 2077,
- // 2076,
- 2075,
- 2074,
- 2073,
- 2072,
- 2071,
- 2070,
- 2069,
- 2068,
- 2067,
- 2066,
- 2065,
- 2064,
- 2063,
- 2062,
- 2061,
- 2060,
- 2059,
- 2058,
- 2057,
- 2056,
- 2055,
- 2054,
- 2053,
- 2052,
- 2051,
- 2050,
- 2049,
- 2048,
- 2047,
- 2046,
- 2045,
- 2044,
- 2043,
- 2042,
- 2041,
- // 2040,
- // 2039,
- 2038,
- 2037,
- 2036,
- 2035,
- 2034,
- 2033,
- 2032,
- 2031,
- 2030,
- 2029,
- 2028,
- 2027,
- 2026,
- 2025,
- 2024,
- 2023,
- // 2022,
- 2021,
- 2020,
- 2019,
- 2018,
- 2017,
- 2016,
- 2015,
- 2014,
- 2013,
- 2012,
- 2011,
- 2010,
- 2009,
- 2008,
- 2007,
- 2006,
- 2005,
- 2004,
- 2003,
- 2002,
- 2001,
- 2000,
- // 1999,
- 1998,
- 1997,
- 1996,
- 1995,
- 1994,
- 1993,
- 1992,
- 1991,
- 1990,
- 1989,
- 1988,
- 1987,
- 1986,
- // 1985,
- 1984,
- 1983,
- 1982,
- 1981,
- 1980,
- 1979,
- 1978,
- 1977,
- 1976,
- 1975,
- 1974,
- 1973,
- 1972,
- 1971,
- 1970,
- // 1969,
- 1968,
- 1967,
- 1966,
- 1965,
- 1964,
- 1963,
- 1962,
- 1961,
- 1960,
- 1959,
- 1958,
- 1957,
- 1956,
- 1955,
- 1954,
- 1953,
- 1952,
- 1951,
- 1950,
- 1949,
- 1948,
- 1947,
- 1946,
- 1945,
- // 1944,
- 1943,
- 1942,
- 1941,
- 1940,
- 1939,
- 1938,
- 1937,
- 1936,
- 1935,
- 1934,
- 1933,
- 1932,
- 1931,
- 1930,
- 1929,
- // 1928,
- 1927,
- 1926,
- 1925,
- 1924,
- 1923,
- 1922,
- 1921,
- 1920,
- 1919,
- 1918,
- 1917,
- 1916,
- 1915,
- 1914,
- 1913,
- 1912,
- 1911,
- 1910,
- 1909,
- // 1908,
- 1907,
- // 1906,
- // 1905,
- // 1904,
- 1903,
- 1902,
- 1901,
- 1900,
- 1899,
- 1898,
- 1897,
- 1896,
- 1895,
- 1894,
- 1893,
- // 1892,
- 1891,
- 1890,
- 1889,
- 1888,
- 1887,
- 1886,
- 1885,
- // 1884,
- 1883,
- // 1882,
- 1881,
- // 1880,
- 1879,
- 1878,
- 1877,
- 1876,
- 1875,
- 1874,
- 1873,
- 1872,
- 1871,
- 1870,
- 1869,
- 1868,
- 1867,
- 1866,
- 1865,
- 1864,
- 1863,
- 1862,
- 1861,
- 1860,
- 1859,
- 1858,
- 1857,
- 1856,
- 1855,
- 1854,
- 1853,
- 1852,
- // 1851,
- 1850,
- 1849,
- 1848,
- 1847,
- 1846,
- 1845,
- 1844,
- 1843,
- 1842,
- 1841,
- 1840,
- 1839,
- 1838,
- 1837,
- 1836,
- 1835,
- 1834,
- 1833,
- 1832,
- 1831,
- 1830,
- 1829,
- 1828,
- 1827,
- 1826,
- 1825,
- 1824,
- 1823,
- 1822,
- 1821,
- 1820,
- // 1819,
- 1818,
- 1817,
- 1816,
- 1815,
- 1814,
- // 1813,
- 1812,
- 1811,
- 1810,
- 1809,
- 1808,
- 1807,
- 1806,
- 1805,
- 1804,
- 1803,
- 1802,
- 1801,
- 1800,
- // 1799,
- 1798,
- 1797,
- 1796,
- 1795,
- 1794,
- 1793,
- 1792,
- 1791,
- 1790,
- 1789,
- 1788,
- // 1787,
- 1786,
- 1785,
- // 1784,
- 1783,
- 1782,
- 1781,
- 1780,
- 1779,
- 1778,
- 1777,
- 1776,
- 1775,
- 1774,
- 1773,
- 1772,
- 1771,
- // 1770,
- 1769,
- 1768,
- 1767,
- 1766,
- 1765,
- 1764,
- 1763,
- 1762,
- 1761,
- 1760,
- 1759,
- 1758,
- 1757,
- 1756,
- 1755,
- 1754,
- 1753,
- 1752,
- 1751,
- 1750,
- 1749,
- 1748,
- 1747,
- 1746,
- 1745,
- 1744,
- 1743,
- 1742,
- 1741,
- 1740,
- 1739,
- 1738,
- 1737,
- 1736,
- 1735,
- 1734,
- 1733,
- 1732,
- 1731,
- 1730,
- 1729,
- 1728,
- 1727,
- 1726,
- 1725,
- 1724,
- 1723,
- 1722,
- 1721,
- 1720,
- 1719,
- // 1718,
- 1717,
- 1716,
- 1715,
- // 1714,
- // 1713,
- 1712,
- 1711,
- 1710,
- 1709,
- 1708,
- 1707,
- 1706,
- 1705,
- 1704,
- 1703,
- 1702,
- 1701,
- 1700,
- 1699,
- 1698,
- 1697,
- 1696,
- 1695,
- 1694,
- 1693,
- 1692,
- 1691,
- // 1690,
- 1689,
- 1688,
- 1687,
- 1686,
- 1685,
- 1684,
- 1683,
- 1682,
- 1681,
- 1680,
- 1679,
- 1678,
- 1677,
- 1676,
- 1675,
- 1674,
- // 1673,
- 1672,
- 1671,
- 1670,
- 1669,
- 1668,
- 1667,
- 1666,
- 1665,
- 1664,
- 1663,
- 1662,
- 1661,
- 1660,
- // 1659,
- 1658,
- 1657,
- 1656,
- 1655,
- 1654,
- 1653,
- 1652,
- 1651,
- 1650,
- 1649,
- 1648,
- 1647,
- 1646,
- 1645,
- 1644,
- 1643,
- 1642,
- 1641,
- 1640,
- 1639,
- 1638,
- 1637,
- 1636,
- 1635,
- 1634,
- 1633,
- 1632,
- 1631,
- 1630,
- 1629,
- // 1628,
- 1627,
- // 1626,
- 1625,
- 1624,
- 1623,
- 1622,
- 1621,
- 1620,
- 1619,
- 1618,
- 1617,
- 1616,
- 1615,
- 1614,
- 1613,
- // 1612,
- 1611,
- 1610,
- // 1609,
- 1608,
- // 1607,
- 1606,
- 1605,
- 1604,
- 1603,
- 1602,
- 1601,
- 1600,
- 1599,
- 1598,
- // 1597,
- 1596,
- 1595,
- 1594,
- 1593,
- 1592,
- 1591,
- 1590,
- // 1589,
- 1588,
- 1587,
- 1586,
- 1585,
- 1584,
- 1583,
- 1582,
- 1581,
- // 1580,
- 1579,
- 1578,
- // 1577,
- 1576,
- 1575,
- // 1574,
- 1573,
- 1572,
- 1571,
- 1570,
- 1569,
- 1568,
- 1567,
- 1566,
- 1565,
- 1564,
- 1563,
- 1562,
- // 1561,
- 1560,
- // 1559,
- // 1558,
- 1557,
- 1556,
- 1555,
- 1554,
- // 1553,
- 1552,
- 1551,
- 1550,
- 1549,
- // 1548,
- 1547,
- 1546,
- 1545,
- 1544,
- 1543,
- 1542,
- 1541,
- 1540,
- 1539,
- // 1538,
- // 1537,
- 1536,
- 1535,
- 1534,
- 1533,
- 1532,
- 1531,
- 1530,
- 1529,
- 1528,
- 1527,
- 1526,
- // 1525,
- 1524,
- // 1523,
- 1522,
- 1521,
- 1520,
- 1519,
- 1518,
- 1517,
- 1516,
- 1515,
- 1514,
- 1513,
- 1512,
- 1511,
- 1510,
- 1509,
- 1508,
- 1507,
- 1506,
- 1505,
- 1504,
- 1503,
- 1502,
- 1501,
- 1500,
- 1499,
- 1498,
- 1497,
- 1496,
- 1495,
- 1494,
- 1493,
- 1492,
- 1491,
- 1490,
- 1489,
- 1488,
- 1487,
- 1486,
- 1485,
- 1484,
- 1483,
- 1482,
- 1481,
- 1480,
- 1479,
- 1478,
- 1477,
- 1476,
- 1475,
- 1474,
- // 1473,
- 1472,
- 1471,
- 1470,
- 1469,
- 1468,
- 1467,
- 1466,
- 1465,
- 1464,
- 1463,
- 1462,
- 1461,
- 1460,
- 1459,
- 1458,
- 1457,
- 1456,
- 1455,
- 1454,
- 1453,
- 1452,
- 1451,
- 1450,
- 1449,
- 1448,
- 1447,
- 1446,
- 1445,
- 1444,
- 1443,
- 1442,
- 1441,
- 1440,
- 1439,
- 1438,
- 1437,
- 1436,
- 1435,
- 1434,
- 1433,
- 1432,
- 1431,
- 1430,
- 1429,
- 1428,
- 1427,
- 1426,
- 1425,
- 1424,
- 1423,
- 1422,
- 1421,
- 1420,
- 1419,
- 1418,
- // 1417,
- 1416,
- 1415,
- 1414,
- 1413,
- 1412,
- 1411,
- 1410,
- 1409,
- 1408,
- 1407,
- 1406,
- 1405,
- 1404,
- 1403,
- 1402,
- 1401,
- 1400,
- 1399,
- 1398,
- 1397,
- 1396,
- 1395,
- 1394,
- 1393,
- 1392,
- 1391,
- 1390,
- 1389,
- 1388,
- 1387,
- 1386,
- 1385,
- 1384,
- 1383,
- 1382,
- 1381,
- 1380,
- 1379,
- 1378,
- 1377,
- 1376,
- 1375,
- 1374,
- 1373,
- 1372,
- 1371,
- 1370,
- 1369,
- 1368,
- 1367,
- 1366,
- 1365,
- 1364,
- 1363,
- 1362,
- 1361,
- 1360,
- 1359,
- 1358,
- 1357,
- 1356,
- 1355,
- 1354,
- 1353,
- 1352,
- 1351,
- 1350,
- 1349,
- 1348,
- 1347,
- 1346,
- 1345,
- 1344,
- 1343,
- 1342,
- 1341,
- 1340,
- 1339,
- 1338,
- 1337,
- 1336,
- 1335,
- 1334,
- 1333,
- 1332,
- 1331,
- 1330,
- 1329,
- 1328,
- 1327,
- 1326,
- 1325,
- 1324,
- 1323,
- 1322,
- 1321,
- 1320,
- 1319,
- 1318,
- 1317,
- 1316,
- 1315,
- 1314,
- 1313,
- 1312,
- 1311,
- 1310,
- 1309,
- 1308,
- 1307,
- 1306,
- 1305,
- 1304,
- 1303,
- 1302,
- 1301,
- 1300,
- 1299,
- 1298,
- 1297,
- 1296,
- 1295,
- 1294,
- 1293,
- 1292,
- 1291,
- 1290,
- 1289,
- 1288,
- 1287,
- 1286,
- 1285,
- 1284,
- 1283,
- 1282,
- 1281,
- 1280,
- 1279,
- 1278,
- 1277,
- 1276,
- 1275,
- 1274,
- 1273,
- 1272,
- 1271,
- 1270,
- 1269,
- 1268,
- 1267,
- 1266,
- 1265,
- 1264,
- 1263,
- 1262,
- 1261,
- 1260,
- 1259,
- 1258,
- 1257,
- 1256,
- 1255,
- 1254,
- 1253,
- 1252,
- 1251,
- 1250,
- 1249,
- 1248,
- 1247,
- 1246,
- 1245,
- 1244,
- 1243,
- 1242,
- 1241,
- 1240,
- 1239,
- 1238,
- 1237,
- 1236,
- 1235,
- 1234,
- 1233,
- 1232,
- 1231,
- 1230,
- 1229,
- 1228,
- 1227,
- 1226,
- 1225,
- // 1224,
- 1223,
- 1222,
- 1221,
- 1220,
- 1219,
- // 1218,
- 1217,
- 1216,
- 1215,
- 1214,
- 1213,
- 1212,
- 1211,
- 1210,
- 1209,
- 1208,
- 1207,
- 1206,
- 1205,
- 1204,
- 1203,
- 1202,
- 1201,
- 1200,
- 1199,
- 1198,
- 1197,
- 1196,
- 1195,
- 1194,
- 1193,
- 1192,
- 1191,
- 1190,
- 1189,
- 1188,
- 1187,
- 1186,
- 1185,
- 1184,
- 1183,
- 1182,
- 1181,
- 1180,
- 1179,
- 1178,
- 1177,
- 1176,
- 1175,
- 1174,
- 1173,
- 1172,
- 1171,
- 1170,
- 1169,
- 1168,
- 1167,
- 1166,
- 1165,
- 1164,
- 1163,
- 1162,
- 1161,
- 1160,
- 1159,
- 1158,
- 1157,
- 1156,
- 1155,
- 1154,
- 1153,
- 1152,
- 1151,
- 1150,
- 1149,
- 1148,
- 1147,
- 1146,
- 1145,
- 1144,
- 1143,
- 1142,
- 1141,
- 1140,
- 1139,
- 1138,
- 1137,
- 1136,
- 1135,
- 1134,
- 1133,
- 1132,
- 1131,
- 1130,
- 1129,
- 1128,
- 1127,
- 1126,
- 1125,
- 1124,
- 1123,
- 1122,
- 1121,
- 1120,
- 1119,
- 1118,
- 1117,
- 1116,
- 1115,
- 1114,
- 1113,
- 1112,
- 1111,
- 1110,
- 1109,
- 1108,
- 1107,
- 1106,
- 1105,
- 1104,
- 1103,
- 1102,
- 1101,
- 1100,
- 1099,
- 1098,
- 1097,
- 1096,
- 1095,
- 1094,
- 1093,
- 1092,
- 1091,
- 1090,
- 1089,
- 1088,
- 1087,
- 1086,
- 1085,
- 1084,
- 1083,
- 1082,
- 1081,
- 1080,
- 1079,
- 1078,
- 1077,
- 1076,
- 1075,
- 1074,
- 1073,
- 1072,
- 1071,
- 1070,
- 1069,
- 1068,
- 1067,
- 1066,
- 1065,
- 1064,
- 1063,
- 1062,
- 1061,
- 1060,
- 1059,
- 1058,
- 1057,
- 1056,
- 1055,
- 1054,
- 1053,
- 1052,
- 1051,
- 1050,
- 1049,
- 1048,
- 1047,
- 1046,
- 1045,
- // 1044,
- 1043,
- 1042,
- 1041,
- 1040,
- 1039,
- 1038,
- 1037,
- 1036,
- 1035,
- 1034,
- 1033,
- 1032,
- 1031,
- 1030,
- 1029,
- 1028,
- 1027,
- 1026,
- 1025,
- 1024,
- 1023,
- 1022,
- 1021,
- 1020,
- 1019,
- 1018,
- 1017,
- 1016,
- 1015,
- 1014,
- 1013,
- 1012,
- 1011,
- 1010,
- 1009,
- 1008,
- 1007,
- 1006,
- 1005,
- 1004,
- 1003,
- 1002,
- 1001,
- 1000,
- 999,
- 998,
- 997,
- 996,
- 995,
- 994,
- 993,
- 992,
- 991,
- 990,
- 989,
- 988,
- 987,
- 986,
- 985,
- 984,
- 983,
- 982,
- 981,
- 980,
- 979,
- 978,
- 977,
- 976,
- 975,
- 974,
- 973,
- 972,
- 971,
- 970,
- 969,
- 968,
- 967,
- 966,
- 965,
- 964,
- 963,
- 962,
- 961,
- 960,
- 959,
- 958,
- 957,
- 956,
- 955,
- 954,
- // 953,
- 952,
- 951,
- 950,
- 949,
- 948,
- 947,
- 946,
- 945,
- 944,
- 943,
- 942,
- 941,
- 940,
- 939,
- 938,
- 937,
- 936,
- 935,
- 934,
- 933,
- 932,
- 931,
- 930,
- 929,
- 928,
- 927,
- 926,
- 925,
- 924,
- 923,
- 922,
- 921,
- 920,
- 919,
- 918,
- 917,
- 916,
- 915,
- 914,
- 913,
- 912,
- 911,
- 910,
- 909,
- 908,
- 907,
- 906,
- 905,
- 904,
- 903,
- 902,
- 901,
- 900,
- 899,
- 898,
- 897,
- 896,
- 895,
- // 894,
- 893,
- 892,
- 891,
- 890,
- 889,
- 888,
- 887,
- 886,
- 885,
- 884,
- 883,
- 882,
- 881,
- 880,
- 879,
- 878,
- 877,
- // 876,
- 875,
- 874,
- 873,
- 872,
- 871,
- 870,
- 869,
- 868,
- 867,
- 866,
- 865,
- 864,
- // 863,
- 862,
- 861,
- 860,
- 859,
- 858,
- 857,
- 856,
- 855,
- 854,
- 853,
- 852,
- 851,
- 850,
- 849,
- 848,
- 847,
- 846,
- 845,
- 844,
- 843,
- 842,
- 841,
- 840,
- 839,
- 838,
- 837,
- 836,
- 835,
- 834,
- 833,
- 832,
- 831,
- 830,
- 829,
- 828,
- 827,
- 826,
- 825,
- 824,
- 823,
- 822,
- 821,
- 820,
- 819,
- 818,
- 817,
- 816,
- 815,
- 814,
- 813,
- 812,
- 811,
- 810,
- 809,
- 808,
- 807,
- 806,
- 805,
- 804,
- 803,
- 802,
- 801,
- 800,
- 799,
- 798,
- 797,
- 796,
- 795,
- 794,
- 793,
- 792,
- 791,
- 790,
- 789,
- 788,
- 787,
- 786,
- 785,
- 784,
- 783,
- 782,
- 781,
- 780,
- 779,
- 778,
- 777,
- 776,
- 775,
- 774,
- 773,
- 772,
- 771,
- 770,
- 769,
- // 768,
- 767,
- 766,
- 765,
- 764,
- 763,
- 762,
- 761,
- 760,
- 759,
- 758,
- 757,
- 756,
- 755,
- 754,
- 753,
- 752,
- 751,
- 750,
- 749,
- 748,
- 747,
- 746,
- 745,
- 744,
- 743,
- 742,
- 741,
- 740,
- 739,
- 738,
- 737,
- 736,
- 735,
- 734,
- 733,
- 732,
- 731,
- 730,
- 729,
- 728,
- 727,
- 726,
- 725,
- 724,
- 723,
- 722,
- 721,
- 720,
- 719,
- 718,
- 717,
- 716,
- 715,
- 714,
- 713,
- 712,
- 711,
- 710,
- 709,
- 708,
- 707,
- 706,
- 705,
- 704,
- 703,
- 702,
- 701,
- 700,
- 699,
- 698,
- 697,
- 696,
- 695,
- 694,
- 693,
- 692,
- 691,
- 690,
- 689,
- 688,
- 687,
- 686,
- 685,
- 684,
- 683,
- 682,
- 681,
- 680,
- 679,
- 678,
- 677,
- 676,
- 675,
- 674,
- 673,
- 672,
- 671,
- 670,
- 669,
- 668,
- 667,
- 666,
- 665,
- 664,
- 663,
- 662,
- 661,
- 660,
- 659,
- 658,
- 657,
- 656,
- 655,
- 654,
- 653,
- 652,
- 651,
- 650,
- 649,
- 648,
- 647,
- 646,
- 645,
- 644,
- 643,
- 642,
- 641,
- 640,
- 639,
- 638,
- 637,
- 636,
- 635,
- 634,
- 633,
- 632,
- 631,
- 630,
- 629,
- 628,
- 627,
- 626,
- 625,
- 624,
- 623,
- 622,
- 621,
- 620,
- 619,
- 618,
- 617,
- 616,
- 615,
- 614,
- 613,
- 612,
- 611,
- 610,
- 609,
- 608,
- 607,
- 606,
- 605,
- 604,
- 603,
- 602,
- 601,
- 600,
- 599,
- 598,
- 597,
- 596,
- 595,
- 594,
- 593,
- 592,
- 591,
- 590,
- 589,
- 588,
- 587,
- 586,
- 585,
- 584,
- 583,
- 582,
- 581,
- 580,
- 579,
- 578,
- 577,
- 576,
- 575,
- 574,
- 573,
- 572,
- 571,
- 570,
- 569,
- 568,
- 567,
- 566,
- 565,
- 564,
- 563,
- 562,
- 561,
- 560,
- 559,
- 558,
- 557,
- 556,
- 555,
- 554,
- 553,
- 552,
- 551,
- 550,
- 549,
- 548,
- 547,
- 546,
- 545,
- 544,
- 543,
- 542,
- 541,
- 540,
- 539,
- 538,
- 537,
- 536,
- 535,
- 534,
- 533,
- 532,
- 531,
- 530,
- 529,
- 528,
- 527,
- 526,
- 525,
- 524,
- 523,
- 522,
- 521,
- 520,
- 519,
- 518,
- 517,
- 516,
- 515,
- 514,
- 513,
- 512,
- 511,
- 510,
- 509,
- 508,
- 507,
- 506,
- 505,
- 504,
- 503,
- 502,
- 501,
- 500,
- 499,
- 498,
- 497,
- 496,
- 495,
- 494,
- 493,
- 492,
- 491,
- 490,
- 489,
- 488,
- 487,
- 486,
- 485,
- 484,
- 483,
- 482,
- 481,
- 480,
- 479,
- 478,
- 477,
- 476,
- 475,
- 474,
- 473,
- 472,
- 471,
- 470,
- 469,
- 468,
- 467,
- 466,
- 465,
- 464,
- 463,
- 462,
- 461,
- 460,
- 459,
- 458,
- 457,
- 456,
- 455,
- 454,
- 453,
- 452,
- 451,
- 450,
- 449,
- 448,
- 447,
- 446,
- 445,
- 444,
- 443,
- 442,
- 441,
- 440,
- 439,
- 438,
- 437,
- 436,
- 435,
- 434,
- 433,
- 432,
- 431,
- 430,
- 429,
- 428,
- 427,
- 426,
- 425,
- 424,
- 423,
- 422,
- 421,
- 420,
- 419,
- 418,
- 417,
- 416,
- 415,
- 414,
- 413,
- 412,
- 411,
- 410,
- 409,
- 408,
- 407,
- 406,
- 405,
- 404,
- 403,
- 402,
- 401,
- 400,
- 399,
- 398,
- 397,
- 396,
- 395,
- 394,
- 393,
- 392,
- 391,
- 390,
- 389,
- 388,
- 387,
- 386,
- 385,
- 384,
- 383,
- 382,
- 381,
- 380,
- 379,
- 378,
- 377,
- 376,
- 375,
- 374,
- 373,
- 372,
- 371,
- 370,
- 369,
- 368,
- 367,
- 366,
- 365,
- 364,
- 363,
- 362,
- 361,
- 360,
- 359,
- 358,
- 357,
- 356,
- 355,
- 354,
- 353,
- 352,
- 351,
- 350,
- 349,
- 348,
- 347,
- 346,
- 345,
- 344,
- 343,
- 342,
- 341,
- 340,
- 339,
- 338,
- 337,
- 336,
- 335,
- 334,
- 333,
- 332,
- 331,
- 330,
- 329,
- 328,
- 327,
- 326,
- 325,
- 324,
- 323,
- 322,
- 321,
- 320,
- 319,
- 318,
- 317,
- 316,
- 315,
- 314,
- 313,
- 312,
- 311,
- 310,
- 309,
- 308,
- 307,
- 306,
- 305,
- 304,
- 303,
- 302,
- 301,
- 300,
- 299,
- 298,
- 297,
- 296,
- 295,
- 294,
- 293,
- 292,
- 291,
- 290,
- 289,
- 288,
- 287,
- 286,
- 285,
- 284,
- 283,
- 282,
- 281,
- 280,
- 279,
- 278,
- 277,
- 276,
- 275,
- 274,
- 273,
- 272,
- 271,
- 270,
- 269,
- 268,
- 267,
- 266,
- 265,
- 264,
- 263,
- 262,
- 261,
- 260,
- 259,
- 258,
- 257,
- 256,
- 255,
- 254,
- 253,
- 252,
- 251,
- 250,
- 249,
- 248,
- 247,
- 246,
- 245,
- 244,
- 243,
- 242,
- 241,
- 240,
- 239,
- 238,
- 237,
- 236,
- 235,
- 234,
- 233,
- 232,
- 231,
- 230,
- 229,
- 228,
- 227,
- 226,
- 225,
- 224,
- 223,
- 222,
- 221,
- 220,
- 219,
- 218,
- 217,
- 216,
- 215,
- 214,
- 213,
- 212,
- 211,
- 210,
- 209,
- 208,
- 207,
- 206,
- 205,
- 204,
- 203,
- 202,
- 201,
- 200,
- 199,
- 198,
- 197,
- 196,
- 195,
- 194,
- 193,
- 192,
- 191,
- 190,
- 189,
- 188,
- 187,
- 186,
- 185,
- 184,
- 183,
- 182,
- 181,
- 180,
- 179,
- 178,
- 177,
- 176,
- 175,
- 174,
- 173,
- 172,
- 171,
- 170,
- 169,
- 168,
- 167,
- 166,
- 165,
- 164,
- 163,
- 162,
- 161,
- 160,
- 159,
- 158,
- 157,
- 156,
- 155,
- 154,
- 153,
- 152,
- 151,
- 150,
- 149,
- 148,
- 147,
- 146,
- 145,
- 144,
- 143,
- 142,
- 141,
- 140,
- 139,
- 138,
- 137,
- 136,
- 135,
- 134,
- 133,
- 132,
- 131,
- 130,
- 129,
- 128,
- 127,
- 126,
- 125,
- 124,
- 123,
- 122,
- 121,
- 120,
- 119,
- 118,
- 117,
- 116,
- 115,
- 114,
- 113,
- 112,
- 111,
- 110,
- 109,
- 108,
- 107,
- 106,
- 105,
- 104,
- 103,
- 102,
- 101,
- 100,
- 99,
- 98,
- 97,
- 96,
- 95,
- 94,
- 93,
- 92,
- 91,
- 90,
- 89,
- 88,
- // 87,
- 86,
- 85,
- 84,
- 83,
- 82,
- 81,
- 80,
- 79,
- 78,
- 77,
- 76,
- 75,
- 74,
- 73,
- 72,
- 71,
- 70,
- 69,
- 68,
- 67,
- 66,
- 65,
- 64,
- 63,
- 62,
- 61,
- 60,
- 59,
- 58,
- 57,
- 56,
- 55,
- 54,
- 53,
- 52,
- 51,
- 50,
- 49,
- 48,
- 47,
- 46,
- 45,
- 44,
- 43,
- 42,
- 41,
- 40,
- 39,
- 38,
- 37,
- 36,
- 35,
- 34,
- 33,
- 32,
- 31,
- 30,
- 29,
- 28,
- 27,
- 26,
- 25,
- 24,
- 23,
- 22,
- 21,
- 20,
- 19,
- 18,
- 17,
- 16,
- 15,
- 14,
- 13,
- 12,
- 11,
- 10,
- 9,
- 8,
- 7,
- 6,
- 5,
- 4,
- 3,
- 2,
- 1,
- 0,
+static const int vim_versions[] = { 801, 802, 900, 901 };
+
+static const int num_patches[] = { 2331, 2990, 1252, 1226 };
+
+static const int *included_patchsets[] = {
+ (const int[]) { // 801
+ 2424, 2423, 2422, 2421, 2420, 2419,
+ // 2418
+ 2417, 2416,
+ // 2415
+ 2414, 2413, 2412, 2411, 2410, 2409, 2408, 2407, 2406, 2405, 2404, 2403, 2402, 2401, 2400,
+ // 2399
+ 2398, 2397, 2396, 2395, 2394, 2393, 2392, 2391, 2390, 2389, 2388, 2387,
+ // 2386
+ 2385, 2384, 2383, 2382,
+ // 2381
+ 2380, 2379, 2378, 2377, 2376, 2375, 2374, 2373, 2372, 2371, 2370, 2369, 2368, 2367, 2366, 2365,
+ 2364, 2363,
+ // 2362
+ 2361, 2360, 2359, 2358, 2357, 2356, 2355, 2354, 2353, 2352,
+ // 2351
+ 2350, 2349, 2348, 2347, 2346, 2345, 2344, 2343, 2342, 2341, 2340, 2339, 2338, 2337, 2336, 2335,
+ 2334, 2333, 2332, 2331, 2330, 2329, 2328, 2327, 2326, 2325,
+ // 2324
+ 2323, 2322, 2321, 2320, 2319, 2318, 2317, 2316, 2315, 2314, 2313, 2312, 2311, 2310, 2309, 2308,
+ 2307, 2306, 2305, 2304, 2303, 2302, 2301, 2300, 2299, 2298, 2297, 2296, 2295,
+ // 2294
+ 2293,
+ // 2292
+ 2291, 2290, 2289, 2288, 2287, 2286, 2285, 2284, 2283, 2282, 2281, 2280,
+ // 2279
+ 2278, 2277, 2276, 2275, 2274,
+ // 2273
+ 2272, 2271, 2270, 2269, 2268, 2267, 2266, 2265, 2264, 2263, 2262, 2261, 2260, 2259, 2258, 2257,
+ 2256, 2255, 2254, 2253, 2252,
+ // 2250-2251
+ 2249, 2248, 2247, 2246, 2245, 2244, 2243, 2242,
+ // 2241
+ 2240, 2239, 2238, 2237, 2236, 2235, 2234, 2233,
+ // 2232
+ 2231,
+ // 2230
+ 2229, 2228, 2227, 2226, 2225, 2224, 2223, 2222, 2221, 2220,
+ // 2219
+ 2218, 2217, 2216, 2215, 2214, 2213, 2212, 2211, 2210, 2209,
+ // 2208
+ 2207, 2206, 2205, 2204, 2203, 2202, 2201, 2200, 2199, 2198, 2197, 2196,
+ // 2195
+ 2194,
+ // 2192-2193
+ 2191, 2190,
+ // 2189
+ 2188, 2187, 2186, 2185, 2184, 2183, 2182,
+ // 2181
+ 2180, 2179, 2178, 2177,
+ // 2176
+ 2175, 2174, 2173, 2172, 2171, 2170, 2169, 2168, 2167, 2166, 2165, 2164, 2163, 2162, 2161, 2160,
+ 2159,
+ // 2158
+ 2157,
+ // 2155-2156
+ 2154,
+ // 2153
+ 2152, 2151, 2150, 2149, 2148, 2147, 2146, 2145, 2144, 2143,
+ // 2142
+ 2141, 2140,
+ // 2139
+ 2138, 2137, 2136, 2135, 2134, 2133, 2132, 2131, 2130, 2129, 2128, 2127, 2126, 2125, 2124, 2123,
+ 2122,
+ // 2121
+ 2120, 2119, 2118, 2117, 2116, 2115, 2114, 2113, 2112, 2111, 2110, 2109, 2108, 2107, 2106, 2105,
+ 2104, 2103, 2102, 2101, 2100, 2099, 2098, 2097, 2096, 2095, 2094,
+ // 2092-2093
+ 2091, 2090, 2089, 2088, 2087, 2086, 2085, 2084, 2083, 2082, 2081, 2080, 2079, 2078, 2077,
+ // 2076
+ 2075, 2074, 2073, 2072, 2071, 2070, 2069, 2068, 2067, 2066, 2065, 2064, 2063, 2062, 2061, 2060,
+ 2059, 2058, 2057, 2056, 2055, 2054, 2053, 2052, 2051, 2050, 2049, 2048, 2047, 2046, 2045, 2044,
+ 2043, 2042, 2041,
+ // 2039-2040
+ 2038, 2037, 2036, 2035, 2034, 2033, 2032, 2031, 2030, 2029, 2028, 2027, 2026, 2025, 2024, 2023,
+ // 2022
+ 2021, 2020, 2019, 2018, 2017, 2016, 2015, 2014, 2013, 2012, 2011, 2010, 2009, 2008, 2007, 2006,
+ 2005, 2004, 2003, 2002, 2001, 2000,
+ // 1999
+ 1998, 1997, 1996, 1995, 1994, 1993, 1992, 1991, 1990, 1989, 1988, 1987, 1986,
+ // 1985
+ 1984, 1983, 1982, 1981, 1980, 1979, 1978, 1977, 1976, 1975, 1974, 1973, 1972, 1971, 1970,
+ // 1969
+ 1968, 1967, 1966, 1965, 1964, 1963, 1962, 1961, 1960, 1959, 1958, 1957, 1956, 1955, 1954, 1953,
+ 1952, 1951, 1950, 1949, 1948, 1947, 1946, 1945,
+ // 1944
+ 1943, 1942, 1941, 1940, 1939, 1938, 1937, 1936, 1935, 1934, 1933, 1932, 1931, 1930, 1929,
+ // 1928
+ 1927, 1926, 1925, 1924, 1923, 1922, 1921, 1920, 1919, 1918, 1917, 1916, 1915, 1914, 1913, 1912,
+ 1911, 1910, 1909,
+ // 1908
+ 1907,
+ // 1904-1906
+ 1903, 1902, 1901, 1900, 1899, 1898, 1897, 1896, 1895, 1894, 1893,
+ // 1892
+ 1891, 1890, 1889, 1888, 1887, 1886, 1885,
+ // 1884
+ 1883,
+ // 1882
+ 1881,
+ // 1880
+ 1879, 1878, 1877, 1876, 1875, 1874, 1873, 1872, 1871, 1870, 1869, 1868, 1867, 1866, 1865, 1864,
+ 1863, 1862, 1861, 1860, 1859, 1858, 1857, 1856, 1855, 1854, 1853, 1852,
+ // 1851
+ 1850, 1849, 1848, 1847, 1846, 1845, 1844, 1843, 1842, 1841, 1840, 1839, 1838, 1837, 1836, 1835,
+ 1834, 1833, 1832, 1831, 1830, 1829, 1828, 1827, 1826, 1825, 1824, 1823, 1822, 1821, 1820,
+ // 1819
+ 1818, 1817, 1816, 1815, 1814,
+ // 1813
+ 1812, 1811, 1810, 1809, 1808, 1807, 1806, 1805, 1804, 1803, 1802, 1801, 1800,
+ // 1799
+ 1798, 1797, 1796, 1795, 1794, 1793, 1792, 1791, 1790, 1789, 1788,
+ // 1787
+ 1786, 1785,
+ // 1784
+ 1783, 1782, 1781, 1780, 1779, 1778, 1777, 1776, 1775, 1774, 1773, 1772, 1771,
+ // 1770
+ 1769, 1768, 1767, 1766, 1765, 1764, 1763, 1762, 1761, 1760, 1759, 1758, 1757, 1756, 1755, 1754,
+ 1753, 1752, 1751, 1750, 1749, 1748, 1747, 1746, 1745, 1744, 1743, 1742, 1741, 1740, 1739, 1738,
+ 1737, 1736, 1735, 1734, 1733, 1732, 1731, 1730, 1729, 1728, 1727, 1726, 1725, 1724, 1723, 1722,
+ 1721, 1720, 1719,
+ // 1718
+ 1717, 1716, 1715,
+ // 1713-1714
+ 1712, 1711, 1710, 1709, 1708, 1707, 1706, 1705, 1704, 1703, 1702, 1701, 1700, 1699, 1698, 1697,
+ 1696, 1695, 1694, 1693, 1692, 1691,
+ // 1690
+ 1689, 1688, 1687, 1686, 1685, 1684, 1683, 1682, 1681, 1680, 1679, 1678, 1677, 1676, 1675, 1674,
+ // 1673
+ 1672, 1671, 1670, 1669, 1668, 1667, 1666, 1665, 1664, 1663, 1662, 1661, 1660,
+ // 1659
+ 1658, 1657, 1656, 1655, 1654, 1653, 1652, 1651, 1650, 1649, 1648, 1647, 1646, 1645, 1644, 1643,
+ 1642, 1641, 1640, 1639, 1638, 1637, 1636, 1635, 1634, 1633, 1632, 1631, 1630, 1629,
+ // 1628
+ 1627,
+ // 1626
+ 1625, 1624, 1623, 1622, 1621, 1620, 1619, 1618, 1617, 1616, 1615, 1614, 1613,
+ // 1612
+ 1611, 1610,
+ // 1609
+ 1608,
+ // 1607
+ 1606, 1605, 1604, 1603, 1602, 1601, 1600, 1599, 1598,
+ // 1597
+ 1596, 1595, 1594, 1593, 1592, 1591, 1590,
+ // 1589
+ 1588, 1587, 1586, 1585, 1584, 1583, 1582, 1581,
+ // 1580
+ 1579, 1578,
+ // 1577
+ 1576, 1575,
+ // 1574
+ 1573, 1572, 1571, 1570, 1569, 1568, 1567, 1566, 1565, 1564, 1563, 1562,
+ // 1561
+ 1560,
+ // 1558-1559
+ 1557, 1556, 1555, 1554,
+ // 1553
+ 1552, 1551, 1550, 1549,
+ // 1548
+ 1547, 1546, 1545, 1544, 1543, 1542, 1541, 1540, 1539,
+ // 1537-1538
+ 1536, 1535, 1534, 1533, 1532, 1531, 1530, 1529, 1528, 1527, 1526,
+ // 1525
+ 1524,
+ // 1523
+ 1522, 1521, 1520, 1519, 1518, 1517, 1516, 1515, 1514, 1513, 1512, 1511, 1510, 1509, 1508, 1507,
+ 1506, 1505, 1504, 1503, 1502, 1501, 1500, 1499, 1498, 1497, 1496, 1495, 1494, 1493, 1492, 1491,
+ 1490, 1489, 1488, 1487, 1486, 1485, 1484, 1483, 1482, 1481, 1480, 1479, 1478, 1477, 1476, 1475,
+ 1474,
+ // 1473
+ 1472, 1471, 1470, 1469, 1468, 1467, 1466, 1465, 1464, 1463, 1462, 1461, 1460, 1459, 1458, 1457,
+ 1456, 1455, 1454, 1453, 1452, 1451, 1450, 1449, 1448, 1447, 1446, 1445, 1444, 1443, 1442, 1441,
+ 1440, 1439, 1438, 1437, 1436, 1435, 1434, 1433, 1432, 1431, 1430, 1429, 1428, 1427, 1426, 1425,
+ 1424, 1423, 1422, 1421, 1420, 1419, 1418,
+ // 1417
+ 1416, 1415, 1414, 1413, 1412, 1411, 1410, 1409, 1408, 1407, 1406, 1405, 1404, 1403, 1402, 1401,
+ 1400, 1399, 1398, 1397, 1396, 1395, 1394, 1393, 1392, 1391, 1390, 1389, 1388, 1387, 1386, 1385,
+ 1384, 1383, 1382, 1381, 1380, 1379, 1378, 1377, 1376, 1375, 1374, 1373, 1372, 1371, 1370, 1369,
+ 1368, 1367, 1366, 1365, 1364, 1363, 1362, 1361, 1360, 1359, 1358, 1357, 1356, 1355, 1354, 1353,
+ 1352, 1351, 1350, 1349, 1348, 1347, 1346, 1345, 1344, 1343, 1342, 1341, 1340, 1339, 1338, 1337,
+ 1336, 1335, 1334, 1333, 1332, 1331, 1330, 1329, 1328, 1327, 1326, 1325, 1324, 1323, 1322, 1321,
+ 1320, 1319, 1318, 1317, 1316, 1315, 1314, 1313, 1312, 1311, 1310, 1309, 1308, 1307, 1306, 1305,
+ 1304, 1303, 1302, 1301, 1300, 1299, 1298, 1297, 1296, 1295, 1294, 1293, 1292, 1291, 1290, 1289,
+ 1288, 1287, 1286, 1285, 1284, 1283, 1282, 1281, 1280, 1279, 1278, 1277, 1276, 1275, 1274, 1273,
+ 1272, 1271, 1270, 1269, 1268, 1267, 1266, 1265, 1264, 1263, 1262, 1261, 1260, 1259, 1258, 1257,
+ 1256, 1255, 1254, 1253, 1252, 1251, 1250, 1249, 1248, 1247, 1246, 1245, 1244, 1243, 1242, 1241,
+ 1240, 1239, 1238, 1237, 1236, 1235, 1234, 1233, 1232, 1231, 1230, 1229, 1228, 1227, 1226, 1225,
+ // 1224
+ 1223, 1222, 1221, 1220, 1219,
+ // 1218
+ 1217, 1216, 1215, 1214, 1213, 1212, 1211, 1210, 1209, 1208, 1207, 1206, 1205, 1204, 1203, 1202,
+ 1201, 1200, 1199, 1198, 1197, 1196, 1195, 1194, 1193, 1192, 1191, 1190, 1189, 1188, 1187, 1186,
+ 1185, 1184, 1183, 1182, 1181, 1180, 1179, 1178, 1177, 1176, 1175, 1174, 1173, 1172, 1171, 1170,
+ 1169, 1168, 1167, 1166, 1165, 1164, 1163, 1162, 1161, 1160, 1159, 1158, 1157, 1156, 1155, 1154,
+ 1153, 1152, 1151, 1150, 1149, 1148, 1147, 1146, 1145, 1144, 1143, 1142, 1141, 1140, 1139, 1138,
+ 1137, 1136, 1135, 1134, 1133, 1132, 1131, 1130, 1129, 1128, 1127, 1126, 1125, 1124, 1123, 1122,
+ 1121, 1120, 1119, 1118, 1117, 1116, 1115, 1114, 1113, 1112, 1111, 1110, 1109, 1108, 1107, 1106,
+ 1105, 1104, 1103, 1102, 1101, 1100, 1099, 1098, 1097, 1096, 1095, 1094, 1093, 1092, 1091, 1090,
+ 1089, 1088, 1087, 1086, 1085, 1084, 1083, 1082, 1081, 1080, 1079, 1078, 1077, 1076, 1075, 1074,
+ 1073, 1072, 1071, 1070, 1069, 1068, 1067, 1066, 1065, 1064, 1063, 1062, 1061, 1060, 1059, 1058,
+ 1057, 1056, 1055, 1054, 1053, 1052, 1051, 1050, 1049, 1048, 1047, 1046, 1045,
+ // 1044
+ 1043, 1042, 1041, 1040, 1039, 1038, 1037, 1036, 1035, 1034, 1033, 1032, 1031, 1030, 1029, 1028,
+ 1027, 1026, 1025, 1024, 1023, 1022, 1021, 1020, 1019, 1018, 1017, 1016, 1015, 1014, 1013, 1012,
+ 1011, 1010, 1009, 1008, 1007, 1006, 1005, 1004, 1003, 1002, 1001, 1000, 999, 998, 997, 996,
+ 995, 994, 993, 992, 991, 990, 989, 988, 987, 986, 985, 984, 983, 982, 981, 980,
+ 979, 978, 977, 976, 975, 974, 973, 972, 971, 970, 969, 968, 967, 966, 965, 964,
+ 963, 962, 961, 960, 959, 958, 957, 956, 955, 954,
+ // 953
+ 952, 951, 950, 949, 948, 947, 946, 945, 944, 943, 942, 941, 940, 939, 938, 937,
+ 936, 935, 934, 933, 932, 931, 930, 929, 928, 927, 926, 925, 924, 923, 922, 921,
+ 920, 919, 918, 917, 916, 915, 914, 913, 912, 911, 910, 909, 908, 907, 906, 905,
+ 904, 903, 902, 901, 900, 899, 898, 897, 896, 895,
+ // 894
+ 893, 892, 891, 890, 889, 888, 887, 886, 885, 884, 883, 882, 881, 880, 879, 878,
+ 877,
+ // 876
+ 875, 874, 873, 872, 871, 870, 869, 868, 867, 866, 865, 864,
+ // 863
+ 862, 861, 860, 859, 858, 857, 856, 855, 854, 853, 852, 851, 850, 849, 848, 847,
+ 846, 845, 844, 843, 842, 841, 840, 839, 838, 837, 836, 835, 834, 833, 832, 831,
+ 830, 829, 828, 827, 826, 825, 824, 823, 822, 821, 820, 819, 818, 817, 816, 815,
+ 814, 813, 812, 811, 810, 809, 808, 807, 806, 805, 804, 803, 802, 801, 800, 799,
+ 798, 797, 796, 795, 794, 793, 792, 791, 790, 789, 788, 787, 786, 785, 784, 783,
+ 782, 781, 780, 779, 778, 777, 776, 775, 774, 773, 772, 771, 770, 769,
+ // 768
+ 767, 766, 765, 764, 763, 762, 761, 760, 759, 758, 757, 756, 755, 754, 753, 752,
+ 751, 750, 749, 748, 747, 746, 745, 744, 743, 742, 741, 740, 739, 738, 737, 736,
+ 735, 734, 733, 732, 731, 730, 729, 728, 727, 726, 725, 724, 723, 722, 721, 720,
+ 719, 718, 717, 716, 715, 714, 713, 712, 711, 710, 709, 708, 707, 706, 705, 704,
+ 703, 702, 701, 700, 699, 698, 697, 696, 695, 694, 693, 692, 691, 690, 689, 688,
+ 687, 686, 685, 684, 683, 682, 681, 680, 679, 678, 677, 676, 675, 674, 673, 672,
+ 671, 670, 669, 668, 667, 666, 665, 664, 663, 662, 661, 660, 659, 658, 657, 656,
+ 655, 654, 653, 652, 651, 650, 649, 648, 647, 646, 645, 644, 643, 642, 641, 640,
+ 639, 638, 637, 636, 635, 634, 633, 632, 631, 630, 629, 628, 627, 626, 625, 624,
+ 623, 622, 621, 620, 619, 618, 617, 616, 615, 614, 613, 612, 611, 610, 609, 608,
+ 607, 606, 605, 604, 603, 602, 601, 600, 599, 598, 597, 596, 595, 594, 593, 592,
+ 591, 590, 589, 588, 587, 586, 585, 584, 583, 582, 581, 580, 579, 578, 577, 576,
+ 575, 574, 573, 572, 571, 570, 569, 568, 567, 566, 565, 564, 563, 562, 561, 560,
+ 559, 558, 557, 556, 555, 554, 553, 552, 551, 550, 549, 548, 547, 546, 545, 544,
+ 543, 542, 541, 540, 539, 538, 537, 536, 535, 534, 533, 532, 531, 530, 529, 528,
+ 527, 526, 525, 524, 523, 522, 521, 520, 519, 518, 517, 516, 515, 514, 513, 512,
+ 511, 510, 509, 508, 507, 506, 505, 504, 503, 502, 501, 500, 499, 498, 497, 496,
+ 495, 494, 493, 492, 491, 490, 489, 488, 487, 486, 485, 484, 483, 482, 481, 480,
+ 479, 478, 477, 476, 475, 474, 473, 472, 471, 470, 469, 468, 467, 466, 465, 464,
+ 463, 462, 461, 460, 459, 458, 457, 456, 455, 454, 453, 452, 451, 450, 449, 448,
+ 447, 446, 445, 444, 443, 442, 441, 440, 439, 438, 437, 436, 435, 434, 433, 432,
+ 431, 430, 429, 428, 427, 426, 425, 424, 423, 422, 421, 420, 419, 418, 417, 416,
+ 415, 414, 413, 412, 411, 410, 409, 408, 407, 406, 405, 404, 403, 402, 401, 400,
+ 399, 398, 397, 396, 395, 394, 393, 392, 391, 390, 389, 388, 387, 386, 385, 384,
+ 383, 382, 381, 380, 379, 378, 377, 376, 375, 374, 373, 372, 371, 370, 369, 368,
+ 367, 366, 365, 364, 363, 362, 361, 360, 359, 358, 357, 356, 355, 354, 353, 352,
+ 351, 350, 349, 348, 347, 346, 345, 344, 343, 342, 341, 340, 339, 338, 337, 336,
+ 335, 334, 333, 332, 331, 330, 329, 328, 327, 326, 325, 324, 323, 322, 321, 320,
+ 319, 318, 317, 316, 315, 314, 313, 312, 311, 310, 309, 308, 307, 306, 305, 304,
+ 303, 302, 301, 300, 299, 298, 297, 296, 295, 294, 293, 292, 291, 290, 289, 288,
+ 287, 286, 285, 284, 283, 282, 281, 280, 279, 278, 277, 276, 275, 274, 273, 272,
+ 271, 270, 269, 268, 267, 266, 265, 264, 263, 262, 261, 260, 259, 258, 257, 256,
+ 255, 254, 253, 252, 251, 250, 249, 248, 247, 246, 245, 244, 243, 242, 241, 240,
+ 239, 238, 237, 236, 235, 234, 233, 232, 231, 230, 229, 228, 227, 226, 225, 224,
+ 223, 222, 221, 220, 219, 218, 217, 216, 215, 214, 213, 212, 211, 210, 209, 208,
+ 207, 206, 205, 204, 203, 202, 201, 200, 199, 198, 197, 196, 195, 194, 193, 192,
+ 191, 190, 189, 188, 187, 186, 185, 184, 183, 182, 181, 180, 179, 178, 177, 176,
+ 175, 174, 173, 172, 171, 170, 169, 168, 167, 166, 165, 164, 163, 162, 161, 160,
+ 159, 158, 157, 156, 155, 154, 153, 152, 151, 150, 149, 148, 147, 146, 145, 144,
+ 143, 142, 141, 140, 139, 138, 137, 136, 135, 134, 133, 132, 131, 130, 129, 128,
+ 127, 126, 125, 124, 123, 122, 121, 120, 119, 118, 117, 116, 115, 114, 113, 112,
+ 111, 110, 109, 108, 107, 106, 105, 104, 103, 102, 101, 100, 99, 98, 97, 96,
+ 95, 94, 93, 92, 91, 90, 89, 88,
+ // 87
+ 86, 85, 84, 83, 82, 81, 80, 79, 78, 77, 76, 75, 74, 73, 72, 71,
+ 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55,
+ 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40, 39,
+ 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23,
+ 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7,
+ 6, 5, 4, 3, 2, 1, 0,
+ },
+ (const int[]) { // 802
+ 5171, 5170,
+ // 5169
+ 5168, 5167, 5166,
+ // 5165
+ 5164, 5163, 5162,
+ // 5160-5161
+ 5159, 5158, 5157,
+ // 5156
+ 5155, 5154, 5153, 5152, 5151, 5150, 5149, 5148,
+ // 5147
+ 5146, 5145,
+ // 5143-5144
+ 5142,
+ // 5139-5141
+ 5138, 5137,
+ // 5134-5136
+ 5133, 5132,
+ // 5131
+ 5130,
+ // 5127-5129
+ 5126, 5125,
+ // 5124
+ 5123, 5122, 5121, 5120, 5119,
+ // 5118
+ 5117, 5116,
+ // 5111-5115
+ 5110, 5109, 5108, 5107, 5106, 5105, 5104, 5103, 5102, 5101,
+ // 5099-5100
+ 5098, 5097,
+ // 5091-5096
+ 5090,
+ // 5089
+ 5088, 5087, 5086, 5085,
+ // 5084
+ 5083, 5082, 5081, 5080, 5079, 5078, 5077, 5076, 5075, 5074, 5073, 5072, 5071, 5070, 5069, 5068,
+ 5067, 5066,
+ // 5065
+ 5064, 5063,
+ // 5059-5062
+ 5058,
+ // 5055-5057
+ 5054,
+ // 5053
+ 5052,
+ // 5051
+ 5050,
+ // 5048-5049
+ 5047, 5046,
+ // 5045
+ 5044, 5043,
+ // 5042
+ 5041,
+ // 5038-5040
+ 5037,
+ // 5036
+ 5035, 5034,
+ // 5032-5033
+ 5031,
+ // 5030
+ 5029,
+ // 5028
+ 5027,
+ // 5025-5026
+ 5024, 5023, 5022, 5021,
+ // 5020
+ 5019,
+ // 5018
+ 5017, 5016, 5015, 5014, 5013, 5012,
+ // 5011
+ 5010, 5009, 5008, 5007,
+ // 5006
+ 5005,
+ // 5003-5004
+ 5002, 5001,
+ // 5000
+ 4999,
+ // 4997-4998
+ 4996, 4995,
+ // 4994
+ 4993,
+ // 4992
+ 4991,
+ // 4988-4990
+ 4987, 4986, 4985, 4984,
+ // 4981-4983
+ 4980, 4979, 4978, 4977, 4976, 4975, 4974,
+ // 4970-4973
+ 4969, 4968,
+ // 4964-4967
+ 4963,
+ // 4962
+ 4961, 4960, 4959,
+ // 4957-4958
+ 4956,
+ // 4954-4955
+ 4953,
+ // 4952
+ 4951, 4950,
+ // 4949
+ 4948,
+ // 4945-4947
+ 4944, 4943,
+ // 4942
+ 4941,
+ // 4940
+ 4939, 4938,
+ // 4937
+ 4936, 4935, 4934,
+ // 4933
+ 4932,
+ // 4931
+ 4930, 4929, 4928,
+ // 4927
+ 4926, 4925, 4924, 4923, 4922, 4921, 4920, 4919, 4918, 4917, 4916,
+ // 4912-4915
+ 4911, 4910,
+ // 4909
+ 4908, 4907,
+ // 4904-4906
+ 4903,
+ // 4902
+ 4901, 4900, 4899, 4898,
+ // 4896-4897
+ 4895,
+ // 4893-4894
+ 4892,
+ // 4891
+ 4890, 4889,
+ // 4885-4888
+ 4884, 4883, 4882, 4881,
+ // 4879-4880
+ 4878,
+ // 4875-4877
+ 4874,
+ // 4869-4873
+ 4868, 4867, 4866, 4865,
+ // 4864
+ 4863,
+ // 4862
+ 4861, 4860, 4859, 4858, 4857, 4856, 4855,
+ // 4854
+ 4853,
+ // 4852
+ 4851, 4850, 4849, 4848,
+ // 4847
+ 4846, 4845, 4844, 4843, 4842, 4841, 4840, 4839, 4838, 4837,
+ // 4834-4836
+ 4833,
+ // 4832
+ 4831,
+ // 4830
+ 4829, 4828, 4827, 4826, 4825, 4824,
+ // 4821-4823
+ 4820, 4819, 4818, 4817, 4816, 4815,
+ // 4814
+ 4813, 4812, 4811, 4810, 4809, 4808, 4807, 4806, 4805,
+ // 4803-4804
+ 4802, 4801,
+ // 4798-4800
+ 4797, 4796, 4795, 4794, 4793, 4792, 4791, 4790,
+ // 4784-4789
+ 4783,
+ // 4782
+ 4781,
+ // 4780
+ 4779, 4778,
+ // 4777
+ 4776,
+ // 4774-4775
+ 4773, 4772, 4771, 4770, 4769, 4768, 4767, 4766, 4765, 4764,
+ // 4763
+ 4762,
+ // 4761
+ 4760, 4759,
+ // 4757-4758
+ 4756,
+ // 4755
+ 4754, 4753, 4752,
+ // 4751
+ 4750, 4749,
+ // 4748
+ 4747, 4746, 4745, 4744, 4743,
+ // 4742
+ 4741, 4740, 4739,
+ // 4738
+ 4737,
+ // 4736
+ 4735, 4734, 4733, 4732, 4731, 4730, 4729, 4728,
+ // 4727
+ 4726, 4725, 4724, 4723, 4722, 4721, 4720, 4719, 4718,
+ // 4717
+ 4716, 4715, 4714, 4713,
+ // 4712
+ 4711, 4710,
+ // 4709
+ 4708, 4707, 4706, 4705, 4704, 4703, 4702, 4701, 4700,
+ // 4697-4699
+ 4696,
+ // 4694-4695
+ 4693, 4692, 4691,
+ // 4690
+ 4689, 4688, 4687,
+ // 4686
+ 4685,
+ // 4682-4684
+ 4681, 4680, 4679,
+ // 4678
+ 4677, 4676, 4675, 4674,
+ // 4673
+ 4672, 4671, 4670,
+ // 4669
+ 4668, 4667,
+ // 4665-4666
+ 4664,
+ // 4662-4663
+ 4661, 4660,
+ // 4659
+ 4658,
+ // 4656-4657
+ 4655, 4654,
+ // 4650-4653
+ 4649,
+ // 4648
+ 4647, 4646, 4645, 4644,
+ // 4642-4643
+ 4641, 4640, 4639, 4638,
+ // 4633-4637
+ 4632, 4631, 4630, 4629, 4628, 4627, 4626, 4625, 4624, 4623,
+ // 4622
+ 4621, 4620,
+ // 4619
+ 4618, 4617,
+ // 4615-4616
+ 4614, 4613,
+ // 4612
+ 4611,
+ // 4610
+ 4609, 4608, 4607,
+ // 4604-4606
+ 4603,
+ // 4601-4602
+ 4600, 4599, 4598,
+ // 4597
+ 4596,
+ // 4595
+ 4594, 4593, 4592, 4591,
+ // 4586-4590
+ 4585,
+ // 4580-4584
+ 4579,
+ // 4578
+ 4577,
+ // 4572-4576
+ 4571, 4570, 4569, 4568,
+ // 4567
+ 4566, 4565,
+ // 4564
+ 4563, 4562, 4561, 4560, 4559, 4558, 4557, 4556, 4555,
+ // 4554
+ 4553,
+ // 4551-4552
+ 4550, 4549,
+ // 4547-4548
+ 4546,
+ // 4545
+ 4544, 4543,
+ // 4542
+ 4541,
+ // 4539-4540
+ 4538,
+ // 4533-4537
+ 4532, 4531,
+ // 4525-4530
+ 4524, 4523,
+ // 4522
+ 4521, 4520,
+ // 4519
+ 4518, 4517, 4516,
+ // 4514-4515
+ 4513, 4512,
+ // 4505-4511
+ 4504,
+ // 4503
+ 4502, 4501,
+ // 4499-4500
+ 4498, 4497, 4496, 4495, 4494,
+ // 4493
+ 4492, 4491,
+ // 4489-4490
+ 4488,
+ // 4487
+ 4486, 4485,
+ // 4484
+ 4483, 4482, 4481,
+ // 4480
+ 4479, 4478, 4477, 4476, 4475,
+ // 4474
+ 4473,
+ // 4472
+ 4471, 4470, 4469, 4468, 4467, 4466, 4465, 4464, 4463, 4462, 4461,
+ // 4456-4460
+ 4455, 4454, 4453, 4452, 4451, 4450,
+ // 4446-4449
+ 4445, 4444, 4443, 4442,
+ // 4441
+ 4440,
+ // 4439
+ 4438, 4437, 4436,
+ // 4435
+ 4434, 4433, 4432,
+ // 4429-4431
+ 4428, 4427,
+ // 4425-4426
+ 4424, 4423, 4422,
+ // 4420-4421
+ 4419, 4418, 4417, 4416,
+ // 4415
+ 4414, 4413, 4412, 4411, 4410,
+ // 4408-4409
+ 4407, 4406, 4405,
+ // 4404
+ 4403, 4402, 4401, 4400, 4399, 4398, 4397,
+ // 4396
+ 4395, 4394, 4393, 4392, 4391,
+ // 4390
+ 4389, 4388, 4387, 4386, 4385,
+ // 4383-4384
+ 4382,
+ // 4380-4381
+ 4379, 4378, 4377, 4376,
+ // 4374-4375
+ 4373,
+ // 4370-4372
+ 4369, 4368,
+ // 4367
+ 4366,
+ // 4365
+ 4364, 4363, 4362, 4361,
+ // 4360
+ 4359,
+ // 4357-4358
+ 4356, 4355,
+ // 4354
+ 4353, 4352, 4351,
+ // 4350
+ 4349,
+ // 4347-4348
+ 4346, 4345,
+ // 4344
+ 4343, 4342, 4341,
+ // 4340
+ 4339, 4338, 4337, 4336, 4335, 4334,
+ // 4330-4333
+ 4329, 4328, 4327, 4326, 4325,
+ // 4321-4324
+ 4320,
+ // 4319
+ 4318,
+ // 4316-4317
+ 4315,
+ // 4308-4314
+ 4307, 4306, 4305,
+ // 4304
+ 4303,
+ // 4301-4302
+ 4300, 4299, 4298,
+ // 4295-4297
+ 4294,
+ // 4291-4293
+ 4290, 4289,
+ // 4285-4288
+ 4284, 4283,
+ // 4282
+ 4281,
+ // 4279-4280
+ 4278,
+ // 4276-4277
+ 4275, 4274, 4273, 4272, 4271,
+ // 4269-4270
+ 4268, 4267,
+ // 4263-4266
+ 4262, 4261,
+ // 4259-4260
+ 4258,
+ // 4254-4257
+ 4253,
+ // 4252
+ 4251,
+ // 4250
+ 4249, 4248, 4247,
+ // 4246
+ 4245, 4244,
+ // 4243
+ 4242, 4241,
+ // 4240
+ 4239, 4238, 4237, 4236, 4235, 4234, 4233,
+ // 4231-4232
+ 4230,
+ // 4229
+ 4228,
+ // 4223-4227
+ 4222, 4221, 4220, 4219, 4218, 4217,
+ // 4216
+ 4215, 4214, 4213, 4212, 4211, 4210,
+ // 4209
+ 4208, 4207, 4206,
+ // 4205
+ 4204, 4203,
+ // 4201-4202
+ 4200,
+ // 4199
+ 4198, 4197, 4196,
+ // 4195
+ 4194, 4193,
+ // 4192
+ 4191, 4190, 4189, 4188, 4187, 4186, 4185, 4184, 4183, 4182, 4181, 4180, 4179,
+ // 4177-4178
+ 4176,
+ // 4174-4175
+ 4173, 4172,
+ // 4170-4171
+ 4169, 4168,
+ // 4167
+ 4166, 4165,
+ // 4164
+ 4163,
+ // 4161-4162
+ 4160, 4159, 4158,
+ // 4157
+ 4156, 4155, 4154,
+ // 4153
+ 4152, 4151, 4150,
+ // 4145-4149
+ 4144, 4143, 4142,
+ // 4141
+ 4140, 4139,
+ // 4134-4138
+ 4133,
+ // 4131-4132
+ 4130,
+ // 4128-4129
+ 4127, 4126,
+ // 4122-4125
+ 4121, 4120, 4119,
+ // 4116-4118
+ 4115,
+ // 4113-4114
+ 4112,
+ // 4111
+ 4110,
+ // 4103-4109
+ 4102,
+ // 4101
+ 4100,
+ // 4099
+ 4098,
+ // 4097
+ 4096, 4095, 4094, 4093, 4092, 4091, 4090,
+ // 4082-4089
+ 4081,
+ // 4080
+ 4079, 4078, 4077,
+ // 4076
+ 4075, 4074, 4073,
+ // 4071-4072
+ 4070,
+ // 4066-4069
+ 4065, 4064,
+ // 4063
+ 4062, 4061, 4060,
+ // 4056-4059
+ 4055, 4054,
+ // 4053
+ 4052,
+ // 4049-4051
+ 4048,
+ // 4044-4047
+ 4043, 4042,
+ // 4039-4041
+ 4038, 4037, 4036,
+ // 4035
+ 4034, 4033, 4032,
+ // 4030-4031
+ 4029, 4028,
+ // 4027
+ 4026,
+ // 4024-4025
+ 4023,
+ // 4021-4022
+ 4020,
+ // 4019
+ 4018, 4017,
+ // 4016
+ 4015, 4014, 4013,
+ // 4008-4012
+ 4007,
+ // 4003-4006
+ 4002, 4001,
+ // 4000
+ 3999, 3998,
+ // 3996-3997
+ 3995,
+ // 3994
+ 3993, 3992,
+ // 3991
+ 3990, 3989, 3988,
+ // 3985-3987
+ 3984,
+ // 3983
+ 3982,
+ // 3981
+ 3980,
+ // 3979
+ 3978,
+ // 3974-3977
+ 3973,
+ // 3970-3972
+ 3969, 3968,
+ // 3967
+ 3966,
+ // 3965
+ 3964, 3963, 3962,
+ // 3959-3961
+ 3958,
+ // 3957
+ 3956,
+ // 3954-3955
+ 3953, 3952,
+ // 3951
+ 3950, 3949,
+ // 3948
+ 3947, 3946,
+ // 3945
+ 3944, 3943, 3942,
+ // 3941
+ 3940, 3939, 3938, 3937, 3936, 3935, 3934, 3933, 3932, 3931,
+ // 3927-3930
+ 3926, 3925,
+ // 3923-3924
+ 3922, 3921, 3920, 3919,
+ // 3918
+ 3917,
+ // 3916
+ 3915, 3914,
+ // 3913
+ 3912,
+ // 3910-3911
+ 3909, 3908,
+ // 3906-3907
+ 3905,
+ // 3904
+ 3903,
+ // 3901-3902
+ 3900,
+ // 3894-3899
+ 3893,
+ // 3892
+ 3891,
+ // 3890
+ 3889, 3888, 3887, 3886, 3885, 3884, 3883, 3882,
+ // 3881
+ 3880, 3879,
+ // 3877-3878
+ 3876, 3875, 3874, 3873,
+ // 3869-3872
+ 3868, 3867,
+ // 3864-3866
+ 3863, 3862,
+ // 3857-3861
+ 3856, 3855,
+ // 3854
+ 3853, 3852,
+ // 3851
+ 3850,
+ // 3849
+ 3848,
+ // 3847
+ 3846, 3845,
+ // 3844
+ 3843,
+ // 3840-3842
+ 3839, 3838,
+ // 3834-3837
+ 3833,
+ // 3830-3832
+ 3829,
+ // 3828
+ 3827,
+ // 3826
+ 3825, 3824, 3823, 3822, 3821, 3820,
+ // 3819
+ 3818,
+ // 3815-3817
+ 3814, 3813,
+ // 3806-3812
+ 3805, 3804,
+ // 3798-3803
+ 3797, 3796, 3795,
+ // 3793-3794
+ 3792, 3791,
+ // 3789-3790
+ 3788, 3787, 3786, 3785, 3784, 3783, 3782, 3781, 3780, 3779,
+ // 3778
+ 3777, 3776,
+ // 3775
+ 3774, 3773, 3772,
+ // 3771
+ 3770, 3769, 3768,
+ // 3763-3767
+ 3762,
+ // 3760-3761
+ 3759, 3758, 3757, 3756, 3755, 3754,
+ // 3753
+ 3752, 3751,
+ // 3749-3750
+ 3748, 3747,
+ // 3746
+ 3745, 3744, 3743, 3742, 3741, 3740, 3739,
+ // 3738
+ 3737, 3736, 3735,
+ // 3731-3734
+ 3730, 3729,
+ // 3727-3728
+ 3726, 3725, 3724,
+ // 3720-3723
+ 3719, 3718,
+ // 3717
+ 3716,
+ // 3714-3715
+ 3713, 3712,
+ // 3706-3711
+ 3705,
+ // 3704
+ 3703, 3702,
+ // 3700-3701
+ 3699, 3698,
+ // 3696-3697
+ 3695,
+ // 3694
+ 3693,
+ // 3692
+ 3691,
+ // 3690
+ 3689, 3688, 3687, 3686, 3685, 3684,
+ // 3682-3683
+ 3681,
+ // 3680
+ 3679, 3678, 3677, 3676, 3675, 3674, 3673, 3672, 3671,
+ // 3670
+ 3669,
+ // 3666-3668
+ 3665, 3664, 3663,
+ // 3662
+ 3661, 3660, 3659,
+ // 3655-3658
+ 3654, 3653,
+ // 3649-3652
+ 3648, 3647,
+ // 3645-3646
+ 3644, 3643,
+ // 3640-3642
+ 3639, 3638,
+ // 3637
+ 3636, 3635,
+ // 3633-3634
+ 3632,
+ // 3631
+ 3630, 3629,
+ // 3628
+ 3627, 3626, 3625,
+ // 3624
+ 3623, 3622, 3621,
+ // 3620
+ 3619, 3618, 3617, 3616, 3615,
+ // 3614
+ 3613, 3612, 3611, 3610, 3609,
+ // 3608
+ 3607,
+ // 3605-3606
+ 3604, 3603, 3602, 3601, 3600, 3599, 3598,
+ // 3596-3597
+ 3595,
+ // 3594
+ 3593,
+ // 3592
+ 3591,
+ // 3589-3590
+ 3588, 3587, 3586,
+ // 3585
+ 3584, 3583, 3582, 3581, 3580, 3579,
+ // 3578
+ 3577, 3576, 3575, 3574, 3573, 3572, 3571, 3570,
+ // 3569
+ 3568, 3567, 3566, 3565, 3564, 3563,
+ // 3562
+ 3561,
+ // 3557-3560
+ 3556, 3555,
+ // 3552-3554
+ 3551, 3550, 3549,
+ // 3548
+ 3547, 3546, 3545,
+ // 3544
+ 3543, 3542, 3541, 3540, 3539,
+ // 3538
+ 3537,
+ // 3535-3536
+ 3534,
+ // 3533
+ 3532, 3531, 3530,
+ // 3529
+ 3528, 3527, 3526, 3525,
+ // 3523-3524
+ 3522, 3521, 3520, 3519, 3518, 3517,
+ // 3516
+ 3515, 3514, 3513, 3512,
+ // 3511
+ 3510, 3509,
+ // 3508
+ 3507,
+ // 3506
+ 3505,
+ // 3502-3504
+ 3501, 3500, 3499, 3498, 3497,
+ // 3496
+ 3495, 3494, 3493, 3492, 3491, 3490, 3489, 3488, 3487, 3486,
+ // 3485
+ 3484, 3483, 3482,
+ // 3481
+ 3480,
+ // 3479
+ 3478, 3477, 3476, 3475,
+ // 3474
+ 3473, 3472, 3471, 3470, 3469, 3468, 3467, 3466, 3465, 3464, 3463, 3462, 3461, 3460, 3459, 3458,
+ // 3456-3457
+ 3455, 3454, 3453, 3452, 3451, 3450, 3449, 3448,
+ // 3447
+ 3446,
+ // 3441-3445
+ 3440, 3439, 3438, 3437,
+ // 3435-3436
+ 3434, 3433, 3432,
+ // 3431
+ 3430,
+ // 3429
+ 3428,
+ // 3427
+ 3426, 3425, 3424,
+ // 3422-3423
+ 3421,
+ // 3420
+ 3419,
+ // 3418
+ 3417, 3416, 3415, 3414,
+ // 3411-3413
+ 3410, 3409, 3408, 3407,
+ // 3404-3406
+ 3403, 3402,
+ // 3401
+ 3400, 3399, 3398, 3397,
+ // 3396
+ 3395, 3394, 3393, 3392, 3391, 3390, 3389, 3388, 3387, 3386, 3385, 3384,
+ // 3383
+ 3382, 3381,
+ // 3380
+ 3379, 3378,
+ // 3376-3377
+ 3375, 3374,
+ // 3373
+ 3372,
+ // 3370-3371
+ 3369, 3368,
+ // 3364-3367
+ 3363, 3362,
+ // 3361
+ 3360,
+ // 3359
+ 3358, 3357,
+ // 3356
+ 3355, 3354,
+ // 3349-3353
+ 3348,
+ // 3346-3347
+ 3345,
+ // 3339-3344
+ 3338, 3337, 3336,
+ // 3335
+ 3334, 3333, 3332, 3331, 3330, 3329, 3328, 3327,
+ // 3326
+ 3325,
+ // 3322-3324
+ 3321,
+ // 3320
+ 3319,
+ // 3315-3318
+ 3314, 3313,
+ // 3312
+ 3311, 3310,
+ // 3307-3309
+ 3306,
+ // 3303-3305
+ 3302,
+ // 3299-3301
+ 3298,
+ // 3296-3297
+ 3295, 3294, 3293, 3292, 3291,
+ // 3290
+ 3289,
+ // 3287-3288
+ 3286, 3285, 3284, 3283, 3282,
+ // 3281
+ 3280,
+ // 3266-3279
+ 3265, 3264,
+ // 3261-3263
+ 3260, 3259,
+ // 3257-3258
+ 3256, 3255, 3254, 3253, 3252,
+ // 3251
+ 3250,
+ // 3248-3249
+ 3247, 3246, 3245,
+ // 3244
+ 3243, 3242,
+ // 3237-3241
+ 3236,
+ // 3232-3235
+ 3231,
+ // 3228-3230
+ 3227, 3226, 3225,
+ // 3222-3224
+ 3221,
+ // 3220
+ 3219, 3218,
+ // 3217
+ 3216,
+ // 3215
+ 3214, 3213,
+ // 3209-3212
+ 3208,
+ // 3206-3207
+ 3205, 3204,
+ // 3203
+ 3202,
+ // 3199-3201
+ 3198,
+ // 3194-3197
+ 3193, 3192, 3191,
+ // 3185-3190
+ 3184,
+ // 3182-3183
+ 3181,
+ // 3175-3180
+ 3174,
+ // 3168-3173
+ 3167,
+ // 3165-3166
+ 3164, 3163,
+ // 3161-3162
+ 3160,
+ // 3159
+ 3158, 3157,
+ // 3156
+ 3155,
+ // 3154
+ 3153,
+ // 3142-3152
+ 3141, 3140, 3139, 3138,
+ // 3137
+ 3136, 3135, 3134,
+ // 3132-3133
+ 3131,
+ // 3126-3130
+ 3125,
+ // 3123-3124
+ 3122, 3121, 3120, 3119,
+ // 3117-3118
+ 3116, 3115, 3114,
+ // 3111-3113
+ 3110, 3109, 3108,
+ // 3104-3107
+ 3103, 3102, 3101,
+ // 3099-3100
+ 3098, 3097, 3096, 3095, 3094, 3093, 3092,
+ // 3090-3091
+ 3089, 3088, 3087, 3086, 3085,
+ // 3084
+ 3083, 3082, 3081, 3080,
+ // 3076-3079
+ 3075,
+ // 3074
+ 3073, 3072, 3071, 3070,
+ // 3067-3069
+ 3066, 3065, 3064, 3063, 3062, 3061,
+ // 3056-3060
+ 3055,
+ // 3051-3054
+ 3050, 3049,
+ // 3047-3048
+ 3046, 3045, 3044, 3043, 3042, 3041, 3040, 3039, 3038, 3037,
+ // 3035-3036
+ 3034, 3033, 3032,
+ // 3031
+ 3030,
+ // 3028-3029
+ 3027, 3026, 3025,
+ // 3021-3024
+ 3020, 3019, 3018, 3017, 3016,
+ // 3015
+ 3014, 3013, 3012, 3011,
+ // 3010
+ 3009, 3008, 3007, 3006,
+ // 3004-3005
+ 3003, 3002,
+ // 3001
+ 3000, 2999,
+ // 2997-2998
+ 2996, 2995, 2994, 2993,
+ // 2991-2992
+ 2990,
+ // 2988-2989
+ 2987, 2986, 2985,
+ // 2982-2984
+ 2981,
+ // 2980
+ 2979, 2978, 2977, 2976,
+ // 2975
+ 2974, 2973,
+ // 2972
+ 2971,
+ // 2970
+ 2969,
+ // 2967-2968
+ 2966,
+ // 2961-2965
+ 2960,
+ // 2958-2959
+ 2957,
+ // 2955-2956
+ 2954,
+ // 2953
+ 2952,
+ // 2950-2951
+ 2949, 2948, 2947,
+ // 2946
+ 2945,
+ // 2941-2944
+ 2940, 2939, 2938, 2937,
+ // 2936
+ 2935, 2934, 2933,
+ // 2930-2932
+ 2929,
+ // 2928
+ 2927,
+ // 2925-2926
+ 2924, 2923, 2922, 2921, 2920, 2919, 2918, 2917, 2916,
+ // 2915
+ 2914, 2913, 2912, 2911, 2910, 2909, 2908, 2907, 2906, 2905, 2904, 2903, 2902, 2901, 2900, 2899,
+ 2898,
+ // 2897
+ 2896,
+ // 2892-2895
+ 2891, 2890, 2889,
+ // 2888
+ 2887, 2886, 2885, 2884, 2883,
+ // 2881-2882
+ 2880, 2879,
+ // 2878
+ 2877, 2876, 2875,
+ // 2874
+ 2873,
+ // 2872
+ 2871, 2870, 2869,
+ // 2866-2868
+ 2865,
+ // 2860-2864
+ 2859, 2858, 2857, 2856,
+ // 2855
+ 2854,
+ // 2853
+ 2852,
+ // 2851
+ 2850, 2849, 2848,
+ // 2846-2847
+ 2845,
+ // 2842-2844
+ 2841,
+ // 2840
+ 2839, 2838, 2837, 2836,
+ // 2834-2835
+ 2833, 2832,
+ // 2831
+ 2830, 2829, 2828, 2827, 2826, 2825,
+ // 2824
+ 2823,
+ // 2821-2822
+ 2820, 2819, 2818,
+ // 2815-2817
+ 2814, 2813,
+ // 2808-2812
+ 2807,
+ // 2805-2806
+ 2804,
+ // 2802-2803
+ 2801,
+ // 2798-2800
+ 2797,
+ // 2796
+ 2795, 2794,
+ // 2792-2793
+ 2791, 2790,
+ // 2789
+ 2788,
+ // 2785-2787
+ 2784, 2783, 2782, 2781, 2780, 2779, 2778, 2777, 2776,
+ // 2774-2775
+ 2773, 2772,
+ // 2770-2771
+ 2769,
+ // 2768
+ 2767,
+ // 2766
+ 2765, 2764,
+ // 2762-2763
+ 2761,
+ // 2758-2760
+ 2757, 2756,
+ // 2739-2755
+ 2738, 2737, 2736,
+ // 2733-2735
+ 2732,
+ // 2731
+ 2730,
+ // 2729
+ 2728, 2727, 2726,
+ // 2724-2725
+ 2723, 2722,
+ // 2721
+ 2720,
+ // 2718-2719
+ 2717, 2716, 2715, 2714, 2713, 2712, 2711,
+ // 2710
+ 2709,
+ // 2708
+ 2707,
+ // 2705-2706
+ 2704,
+ // 2703
+ 2702, 2701, 2700,
+ // 2698-2699
+ 2697,
+ // 2696
+ 2695, 2694,
+ // 2692-2693
+ 2691, 2690, 2689,
+ // 2687-2688
+ 2686,
+ // 2685
+ 2684, 2683,
+ // 2679-2682
+ 2678,
+ // 2675-2677
+ 2674,
+ // 2672-2673
+ 2671, 2670,
+ // 2665-2669
+ 2664,
+ // 2663
+ 2662, 2661,
+ // 2660
+ 2659, 2658,
+ // 2657
+ 2656, 2655,
+ // 2654
+ 2653,
+ // 2649-2652
+ 2648, 2647, 2646,
+ // 2644-2645
+ 2643,
+ // 2642
+ 2641, 2640, 2639,
+ // 2635-2638
+ 2634,
+ // 2633
+ 2632, 2631,
+ // 2628-2630
+ 2627, 2626, 2625, 2624, 2623, 2622,
+ // 2616-2621
+ 2615,
+ // 2614
+ 2613, 2612, 2611, 2610, 2609, 2608, 2607, 2606, 2605, 2604,
+ // 2602-2603
+ 2601,
+ // 2600
+ 2599,
+ // 2597-2598
+ 2596, 2595, 2594, 2593, 2592, 2591,
+ // 2590
+ 2589, 2588, 2587, 2586, 2585,
+ // 2578-2584
+ 2577,
+ // 2573-2576
+ 2572,
+ // 2571
+ 2570,
+ // 2565-2569
+ 2564,
+ // 2561-2563
+ 2560, 2559,
+ // 2558
+ 2557,
+ // 2552-2556
+ 2551, 2550,
+ // 2549
+ 2548, 2547,
+ // 2546
+ 2545,
+ // 2543-2544
+ 2542,
+ // 2537-2541
+ 2536, 2535, 2534, 2533,
+ // 2525-2532
+ 2524, 2523, 2522,
+ // 2521
+ 2520,
+ // 2519
+ 2518,
+ // 2516-2517
+ 2515, 2514,
+ // 2510-2513
+ 2509, 2508, 2507,
+ // 2506
+ 2505,
+ // 2503-2504
+ 2502,
+ // 2501
+ 2500, 2499,
+ // 2497-2498
+ 2496, 2495,
+ // 2493-2494
+ 2492,
+ // 2491
+ 2490, 2489, 2488, 2487,
+ // 2480-2486
+ 2479,
+ // 2478
+ 2477, 2476, 2475, 2474, 2473, 2472,
+ // 2470-2471
+ 2469, 2468, 2467, 2466, 2465, 2464, 2463, 2462, 2461, 2460, 2459, 2458, 2457, 2456,
+ // 2455
+ 2454,
+ // 2453
+ 2452,
+ // 2450-2451
+ 2449, 2448, 2447, 2446,
+ // 2443-2445
+ 2442,
+ // 2440-2441
+ 2439, 2438, 2437,
+ // 2436
+ 2435,
+ // 2434
+ 2433, 2432, 2431, 2430, 2429,
+ // 2428
+ 2427, 2426, 2425, 2424, 2423, 2422, 2421, 2420, 2419, 2418,
+ // 2415-2417
+ 2414, 2413, 2412,
+ // 2411
+ 2410,
+ // 2409
+ 2408, 2407,
+ // 2403-2406
+ 2402, 2401,
+ // 2400
+ 2399,
+ // 2393-2398
+ 2392,
+ // 2389-2391
+ 2388,
+ // 2386-2387
+ 2385, 2384, 2383, 2382,
+ // 2380-2381
+ 2379,
+ // 2376-2378
+ 2375, 2374,
+ // 2369-2373
+ 2368,
+ // 2367
+ 2366,
+ // 2364-2365
+ 2363,
+ // 2362
+ 2361, 2360, 2359, 2358,
+ // 2357
+ 2356, 2355, 2354, 2353, 2352,
+ // 2351
+ 2350,
+ // 2349
+ 2348, 2347, 2346, 2345, 2344, 2343, 2342, 2341, 2340,
+ // 2338-2339
+ 2337, 2336,
+ // 2335
+ 2334, 2333, 2332,
+ // 2330-2331
+ 2329, 2328,
+ // 2327
+ 2326,
+ // 2325
+ 2324,
+ // 2320-2323
+ 2319, 2318,
+ // 2317
+ 2316,
+ // 2314-2315
+ 2313, 2312,
+ // 2310-2311
+ 2309,
+ // 2308
+ 2307,
+ // 2305-2306
+ 2304,
+ // 2302-2303
+ 2301,
+ // 2296-2300
+ 2295, 2294, 2293,
+ // 2290-2292
+ 2289,
+ // 2288
+ 2287, 2286, 2285, 2284,
+ // 2281-2283
+ 2280,
+ // 2279
+ 2278, 2277, 2276,
+ // 2275
+ 2274, 2273,
+ // 2271-2272
+ 2270, 2269,
+ // 2261-2268
+ 2260, 2259, 2258,
+ // 2256-2257
+ 2255, 2254,
+ // 2250-2253
+ 2249, 2248, 2247, 2246,
+ // 2245
+ 2244,
+ // 2242-2243
+ 2241, 2240,
+ // 2238-2239
+ 2237, 2236, 2235, 2234, 2233, 2232, 2231,
+ // 2230
+ 2229,
+ // 2228
+ 2227,
+ // 2222-2226
+ 2221,
+ // 2212-2220
+ 2211, 2210,
+ // 2208-2209
+ 2207, 2206,
+ // 2204-2205
+ 2203, 2202, 2201,
+ // 2200
+ 2199,
+ // 2198
+ 2197, 2196,
+ // 2193-2195
+ 2192,
+ // 2190-2191
+ 2189,
+ // 2187-2188
+ 2186, 2185, 2184,
+ // 2183
+ 2182, 2181,
+ // 2178-2180
+ 2177, 2176, 2175, 2174,
+ // 2173
+ 2172, 2171,
+ // 2167-2170
+ 2166,
+ // 2164-2165
+ 2163,
+ // 2162
+ 2161,
+ // 2160
+ 2159, 2158,
+ // 2157
+ 2156, 2155, 2154, 2153, 2152, 2151, 2150, 2149,
+ // 2148
+ 2147,
+ // 2143-2146
+ 2142, 2141, 2140,
+ // 2139
+ 2138,
+ // 2137
+ 2136,
+ // 2131-2135
+ 2130,
+ // 2127-2129
+ 2126,
+ // 2124-2125
+ 2123,
+ // 2122
+ 2121,
+ // 2120
+ 2119, 2118,
+ // 2117
+ 2116,
+ // 2114-2115
+ 2113, 2112, 2111, 2110, 2109,
+ // 2107-2108
+ 2106,
+ // 2105
+ 2104,
+ // 2101-2103
+ 2100,
+ // 2095-2099
+ 2094,
+ // 2092-2093
+ 2091,
+ // 2090
+ 2089,
+ // 2087-2088
+ 2086, 2085, 2084,
+ // 2079-2083
+ 2078, 2077, 2076, 2075,
+ // 2071-2074
+ 2070, 2069, 2068, 2067,
+ // 2063-2066
+ 2062,
+ // 2061
+ 2060, 2059, 2058,
+ // 2057
+ 2056,
+ // 2055
+ 2054,
+ // 2052-2053
+ 2051, 2050, 2049, 2048, 2047, 2046, 2045, 2044, 2043, 2042, 2041,
+ // 2039-2040
+ 2038, 2037, 2036,
+ // 2033-2035
+ 2032, 2031, 2030, 2029, 2028, 2027, 2026, 2025,
+ // 2020-2024
+ 2019, 2018,
+ // 2017
+ 2016,
+ // 2015
+ 2014,
+ // 2012-2013
+ 2011,
+ // 2010
+ 2009, 2008, 2007, 2006, 2005, 2004, 2003,
+ // 2000-2002
+ 1999, 1998,
+ // 1996-1997
+ 1995, 1994, 1993, 1992, 1991,
+ // 1988-1990
+ 1987,
+ // 1986
+ 1985, 1984, 1983, 1982, 1981,
+ // 1980
+ 1979, 1978,
+ // 1977
+ 1976, 1975, 1974, 1973, 1972, 1971, 1970, 1969,
+ // 1968
+ 1967, 1966, 1965, 1964, 1963, 1962, 1961, 1960, 1959, 1958, 1957,
+ // 1954-1956
+ 1953,
+ // 1950-1952
+ 1949,
+ // 1948
+ 1947, 1946, 1945, 1944,
+ // 1943
+ 1942,
+ // 1939-1941
+ 1938,
+ // 1937
+ 1936, 1935,
+ // 1934
+ 1933, 1932,
+ // 1930-1931
+ 1929,
+ // 1927-1928
+ 1926, 1925,
+ // 1923-1924
+ 1922, 1921, 1920, 1919,
+ // 1914-1918
+ 1913, 1912, 1911, 1910, 1909, 1908, 1907, 1906, 1905, 1904, 1903, 1902, 1901, 1900, 1899, 1898,
+ 1897, 1896,
+ // 1894-1895
+ 1893, 1892,
+ // 1891
+ 1890,
+ // 1888-1889
+ 1887,
+ // 1886
+ 1885,
+ // 1884
+ 1883,
+ // 1882
+ 1881, 1880,
+ // 1879
+ 1878, 1877,
+ // 1876
+ 1875, 1874, 1873, 1872, 1871,
+ // 1868-1870
+ 1867, 1866, 1865,
+ // 1864
+ 1863,
+ // 1857-1862
+ 1856,
+ // 1853-1855
+ 1852,
+ // 1851
+ 1850,
+ // 1845-1849
+ 1844, 1843, 1842,
+ // 1838-1841
+ 1837,
+ // 1836
+ 1835, 1834, 1833,
+ // 1832
+ 1831, 1830, 1829, 1828, 1827,
+ // 1824-1826
+ 1823, 1822,
+ // 1821
+ 1820,
+ // 1819
+ 1818, 1817,
+ // 1811-1816
+ 1810,
+ // 1809
+ 1808,
+ // 1807
+ 1806, 1805, 1804, 1803,
+ // 1802
+ 1801,
+ // 1800
+ 1799, 1798,
+ // 1795-1797
+ 1794, 1793, 1792, 1791, 1790,
+ // 1788-1789
+ 1787, 1786, 1785, 1784, 1783,
+ // 1782
+ 1781, 1780, 1779,
+ // 1777-1778
+ 1776, 1775, 1774, 1773, 1772,
+ // 1771
+ 1770,
+ // 1769
+ 1768,
+ // 1763-1767
+ 1762,
+ // 1760-1761
+ 1759,
+ // 1758
+ 1757,
+ // 1755-1756
+ 1754,
+ // 1752-1753
+ 1751,
+ // 1749-1750
+ 1748, 1747, 1746, 1745,
+ // 1744
+ 1743, 1742, 1741, 1740,
+ // 1739
+ 1738,
+ // 1737
+ 1736, 1735,
+ // 1732-1734
+ 1731,
+ // 1729-1730
+ 1728, 1727, 1726, 1725, 1724,
+ // 1722-1723
+ 1721,
+ // 1718-1720
+ 1717, 1716, 1715,
+ // 1714
+ 1713,
+ // 1708-1712
+ 1707,
+ // 1706
+ 1705,
+ // 1704
+ 1703, 1702,
+ // 1699-1701
+ 1698, 1697, 1696,
+ // 1694-1695
+ 1693,
+ // 1690-1692
+ 1689,
+ // 1685-1688
+ 1684,
+ // 1681-1683
+ 1680,
+ // 1679
+ 1678, 1677, 1676, 1675,
+ // 1674
+ 1673, 1672,
+ // 1671
+ 1670,
+ // 1667-1669
+ 1666, 1665,
+ // 1664
+ 1663,
+ // 1662
+ 1661,
+ // 1660
+ 1659, 1658,
+ // 1656-1657
+ 1655, 1654, 1653, 1652, 1651,
+ // 1650
+ 1649, 1648,
+ // 1647
+ 1646, 1645,
+ // 1643-1644
+ 1642,
+ // 1641
+ 1640, 1639,
+ // 1636-1638
+ 1635, 1634, 1633, 1632, 1631, 1630,
+ // 1627-1629
+ 1626, 1625, 1624,
+ // 1623
+ 1622, 1621,
+ // 1610-1620
+ 1609, 1608,
+ // 1606-1607
+ 1605,
+ // 1601-1604
+ 1600, 1599, 1598,
+ // 1597
+ 1596, 1595, 1594,
+ // 1592-1593
+ 1591,
+ // 1590
+ 1589, 1588, 1587, 1586, 1585,
+ // 1584
+ 1583,
+ // 1581-1582
+ 1580, 1579,
+ // 1571-1578
+ 1570,
+ // 1568-1569
+ 1567, 1566, 1565, 1564,
+ // 1562-1563
+ 1561, 1560, 1559,
+ // 1558
+ 1557,
+ // 1556
+ 1555, 1554, 1553, 1552,
+ // 1550-1551
+ 1549, 1548, 1547, 1546, 1545, 1544,
+ // 1541-1543
+ 1540,
+ // 1538-1539
+ 1537, 1536, 1535,
+ // 1527-1534
+ 1526,
+ // 1525
+ 1524, 1523, 1522, 1521, 1520,
+ // 1518-1519
+ 1517,
+ // 1514-1516
+ 1513, 1512, 1511,
+ // 1509-1510
+ 1508, 1507, 1506, 1505,
+ // 1498-1504
+ 1497,
+ // 1496
+ 1495,
+ // 1494
+ 1493,
+ // 1490-1492
+ 1489, 1488, 1487,
+ // 1485-1486
+ 1484,
+ // 1482-1483
+ 1481,
+ // 1480
+ 1479,
+ // 1477-1478
+ 1476,
+ // 1475
+ 1474, 1473, 1472, 1471, 1470, 1469,
+ // 1467-1468
+ 1466, 1465, 1464, 1463, 1462, 1461,
+ // 1459-1460
+ 1458,
+ // 1457
+ 1456,
+ // 1450-1455
+ 1449, 1448,
+ // 1447
+ 1446, 1445,
+ // 1444
+ 1443, 1442, 1441, 1440,
+ // 1439
+ 1438,
+ // 1437
+ 1436,
+ // 1425-1435
+ 1424,
+ // 1423
+ 1422,
+ // 1421
+ 1420,
+ // 1418-1419
+ 1417,
+ // 1414-1416
+ 1413,
+ // 1412
+ 1411, 1410, 1409,
+ // 1406-1408
+ 1405,
+ // 1403-1404
+ 1402, 1401,
+ // 1399-1400
+ 1398,
+ // 1396-1397
+ 1395,
+ // 1394
+ 1393,
+ // 1390-1392
+ 1389,
+ // 1387-1388
+ 1386, 1385, 1384, 1383,
+ // 1382
+ 1381,
+ // 1380
+ 1379, 1378, 1377,
+ // 1371-1376
+ 1370, 1369,
+ // 1367-1368
+ 1366,
+ // 1365
+ 1364,
+ // 1362-1363
+ 1361, 1360,
+ // 1355-1359
+ 1354, 1353,
+ // 1349-1352
+ 1348, 1347, 1346, 1345,
+ // 1341-1344
+ 1340,
+ // 1337-1339
+ 1336, 1335, 1334,
+ // 1331-1333
+ 1330,
+ // 1328-1329
+ 1327,
+ // 1322-1326
+ 1321,
+ // 1320
+ 1319, 1318, 1317, 1316, 1315,
+ // 1313-1314
+ 1312,
+ // 1311
+ 1310, 1309,
+ // 1307-1308
+ 1306, 1305, 1304,
+ // 1300-1303
+ 1299, 1298, 1297, 1296, 1295, 1294,
+ // 1293
+ 1292,
+ // 1290-1291
+ 1289,
+ // 1282-1288
+ 1281, 1280, 1279, 1278, 1277,
+ // 1276
+ 1275, 1274, 1273,
+ // 1270-1272
+ 1269,
+ // 1268
+ 1267, 1266, 1265, 1264,
+ // 1263
+ 1262,
+ // 1261
+ 1260, 1259,
+ // 1256-1258
+ 1255, 1254,
+ // 1253
+ 1252, 1251,
+ // 1249-1250
+ 1248,
+ // 1246-1247
+ 1245,
+ // 1242-1244
+ 1241, 1240,
+ // 1235-1239
+ 1234,
+ // 1233
+ 1232, 1231,
+ // 1229-1230
+ 1228,
+ // 1227
+ 1226, 1225,
+ // 1223-1224
+ 1222,
+ // 1220-1221
+ 1219,
+ // 1218
+ 1217, 1216, 1215, 1214,
+ // 1213
+ 1212, 1211, 1210, 1209, 1208, 1207,
+ // 1204-1206
+ 1203,
+ // 1200-1202
+ 1199, 1198, 1197, 1196, 1195, 1194,
+ // 1191-1193
+ 1190, 1189, 1188, 1187, 1186,
+ // 1185
+ 1184,
+ // 1182-1183
+ 1181, 1180, 1179,
+ // 1178
+ 1177,
+ // 1175-1176
+ 1174, 1173, 1172, 1171, 1170, 1169, 1168,
+ // 1167
+ 1166, 1165, 1164, 1163, 1162, 1161,
+ // 1149-1160
+ 1148, 1147,
+ // 1129-1146
+ 1128,
+ // 1126-1127
+ 1125,
+ // 1124
+ 1123,
+ // 1122
+ 1121,
+ // 1120
+ 1119, 1118, 1117,
+ // 1116
+ 1115, 1114, 1113,
+ // 1112
+ 1111, 1110,
+ // 1109
+ 1108, 1107, 1106,
+ // 1105
+ 1104, 1103, 1102, 1101, 1100, 1099, 1098,
+ // 1096-1097
+ 1095, 1094, 1093, 1092,
+ // 1090-1091
+ 1089, 1088, 1087, 1086, 1085, 1084, 1083, 1082,
+ // 1081
+ 1080, 1079, 1078,
+ // 1077
+ 1076, 1075, 1074, 1073, 1072, 1071, 1070, 1069, 1068, 1067,
+ // 1066
+ 1065, 1064, 1063, 1062, 1061, 1060, 1059, 1058, 1057, 1056, 1055, 1054, 1053, 1052, 1051, 1050,
+ 1049, 1048, 1047, 1046,
+ // 1045
+ 1044, 1043,
+ // 1042
+ 1041, 1040,
+ // 1039
+ 1038,
+ // 1037
+ 1036, 1035, 1034, 1033,
+ // 1032
+ 1031, 1030,
+ // 1028-1029
+ 1027,
+ // 1026
+ 1025,
+ // 1023-1024
+ 1022, 1021, 1020,
+ // 1018-1019
+ 1017,
+ // 1015-1016
+ 1014, 1013,
+ // 1011-1012
+ 1010,
+ // 1008-1009
+ 1007,
+ // 1005-1006
+ 1004,
+ // 1003
+ 1002,
+ // 1001
+ 1000, 999, 998, 997, 996,
+ // 992-995
+ 991,
+ // 990
+ 989,
+ // 988
+ 987, 986, 985,
+ // 984
+ 983, 982, 981, 980, 979, 978,
+ // 977
+ 976,
+ // 972-975
+ 971,
+ // 970
+ 969, 968, 967, 966, 965, 964, 963, 962,
+ // 960-961
+ 959, 958, 957, 956, 955, 954, 953, 952, 951, 950, 949, 948,
+ // 947
+ 946, 945, 944, 943, 942, 941, 940, 939, 938, 937, 936, 935, 934, 933, 932, 931,
+ 930, 929, 928, 927, 926, 925, 924, 923, 922, 921, 920, 919, 918, 917, 916, 915,
+ 914, 913, 912, 911, 910, 909, 908, 907,
+ // 906
+ 905,
+ // 904
+ 903, 902, 901,
+ // 900
+ 899,
+ // 897-898
+ 896, 895, 894, 893, 892, 891, 890, 889,
+ // 888
+ 887, 886, 885, 884, 883, 882,
+ // 881
+ 880, 879,
+ // 878
+ 877, 876,
+ // 875
+ 874, 873, 872, 871, 870, 869, 868, 867, 866, 865, 864,
+ // 863
+ 862, 861, 860,
+ // 858-859
+ 857, 856, 855, 854, 853, 852, 851,
+ // 850
+ 849,
+ // 847-848
+ 846, 845, 844, 843, 842, 841, 840, 839, 838, 837, 836, 835,
+ // 834
+ 833, 832, 831, 830, 829, 828,
+ // 827
+ 826, 825, 824, 823, 822,
+ // 820-821
+ 819, 818, 817, 816, 815, 814, 813, 812, 811, 810, 809, 808, 807,
+ // 806
+ 805, 804, 803, 802, 801, 800, 799, 798, 797, 796, 795, 794, 793, 792, 791,
+ // 789-790
+ 788, 787, 786, 785, 784, 783, 782, 781, 780, 779, 778, 777, 776,
+ // 775
+ 774, 773,
+ // 771-772
+ 770, 769,
+ // 768
+ 767, 766, 765,
+ // 764
+ 763, 762,
+ // 760-761
+ 759,
+ // 757-758
+ 756,
+ // 754-755
+ 753, 752,
+ // 751
+ 750, 749,
+ // 745-748
+ 744,
+ // 743
+ 742, 741, 740, 739,
+ // 737-738
+ 736,
+ // 735
+ 734,
+ // 729-733
+ 728, 727,
+ // 726
+ 725,
+ // 721-724
+ 720,
+ // 714-719
+ 713, 712, 711, 710, 709,
+ // 706-708
+ 705,
+ // 704
+ 703, 702, 701, 700,
+ // 699
+ 698,
+ // 696-697
+ 695,
+ // 693-694
+ 692, 691, 690, 689, 688, 687, 686, 685,
+ // 682-684
+ 681, 680,
+ // 679
+ 678,
+ // 677
+ 676,
+ // 675
+ 674, 673, 672, 671, 670, 669, 668, 667, 666, 665, 664, 663,
+ // 661-662
+ 660,
+ // 659
+ 658,
+ // 656-657
+ 655, 654,
+ // 652-653
+ 651,
+ // 650
+ 649, 648,
+ // 647
+ 646, 645, 644, 643, 642,
+ // 641
+ 640, 639, 638, 637, 636, 635, 634, 633, 632, 631, 630, 629, 628,
+ // 624-627
+ 623, 622, 621, 620, 619, 618, 617, 616, 615, 614,
+ // 613
+ 612,
+ // 611
+ 610, 609, 608, 607, 606,
+ // 604-605
+ 603, 602,
+ // 600-601
+ 599, 598, 597,
+ // 595-596
+ 594, 593, 592, 591, 590, 589,
+ // 588
+ 587,
+ // 585-586
+ 584,
+ // 582-583
+ 581, 580, 579, 578, 577, 576, 575,
+ // 574
+ 573,
+ // 570-572
+ 569, 568,
+ // 567
+ 566, 565,
+ // 561-564
+ 560, 559,
+ // 557-558
+ 556,
+ // 555
+ 554, 553,
+ // 552
+ 551, 550, 549,
+ // 548
+ 547,
+ // 546
+ 545, 544,
+ // 543
+ 542, 541, 540, 539,
+ // 536-538
+ 535, 534, 533, 532, 531,
+ // 528-530
+ 527,
+ // 526
+ 525, 524,
+ // 523
+ 522, 521, 520,
+ // 514-519
+ 513, 512, 511, 510, 509, 508, 507, 506, 505,
+ // 503-504
+ 502, 501,
+ // 500
+ 499, 498, 497,
+ // 495-496
+ 494,
+ // 492-493
+ 491, 490, 489,
+ // 483-488
+ 482, 481,
+ // 480
+ 479, 478,
+ // 477
+ 476, 475, 474, 473, 472, 471, 470, 469, 468,
+ // 467
+ 466,
+ // 465
+ 464, 463, 462, 461, 460,
+ // 459
+ 458, 457, 456, 455, 454,
+ // 453
+ 452, 451, 450,
+ // 449
+ 448, 447, 446, 445, 444, 443, 442, 441, 440,
+ // 439
+ 438, 437, 436, 435, 434, 433,
+ // 432
+ 431, 430, 429, 428,
+ // 427
+ 426,
+ // 425
+ 424, 423, 422,
+ // 421
+ 420,
+ // 419
+ 418, 417, 416, 415, 414, 413, 412, 411, 410, 409,
+ // 408
+ 407, 406, 405, 404, 403, 402, 401, 400,
+ // 399
+ 398, 397, 396, 395, 394, 393, 392, 391, 390, 389, 388, 387,
+ // 386
+ 385, 384, 383, 382, 381,
+ // 380
+ 379,
+ // 378
+ 377, 376, 375,
+ // 374
+ 373,
+ // 370-372
+ 369,
+ // 367-368
+ 366, 365,
+ // 364
+ 363, 362, 361, 360,
+ // 359
+ 358,
+ // 355-357
+ 354,
+ // 353
+ 352, 351,
+ // 348-350
+ 347,
+ // 346
+ 345,
+ // 343-344
+ 342,
+ // 339-341
+ 338, 337,
+ // 334-336
+ 333, 332,
+ // 331
+ 330,
+ // 327-329
+ 326, 325,
+ // 318-324
+ 317, 316, 315, 314,
+ // 311-313
+ 310, 309, 308, 307,
+ // 306
+ 305, 304, 303, 302, 301, 300,
+ // 298-299
+ 297, 296, 295,
+ // 294
+ 293,
+ // 282-292
+ 281,
+ // 279-280
+ 278,
+ // 276-277
+ 275, 274, 273, 272, 271, 270,
+ // 269
+ 268, 267, 266, 265, 264,
+ // 263
+ 262, 261, 260, 259,
+ // 258
+ 257,
+ // 256
+ 255, 254,
+ // 251-253
+ 250, 249, 248, 247, 246, 245, 244, 243, 242, 241, 240, 239,
+ // 238
+ 237, 236, 235, 234, 233,
+ // 232
+ 231, 230,
+ // 229
+ 228,
+ // 221-227
+ 220, 219,
+ // 218
+ 217,
+ // 216
+ 215,
+ // 214
+ 213, 212, 211, 210,
+ // 209
+ 208,
+ // 204-207
+ 203,
+ // 201-202
+ 200,
+ // 199
+ 198, 197,
+ // 196
+ 195,
+ // 194
+ 193, 192,
+ // 191
+ 190, 189, 188,
+ // 187
+ 186,
+ // 185
+ 184, 183,
+ // 182
+ 181, 180, 179, 178, 177, 176, 175, 174,
+ // 173
+ 172, 171, 170, 169, 168, 167, 166, 165, 164, 163, 162, 161,
+ // 159-160
+ 158, 157, 156, 155, 154, 153, 152, 151,
+ // 149-150
+ 148, 147, 146, 145, 144, 143,
+ // 142
+ 141, 140, 139, 138, 137, 136, 135, 134, 133, 132, 131,
+ // 130
+ 129, 128,
+ // 127
+ 126, 125, 124, 123, 122, 121, 120, 119,
+ // 118
+ 117, 116, 115, 114, 113, 112, 111,
+ // 110
+ 109, 108, 107, 106, 105, 104, 103, 102, 101, 100, 99,
+ // 98
+ 97,
+ // 96
+ 95, 94, 93, 92, 91,
+ // 90
+ 89, 88, 87, 86, 85, 84, 83, 82, 81, 80, 79, 78, 77, 76, 75, 74,
+ // 73
+ 72, 71, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, 58, 57,
+ 56, 55, 54, 53, 52, 51, 50, 49,
+ // 48
+ 47, 46, 45, 44,
+ // 43
+ 42, 41, 40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27,
+ 26, 25, 24, 23, 22,
+ // 20-21
+ 19, 18, 17, 16, 15, 14, 13, 12,
+ // 11
+ 10, 9, 8, 7, 6, 5, 4, 3, 2, 1,
+ // 0
+ },
+ (const int[]) { // 900
+ 2190, 2189, 2188, 2187,
+ // 2186
+ 2185,
+ // 2184
+ 2183,
+ // 2181-2182
+ 2180, 2179, 2178, 2177,
+ // 2176
+ 2175,
+ // 2169-2174
+ 2168,
+ // 2167
+ 2166,
+ // 2160-2165
+ 2159, 2158,
+ // 2155-2157
+ 2154,
+ // 2152-2153
+ 2151, 2150, 2149, 2148,
+ // 2146-2147
+ 2145,
+ // 2144
+ 2143, 2142, 2141, 2140, 2139, 2138, 2137, 2136, 2135, 2134, 2133,
+ // 2132
+ 2131,
+ // 2130
+ 2129, 2128,
+ // 2127
+ 2126, 2125, 2124,
+ // 2123
+ 2122, 2121, 2120,
+ // 2119
+ 2118, 2117, 2116, 2115, 2114, 2113, 2112, 2111, 2110, 2109, 2108, 2107, 2106, 2105, 2104, 2103,
+ 2102, 2101, 2100,
+ // 2099
+ 2098, 2097,
+ // 2096
+ 2095,
+ // 2093-2094
+ 2092,
+ // 2091
+ 2090,
+ // 2082-2089
+ 2081, 2080, 2079,
+ // 2078
+ 2077,
+ // 2076
+ 2075, 2074, 2073,
+ // 2072
+ 2071, 2070,
+ // 2069
+ 2068,
+ // 2066-2067
+ 2065, 2064, 2063, 2062, 2061, 2060, 2059, 2058,
+ // 2057
+ 2056,
+ // 2054-2055
+ 2053,
+ // 2051-2052
+ 2050,
+ // 2049
+ 2048,
+ // 2046-2047
+ 2045, 2044,
+ // 2043
+ 2042, 2041, 2040, 2039,
+ // 2038
+ 2037,
+ // 2036
+ 2035,
+ // 2034
+ 2033, 2032, 2031, 2030,
+ // 2029
+ 2028,
+ // 2026-2027
+ 2025, 2024, 2023, 2022, 2021,
+ // 2019-2020
+ 2018, 2017,
+ // 2015-2016
+ 2014,
+ // 2012-2013
+ 2011, 2010, 2009, 2008,
+ // 2005-2007
+ 2004, 2003,
+ // 1998-2002
+ 1997,
+ // 1996
+ 1995,
+ // 1994
+ 1993, 1992,
+ // 1991
+ 1990,
+ // 1989
+ 1988, 1987,
+ // 1984-1986
+ 1983,
+ // 1982
+ 1981,
+ // 1980
+ 1979, 1978,
+ // 1977
+ 1976, 1975,
+ // 1974
+ 1973, 1972, 1971, 1970, 1969, 1968, 1967, 1966, 1965, 1964, 1963, 1962, 1961, 1960,
+ // 1959
+ 1958,
+ // 1957
+ 1956,
+ // 1955
+ 1954,
+ // 1951-1953
+ 1950,
+ // 1948-1949
+ 1947, 1946,
+ // 1944-1945
+ 1943,
+ // 1939-1942
+ 1938, 1937,
+ // 1935-1936
+ 1934,
+ // 1932-1933
+ 1931, 1930,
+ // 1924-1929
+ 1923,
+ // 1922
+ 1921,
+ // 1920
+ 1919, 1918,
+ // 1916-1917
+ 1915,
+ // 1914
+ 1913, 1912,
+ // 1909-1911
+ 1908, 1907,
+ // 1906
+ 1905, 1904, 1903, 1902,
+ // 1897-1901
+ 1896,
+ // 1895
+ 1894, 1893, 1892, 1891,
+ // 1885-1890
+ 1884,
+ // 1883
+ 1882, 1881,
+ // 1879-1880
+ 1878, 1877,
+ // 1875-1876
+ 1874, 1873, 1872,
+ // 1869-1871
+ 1868,
+ // 1867
+ 1866,
+ // 1865
+ 1864, 1863,
+ // 1861-1862
+ 1860,
+ // 1859
+ 1858, 1857, 1856,
+ // 1855
+ 1854, 1853, 1852,
+ // 1851
+ 1850, 1849, 1848, 1847, 1846,
+ // 1842-1845
+ 1841, 1840, 1839,
+ // 1834-1838
+ 1833,
+ // 1829-1832
+ 1828,
+ // 1827
+ 1826, 1825,
+ // 1824
+ 1823,
+ // 1821-1822
+ 1820, 1819,
+ // 1816-1818
+ 1815,
+ // 1814
+ 1813,
+ // 1812
+ 1811, 1810, 1809, 1808, 1807,
+ // 1804-1806
+ 1803, 1802,
+ // 1801
+ 1800,
+ // 1799
+ 1798, 1797,
+ // 1796
+ 1795,
+ // 1793-1794
+ 1792, 1791,
+ // 1786-1790
+ 1785,
+ // 1784
+ 1783,
+ // 1782
+ 1781, 1780, 1779,
+ // 1778
+ 1777,
+ // 1775-1776
+ 1774, 1773, 1772, 1771,
+ // 1769-1770
+ 1768, 1767, 1766,
+ // 1765
+ 1764, 1763,
+ // 1762
+ 1761,
+ // 1760
+ 1759,
+ // 1758
+ 1757,
+ // 1754-1756
+ 1753,
+ // 1752
+ 1751,
+ // 1749-1750
+ 1748, 1747,
+ // 1746
+ 1745,
+ // 1744
+ 1743, 1742,
+ // 1740-1741
+ 1739, 1738,
+ // 1737
+ 1736, 1735, 1734, 1733,
+ // 1732
+ 1731, 1730, 1729, 1728,
+ // 1727
+ 1726, 1725,
+ // 1724
+ 1723, 1722,
+ // 1719-1721
+ 1718, 1717, 1716, 1715, 1714, 1713,
+ // 1712
+ 1711, 1710,
+ // 1709
+ 1708,
+ // 1706-1707
+ 1705, 1704,
+ // 1703
+ 1702,
+ // 1699-1701
+ 1698, 1697,
+ // 1695-1696
+ 1694, 1693,
+ // 1692
+ 1691,
+ // 1690
+ 1689, 1688, 1687, 1686, 1685,
+ // 1684
+ 1683,
+ // 1682
+ 1681,
+ // 1680
+ 1679, 1678,
+ // 1676-1677
+ 1675,
+ // 1674
+ 1673, 1672, 1671, 1670,
+ // 1669
+ 1668, 1667, 1666, 1665, 1664, 1663,
+ // 1662
+ 1661,
+ // 1660
+ 1659,
+ // 1655-1658
+ 1654, 1653,
+ // 1647-1652
+ 1646, 1645, 1644, 1643, 1642,
+ // 1641
+ 1640, 1639, 1638, 1637, 1636, 1635, 1634, 1633, 1632, 1631, 1630, 1629,
+ // 1627-1628
+ 1626,
+ // 1623-1625
+ 1622, 1621, 1620,
+ // 1619
+ 1618, 1617, 1616, 1615, 1614, 1613, 1612,
+ // 1611
+ 1610,
+ // 1609
+ 1608, 1607, 1606,
+ // 1604-1605
+ 1603, 1602, 1601, 1600, 1599, 1598, 1597, 1596, 1595,
+ // 1592-1594
+ 1591,
+ // 1589-1590
+ 1588, 1587, 1586, 1585, 1584, 1583, 1582,
+ // 1581
+ 1580,
+ // 1579
+ 1578,
+ // 1576-1577
+ 1575,
+ // 1569-1574
+ 1568,
+ // 1566-1567
+ 1565, 1564, 1563, 1562, 1561,
+ // 1556-1560
+ 1555, 1554, 1553, 1552, 1551,
+ // 1550
+ 1549, 1548, 1547, 1546, 1545,
+ // 1544
+ 1543, 1542, 1541, 1540, 1539, 1538,
+ // 1537
+ 1536, 1535, 1534, 1533, 1532,
+ // 1531
+ 1530,
+ // 1527-1529
+ 1526, 1525, 1524, 1523, 1522, 1521, 1520,
+ // 1519
+ 1518, 1517, 1516, 1515, 1514, 1513, 1512, 1511,
+ // 1509-1510
+ 1508, 1507, 1506, 1505,
+ // 1504
+ 1503, 1502,
+ // 1501
+ 1500, 1499,
+ // 1498
+ 1497,
+ // 1496
+ 1495, 1494, 1493, 1492, 1491, 1490,
+ // 1487-1489
+ 1486, 1485,
+ // 1480-1484
+ 1479, 1478, 1477, 1476, 1475, 1474, 1473, 1472,
+ // 1471
+ 1470, 1469, 1468, 1467,
+ // 1466
+ 1465, 1464,
+ // 1463
+ 1462, 1461, 1460,
+ // 1459
+ 1458,
+ // 1457
+ 1456, 1455,
+ // 1453-1454
+ 1452, 1451,
+ // 1450
+ 1449,
+ // 1448
+ 1447, 1446,
+ // 1445
+ 1444, 1443, 1442,
+ // 1440-1441
+ 1439, 1438, 1437,
+ // 1436
+ 1435, 1434,
+ // 1432-1433
+ 1431, 1430, 1429, 1428, 1427, 1426, 1425,
+ // 1424
+ 1423, 1422, 1421, 1420, 1419,
+ // 1418
+ 1417, 1416, 1415,
+ // 1413-1414
+ 1412,
+ // 1410-1411
+ 1409, 1408, 1407, 1406, 1405,
+ // 1402-1404
+ 1401, 1400,
+ // 1398-1399
+ 1397,
+ // 1396
+ 1395, 1394, 1393, 1392, 1391,
+ // 1387-1390
+ 1386, 1385, 1384,
+ // 1381-1383
+ 1380,
+ // 1379
+ 1378,
+ // 1377
+ 1376,
+ // 1375
+ 1374, 1373, 1372, 1371,
+ // 1370
+ 1369, 1368, 1367, 1366, 1365, 1364,
+ // 1363
+ 1362, 1361, 1360, 1359,
+ // 1357-1358
+ 1356,
+ // 1355
+ 1354, 1353,
+ // 1352
+ 1351, 1350, 1349, 1348, 1347, 1346, 1345,
+ // 1343-1344
+ 1342, 1341, 1340,
+ // 1338-1339
+ 1337, 1336, 1335,
+ // 1333-1334
+ 1332, 1331, 1330, 1329,
+ // 1325-1328
+ 1324, 1323,
+ // 1320-1322
+ 1319,
+ // 1316-1318
+ 1315, 1314,
+ // 1313
+ 1312, 1311, 1310, 1309, 1308, 1307,
+ // 1304-1306
+ 1303,
+ // 1301-1302
+ 1300, 1299, 1298, 1297,
+ // 1296
+ 1295, 1294, 1293,
+ // 1292
+ 1291, 1290, 1289, 1288,
+ // 1283-1287
+ 1282, 1281,
+ // 1280
+ 1279, 1278, 1277,
+ // 1275-1276
+ 1274, 1273, 1272, 1271, 1270,
+ // 1269
+ 1268,
+ // 1264-1267
+ 1263,
+ // 1262
+ 1261, 1260,
+ // 1258-1259
+ 1257, 1256, 1255,
+ // 1254
+ 1253,
+ // 1248-1252
+ 1247, 1246, 1245, 1244, 1243, 1242,
+ // 1239-1241
+ 1238,
+ // 1237
+ 1236,
+ // 1234-1235
+ 1233,
+ // 1232
+ 1231, 1230, 1229, 1228, 1227,
+ // 1226
+ 1225,
+ // 1224
+ 1223,
+ // 1222
+ 1221,
+ // 1220
+ 1219,
+ // 1217-1218
+ 1216, 1215, 1214, 1213, 1212,
+ // 1209-1211
+ 1208,
+ // 1198-1207
+ 1197,
+ // 1196
+ 1195,
+ // 1192-1194
+ 1191,
+ // 1190
+ 1189,
+ // 1184-1188
+ 1183, 1182,
+ // 1181
+ 1180,
+ // 1177-1179
+ 1176, 1175, 1174, 1173, 1172, 1171,
+ // 1168-1170
+ 1167,
+ // 1163-1166
+ 1162,
+ // 1159-1161
+ 1158,
+ // 1155-1157
+ 1154, 1153,
+ // 1146-1152
+ 1145,
+ // 1144
+ 1143, 1142, 1141,
+ // 1138-1140
+ 1137,
+ // 1133-1136
+ 1132, 1131,
+ // 1130
+ 1129,
+ // 1122-1128
+ 1121, 1120,
+ // 1117-1119
+ 1116, 1115, 1114,
+ // 1111-1113
+ 1110, 1109,
+ // 1107-1108
+ 1106, 1105,
+ // 1104
+ 1103, 1102, 1101, 1100, 1099, 1098, 1097, 1096,
+ // 1093-1095
+ 1092,
+ // 1091
+ 1090, 1089, 1088,
+ // 1086-1087
+ 1085, 1084,
+ // 1083
+ 1082,
+ // 1080-1081
+ 1079, 1078,
+ // 1077
+ 1076, 1075,
+ // 1073-1074
+ 1072, 1071,
+ // 1068-1070
+ 1067,
+ // 1065-1066
+ 1064,
+ // 1063
+ 1062, 1061,
+ // 1060
+ 1059,
+ // 1058
+ 1057,
+ // 1056
+ 1055,
+ // 1052-1054
+ 1051,
+ // 1048-1050
+ 1047,
+ // 1044-1046
+ 1043, 1042,
+ // 1039-1041
+ 1038, 1037, 1036,
+ // 1035
+ 1034, 1033, 1032,
+ // 1031
+ 1030, 1029, 1028,
+ // 1027
+ 1026, 1025, 1024,
+ // 1022-1023
+ 1021, 1020,
+ // 1018-1019
+ 1017, 1016, 1015, 1014,
+ // 1013
+ 1012, 1011, 1010, 1009, 1008, 1007,
+ // 1006
+ 1005,
+ // 1004
+ 1003,
+ // 1001-1002
+ 1000,
+ // 999
+ 998, 997,
+ // 992-996
+ 991, 990,
+ // 987-989
+ 986,
+ // 985
+ 984,
+ // 982-983
+ 981,
+ // 973-980
+ 972,
+ // 971
+ 970, 969,
+ // 968
+ 967, 966, 965, 964, 963,
+ // 959-962
+ 958,
+ // 954-957
+ 953, 952, 951, 950,
+ // 948-949
+ 947, 946,
+ // 945
+ 944,
+ // 943
+ 942, 941,
+ // 938-940
+ 937, 936, 935,
+ // 933-934
+ 932, 931,
+ // 930
+ 929, 928, 927, 926, 925,
+ // 923-924
+ 922, 921,
+ // 920
+ 919,
+ // 917-918
+ 916, 915, 914, 913,
+ // 912
+ 911, 910,
+ // 909
+ 908,
+ // 907
+ 906,
+ // 905
+ 904,
+ // 903
+ 902, 901, 900,
+ // 899
+ 898, 897,
+ // 896
+ 895,
+ // 894
+ 893, 892,
+ // 889-891
+ 888,
+ // 887
+ 886,
+ // 885
+ 884, 883, 882,
+ // 880-881
+ 879, 878,
+ // 877
+ 876, 875,
+ // 873-874
+ 872,
+ // 871
+ 870, 869,
+ // 868
+ 867, 866, 865, 864, 863, 862, 861, 860, 859, 858, 857,
+ // 856
+ 855, 854,
+ // 848-853
+ 847, 846, 845, 844, 843,
+ // 842
+ 841,
+ // 839-840
+ 838, 837, 836, 835,
+ // 833-834
+ 832,
+ // 830-831
+ 829,
+ // 827-828
+ 826, 825, 824, 823, 822, 821, 820, 819, 818, 817, 816, 815, 814,
+ // 811-813
+ 810,
+ // 809
+ 808, 807, 806, 805, 804, 803,
+ // 799-802
+ 798,
+ // 796-797
+ 795,
+ // 793-794
+ 792,
+ // 791
+ 790, 789, 788, 787, 786, 785,
+ // 784
+ 783, 782,
+ // 781
+ 780, 779,
+ // 774-778
+ 773,
+ // 772
+ 771, 770,
+ // 766-769
+ 765, 764,
+ // 763
+ 762, 761, 760, 759, 758, 757, 756, 755, 754,
+ // 753
+ 752, 751, 750, 749,
+ // 748
+ 747, 746, 745,
+ // 740-744
+ 739, 738,
+ // 737
+ 736, 735, 734, 733,
+ // 732
+ 731,
+ // 730
+ 729,
+ // 728
+ 727,
+ // 718-726
+ 717, 716, 715,
+ // 714
+ 713, 712, 711,
+ // 708-710
+ 707, 706,
+ // 705
+ 704,
+ // 703
+ 702, 701, 700, 699,
+ // 698
+ 697, 696,
+ // 693-695
+ 692, 691, 690, 689,
+ // 687-688
+ 686, 685,
+ // 682-684
+ 681, 680, 679, 678, 677, 676,
+ // 674-675
+ 673, 672, 671, 670,
+ // 669
+ 668, 667, 666, 665, 664,
+ // 663
+ 662, 661,
+ // 659-660
+ 658, 657, 656,
+ // 655
+ 654,
+ // 653
+ 652,
+ // 651
+ 650, 649,
+ // 648
+ 647, 646, 645, 644, 643, 642, 641, 640,
+ // 636-639
+ 635, 634, 633, 632,
+ // 629-631
+ 628,
+ // 625-627
+ 624,
+ // 623
+ 622, 621, 620,
+ // 617-619
+ 616,
+ // 615
+ 614,
+ // 613
+ 612,
+ // 611
+ 610, 609, 608, 607,
+ // 606
+ 605, 604, 603, 602, 601, 600, 599, 598, 597, 596, 595, 594, 593,
+ // 591-592
+ 590,
+ // 589
+ 588,
+ // 587
+ 586, 585,
+ // 584
+ 583,
+ // 582
+ 581, 580, 579,
+ // 578
+ 577, 576,
+ // 574-575
+ 573, 572,
+ // 571
+ 570,
+ // 569
+ 568, 567, 566,
+ // 564-565
+ 563, 562, 561, 560, 559,
+ // 556-558
+ 555,
+ // 551-554
+ 550,
+ // 549
+ 548,
+ // 547
+ 546, 545, 544, 543, 542,
+ // 541
+ 540, 539,
+ // 538
+ 537, 536,
+ // 534-535
+ 533, 532,
+ // 531
+ 530,
+ // 528-529
+ 527,
+ // 526
+ 525,
+ // 524
+ 523, 522, 521,
+ // 520
+ 519,
+ // 518
+ 517,
+ // 515-516
+ 514,
+ // 513
+ 512, 511, 510, 509,
+ // 508
+ 507,
+ // 506
+ 505, 504, 503,
+ // 502
+ 501,
+ // 498-500
+ 497,
+ // 495-496
+ 494,
+ // 493
+ 492,
+ // 491
+ 490,
+ // 487-489
+ 486,
+ // 484-485
+ 483,
+ // 480-482
+ 479, 478, 477, 476,
+ // 472-475
+ 471,
+ // 470
+ 469,
+ // 468
+ 467,
+ // 466
+ 465,
+ // 463-464
+ 462, 461,
+ // 458-460
+ 457, 456, 455, 454,
+ // 453
+ 452,
+ // 450-451
+ 449, 448,
+ // 446-447
+ 445,
+ // 444
+ 443,
+ // 435-442
+ 434, 433,
+ // 431-432
+ 430,
+ // 429
+ 428, 427, 426, 425, 424, 423, 422, 421,
+ // 420
+ 419,
+ // 418
+ 417,
+ // 416
+ 415, 414, 413, 412, 411, 410, 409, 408, 407, 406,
+ // 405
+ 404, 403, 402, 401,
+ // 399-400
+ 398, 397,
+ // 396
+ 395,
+ // 394
+ 393,
+ // 392
+ 391, 390, 389, 388,
+ // 387
+ 386, 385,
+ // 381-384
+ 380, 379, 378,
+ // 373-377
+ 372,
+ // 371
+ 370, 369, 368, 367,
+ // 363-366
+ 362, 361, 360, 359, 358,
+ // 356-357
+ 355,
+ // 350-354
+ 349,
+ // 347-348
+ 346,
+ // 344-345
+ 343, 342, 341,
+ // 340
+ 339,
+ // 337-338
+ 336, 335,
+ // 334
+ 333, 332, 331, 330,
+ // 323-329
+ 322,
+ // 321
+ 320, 319, 318,
+ // 317
+ 316,
+ // 315
+ 314, 313,
+ // 306-312
+ 305, 304, 303, 302,
+ // 301
+ 300, 299,
+ // 291-298
+ 290,
+ // 287-289
+ 286, 285, 284, 283,
+ // 282
+ 281,
+ // 280
+ 279, 278, 277, 276, 275, 274,
+ // 273
+ 272, 271, 270, 269, 268, 267, 266, 265, 264, 263, 262, 261, 260, 259,
+ // 257-258
+ 256, 255, 254,
+ // 251-253
+ 250, 249, 248,
+ // 247
+ 246, 245, 244,
+ // 243
+ 242, 241, 240, 239, 238, 237, 236,
+ // 235
+ 234,
+ // 232-233
+ 231,
+ // 229-230
+ 228, 227,
+ // 224-226
+ 223, 222,
+ // 221
+ 220,
+ // 219
+ 218, 217, 216,
+ // 214-215
+ 213,
+ // 211-212
+ 210, 209,
+ // 208
+ 207, 206, 205, 204, 203,
+ // 199-202
+ 198, 197, 196, 195, 194, 193, 192, 191, 190,
+ // 188-189
+ 187,
+ // 184-186
+ 183, 182, 181,
+ // 180
+ 179, 178, 177, 176, 175,
+ // 173-174
+ 172,
+ // 170-171
+ 169,
+ // 162-168
+ 161,
+ // 160
+ 159,
+ // 153-158
+ 152,
+ // 150-151
+ 149,
+ // 144-148
+ 143,
+ // 142
+ 141,
+ // 139-140
+ 138, 137, 136, 135,
+ // 134
+ 133, 132,
+ // 131
+ 130, 129,
+ // 128
+ 127, 126,
+ // 125
+ 124, 123,
+ // 121-122
+ 120,
+ // 119
+ 118,
+ // 117
+ 116, 115, 114, 113,
+ // 112
+ 111, 110, 109,
+ // 107-108
+ 106, 105, 104,
+ // 103
+ 102, 101,
+ // 100
+ 99,
+ // 98
+ 97, 96, 95, 94, 93, 92,
+ // 91
+ 90, 89, 88, 87, 86, 85, 84, 83, 82, 81,
+ // 78-80
+ 77, 76,
+ // 75
+ 74, 73,
+ // 72
+ 71, 70,
+ // 69
+ 68, 67, 66,
+ // 65
+ 64,
+ // 63
+ 62, 61, 60, 59,
+ // 58
+ 57,
+ // 56
+ 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45,
+ // 44
+ 43, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33,
+ // 32
+ 31, 30, 29,
+ // 27-28
+ 26,
+ // 25
+ 24,
+ // 23
+ 22, 21, 20, 19, 18, 17, 16, 15,
+ // 13-14
+ 12, 11, 10, 9,
+ // 7-8
+ 6, 5,
+ // 4
+ 3, 2, 1,
+ // 0
+ },
+ (const int[]) { // 901
+ 1939, 1938, 1937, 1936, 1935, 1934, 1933,
+ // 1932
+ 1931, 1930, 1929,
+ // 1925-1928
+ 1924, 1923, 1922,
+ // 1921
+ 1920,
+ // 1919
+ 1918,
+ // 1917
+ 1916, 1915, 1914, 1913,
+ // 1910-1912
+ 1909,
+ // 1907-1908
+ 1906,
+ // 1894-1905
+ 1893, 1892, 1891, 1890, 1889, 1888,
+ // 1887
+ 1886, 1885,
+ // 1884
+ 1883,
+ // 1881-1882
+ 1880,
+ // 1879
+ 1878, 1877, 1876, 1875,
+ // 1873-1874
+ 1872, 1871, 1870, 1869, 1868,
+ // 1860-1867
+ 1859, 1858,
+ // 1855-1857
+ 1854, 1853, 1852, 1851, 1850, 1849,
+ // 1844-1848
+ 1843, 1842,
+ // 1840-1841
+ 1839, 1838,
+ // 1837
+ 1836,
+ // 1835
+ 1834, 1833,
+ // 1832
+ 1831,
+ // 1830
+ 1829,
+ // 1828
+ 1827,
+ // 1826
+ 1825, 1824, 1823,
+ // 1822
+ 1821, 1820, 1819, 1818, 1817,
+ // 1816
+ 1815, 1814,
+ // 1813
+ 1812,
+ // 1811
+ 1810,
+ // 1809
+ 1808, 1807, 1806,
+ // 1805
+ 1804,
+ // 1803
+ 1802,
+ // 1801
+ 1800, 1799, 1798, 1797,
+ // 1794-1796
+ 1793,
+ // 1791-1792
+ 1790, 1789,
+ // 1788
+ 1787,
+ // 1784-1786
+ 1783,
+ // 1782
+ 1781, 1780, 1779, 1778, 1777, 1776, 1775, 1774, 1773, 1772, 1771,
+ // 1770
+ 1769,
+ // 1768
+ 1767,
+ // 1766
+ 1765, 1764, 1763, 1762, 1761, 1760, 1759, 1758,
+ // 1756-1757
+ 1755, 1754, 1753, 1752, 1751, 1750,
+ // 1748-1749
+ 1747,
+ // 1745-1746
+ 1744,
+ // 1743
+ 1742,
+ // 1741
+ 1740, 1739, 1738, 1737,
+ // 1735-1736
+ 1734,
+ // 1733
+ 1732, 1731, 1730, 1729,
+ // 1725-1728
+ 1724, 1723,
+ // 1719-1722
+ 1718, 1717, 1716,
+ // 1715
+ 1714, 1713,
+ // 1710-1712
+ 1709,
+ // 1708
+ 1707,
+ // 1706
+ 1705,
+ // 1703-1704
+ 1702, 1701, 1700,
+ // 1699
+ 1698, 1697,
+ // 1696
+ 1695, 1694, 1693,
+ // 1692
+ 1691, 1690, 1689, 1688, 1687, 1686, 1685,
+ // 1682-1684
+ 1681,
+ // 1680
+ 1679, 1678, 1677, 1676,
+ // 1673-1675
+ 1672,
+ // 1671
+ 1670,
+ // 1668-1669
+ 1667,
+ // 1666
+ 1665,
+ // 1663-1664
+ 1662, 1661,
+ // 1658-1660
+ 1657,
+ // 1650-1656
+ 1649,
+ // 1648
+ 1647,
+ // 1646
+ 1645,
+ // 1641-1644
+ 1640,
+ // 1639
+ 1638,
+ // 1634-1637
+ 1633, 1632, 1631, 1630,
+ // 1629
+ 1628, 1627, 1626, 1625, 1624, 1623, 1622, 1621, 1620, 1619, 1618,
+ // 1616-1617
+ 1615,
+ // 1614
+ 1613, 1612, 1611, 1610, 1609, 1608, 1607, 1606, 1605, 1604, 1603, 1602, 1601, 1600, 1599, 1598,
+ // 1597
+ 1596,
+ // 1595
+ 1594,
+ // 1591-1593
+ 1590,
+ // 1584-1589
+ 1583,
+ // 1582
+ 1581, 1580,
+ // 1577-1579
+ 1576,
+ // 1574-1575
+ 1573, 1572, 1571, 1570,
+ // 1568-1569
+ 1567,
+ // 1564-1566
+ 1563,
+ // 1560-1562
+ 1559,
+ // 1558
+ 1557, 1556, 1555, 1554,
+ // 1553
+ 1552, 1551, 1550, 1549, 1548, 1547,
+ // 1545-1546
+ 1544,
+ // 1542-1543
+ 1541,
+ // 1540
+ 1539, 1538,
+ // 1536-1537
+ 1535,
+ // 1533-1534
+ 1532,
+ // 1529-1531
+ 1528,
+ // 1527
+ 1526,
+ // 1522-1525
+ 1521, 1520, 1519, 1518, 1517, 1516, 1515,
+ // 1513-1514
+ 1512, 1511, 1510, 1509, 1508, 1507, 1506, 1505, 1504, 1503, 1502, 1501,
+ // 1499-1500
+ 1498,
+ // 1494-1497
+ 1493,
+ // 1491-1492
+ 1490,
+ // 1483-1489
+ 1482, 1481,
+ // 1480
+ 1479, 1478, 1477, 1476, 1475, 1474, 1473,
+ // 1472
+ 1471,
+ // 1469-1470
+ 1468, 1467, 1466,
+ // 1465
+ 1464, 1463,
+ // 1456-1462
+ 1455, 1454, 1453, 1452,
+ // 1451
+ 1450, 1449,
+ // 1448
+ 1447, 1446, 1445, 1444, 1443, 1442, 1441, 1440, 1439,
+ // 1438
+ 1437,
+ // 1436
+ 1435,
+ // 1434
+ 1433, 1432, 1431,
+ // 1429-1430
+ 1428,
+ // 1427
+ 1426,
+ // 1425
+ 1424,
+ // 1423
+ 1422, 1421, 1420, 1419,
+ // 1418
+ 1417, 1416,
+ // 1414-1415
+ 1413,
+ // 1411-1412
+ 1410, 1409, 1408, 1407,
+ // 1406
+ 1405, 1404,
+ // 1403
+ 1402,
+ // 1399-1401
+ 1398,
+ // 1397
+ 1396, 1395,
+ // 1394
+ 1393,
+ // 1390-1392
+ 1389, 1388, 1387,
+ // 1386
+ 1385, 1384, 1383, 1382, 1381, 1380, 1379, 1378, 1377, 1376, 1375, 1374, 1373,
+ // 1368-1372
+ 1367,
+ // 1366
+ 1365,
+ // 1362-1364
+ 1361, 1360, 1359, 1358, 1357,
+ // 1354-1356
+ 1353,
+ // 1352
+ 1351, 1350, 1349,
+ // 1348
+ 1347, 1346, 1345, 1344, 1343, 1342, 1341, 1340,
+ // 1339
+ 1338, 1337,
+ // 1332-1336
+ 1331,
+ // 1330
+ 1329, 1328, 1327, 1326,
+ // 1323-1325
+ 1322, 1321, 1320, 1319, 1318, 1317, 1316, 1315, 1314, 1313, 1312, 1311, 1310, 1309, 1308, 1307,
+ 1306, 1305, 1304, 1303, 1302, 1301, 1300, 1299, 1298, 1297, 1296,
+ // 1293-1295
+ 1292, 1291, 1290, 1289, 1288, 1287, 1286,
+ // 1285
+ 1284, 1283,
+ // 1279-1282
+ 1278,
+ // 1277
+ 1276,
+ // 1273-1275
+ 1272, 1271, 1270, 1269, 1268,
+ // 1267
+ 1266, 1265,
+ // 1264
+ 1263, 1262, 1261, 1260,
+ // 1259
+ 1258, 1257,
+ // 1256
+ 1255,
+ // 1254
+ 1253, 1252, 1251, 1250, 1249, 1248, 1247, 1246, 1245,
+ // 1244
+ 1243,
+ // 1239-1242
+ 1238,
+ // 1237
+ 1236, 1235,
+ // 1232-1234
+ 1231,
+ // 1229-1230
+ 1228,
+ // 1227
+ 1226,
+ // 1225
+ 1224,
+ // 1223
+ 1222, 1221, 1220, 1219, 1218, 1217, 1216, 1215, 1214, 1213, 1212,
+ // 1207-1211
+ 1206, 1205, 1204, 1203,
+ // 1202
+ 1201, 1200, 1199, 1198, 1197, 1196, 1195, 1194, 1193,
+ // 1192
+ 1191, 1190, 1189, 1188, 1187, 1186, 1185, 1184,
+ // 1183
+ 1182, 1181,
+ // 1179-1180
+ 1178, 1177, 1176, 1175, 1174, 1173, 1172, 1171, 1170, 1169, 1168, 1167, 1166, 1165, 1164,
+ // 1162-1163
+ 1161, 1160,
+ // 1159
+ 1158, 1157, 1156, 1155,
+ // 1154
+ 1153, 1152, 1151,
+ // 1148-1150
+ 1147,
+ // 1146
+ 1145,
+ // 1144
+ 1143,
+ // 1142
+ 1141, 1140, 1139,
+ // 1138
+ 1137, 1136, 1135, 1134, 1133, 1132, 1131, 1130, 1129,
+ // 1128
+ 1127, 1126, 1125, 1124,
+ // 1123
+ 1122, 1121,
+ // 1113-1120
+ 1112,
+ // 1110-1111
+ 1109, 1108, 1107,
+ // 1105-1106
+ 1104,
+ // 1103
+ 1102, 1101,
+ // 1099-1100
+ 1098,
+ // 1096-1097
+ 1095,
+ // 1093-1094
+ 1092, 1091,
+ // 1087-1090
+ 1086, 1085,
+ // 1084
+ 1083,
+ // 1082
+ 1081, 1080, 1079,
+ // 1078
+ 1077, 1076,
+ // 1075
+ 1074, 1073, 1072, 1071, 1070, 1069, 1068,
+ // 1067
+ 1066, 1065,
+ // 1064
+ 1063,
+ // 1060-1062
+ 1059,
+ // 1058
+ 1057, 1056,
+ // 1054-1055
+ 1053, 1052,
+ // 1050-1051
+ 1049, 1048,
+ // 1047
+ 1046, 1045,
+ // 1043-1044
+ 1042, 1041,
+ // 1034-1040
+ 1033, 1032,
+ // 1031
+ 1030,
+ // 1029
+ 1028, 1027, 1026,
+ // 1024-1025
+ 1023, 1022, 1021, 1020, 1019, 1018, 1017,
+ // 1016
+ 1015,
+ // 1014
+ 1013,
+ // 1012
+ 1011, 1010, 1009, 1008, 1007, 1006, 1005,
+ // 1004
+ 1003,
+ // 1002
+ 1001, 1000, 999, 998, 997, 996, 995,
+ // 994
+ 993,
+ // 992
+ 991, 990,
+ // 988-989
+ 987, 986,
+ // 985
+ 984, 983, 982, 981,
+ // 979-980
+ 978, 977,
+ // 973-976
+ 972, 971, 970,
+ // 969
+ 968, 967,
+ // 966
+ 965,
+ // 964
+ 963, 962, 961, 960, 959, 958, 957, 956,
+ // 955
+ 954, 953,
+ // 952
+ 951, 950,
+ // 949
+ 948, 947, 946, 945,
+ // 943-944
+ 942, 941, 940,
+ // 939
+ 938,
+ // 937
+ 936, 935, 934,
+ // 931-933
+ 930, 929,
+ // 928
+ 927, 926,
+ // 925
+ 924, 923, 922, 921, 920, 919, 918, 917,
+ // 916
+ 915, 914, 913,
+ // 912
+ 911, 910,
+ // 909
+ 908,
+ // 907
+ 906, 905,
+ // 904
+ 903, 902,
+ // 901
+ 900, 899, 898, 897, 896, 895, 894,
+ // 893
+ 892, 891, 890, 889, 888,
+ // 887
+ 886,
+ // 885
+ 884, 883,
+ // 882
+ 881, 880,
+ // 878-879
+ 877, 876, 875, 874, 873,
+ // 871-872
+ 870, 869,
+ // 868
+ 867, 866, 865, 864,
+ // 863
+ 862,
+ // 861
+ 860,
+ // 859
+ 858,
+ // 856-857
+ 855,
+ // 854
+ 853,
+ // 850-852
+ 849,
+ // 847-848
+ 846,
+ // 843-845
+ 842, 841, 840, 839,
+ // 836-838
+ 835,
+ // 834
+ 833, 832, 831, 830, 829,
+ // 828
+ 827, 826, 825, 824, 823, 822, 821, 820,
+ // 817-819
+ 816,
+ // 815
+ 814,
+ // 813
+ 812, 811, 810, 809,
+ // 807-808
+ 806, 805, 804, 803, 802,
+ // 800-801
+ 799, 798, 797, 796, 795, 794,
+ // 793
+ 792, 791,
+ // 790
+ 789,
+ // 787-788
+ 786, 785,
+ // 784
+ 783, 782, 781,
+ // 780
+ 779, 778, 777, 776, 775, 774, 773, 772, 771, 770, 769,
+ // 768
+ 767, 766, 765, 764,
+ // 763
+ 762, 761, 760, 759, 758,
+ // 757
+ 756, 755, 754, 753, 752,
+ // 750-751
+ 749, 748,
+ // 747
+ 746, 745, 744, 743, 742, 741, 740, 739, 738,
+ // 736-737
+ 735, 734, 733,
+ // 732
+ 731, 730, 729, 728, 727,
+ // 726
+ 725,
+ // 722-724
+ 721, 720, 719,
+ // 718
+ 717, 716,
+ // 714-715
+ 713,
+ // 709-712
+ 708, 707,
+ // 706
+ 705, 704,
+ // 700-703
+ 699, 698,
+ // 696-697
+ 695, 694,
+ // 693
+ 692,
+ // 691
+ 690, 689,
+ // 687-688
+ 686,
+ // 685
+ 684, 683,
+ // 680-682
+ 679, 678, 677,
+ // 673-676
+ 672,
+ // 668-671
+ 667, 666,
+ // 664-665
+ 663, 662, 661,
+ // 659-660
+ 658,
+ // 656-657
+ 655, 654, 653, 652, 651, 650, 649, 648, 647,
+ // 646
+ 645, 644,
+ // 643
+ 642, 641,
+ // 639-640
+ 638,
+ // 637
+ 636, 635, 634, 633, 632, 631, 630, 629,
+ // 628
+ 627,
+ // 622-626
+ 621,
+ // 620
+ 619, 618, 617, 616, 615,
+ // 613-614
+ 612,
+ // 611
+ 610, 609,
+ // 606-608
+ 605,
+ // 604
+ 603, 602, 601,
+ // 600
+ 599, 598,
+ // 597
+ 596,
+ // 595
+ 594, 593, 592, 591,
+ // 589-590
+ 588,
+ // 587
+ 586, 585,
+ // 584
+ 583, 582,
+ // 581
+ 580, 579,
+ // 578
+ 577,
+ // 576
+ 575, 574, 573, 572,
+ // 570-571
+ 569, 568, 567, 566, 565,
+ // 563-564
+ 562, 561,
+ // 559-560
+ 558, 557, 556, 555, 554, 553, 552, 551, 550, 549,
+ // 548
+ 547, 546,
+ // 545
+ 544, 543,
+ // 541-542
+ 540,
+ // 539
+ 538, 537, 536,
+ // 535
+ 534,
+ // 533
+ 532, 531, 530, 529, 528,
+ // 527
+ 526, 525, 524,
+ // 519-523
+ 518, 517, 516,
+ // 513-515
+ 512, 511,
+ // 508-510
+ 507, 506, 505, 504, 503,
+ // 500-502
+ 499, 498,
+ // 497
+ 496, 495, 494, 493, 492, 491, 490, 489, 488, 487, 486, 485, 484, 483,
+ // 481-482
+ 480, 479, 478, 477, 476,
+ // 473-475
+ 472,
+ // 470-471
+ 469,
+ // 468
+ 467, 466, 465, 464, 463,
+ // 461-462
+ 460,
+ // 459
+ 458,
+ // 457
+ 456,
+ // 455
+ 454, 453,
+ // 452
+ 451,
+ // 450
+ 449,
+ // 448
+ 447, 446,
+ // 445
+ 444, 443, 442, 441, 440, 439, 438,
+ // 437
+ 436, 435,
+ // 434
+ 433, 432,
+ // 431
+ 430,
+ // 429
+ 428, 427, 426, 425, 424, 423,
+ // 422
+ 421,
+ // 420
+ 419, 418,
+ // 417
+ 416, 415, 414, 413, 412, 411, 410, 409,
+ // 408
+ 407, 406,
+ // 403-405
+ 402, 401,
+ // 400
+ 399,
+ // 398
+ 397, 396, 395, 394,
+ // 391-393
+ 390, 389, 388,
+ // 387
+ 386,
+ // 384-385
+ 383, 382, 381, 380,
+ // 376-379
+ 375, 374,
+ // 373
+ 372, 371,
+ // 368-370
+ 367, 366, 365, 364, 363, 362, 361,
+ // 360
+ 359,
+ // 358
+ 357,
+ // 356
+ 355, 354,
+ // 352-353
+ 351,
+ // 349-350
+ 348,
+ // 347
+ 346,
+ // 345
+ 344, 343,
+ // 342
+ 341, 340,
+ // 336-339
+ 335, 334,
+ // 333
+ 332,
+ // 330-331
+ 329, 328,
+ // 327
+ 326, 325, 324, 323, 322, 321, 320, 319, 318, 317, 316, 315,
+ // 314
+ 313, 312, 311, 310,
+ // 308-309
+ 307, 306, 305, 304, 303, 302, 301, 300, 299, 298, 297, 296, 295, 294, 293, 292,
+ 291, 290, 289,
+ // 288
+ 287,
+ // 286
+ 285,
+ // 284
+ 283,
+ // 282
+ 281, 280, 279, 278, 277, 276, 275,
+ // 274
+ 273, 272,
+ // 270-271
+ 269, 268, 267, 266, 265,
+ // 263-264
+ 262,
+ // 261
+ 260, 259, 258,
+ // 255-257
+ 254, 253,
+ // 252
+ 251, 250, 249, 248, 247, 246, 245, 244, 243, 242, 241, 240, 239, 238, 237, 236,
+ 235, 234,
+ // 233
+ 232, 231, 230,
+ // 229
+ 228, 227,
+ // 226
+ 225,
+ // 221-224
+ 220,
+ // 219
+ 218, 217, 216, 215, 214, 213, 212, 211, 210, 209, 208, 207,
+ // 206
+ 205, 204, 203,
+ // 200-202
+ 199,
+ // 197-198
+ 196, 195, 194,
+ // 193
+ 192,
+ // 191
+ 190,
+ // 189
+ 188, 187, 186,
+ // 185
+ 184, 183, 182, 181, 180,
+ // 179
+ 178, 177, 176, 175, 174,
+ // 173
+ 172, 171, 170, 169, 168, 167, 166,
+ // 165
+ 164,
+ // 163
+ 162, 161,
+ // 160
+ 159, 158, 157, 156, 155, 154,
+ // 153
+ 152,
+ // 151
+ 150, 149,
+ // 148
+ 147, 146, 145, 144, 143, 142, 141, 140,
+ // 139
+ 138, 137,
+ // 136
+ 135,
+ // 133-134
+ 132, 131, 130, 129, 128, 127, 126,
+ // 122-125
+ 121, 120, 119, 118,
+ // 117
+ 116, 115, 114, 113, 112, 111, 110, 109, 108,
+ // 107
+ 106, 105,
+ // 104
+ 103, 102, 101, 100,
+ // 99
+ 98, 97,
+ // 94-96
+ 93, 92,
+ // 90-91
+ 89, 88, 87, 86, 85, 84, 83, 82, 81,
+ // 80
+ 79, 78, 77, 76, 75, 74, 73, 72,
+ // 69-71
+ 68, 67, 66, 65,
+ // 64
+ 63,
+ // 62
+ 61, 60,
+ // 59
+ 58,
+ // 57
+ 56,
+ // 55
+ 54,
+ // 50-53
+ 49, 48, 47, 46,
+ // 44-45
+ 43, 42,
+ // 41
+ 40, 39, 38, 37, 36, 35,
+ // 34
+ 33,
+ // 32
+ 31,
+ // 26-30
+ 25,
+ // 23-24
+ 22, 21,
+ // 19-20
+ 18,
+ // 17
+ 16, 15, 14, 13, 12, 11, 10, 9,
+ // 8
+ 7,
+ // 5-6
+ 4, 3, 2, 1,
+ // 0
+ },
};
// clang-format on
@@ -2526,32 +4303,59 @@ bool has_nvim_version(const char *const version_str)
&& patch <= NVIM_VERSION_PATCH))));
}
+int min_vim_version(void)
+ FUNC_ATTR_PURE FUNC_ATTR_WARN_UNUSED_RESULT
+{
+ return vim_versions[0];
+}
+
int highest_patch(void)
+ FUNC_ATTR_PURE FUNC_ATTR_WARN_UNUSED_RESULT
{
// this relies on the highest patch number to be the first entry
- return included_patches[0];
+ return included_patchsets[0][0];
}
/// Checks whether a Vim patch has been included.
///
/// @param n Patch number.
+/// @param major_minor_version (major * 100 + minor) Vim version or 0 (alias to min_vim_version())
///
/// @return true if patch `n` has been included.
-bool has_vim_patch(int n)
+bool has_vim_patch(int n, int major_minor_version)
FUNC_ATTR_PURE FUNC_ATTR_WARN_UNUSED_RESULT
{
+ int v_i;
+ if (major_minor_version > 0) {
+ if (major_minor_version < vim_versions[0]) {
+ return true;
+ }
+ const size_t size = ARRAY_SIZE(vim_versions);
+ v_i = -1;
+ for (size_t i = 0; i < size; i++) {
+ if (vim_versions[i] == major_minor_version) {
+ v_i = (int)i;
+ break;
+ }
+ }
+ if (v_i == -1) {
+ return false;
+ }
+ } else {
+ v_i = 0;
+ }
// Perform a binary search.
int l = 0;
- int h = (int)(ARRAY_SIZE(included_patches)) - 1;
+ int h = num_patches[v_i] - 1;
while (true) {
const int m = (l + h) / 2;
- if (included_patches[m] == n) {
+ if (included_patchsets[v_i][m] == n) {
return true;
}
if (l == h) {
break;
}
- if (included_patches[m] < n) {
+ if (included_patchsets[v_i][m] < n) {
h = m;
} else {
l = m + 1;
@@ -2694,6 +4498,16 @@ void list_version(void)
list_lua_version();
if (p_verbose > 0) {
+ msg_putchar('\n');
+ msg_puts("Vim versions: ");
+
+ for (size_t i = 0; i < ARRAY_SIZE(vim_versions); i++) {
+ if (i) {
+ msg_puts(", ");
+ }
+ msg_puts(Versions[i]);
+ }
+
#ifndef NDEBUG
msg_putchar('\n');
msg_puts(version_cflags);
diff --git a/src/nvim/version.h b/src/nvim/version.h
@@ -5,26 +5,10 @@
#include "nvim/macros_defs.h"
// defined in version.c
-extern char *Version;
+extern char *Versions[];
extern char *longVersion;
#ifndef NDEBUG
extern char *version_cflags;
#endif
-//
-// Vim version number, name, etc. Patchlevel is defined in version.c.
-//
-
-// Values that change for a new release
-#define VIM_VERSION_MAJOR 8
-#define VIM_VERSION_MINOR 1
-
-// Values based on the above
-#define VIM_VERSION_MAJOR_STR STR(VIM_VERSION_MAJOR)
-#define VIM_VERSION_MINOR_STR STR(VIM_VERSION_MINOR)
-#define VIM_VERSION_100 (VIM_VERSION_MAJOR * 100 + VIM_VERSION_MINOR)
-
-// swap file compatibility (max. length is 6 chars)
-#define VIM_VERSION_SHORT VIM_VERSION_MAJOR_STR "." VIM_VERSION_MINOR_STR
-
#include "version.h.generated.h"
diff --git a/test/functional/vimscript/has_spec.lua b/test/functional/vimscript/has_spec.lua
@@ -104,4 +104,39 @@ describe('has()', function()
fn.has('python3') -- use a call whose implementation shells out
eq(73, fn.eval('v:shell_error'))
end)
+
+ it('"patch[0-9]\\+"', function()
+ eq(1, fn.has('patch0'))
+ eq(1, fn.has('patch1'))
+ end)
+
+ it('"patch-x.y.z"', function()
+ -- versions older than current v:version always succeed
+ -- unless minor version has 2+ digits
+ eq(1, fn.has('patch-7.4.0'))
+ eq(0, fn.has('patch-7.40.0'))
+ eq(1, fn.has('patch-8.0.0'))
+ eq(0, fn.has('patch-8.00.0'))
+
+ eq(1, fn.has('patch-8.1.0'))
+ eq(1, fn.has('patch-8.1.1'))
+ eq(1, fn.has('patch-8.1.0001'))
+ eq(1, fn.has('patch-8.1.1939'))
+ eq(1, fn.has('patch-8.1.2424'))
+
+ eq(0, fn.has('patch-8.2.0'))
+ eq(1, fn.has('patch-8.2.1'))
+ eq(1, fn.has('patch-8.2.2999'))
+ eq(1, fn.has('patch-8.2.5171'))
+
+ eq(0, fn.has('patch-9.0.0'))
+ eq(1, fn.has('patch-9.0.1'))
+ eq(1, fn.has('patch-9.0.998'))
+ eq(1, fn.has('patch-9.0.2190'))
+
+ eq(0, fn.has('patch-9.1.0'))
+ eq(1, fn.has('patch-9.1.1'))
+ eq(1, fn.has('patch-9.1.690'))
+ eq(1, fn.has('patch-9.1.1934'))
+ end)
end)