r4203 drop the barcode column
[racktables] / wwwroot / install.php
CommitLineData
0e7f2155 1<?php
5b4523dc 2
d3372430
DO
3// This script is intended for execution through a web-browser, e.g.:
4// https://example.com/racktables/install.php
5// See README file for more information.
5b4523dc 6
0e7f2155
DO
7$stepfunc[1] = 'not_already_installed';
8$stepfunc[2] = 'platform_is_ok';
9$stepfunc[3] = 'init_config';
96e102b2
DO
10$stepfunc[4] = 'init_database_static';
11$stepfunc[5] = 'init_database_dynamic';
12$stepfunc[6] = 'congrats';
13$dbxlink = NULL;
0e7f2155
DO
14
15if (isset ($_REQUEST['step']))
16 $step = $_REQUEST['step'];
17else
18 $step = 1;
19
20if ($step > count ($stepfunc))
21{
790a60e8
DO
22 $root = (empty($_SERVER['HTTPS']) or $_SERVER['HTTPS'] == 'off') ? 'http://' : 'https://';
23 $root .= isset ($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : ($_SERVER['SERVER_NAME'].($_SERVER['SERVER_PORT']=='80'?'':$_SERVER['SERVER_PORT']));
24 // "Since PHP 4.3.0, you will often get a slash or a dot back from
25 // dirname() in situations where the older functionality would have given
26 // you the empty string."
27 // "On Windows, both slash (/) and backslash (\) are used as directory
28 // separator character."
29 $root .= strtr (dirname ($_SERVER['PHP_SELF']), '\\', '/');
30 if (substr ($root, -1) != '/')
31 $root .= '/';
32 header ("Location: ${root}");
0e7f2155
DO
33 exit;
34}
35$title = "RackTables installation: step ${step} of " . count ($stepfunc);
3fb336f6 36require_once ('inc/dictionary.php');
878512c6 37header ('Content-Type: text/html; charset=UTF-8');
0e7f2155 38?>
f48dc2cc
DO
39<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
40<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
0e7f2155 41<head><title><?php echo $title; ?></title>
0d505e5c 42<link rel=stylesheet type='text/css' href='css/pi.css' />
f48dc2cc
DO
43</head>
44<body>
0e7f2155 45<center>
f48dc2cc 46<?php
f92287f4
DO
47echo "<h1>${title}</h1><p>";
48
49echo "</p><form method=post>\n";
50$testres = $stepfunc[$step] ();
51if ($testres)
52{
53 $next_step = $step + 1;
ae067ef3 54 echo "<br><input type=submit value='proceed'>";
f92287f4
DO
55}
56else
57{
58 $next_step = $step;
ae067ef3 59 echo "<br><input type=submit value='retry'>";
f92287f4
DO
60}
61echo "<input type=hidden name=step value='${next_step}'>\n";
62
63?>
64</form>
65</center>
66</body>
67</html>
68
69<?php
0e7f2155
DO
70// Check if the software is already installed.
71function not_already_installed()
f48dc2cc 72{
80138748 73 @include ('inc/secret.php');
f92287f4
DO
74 if (isset ($pdo_dsn))
75 {
76 echo 'Your configuration file exists and seems to hold necessary data already.<br>';
77 return FALSE;
78 }
79 else
80 {
43f06d53 81 echo 'There seem to be no existing installation here, I am going to setup one now.<br>';
f92287f4
DO
82 return TRUE;
83 }
f48dc2cc
DO
84}
85
0e7f2155
DO
86// Check that we can write to configuration file.
87// If so, ask for DB connection paramaters and test
88// the connection. Neither save the parameters nor allow
89// going further until we succeed with the given
90// credentials.
91function init_config ()
92{
80138748 93 if (!is_writable ('inc/secret.php'))
f92287f4 94 {
80138748 95 echo "The inc/secret.php file is not writable by web-server. Make sure it is.";
e826d3d8 96 echo "The following commands should suffice:<pre>touch inc/secret.php; chmod 666 inc/secret.php</pre>";
9b16b1f1 97 echo 'Fedora Linux with SELinux may require this file to be owned by specific user (apache) and/or executing "setenforce 0" for the time of installation. ';
b836a843 98 echo 'SELinux may be turned back on with "setenforce 1" command.<br>';
f92287f4
DO
99 return FALSE;
100 }
101 if
102 (
103 !isset ($_REQUEST['save_config']) or
104 empty ($_REQUEST['mysql_host']) or
105 empty ($_REQUEST['mysql_db']) or
106 empty ($_REQUEST['mysql_username']) or
107 empty ($_REQUEST['mysql_password'])
108 )
109 {
110 echo "<input type=hidden name=save_config value=1>\n";
ae067ef3 111 echo '<h3>Hint on setting up a database:</h3><pre>';
d6958fdb
DO
112 echo "mysql&gt;\nCREATE DATABASE racktables_db CHARACTER SET utf8 COLLATE utf8_general_ci;\n";
113 echo "GRANT ALL PRIVILEGES ON racktables_db.* TO racktables_user@localhost IDENTIFIED BY 'MY_SECRET_PASSWORD';\n</pre>";
f92287f4
DO
114 echo '<table>';
115 echo "<tr><td><label for=mysql_host>MySQL host:</label></td>";
116 echo "<td><input type=text name=mysql_host id=mysql_host value=localhost></td></tr>\n";
117 echo "<tr><td><label for=mysql_host>database:</label></td>";
ae067ef3 118 echo "<td><input type=text name=mysql_db id=mysql_db value=racktables_db></td></tr>\n";
f92287f4 119 echo "<tr><td><label for=mysql_username>username:</label></td>";
ae067ef3 120 echo "<td><input type=text name=mysql_username value=racktables_user></td></tr>\n";
f92287f4
DO
121 echo "<tr><td><label for=mysql_password>password:</label></td>";
122 echo "<td><input type=password name=mysql_password></td></tr>\n";
123 echo '</table>';
124 return FALSE;
125 }
126 $pdo_dsn = 'mysql:host=' . $_REQUEST['mysql_host'] . ';dbname=' . $_REQUEST['mysql_db'];
127 try
128 {
129 $dbxlink = new PDO ($pdo_dsn, $_REQUEST['mysql_username'], $_REQUEST['mysql_password']);
130 }
131 catch (PDOException $e)
132 {
133 echo "<input type=hidden name=save_config value=1>\n";
134 echo '<table>';
135 echo "<tr><td><label for=mysql_host>MySQL host:</label></td>";
136 echo "<td><input type=text name=mysql_host id=mysql_host value='" . $_REQUEST['mysql_host'] . "'></td></tr>\n";
137 echo "<tr><td><label for=mysql_host>database:</label></td>";
138 echo "<td><input type=text name=mysql_db id=mysql_db value='" . $_REQUEST['mysql_db'] . "'></td></tr>\n";
139 echo "<tr><td><label for=mysql_username>username:</label></td>";
140 echo "<td><input type=text name=mysql_username value='" . $_REQUEST['mysql_username'] . "'></td></tr>\n";
141 echo "<tr><td><label for=mysql_password>password:</label></td>";
142 echo "<td><input type=password name=mysql_password value='" . $_REQUEST['mysql_password'] . "'></td></tr>\n";
143 echo "<tr><td colspan=2>The above parameters did not work. Check and try again.</td></tr>\n";
144 echo '</table>';
145 return FALSE;
146 }
e1ae3fb4 147
80138748 148 $conf = fopen ('inc/secret.php', 'w+');
f92287f4
DO
149 if ($conf === FALSE)
150 {
80138748 151 echo "Error: failed to open inc/secret.php for writing";
f92287f4
DO
152 return FALSE;
153 }
154 fwrite ($conf, "<?php\n/* This file has been generated automatically by RackTables installer.\n");
155 fwrite ($conf, " * you shouldn't normally edit it unless your database setup has changed.\n");
156 fwrite ($conf, " */\n");
157 fwrite ($conf, "\$pdo_dsn = '${pdo_dsn}';\n");
158 fwrite ($conf, "\$db_username = '" . $_REQUEST['mysql_username'] . "';\n");
e0dcbf1e 159 fwrite ($conf, "\$db_password = '" . $_REQUEST['mysql_password'] . "';\n\n");
2a622048
DO
160 fwrite ($conf, <<<ENDOFTEXT
161// Default setting is to authenticate users locally, but it is possible to
162// employ existing LDAP or Apache userbase. Uncommenting below two lines MAY
163// help in switching authentication to LDAP completely.
ad592f37 164// More info: http://sourceforge.net/apps/mediawiki/racktables/index.php?title=RackTablesAdminGuide
2a622048
DO
165#\$user_auth_src = 'ldap';
166#\$require_local_account = FALSE;
167
168// This is only necessary for 'ldap' authentication source
169\$LDAP_options = array
170(
171 'server' => 'some.server',
172 'domain' => 'some.domain',
173# 'search_dn' => 'ou=people,O=YourCompany',
174 'search_attr' => 'uid',
175# 'displayname_attrs' => 'givenname familyname',
176
177// LDAP cache, values in seconds. Refresh, retry and expiry values are
178// treated exactly as those for DNS SOA record. Example values 300-15-600:
179// unconditionally remeber successful auth for 5 minutes, after that still
180// permit user access, but try to revalidate username and password on the
181// server (not more often, than once in 15 seconds). After 10 minutes of
182// unsuccessful retries give up and deny access, so someone goes to fix
183// LDAP server.
060896e3
DO
184//
185// Like in DNS, the following condition must be always met:
186// cache_retry <= cache_refresh <= cache_expiry
187//
188// To disable LDAP cache completely, set cache_refresh, cache_retry and
189// cache_expiry to 0.
2a622048
DO
190 'cache_refresh' => 300,
191 'cache_retry' => 15,
192 'cache_expiry' => 600,
060896e3
DO
193// Uncomment line below to work around ActiveDirectory+PHP problem to perform
194// search right in the base DN (not in one of OUs/CNs below).
195# 'options' => array (LDAP_OPT_PROTOCOL_VERSION => 3, LDAP_OPT_REFERRALS => 0),
2a622048
DO
196);
197
198
199ENDOFTEXT
200);
f92287f4
DO
201 fwrite ($conf, "?>\n");
202 fclose ($conf);
203 echo "The configuration file has been written successfully.<br>";
0e7f2155 204 return TRUE;
f48dc2cc
DO
205}
206
96e102b2
DO
207function connect_to_db ()
208{
80138748 209 require ('inc/secret.php');
96e102b2
DO
210 global $dbxlink;
211 try
212 {
213 $dbxlink = new PDO ($pdo_dsn, $db_username, $db_password);
214 }
215 catch (PDOException $e)
216 {
217 die ('Error connecting to the database');
218 }
219}
220
221function init_database_static ()
0e7f2155 222{
01539ac3
DO
223 connect_to_db ();
224 global $dbxlink;
485cf8a8
DO
225 if (!isInnoDBSupported())
226 {
227 echo 'InnoDB test failed! Please configure MySQL server properly and retry.';
228 return FALSE;
229 }
01539ac3
DO
230 $result = $dbxlink->query ('show tables');
231 $tables = $result->fetchAll (PDO::FETCH_NUM);
232 $result->closeCursor();
233 unset ($result);
234 if (count ($tables))
235 {
236 echo 'Your database is already holding ' . count ($tables);
237 echo ' tables, so I will stop here and let you check it yourself.<br>';
238 echo 'There is some important data there probably.<br>';
239 return FALSE;
240 }
0e7f2155 241 echo 'Initializing the database...<br>';
96e102b2 242 echo '<table border=1>';
aa004b1a 243 echo "<tr><th>section</th><th>queries</th><th>errors</th></tr>";
b2bdfd89 244 $errlist = array();
3fb336f6 245 foreach (array ('structure', 'dictbase') as $part)
f92287f4 246 {
aa004b1a 247 echo "<tr><td>${part}</td>";
b2bdfd89 248 $nq = $nerrs = 0;
aa004b1a 249 foreach (preg_split ("/;\s*\n/", get_pseudo_file ($part)) as $query)
96e102b2 250 {
5fe42ae4 251 $query = trim($query);
aa004b1a 252 if (empty ($query) or '--' == substr ($query, 0, 2))
96e102b2
DO
253 continue;
254 $nq++;
b2bdfd89
DO
255 if ($dbxlink->exec ($query) === FALSE)
256 {
257 $nerrs++;
258 $errlist[] = $query;
259 }
96e102b2 260 }
b2bdfd89 261 echo "<td>${nq}</td><td>${nerrs}</td></tr>\n";
f92287f4 262 }
3fb336f6 263 // (re)load dictionary by pure PHP means w/o any external file
20ba7f38 264 echo "<tr><td>dictionary</td>";
3fb336f6 265 $nq = $nerrs = 0;
3fb336f6 266 $dictq = array();
ca3d68bd
DO
267 foreach (reloadDictionary() as $query)
268 {
269 $nq++;
270 if ($dbxlink->exec ($query) === FALSE)
3fb336f6 271 {
ca3d68bd
DO
272 $nerrs++;
273 $errlist[] = $query;
3fb336f6 274 }
ca3d68bd 275 }
3fb336f6
DO
276 echo "<td>${nq}</td><td>${nerrs}</td></tr>\n";
277
96e102b2 278 echo '</table>';
b2bdfd89
DO
279 if (count ($errlist))
280 {
281 echo '<pre>The following queries failed:\n';
282 foreach ($errlist as $q)
283 echo "${q}\n\n";
284 echo '</pre>';
285 return FALSE;
286 }
0e7f2155
DO
287 return TRUE;
288}
f48dc2cc 289
96e102b2
DO
290function init_database_dynamic ()
291{
292 connect_to_db();
293 global $dbxlink;
43f06d53 294 if (!isset ($_REQUEST['password']) or empty ($_REQUEST['password']))
96e102b2
DO
295 {
296 $result = $dbxlink->query ('select count(user_id) from UserAccount where user_id = 1');
297 $row = $result->fetch (PDO::FETCH_NUM);
298 $nrecs = $row[0];
299 $result->closeCursor();
300 if (!$nrecs)
301 {
302 echo '<table border=1>';
303 echo '<caption>Administrator password not set</caption>';
304 echo '<tr><td><input type=password name=password></td></tr>';
305 echo '</table>';
306 }
43f06d53 307 return FALSE;
96e102b2
DO
308 }
309 else
310 {
93bdb7ba
DO
311 // Never send cleartext password over the wire.
312 $hash = sha1 ($_REQUEST['password']);
79b8ad1e 313 $query = "INSERT INTO `UserAccount` (`user_id`, `user_name`, `user_password_hash`, `user_realname`) " .
93bdb7ba 314 "VALUES (1,'admin','${hash}','RackTables Administrator')";
43f06d53
DO
315 $result = $dbxlink->exec ($query);
316 echo "Administrator password has been set successfully.<br>";
317 return TRUE;
96e102b2 318 }
96e102b2
DO
319}
320
0e7f2155 321function congrats ()
f48dc2cc 322{
01539ac3 323 echo 'Congratulations! RackTables installation is complete. After pressing Proceed you will ';
ad592f37
DO
324 echo 'enter the system. Authenticate with <strong>admin</strong> username.<br>RackTables project has a ';
325 echo "<a href='http://sourceforge.net/apps/mediawiki/racktables/index.php?title=RackTablesAdminGuide'>";
326 echo "wiki</a> and a ";
327 echo "<a href='http://www.freelists.org/list/racktables-users'>mailing list</a> for users. Have fun.<br>";
0e7f2155 328 return TRUE;
f48dc2cc
DO
329}
330
aa004b1a
DO
331function get_pseudo_file ($name)
332{
333 switch ($name)
334 {
335 case 'structure':
336 return <<<END_OF_FILE
337alter database character set utf8;
338set names 'utf8';
339SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
340
341CREATE TABLE `Atom` (
342 `molecule_id` int(10) unsigned default NULL,
343 `rack_id` int(10) unsigned default NULL,
344 `unit_no` int(10) unsigned default NULL,
345 `atom` enum('front','interior','rear') default NULL
346) ENGINE=InnoDB;
347
348CREATE TABLE `Attribute` (
349 `id` int(10) unsigned NOT NULL auto_increment,
350 `type` enum('string','uint','float','dict') default NULL,
351 `name` char(64) default NULL,
352 PRIMARY KEY (`id`),
353 UNIQUE KEY `name` (`name`)
354) ENGINE=MyISAM AUTO_INCREMENT=10000;
355
356CREATE TABLE `AttributeMap` (
357 `objtype_id` int(10) unsigned NOT NULL default '1',
358 `attr_id` int(10) unsigned NOT NULL default '1',
359 `chapter_id` int(10) unsigned default NULL,
360 UNIQUE KEY `objtype_id` (`objtype_id`,`attr_id`)
361) ENGINE=InnoDB;
362
363CREATE TABLE `AttributeValue` (
364 `object_id` int(10) unsigned default NULL,
365 `attr_id` int(10) unsigned default NULL,
366 `string_value` char(128) default NULL,
367 `uint_value` int(10) unsigned default NULL,
368 `float_value` float default NULL,
369 UNIQUE KEY `object_id` (`object_id`,`attr_id`),
370 CONSTRAINT `AttributeValue-FK-object_id` FOREIGN KEY (`object_id`) REFERENCES `RackObject` (`id`) ON DELETE CASCADE
371) ENGINE=InnoDB;
372
373CREATE TABLE `CachedPAV` (
374 `object_id` int(10) unsigned NOT NULL,
375 `port_name` char(255) NOT NULL,
376 `vlan_id` int(10) unsigned NOT NULL default '0',
377 PRIMARY KEY (`object_id`,`port_name`,`vlan_id`),
378 KEY `vlan_id` (`vlan_id`),
379 CONSTRAINT `CachedPAV-FK-object-port` FOREIGN KEY (`object_id`, `port_name`) REFERENCES `CachedPVM` (`object_id`, `port_name`) ON DELETE CASCADE,
380 CONSTRAINT `CachedPAV-FK-vlan_id` FOREIGN KEY (`vlan_id`) REFERENCES `VLANValidID` (`vlan_id`)
381) ENGINE=InnoDB;
382
383CREATE TABLE `CachedPNV` (
384 `object_id` int(10) unsigned NOT NULL,
385 `port_name` char(255) NOT NULL,
386 `vlan_id` int(10) unsigned NOT NULL default '0',
387 PRIMARY KEY (`object_id`,`port_name`,`vlan_id`),
388 UNIQUE KEY `port_id` (`object_id`,`port_name`),
389 CONSTRAINT `CachedPNV-FK-compound` FOREIGN KEY (`object_id`, `port_name`, `vlan_id`) REFERENCES `CachedPAV` (`object_id`, `port_name`, `vlan_id`) ON DELETE CASCADE
390) ENGINE=InnoDB;
391
392CREATE TABLE `CachedPVM` (
393 `object_id` int(10) unsigned NOT NULL,
394 `port_name` char(255) NOT NULL,
395 `vlan_mode` enum('access','trunk') NOT NULL default 'access',
396 PRIMARY KEY (`object_id`,`port_name`),
397 CONSTRAINT `CachedPVM-FK-object_id` FOREIGN KEY (`object_id`) REFERENCES `RackObject` (`id`) ON DELETE CASCADE
398) ENGINE=InnoDB;
399
400CREATE TABLE `Chapter` (
401 `id` int(10) unsigned NOT NULL auto_increment,
402 `sticky` enum('yes','no') default 'no',
403 `name` char(128) NOT NULL,
404 PRIMARY KEY (`id`),
405 UNIQUE KEY `name` (`name`)
406) ENGINE=MyISAM AUTO_INCREMENT=10000;
407
408CREATE TABLE `Config` (
409 `varname` char(32) NOT NULL,
410 `varvalue` char(255) NOT NULL,
411 `vartype` enum('string','uint') NOT NULL default 'string',
412 `emptyok` enum('yes','no') NOT NULL default 'no',
413 `is_hidden` enum('yes','no') NOT NULL default 'yes',
414 `is_userdefined` enum('yes','no') NOT NULL default 'no',
415 `description` text,
416 PRIMARY KEY (`varname`)
417) ENGINE=InnoDB;
418
419CREATE TABLE `Dictionary` (
420 `chapter_id` int(10) unsigned NOT NULL,
421 `dict_key` int(10) unsigned NOT NULL auto_increment,
422 `dict_value` char(255) default NULL,
423 PRIMARY KEY (`dict_key`),
424 UNIQUE KEY `chap_to_val` (`chapter_id`,`dict_value`)
425) ENGINE=MyISAM AUTO_INCREMENT=50000;
426
0682218d
AD
427CREATE TABLE `EntityLink` (
428 `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
429 `parent_entity_type` enum('ipv4net','ipv4rspool','ipv4vs','ipv6net','object','rack','user') NOT NULL,
430 `parent_entity_id` int(10) unsigned NOT NULL,
431 `child_entity_type` enum('file','object') NOT NULL,
432 `child_entity_id` int(10) unsigned NOT NULL,
433 PRIMARY KEY (`id`),
434 UNIQUE KEY `EntityLink-unique` (`parent_entity_type`,`parent_entity_id`,`child_entity_type`,`child_entity_id`)
435) ENGINE=InnoDB;
436
aa004b1a
DO
437CREATE TABLE `File` (
438 `id` int(10) unsigned NOT NULL auto_increment,
439 `name` char(255) NOT NULL,
440 `type` char(255) NOT NULL,
441 `size` int(10) unsigned NOT NULL,
442 `ctime` datetime NOT NULL,
443 `mtime` datetime NOT NULL,
444 `atime` datetime NOT NULL,
445 `thumbnail` longblob,
446 `contents` longblob NOT NULL,
447 `comment` text,
448 PRIMARY KEY (`id`),
449 UNIQUE KEY `name` (`name`)
450) ENGINE=InnoDB;
451
452CREATE TABLE `FileLink` (
453 `id` int(10) unsigned NOT NULL auto_increment,
454 `file_id` int(10) unsigned NOT NULL,
455 `entity_type` enum('ipv4net','ipv4rspool','ipv4vs','object','rack','user','ipv6net') NOT NULL default 'object',
456 `entity_id` int(10) NOT NULL,
457 PRIMARY KEY (`id`),
458 KEY `FileLink-file_id` (`file_id`),
459 UNIQUE KEY `FileLink-unique` (`file_id`,`entity_type`,`entity_id`),
460 CONSTRAINT `FileLink-File_fkey` FOREIGN KEY (`file_id`) REFERENCES `File` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
461) ENGINE=InnoDB;
462
463CREATE TABLE `IPv4Address` (
464 `ip` int(10) unsigned NOT NULL default '0',
465 `name` char(255) NOT NULL default '',
466 `reserved` enum('yes','no') default NULL,
467 PRIMARY KEY (`ip`)
468) ENGINE=InnoDB;
469
470CREATE TABLE `IPv4Allocation` (
471 `object_id` int(10) unsigned NOT NULL default '0',
472 `ip` int(10) unsigned NOT NULL default '0',
473 `name` char(255) NOT NULL default '',
474 `type` enum('regular','shared','virtual','router') default NULL,
475 PRIMARY KEY (`object_id`,`ip`),
476 CONSTRAINT `IPv4Allocation-FK-object_id` FOREIGN KEY (`object_id`) REFERENCES `RackObject` (`id`) ON DELETE CASCADE
477) ENGINE=InnoDB;
478
479CREATE TABLE `IPv4LB` (
480 `object_id` int(10) unsigned default NULL,
481 `rspool_id` int(10) unsigned default NULL,
482 `vs_id` int(10) unsigned default NULL,
483 `prio` int(10) unsigned default NULL,
484 `vsconfig` text,
485 `rsconfig` text,
486 UNIQUE KEY `LB-VS` (`object_id`,`vs_id`),
487 KEY `IPv4LB-FK-rspool_id` (`rspool_id`),
488 KEY `IPv4LB-FK-vs_id` (`vs_id`),
489 CONSTRAINT `IPv4LB-FK-vs_id` FOREIGN KEY (`vs_id`) REFERENCES `IPv4VS` (`id`),
490 CONSTRAINT `IPv4LB-FK-object_id` FOREIGN KEY (`object_id`) REFERENCES `RackObject` (`id`),
491 CONSTRAINT `IPv4LB-FK-rspool_id` FOREIGN KEY (`rspool_id`) REFERENCES `IPv4RSPool` (`id`)
492) ENGINE=InnoDB;
493
494CREATE TABLE `IPv4NAT` (
495 `object_id` int(10) unsigned NOT NULL default '0',
496 `proto` enum('TCP','UDP') NOT NULL default 'TCP',
497 `localip` int(10) unsigned NOT NULL default '0',
498 `localport` smallint(5) unsigned NOT NULL default '0',
499 `remoteip` int(10) unsigned NOT NULL default '0',
500 `remoteport` smallint(5) unsigned NOT NULL default '0',
501 `description` char(255) default NULL,
502 PRIMARY KEY (`object_id`,`proto`,`localip`,`localport`,`remoteip`,`remoteport`),
503 KEY `localip` (`localip`),
504 KEY `remoteip` (`remoteip`),
505 KEY `object_id` (`object_id`),
506 CONSTRAINT `IPv4NAT-FK-object_id` FOREIGN KEY (`object_id`) REFERENCES `RackObject` (`id`)
507) ENGINE=InnoDB;
508
509CREATE TABLE `IPv4Network` (
510 `id` int(10) unsigned NOT NULL auto_increment,
511 `ip` int(10) unsigned NOT NULL default '0',
512 `mask` int(10) unsigned NOT NULL default '0',
513 `name` char(255) default NULL,
514 `comment` text,
515 PRIMARY KEY (`id`),
516 UNIQUE KEY `base-len` (`ip`,`mask`)
517) ENGINE=InnoDB;
518
519CREATE TABLE `IPv4RS` (
520 `id` int(10) unsigned NOT NULL auto_increment,
521 `inservice` enum('yes','no') NOT NULL default 'no',
522 `rsip` int(10) unsigned default NULL,
523 `rsport` smallint(5) unsigned default NULL,
524 `rspool_id` int(10) unsigned default NULL,
525 `rsconfig` text,
526 PRIMARY KEY (`id`),
527 UNIQUE KEY `pool-endpoint` (`rspool_id`,`rsip`,`rsport`),
528 CONSTRAINT `IPv4RS-FK` FOREIGN KEY (`rspool_id`) REFERENCES `IPv4RSPool` (`id`) ON DELETE CASCADE
529) ENGINE=InnoDB;
530
531CREATE TABLE `IPv4RSPool` (
532 `id` int(10) unsigned NOT NULL auto_increment,
533 `name` char(255) default NULL,
534 `vsconfig` text,
535 `rsconfig` text,
536 PRIMARY KEY (`id`)
537) ENGINE=InnoDB;
538
539CREATE TABLE `IPv4VS` (
540 `id` int(10) unsigned NOT NULL auto_increment,
541 `vip` int(10) unsigned default NULL,
542 `vport` smallint(5) unsigned default NULL,
543 `proto` enum('TCP','UDP') NOT NULL default 'TCP',
544 `name` char(255) default NULL,
545 `vsconfig` text,
546 `rsconfig` text,
547 PRIMARY KEY (`id`)
548) ENGINE=InnoDB;
549
550CREATE TABLE `IPv6Address` (
551 `ip` binary(16) NOT NULL,
552 `name` char(255) NOT NULL default '',
553 `reserved` enum('yes','no') default NULL,
554 PRIMARY KEY (`ip`)
555) ENGINE=InnoDB;
556
557CREATE TABLE `IPv6Allocation` (
558 `object_id` int(10) unsigned NOT NULL default '0',
559 `ip` binary(16) NOT NULL,
560 `name` char(255) NOT NULL default '',
561 `type` enum('regular','shared','virtual','router') default NULL,
562 PRIMARY KEY (`object_id`,`ip`),
563 CONSTRAINT `IPv6Allocation-FK-object_id` FOREIGN KEY (`object_id`) REFERENCES `RackObject` (`id`) ON DELETE CASCADE
564) ENGINE=InnoDB;
565
566CREATE TABLE `IPv6Network` (
567 `id` int(10) unsigned NOT NULL auto_increment,
568 `ip` binary(16) NOT NULL,
569 `mask` int(10) unsigned NOT NULL,
570 `last_ip` binary(16) NOT NULL,
571 `name` char(255) default NULL,
572 `comment` text,
573 PRIMARY KEY (`id`),
574 UNIQUE KEY `ip` (`ip`,`mask`)
575) ENGINE=InnoDB;
576
577CREATE TABLE `LDAPCache` (
578 `presented_username` char(64) NOT NULL,
579 `successful_hash` char(40) NOT NULL,
580 `first_success` timestamp NOT NULL default CURRENT_TIMESTAMP,
581 `last_retry` timestamp NOT NULL default '0000-00-00 00:00:00',
582 `displayed_name` char(128) default NULL,
583 `memberof` text,
584 UNIQUE KEY `presented_username` (`presented_username`),
585 KEY `scanidx` (`presented_username`,`successful_hash`)
586) ENGINE=InnoDB;
587
588CREATE TABLE `Link` (
589 `porta` int(10) unsigned NOT NULL default '0',
590 `portb` int(10) unsigned NOT NULL default '0',
591 `cable` char(64) DEFAULT NULL,
592 PRIMARY KEY (`porta`,`portb`),
593 UNIQUE KEY `porta` (`porta`),
594 UNIQUE KEY `portb` (`portb`),
595 CONSTRAINT `Link-FK-a` FOREIGN KEY (`porta`) REFERENCES `Port` (`id`) ON DELETE CASCADE,
596 CONSTRAINT `Link-FK-b` FOREIGN KEY (`portb`) REFERENCES `Port` (`id`) ON DELETE CASCADE
597) ENGINE=InnoDB;
598
599CREATE TABLE `Molecule` (
600 `id` int(10) unsigned NOT NULL auto_increment,
601 PRIMARY KEY (`id`)
602) ENGINE=InnoDB;
603
604CREATE TABLE `MountOperation` (
605 `id` int(10) unsigned NOT NULL auto_increment,
606 `object_id` int(10) unsigned NOT NULL default '0',
607 `ctime` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
608 `user_name` char(64) default NULL,
609 `old_molecule_id` int(10) unsigned default NULL,
610 `new_molecule_id` int(10) unsigned default NULL,
611 `comment` text,
612 PRIMARY KEY (`id`),
613 KEY `object_id` (`object_id`),
614 CONSTRAINT `MountOperation-FK-object_id` FOREIGN KEY (`object_id`) REFERENCES `RackObject` (`id`) ON DELETE CASCADE
615) ENGINE=InnoDB;
616
617CREATE TABLE `ObjectLog` (
618 `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
619 `object_id` int(10) unsigned NOT NULL,
620 `user` char(64) NOT NULL,
621 `date` datetime NOT NULL,
622 `content` text NOT NULL,
623 PRIMARY KEY (`id`),
624 KEY `object_id` (`object_id`),
625 KEY `date` (`date`),
626 CONSTRAINT `ObjectLog-FK-object_id` FOREIGN KEY (`object_id`) REFERENCES `RackObject` (`id`) ON DELETE CASCADE
627) ENGINE=InnoDB;
628
0682218d
AD
629CREATE TABLE `ObjectParentCompat` (
630 `parent_objtype_id` int(10) unsigned NOT NULL,
631 `child_objtype_id` int(10) unsigned NOT NULL,
632 UNIQUE KEY `parent_child` (`parent_objtype_id`,`child_objtype_id`)
633) ENGINE=InnoDB;
634
aa004b1a
DO
635CREATE TABLE `Port` (
636 `id` int(10) unsigned NOT NULL auto_increment,
637 `object_id` int(10) unsigned NOT NULL default '0',
638 `name` char(255) NOT NULL default '',
639 `iif_id` int(10) unsigned NOT NULL,
640 `type` int(10) unsigned NOT NULL default '0',
641 `l2address` char(64) default NULL,
642 `reservation_comment` char(255) default NULL,
643 `label` char(255) default NULL,
644 PRIMARY KEY (`id`),
645 UNIQUE KEY `object_iif_oif_name` (`object_id`,`iif_id`,`type`,`name`),
646 KEY `type` (`type`),
647 KEY `comment` (`reservation_comment`),
648 KEY `l2address` (`l2address`),
649 KEY `Port-FK-iif-oif` (`iif_id`,`type`),
650 CONSTRAINT `Port-FK-iif-oif` FOREIGN KEY (`iif_id`, `type`) REFERENCES `PortInterfaceCompat` (`iif_id`, `oif_id`),
651 CONSTRAINT `Port-FK-object_id` FOREIGN KEY (`object_id`) REFERENCES `RackObject` (`id`) ON DELETE CASCADE
652) ENGINE=InnoDB;
653
654CREATE TABLE `PortAllowedVLAN` (
655 `object_id` int(10) unsigned NOT NULL,
656 `port_name` char(255) NOT NULL,
657 `vlan_id` int(10) unsigned NOT NULL default '0',
658 PRIMARY KEY (`object_id`,`port_name`,`vlan_id`),
659 KEY `vlan_id` (`vlan_id`),
660 CONSTRAINT `PortAllowedVLAN-FK-object-port` FOREIGN KEY (`object_id`, `port_name`) REFERENCES `PortVLANMode` (`object_id`, `port_name`) ON DELETE CASCADE,
661 CONSTRAINT `PortAllowedVLAN-FK-vlan_id` FOREIGN KEY (`vlan_id`) REFERENCES `VLANValidID` (`vlan_id`)
662) ENGINE=InnoDB;
663
664CREATE TABLE `PortCompat` (
665 `type1` int(10) unsigned NOT NULL default '0',
666 `type2` int(10) unsigned NOT NULL default '0',
667 UNIQUE KEY `type1_2` (`type1`,`type2`),
668 KEY `type2` (`type2`)
669) ENGINE=InnoDB;
670
671CREATE TABLE `PortInnerInterface` (
672 `id` int(10) unsigned NOT NULL,
673 `iif_name` char(16) NOT NULL,
674 PRIMARY KEY (`id`),
675 UNIQUE KEY `iif_name` (`iif_name`)
676) ENGINE=InnoDB;
677
678CREATE TABLE `PortInterfaceCompat` (
679 `iif_id` int(10) unsigned NOT NULL,
680 `oif_id` int(10) unsigned NOT NULL,
681 UNIQUE KEY `pair` (`iif_id`,`oif_id`),
682 CONSTRAINT `PortInterfaceCompat-FK-iif_id` FOREIGN KEY (`iif_id`) REFERENCES `PortInnerInterface` (`id`)
683) ENGINE=InnoDB;
684
685CREATE TABLE `PortNativeVLAN` (
686 `object_id` int(10) unsigned NOT NULL,
687 `port_name` char(255) NOT NULL,
688 `vlan_id` int(10) unsigned NOT NULL default '0',
689 PRIMARY KEY (`object_id`,`port_name`,`vlan_id`),
690 UNIQUE KEY `port_id` (`object_id`,`port_name`),
691 CONSTRAINT `PortNativeVLAN-FK-compound` FOREIGN KEY (`object_id`, `port_name`, `vlan_id`) REFERENCES `PortAllowedVLAN` (`object_id`, `port_name`, `vlan_id`) ON DELETE CASCADE
692) ENGINE=InnoDB;
693
694CREATE TABLE `PortVLANMode` (
695 `object_id` int(10) unsigned NOT NULL,
696 `port_name` char(255) NOT NULL,
697 `vlan_mode` enum('access','trunk') NOT NULL default 'access',
698 PRIMARY KEY (`object_id`,`port_name`),
699 CONSTRAINT `PortVLANMode-FK-object-port` FOREIGN KEY (`object_id`, `port_name`) REFERENCES `CachedPVM` (`object_id`, `port_name`)
700) ENGINE=InnoDB;
701
702CREATE TABLE `Rack` (
703 `id` int(10) unsigned NOT NULL auto_increment,
704 `name` char(255) default NULL,
705 `row_id` int(10) unsigned NOT NULL default '1',
706 `height` tinyint(3) unsigned NOT NULL default '42',
707 `comment` text,
708 `thumb_data` blob,
709 PRIMARY KEY (`id`),
710 UNIQUE KEY `name_in_row` (`row_id`,`name`),
711 CONSTRAINT `Rack-FK-row_id` FOREIGN KEY (`row_id`) REFERENCES `RackRow` (`id`)
712) ENGINE=InnoDB;
713
714CREATE TABLE `RackHistory` (
715 `id` int(10) unsigned default NULL,
716 `name` char(255) default NULL,
717 `row_id` int(10) unsigned default NULL,
718 `height` tinyint(3) unsigned default NULL,
719 `comment` text,
720 `thumb_data` blob,
721 `ctime` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
722 `user_name` char(64) default NULL
723) ENGINE=InnoDB;
724
725CREATE TABLE `RackObject` (
726 `id` int(10) unsigned NOT NULL auto_increment,
727 `name` char(255) default NULL,
728 `label` char(255) default NULL,
aa004b1a
DO
729 `objtype_id` int(10) unsigned NOT NULL default '1',
730 `asset_no` char(64) default NULL,
731 `has_problems` enum('yes','no') NOT NULL default 'no',
732 `comment` text,
733 PRIMARY KEY (`id`),
734 UNIQUE KEY `RackObject_asset_no` (`asset_no`),
81659c05 735 UNIQUE KEY `name` (`name`)
aa004b1a
DO
736) ENGINE=InnoDB;
737
738CREATE TABLE `RackObjectHistory` (
739 `id` int(10) unsigned default NULL,
740 `name` char(255) default NULL,
741 `label` char(255) default NULL,
aa004b1a
DO
742 `objtype_id` int(10) unsigned default NULL,
743 `asset_no` char(64) default NULL,
744 `has_problems` enum('yes','no') NOT NULL default 'no',
745 `comment` text,
746 `ctime` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
747 `user_name` char(64) default NULL,
748 KEY `id` (`id`),
749 CONSTRAINT `RackObjectHistory-FK-object_id` FOREIGN KEY (`id`) REFERENCES `RackObject` (`id`) ON DELETE CASCADE
750) ENGINE=InnoDB;
751
752CREATE TABLE `RackRow` (
753 `id` int(10) unsigned NOT NULL auto_increment,
754 `name` char(255) NOT NULL,
755 PRIMARY KEY (`id`),
756 UNIQUE KEY `name` (`name`)
757) ENGINE=InnoDB;
758
759CREATE TABLE `RackSpace` (
760 `rack_id` int(10) unsigned NOT NULL default '0',
761 `unit_no` int(10) unsigned NOT NULL default '0',
762 `atom` enum('front','interior','rear') NOT NULL default 'interior',
763 `state` enum('A','U','T','W') NOT NULL default 'A',
764 `object_id` int(10) unsigned default NULL,
765 PRIMARY KEY (`rack_id`,`unit_no`,`atom`),
766 KEY `RackSpace_object_id` (`object_id`),
767 CONSTRAINT `RackSpace-FK-rack_id` FOREIGN KEY (`rack_id`) REFERENCES `Rack` (`id`),
768 CONSTRAINT `RackSpace-FK-object_id` FOREIGN KEY (`object_id`) REFERENCES `RackObject` (`id`) ON DELETE CASCADE
769) ENGINE=InnoDB;
770
771CREATE TABLE `Script` (
772 `script_name` char(64) NOT NULL,
773 `script_text` longtext,
774 PRIMARY KEY (`script_name`)
775) ENGINE=InnoDB;
776
777CREATE TABLE `TagStorage` (
778 `entity_realm` enum('file','ipv4net','ipv4vs','ipv4rspool','object','rack','user','ipv6net') NOT NULL default 'object',
779 `entity_id` int(10) unsigned NOT NULL,
780 `tag_id` int(10) unsigned NOT NULL default '0',
781 UNIQUE KEY `entity_tag` (`entity_realm`,`entity_id`,`tag_id`),
782 KEY `entity_id` (`entity_id`),
783 KEY `TagStorage-FK-tag_id` (`tag_id`),
784 CONSTRAINT `TagStorage-FK-tag_id` FOREIGN KEY (`tag_id`) REFERENCES `TagTree` (`id`)
785) ENGINE=InnoDB;
786
787CREATE TABLE `TagTree` (
788 `id` int(10) unsigned NOT NULL auto_increment,
789 `parent_id` int(10) unsigned default NULL,
790 `tag` char(255) default NULL,
791 PRIMARY KEY (`id`),
792 UNIQUE KEY `tag` (`tag`),
793 KEY `TagTree-K-parent_id` (`parent_id`),
794 CONSTRAINT `TagTree-K-parent_id` FOREIGN KEY (`parent_id`) REFERENCES `TagTree` (`id`)
795) ENGINE=InnoDB;
796
797CREATE TABLE `UserAccount` (
798 `user_id` int(10) unsigned NOT NULL auto_increment,
799 `user_name` char(64) NOT NULL default '',
800 `user_password_hash` char(40) default NULL,
801 `user_realname` char(64) default NULL,
802 PRIMARY KEY (`user_id`),
803 UNIQUE KEY `user_name` (`user_name`)
804) ENGINE=MyISAM AUTO_INCREMENT=10000;
805
806CREATE TABLE `UserConfig` (
807 `varname` char(32) NOT NULL,
808 `varvalue` char(255) NOT NULL,
809 `user` char(64) NOT NULL,
810 UNIQUE KEY `user_varname` (`user`,`varname`)
811) ENGINE=InnoDB;
812
813CREATE TABLE `VLANDescription` (
814 `domain_id` int(10) unsigned NOT NULL,
815 `vlan_id` int(10) unsigned NOT NULL default '0',
816 `vlan_type` enum('ondemand','compulsory','alien') NOT NULL default 'ondemand',
817 `vlan_descr` char(255) default NULL,
818 PRIMARY KEY (`domain_id`,`vlan_id`),
819 KEY `vlan_id` (`vlan_id`),
820 CONSTRAINT `VLANDescription-FK-domain_id` FOREIGN KEY (`domain_id`) REFERENCES `VLANDomain` (`id`) ON DELETE CASCADE,
821 CONSTRAINT `VLANDescription-FK-vlan_id` FOREIGN KEY (`vlan_id`) REFERENCES `VLANValidID` (`vlan_id`)
822) ENGINE=InnoDB;
823
824CREATE TABLE `VLANDomain` (
825 `id` int(10) unsigned NOT NULL auto_increment,
826 `description` char(255) default NULL,
827 PRIMARY KEY (`id`),
828 UNIQUE KEY `description` (`description`)
829) ENGINE=InnoDB;
830
831CREATE TABLE `VLANIPv4` (
832 `domain_id` int(10) unsigned NOT NULL,
833 `vlan_id` int(10) unsigned NOT NULL,
834 `ipv4net_id` int(10) unsigned NOT NULL,
835 UNIQUE KEY `network-domain` (`ipv4net_id`,`domain_id`),
836 KEY `VLANIPv4-FK-compound` (`domain_id`,`vlan_id`),
837 CONSTRAINT `VLANIPv4-FK-compound` FOREIGN KEY (`domain_id`, `vlan_id`) REFERENCES `VLANDescription` (`domain_id`, `vlan_id`) ON DELETE CASCADE,
838 CONSTRAINT `VLANIPv4-FK-ipv4net_id` FOREIGN KEY (`ipv4net_id`) REFERENCES `IPv4Network` (`id`) ON DELETE CASCADE
839) ENGINE=InnoDB;
840
841CREATE TABLE `VLANIPv6` (
842 `domain_id` int(10) unsigned NOT NULL,
843 `vlan_id` int(10) unsigned NOT NULL,
844 `ipv6net_id` int(10) unsigned NOT NULL,
845 UNIQUE KEY `network-domain` (`ipv6net_id`,`domain_id`),
846 KEY `VLANIPv6-FK-compound` (`domain_id`,`vlan_id`),
847 CONSTRAINT `VLANIPv6-FK-compound` FOREIGN KEY (`domain_id`, `vlan_id`) REFERENCES `VLANDescription` (`domain_id`, `vlan_id`) ON DELETE CASCADE,
848 CONSTRAINT `VLANIPv6-FK-ipv6net_id` FOREIGN KEY (`ipv6net_id`) REFERENCES `IPv6Network` (`id`) ON DELETE CASCADE
849) ENGINE=InnoDB;
850
851CREATE TABLE `VLANSTRule` (
852 `vst_id` int(10) unsigned NOT NULL,
853 `rule_no` int(10) unsigned NOT NULL,
854 `port_pcre` char(255) NOT NULL,
855 `port_role` enum('access','trunk','anymode','uplink','downlink','none') NOT NULL default 'none',
856 `wrt_vlans` char(255) default NULL,
857 `description` char(255) default NULL,
858 UNIQUE KEY `vst-rule` (`vst_id`,`rule_no`),
859 CONSTRAINT `VLANSTRule-FK-vst_id` FOREIGN KEY (`vst_id`) REFERENCES `VLANSwitchTemplate` (`id`) ON DELETE CASCADE
860) ENGINE=InnoDB;
861
862CREATE TABLE `VLANSwitch` (
863 `object_id` int(10) unsigned NOT NULL,
864 `domain_id` int(10) unsigned NOT NULL,
865 `template_id` int(10) unsigned NOT NULL,
866 `mutex_rev` int(10) unsigned NOT NULL default '0',
867 `out_of_sync` enum('yes','no') NOT NULL default 'yes',
868 `last_errno` int(10) unsigned NOT NULL default '0',
869 `last_change` timestamp NOT NULL default '0000-00-00 00:00:00',
870 `last_push_started` timestamp NOT NULL default '0000-00-00 00:00:00',
871 `last_push_finished` timestamp NOT NULL default '0000-00-00 00:00:00',
872 `last_error_ts` timestamp NOT NULL default '0000-00-00 00:00:00',
873 UNIQUE KEY `object_id` (`object_id`),
874 KEY `domain_id` (`domain_id`),
875 KEY `template_id` (`template_id`),
876 KEY `out_of_sync` (`out_of_sync`),
877 KEY `last_errno` (`last_errno`),
878 CONSTRAINT `VLANSwitch-FK-domain_id` FOREIGN KEY (`domain_id`) REFERENCES `VLANDomain` (`id`),
879 CONSTRAINT `VLANSwitch-FK-object_id` FOREIGN KEY (`object_id`) REFERENCES `RackObject` (`id`),
880 CONSTRAINT `VLANSwitch-FK-template_id` FOREIGN KEY (`template_id`) REFERENCES `VLANSwitchTemplate` (`id`)
881) ENGINE=InnoDB;
882
883CREATE TABLE `VLANSwitchTemplate` (
884 `id` int(10) unsigned NOT NULL auto_increment,
aa004b1a
DO
885 `description` char(255) default NULL,
886 `mutex_rev` int(10) NOT NULL,
887 `saved_by` char(64) NOT NULL,
888 PRIMARY KEY (`id`),
889 UNIQUE KEY `description` (`description`)
890) ENGINE=InnoDB;
891
892CREATE TABLE `VLANValidID` (
893 `vlan_id` int(10) unsigned NOT NULL default '1',
894 PRIMARY KEY (`vlan_id`)
895) ENGINE=InnoDB;
896
897SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
898END_OF_FILE;
899##########################################################################
900 case 'dictbase':
901 return <<<END_OF_FILE
aa004b1a
DO
902INSERT INTO `Attribute` (`id`, `type`, `name`) VALUES
903(1,'string','OEM S/N 1'),
904(2,'dict','HW type'),
905(3,'string','FQDN'),
906(4,'dict','SW type'),
907(5,'string','SW version'),
908(6,'uint','number of ports'),
909(7,'float','max. current, Ampers'),
910(8,'float','power load, percents'),
911(14,'string','contact person'),
912(13,'float','max power, Watts'),
913(16,'uint','flash memory, MB'),
914(17,'uint','DRAM, MB'),
915(18,'uint','CPU, MHz'),
916(20,'string','OEM S/N 2'),
917(21,'string','support contract expiration'),
918(22,'string','HW warranty expiration'),
919(24,'string','SW warranty expiration'),
0682218d
AD
920(25,'string','UUID'),
921(26,'dict','Hypervisor');
aa004b1a
DO
922
923INSERT INTO `AttributeMap` (`objtype_id`, `attr_id`, `chapter_id`) VALUES
924(2,1,NULL),
925(2,2,27),
926(2,3,NULL),
927(2,5,NULL),
928(4,1,NULL),
929(4,2,11),
930(4,3,NULL),
931(4,4,13),
932(4,14,NULL),
933(4,21,NULL),
934(4,22,NULL),
aa004b1a 935(4,24,NULL),
0682218d
AD
936(4,25,NULL),
937(4,26,29),
aa004b1a
DO
938(5,1,NULL),
939(5,2,18),
940(6,1,NULL),
941(6,2,19),
942(6,20,NULL),
943(7,1,NULL),
944(7,2,17),
945(7,3,NULL),
946(7,4,16),
947(7,5,NULL),
948(7,14,NULL),
949(7,16,NULL),
950(7,17,NULL),
951(7,18,NULL),
952(7,21,NULL),
953(7,22,NULL),
954(7,24,NULL),
955(8,1,NULL),
956(8,2,12),
957(8,3,NULL),
958(8,4,14),
959(8,5,NULL),
960(8,14,NULL),
961(8,16,NULL),
962(8,17,NULL),
963(8,18,NULL),
964(8,20,NULL),
965(8,21,NULL),
966(8,22,NULL),
967(8,24,NULL),
968(9,6,NULL),
969(12,1,NULL),
970(12,3,NULL),
971(12,7,NULL),
972(12,8,NULL),
973(12,13,NULL),
974(12,20,NULL),
975(445,1,NULL),
976(445,2,21),
977(445,3,NULL),
978(445,5,NULL),
979(445,14,NULL),
980(445,22,NULL),
981(447,1,NULL),
982(447,2,22),
983(447,3,NULL),
984(447,5,NULL),
985(447,14,NULL),
986(447,22,NULL),
987(15,2,23),
988(798,1,NULL),
989(798,2,24),
990(798,3,NULL),
991(798,5,NULL),
992(798,14,NULL),
993(798,16,NULL),
994(798,17,NULL),
995(798,18,NULL),
996(798,20,NULL),
997(798,21,NULL),
998(798,22,NULL),
999(798,24,NULL),
1000(965,1,NULL),
1001(965,3,NULL),
1002(965,2,25),
1003(1055,2,26),
1004(1323,1,NULL),
1005(1323,2,28),
1006(1323,3,NULL),
0682218d
AD
1007(1323,5,NULL),
1008(1502,1,NULL),
1009(1502,2,31),
1010(1502,3,NULL),
1011(1502,14,NULL),
1012(1502,20,NULL),
1013(1502,21,NULL),
1014(1502,22,NULL),
1015(1503,1,NULL),
1016(1503,2,30),
1017(1503,3,NULL),
588c98f8
AD
1018(1503,4,14),
1019(1503,5,NULL),
0682218d 1020(1503,14,NULL),
588c98f8
AD
1021(1503,16,NULL),
1022(1503,17,NULL),
1023(1503,18,NULL),
0682218d
AD
1024(1503,20,NULL),
1025(1503,21,NULL),
1026(1503,22,NULL),
588c98f8 1027(1503,24,NULL),
0682218d
AD
1028(1504,3,NULL),
1029(1504,4,13),
1030(1504,14,NULL),
1031(1504,24,NULL),
1032(1505,14,NULL),
1033(1506,14,NULL),
1034(1506,17,NULL),
1035(1506,18,NULL),
1036(1507,1,NULL),
1037(1507,2,32),
1038(1507,3,NULL),
1039(1507,4,33),
1040(1507,5,NULL),
1041(1507,14,NULL),
1042(1507,20,NULL),
1043(1507,21,NULL),
1044(1507,22,NULL);
aa004b1a
DO
1045
1046INSERT INTO `Chapter` (`id`, `sticky`, `name`) VALUES
1047(1,'yes','RackObjectType'),
1048(2,'yes','PortOuterInterface'),
1049(11,'no','server models'),
1050(12,'no','network switch models'),
1051(13,'no','server OS type'),
1052(14,'no','switch OS type'),
1053(16,'no','router OS type'),
1054(17,'no','router models'),
1055(18,'no','disk array models'),
1056(19,'no','tape library models'),
1057(21,'no','KVM switch models'),
1058(22,'no','multiplexer models'),
1059(23,'no','console models'),
1060(24,'no','network security models'),
1061(25,'no','wireless models'),
1062(26,'no','fibre channel switch models'),
1063(27,'no','PDU models'),
0682218d
AD
1064(28,'no','Voice/video hardware'),
1065(29,'no','Yes/No'),
1066(30,'no','network chassis models'),
1067(31,'no','server chassis models'),
1068(32,'no','virtual switch models'),
1069(33,'no','virtual switch OS type');
aa004b1a
DO
1070
1071INSERT INTO `PortInnerInterface` VALUES
1072(1,'hardwired'),
1073(2,'SFP-100'),
1074(3,'GBIC'),
1075(4,'SFP-1000'),
1076(5,'XENPAK'),
1077(6,'X2'),
1078(7,'XPAK'),
1079(8,'XFP'),
1080(9,'SFP+');
1081
0682218d
AD
1082INSERT INTO `ObjectParentCompat` VALUES
1083(3,13),
1084(4,1504),
1085(4,1507),
1086(1502,4),
1087(1503,8),
1088(1505,4),
1089(1505,1504),
1090(1505,1506),
1091(1505,1507),
1092(1506,1504);
1093
aa004b1a
DO
1094INSERT INTO `PortInterfaceCompat` VALUES
1095(2,1208),(2,1195),(2,1196),(2,1197),(2,1198),(2,1199),(2,1200),(2,1201),
1096(3,1078),(3,24),(3,34),(3,1202),(3,1203),(3,1204),(3,1205),(3,1206),(3,1207),
1097(4,1077),(4,24),(4,34),(4,1202),(4,1203),(4,1204),(4,1205),(4,1206),(4,1207),
1098(5,1079),(5,30),(5,35),(5,36),(5,37),(5,38),(5,39),(5,40),
1099(6,1080),(6,30),(6,35),(6,36),(6,37),(6,38),(6,39),(6,40),
1100(7,1081),(7,30),(7,35),(7,36),(7,37),(7,38),(7,39),(7,40),
1101(8,1082),(8,30),(8,35),(8,36),(8,37),(8,38),(8,39),(8,40),
1102(9,1084),(9,30),(9,35),(9,36),(9,37),(9,38),(9,39),(9,40),
1103(1,16),(1,19),(1,24),(1,29),(1,31),(1,33),(1,446),(1,681),(1,682),(1,1322);
1104
1105INSERT INTO `PortCompat` (`type1`, `type2`) VALUES
1106(17,17),
1107(18,18),
1108(19,19),
1109(20,20),
1110(21,21),
1111(21,1195),
1112(22,22),
1113(22,1196),
1114(23,23),
1115(23,1196),
1116(24,24),
1117(25,25),
1118(26,26),
1119(27,27),
1120(28,28),
1121(18,19),
1122(19,18),
1123(18,24),
1124(24,18),
1125(19,24),
1126(24,19),
1127(29,29),
1128(20,21),
1129(20,1083),
1130(20,1195),
1131(21,20),
1132(21,1083),
1133(22,23),
1134(23,22),
1135(25,26),
1136(25,1202),
1137(26,25),
1138(26,1202),
1139(27,28),
1140(27,1204),
1141(28,27),
1142(28,1204),
1143(30,30),
1144(16,1322),
1145(1322,16),
1146(29,681),
1147(29,682),
1148(32,32),
1149(33,446),
1150(34,34),
1151(35,35),
1152(36,36),
1153(37,37),
1154(38,38),
1155(39,39),
1156(40,40),
1157(41,41),
1158(439,439),
1159(446,33),
1160(681,29),
1161(681,681),
1162(681,682),
1163(682,29),
1164(682,681),
1165(682,682),
1166(1077,1077),
1167(1083,20),
1168(1083,21),
1169(1083,1083),
1170(1083,1195),
1171(1084,1084),
1172(1087,1087),
1173(1195,20),
1174(1195,21),
1175(1195,1083),
1176(1195,1195),
1177(1196,22),
1178(1196,23),
1179(1196,1196),
1180(1197,1197),
1181(1198,1199),
1182(1199,1198),
1183(1200,1200),
1184(1201,1201),
1185(1202,25),
1186(1202,26),
1187(1202,1202),
1188(1203,1203),
1189(1204,27),
1190(1204,28),
1191(1204,1204),
1192(1205,1205),
1193(1206,1207),
1194(1207,1206),
1195(1209,1209),
1196(1210,1210),
1197(1211,1211),
1198(1212,1212),
1199(1213,1213),
1200(1214,1214),
1201(1215,1215),
1202(1216,1216),
1203(1217,1217),
1204(1218,1218),
1205(1219,1219),
1206(1220,1220),
1207(1221,1221),
1208(1222,1222),
1209(1223,1223),
1210(1224,1224),
1211(1225,1225),
1212(1226,1226),
1213(1227,1227),
1214(1228,1228),
1215(1229,1229),
1216(1230,1230),
1217(1231,1231),
1218(1232,1232),
1219(1233,1233),
1220(1234,1234),
1221(1235,1235),
1222(1236,1236),
1223(1237,1237),
1224(1238,1238),
1225(1239,1239),
1226(1240,1240),
1227(1241,1241),
1228(1242,1242),
1229(1243,1243),
1230(1244,1244),
1231(1245,1245),
1232(1246,1246),
1233(1247,1247),
1234(1248,1248),
1235(1249,1249),
1236(1250,1250),
1237(1251,1251),
1238(1252,1252),
1239(1253,1253),
1240(1254,1254),
1241(1255,1255),
1242(1256,1256),
1243(1257,1257),
1244(1258,1258),
1245(1259,1259),
1246(1260,1260),
1247(1261,1261),
1248(1262,1262),
1249(1263,1263),
1250(1264,1264),
1251(1265,1265),
1252(1266,1266),
1253(1267,1267),
1254(1268,1268),
1255(1269,1269),
1256(1270,1270),
1257(1271,1271),
1258(1272,1272),
1259(1273,1273),
1260(1274,1274),
1261(1275,1275),
1262(1276,1276),
1263(1277,1277),
1264(1278,1278),
1265(1279,1279),
1266(1280,1280),
1267(1281,1281),
1268(1282,1282),
1269(1283,1283),
1270(1284,1284),
1271(1285,1285),
1272(1286,1286),
1273(1287,1287),
1274(1288,1288),
1275(1289,1289),
1276(1290,1290),
1277(1291,1291),
1278(1292,1292),
1279(1293,1293),
1280(1294,1294),
1281(1295,1295),
1282(1296,1296),
1283(1297,1297),
1284(1298,1298),
1285(1299,1299),
1286(1300,1300),
1287(1316,1316);
1288
1289INSERT INTO `Config` (varname, varvalue, vartype, emptyok, is_hidden, is_userdefined, description) VALUES
1290('color_F','8fbfbf','string','no','yes','no','HSV: 180-25-75. Free atoms, they are available for allocation to objects.'),
1291('color_A','bfbfbf','string','no','yes','no','HSV: 0-0-75. Absent atoms.'),
1292('color_U','bf8f8f','string','no','yes','no','HSV: 0-25-75. Unusable atoms. Some problems keep them from being free.'),
1293('color_T','408080','string','no','yes','no','HSV: 180-50-50. Taken atoms, object_id should be set for such.'),
1294('color_Th','80ffff','string','no','yes','no','HSV: 180-50-100. Taken atoms with highlight. They are not stored in the database and are only used for highlighting.'),
1295('color_Tw','804040','string','no','yes','no','HSV: 0-50-50. Taken atoms with object problem. This is detected at runtime.'),
1296('color_Thw','ff8080','string','no','yes','no','HSV: 0-50-100. An object can be both current and problematic. We run highlightObject() first and markupObjectProblems() second.'),
0682218d 1297('MASSCOUNT','8','uint','no','no','yes','&quot;Fast&quot; form is this many records tall'),
aa004b1a
DO
1298('MAXSELSIZE','30','uint','no','no','yes','&lt;SELECT&gt; lists height'),
1299('enterprise','MyCompanyName','string','no','no','no','Organization name'),
1300('ROW_SCALE','2','uint','no','no','yes','Picture scale for rack row display'),
1301('PORTS_PER_ROW','12','uint','no','no','yes','Ports per row in VLANs tab'),
1302('IPV4_ADDRS_PER_PAGE','256','uint','no','no','yes','IPv4 addresses per page'),
1303('DEFAULT_RACK_HEIGHT','42','uint','yes','no','yes','Default rack height'),
1304('DEFAULT_SLB_VS_PORT','','uint','yes','no','yes','Default port of SLB virtual service'),
1305('DEFAULT_SLB_RS_PORT','','uint','yes','no','yes','Default port of SLB real server'),
1306('DETECT_URLS','no','string','yes','no','yes','Detect URLs in text fields'),
1307('RACK_PRESELECT_THRESHOLD','1','uint','no','no','yes','Rack pre-selection threshold'),
1308('DEFAULT_IPV4_RS_INSERVICE','no','string','no','no','yes','Inservice status for new SLB real servers'),
1309('AUTOPORTS_CONFIG','4 = 1*33*kvm + 2*24*eth%u;15 = 1*446*kvm','string','yes','no','no','AutoPorts configuration'),
1310('DEFAULT_OBJECT_TYPE','4','uint','yes','no','yes','Default object type for new objects'),
1311('SHOW_EXPLICIT_TAGS','yes','string','no','no','yes','Show explicit tags'),
1312('SHOW_IMPLICIT_TAGS','yes','string','no','no','yes','Show implicit tags'),
1313('SHOW_AUTOMATIC_TAGS','no','string','no','no','yes','Show automatic tags'),
1314('IPV4_AUTO_RELEASE','1','uint','no','no','yes','Auto-release IPv4 addresses on allocation'),
1315('SHOW_LAST_TAB','no','string','yes','no','yes','Remember last tab shown for each page'),
1316('EXT_IPV4_VIEW','yes','string','no','no','yes','Extended IPv4 view'),
1317('TREE_THRESHOLD','25','uint','yes','no','yes','Tree view auto-collapse threshold'),
1318('IPV4_JAYWALK','no','string','no','no','no','Enable IPv4 address allocations w/o covering network'),
1319('ADDNEW_AT_TOP','yes','string','no','no','yes','Render "add new" line at top of the list'),
1320('IPV4_TREE_SHOW_USAGE','yes','string','no','no','yes','Show address usage in IPv4 tree'),
1321('PREVIEW_TEXT_MAXCHARS','10240','uint','yes','no','yes','Max chars for text file preview'),
1322('PREVIEW_TEXT_ROWS','25','uint','yes','no','yes','Rows for text file preview'),
1323('PREVIEW_TEXT_COLS','80','uint','yes','no','yes','Columns for text file preview'),
1324('PREVIEW_IMAGE_MAXPXS','320','uint','yes','no','yes','Max pixels per axis for image file preview'),
1325('VENDOR_SIEVE','','string','yes','no','yes','Vendor sieve configuration'),
1326('IPV4LB_LISTSRC','{\$typeid_4}','string','yes','no','no','List source: IPv4 load balancers'),
0682218d 1327('IPV4OBJ_LISTSRC','{\$typeid_4} or {\$typeid_7} or {\$typeid_8} or {\$typeid_12} or {\$typeid_445} or {\$typeid_447} or {\$typeid_798} or {\$typeid_1502} or {\$typeid_1503} or {\$typeid_1504} or {\$typeid_1507}','string','yes','no','no','List source: IPv4-enabled objects'),
aa004b1a
DO
1328('IPV4NAT_LISTSRC','{\$typeid_4} or {\$typeid_7} or {\$typeid_8} or {\$typeid_798}','string','yes','no','no','List source: IPv4 NAT performers'),
1329('ASSETWARN_LISTSRC','{\$typeid_4} or {\$typeid_7} or {\$typeid_8}','string','yes','no','no','List source: object, for which asset tag should be set'),
1330('NAMEWARN_LISTSRC','{\$typeid_4} or {\$typeid_7} or {\$typeid_8}','string','yes','no','no','List source: object, for which common name should be set'),
1331('RACKS_PER_ROW','12','uint','yes','no','yes','Racks per row'),
1332('FILTER_PREDICATE_SIEVE','','string','yes','no','no','Predicate sieve regex(7)'),
1333('FILTER_DEFAULT_ANDOR','or','string','no','no','no','Default list filter boolean operation (or/and)'),
1334('FILTER_SUGGEST_ANDOR','yes','string','no','no','no','Suggest and/or selector in list filter'),
1335('FILTER_SUGGEST_TAGS','yes','string','no','no','no','Suggest tags in list filter'),
1336('FILTER_SUGGEST_PREDICATES','yes','string','no','no','no','Suggest predicates in list filter'),
1337('FILTER_SUGGEST_EXTRA','no','string','no','no','no','Suggest extra expression in list filter'),
1338('DEFAULT_SNMP_COMMUNITY','public','string','no','no','no','Default SNMP Community string'),
1339('IPV4_ENABLE_KNIGHT','yes','string','no','no','no','Enable IPv4 knight feature'),
1340('TAGS_TOPLIST_SIZE','50','uint','yes','no','no','Tags top list size'),
1341('TAGS_QUICKLIST_SIZE','20','uint','no','no','no','Tags quick list size'),
1342('TAGS_QUICKLIST_THRESHOLD','50','uint','yes','no','no','Tags quick list threshold'),
1343('ENABLE_MULTIPORT_FORM','no','string','no','no','no','Enable "Add/update multiple ports" form'),
1344('DEFAULT_PORT_IIF_ID','1','uint','no','no','no','Default port inner interface ID'),
1345('DEFAULT_PORT_OIF_IDS','1=24; 3=1078; 4=1077; 5=1079; 6=1080; 8=1082; 9=1084','string','no','no','no','Default port outer interface IDs'),
1346('IPV4_TREE_RTR_AS_CELL','yes','string','no','no','no','Show full router info for each network in IPv4 tree view'),
1347('PROXIMITY_RANGE','0','uint','yes','no','no','Proximity range (0 is current rack only)'),
1348('VLANSWITCH_LISTSRC', '', 'string', 'yes', 'no', 'yes', 'List of VLAN running switches'),
1349('VLANIPV4NET_LISTSRC', '', 'string', 'yes', 'no', 'yes', 'List of VLAN-based IPv4 networks'),
1350('IPV4_TREE_SHOW_VLAN','yes','string','no','no','yes','Show VLAN for each network in IPv4 tree'),
1351('DEFAULT_VDOM_ID','','uint','yes','no','yes','Default VLAN domain ID'),
1352('DEFAULT_VST_ID','','uint','yes','no','yes','Default VLAN switch template ID'),
1353('8021Q_DEPLOY_MINAGE','300','uint','no','no','no','802.1Q deploy minimum age'),
1354('8021Q_DEPLOY_MAXAGE','3600','uint','no','no','no','802.1Q deploy maximum age'),
1355('8021Q_DEPLOY_RETRY','10800','uint','no','no','no','802.1Q deploy retry timer'),
1356('8021Q_WRI_AFTER_CONFT_LISTSRC','false','string','no','no','no','802.1Q: save device configuration after deploy (RackCode)'),
1357('8021Q_INSTANT_DEPLOY','no','string','no','no','yes','802.1Q: instant deploy'),
1358('STATIC_FILTER','yes','string','no','no','yes','Enable Filter Caching'),
1359('ENABLE_BULKPORT_FORM','yes','string','no','no','yes','Enable "Bulk Port" form'),
1360('CDP_RUNNERS_LISTSRC', '', 'string', 'yes', 'no', 'no', 'List of devices running CDP'),
1361('LLDP_RUNNERS_LISTSRC', '', 'string', 'yes', 'no', 'no', 'List of devices running LLDP'),
1362('HNDP_RUNNERS_LISTSRC', '', 'string', 'yes', 'no', 'no', 'List of devices running HNDP (RackCode)'),
1363('SHRINK_TAG_TREE_ON_CLICK','yes','string','no','no','yes','Dynamically hide useless tags in tagtree'),
1364('MAX_UNFILTERED_ENTITIES','0','uint','no','no','yes','Max item count to display on unfiltered result page'),
1365('SYNCDOMAIN_MAX_PROCESSES','0','uint','yes','no', 'no', 'How many worker proceses syncdomain cron script should create'),
0682218d
AD
1366('VIRTUAL_OBJ_LISTSRC','{\$typeid_1504} or {\$typeid_1505} or {\$typeid_1506} or {\$typeid_1507}','string','yes','no','no','List source: virtual objects'),
1367('PORT_EXCLUSION_LISTSRC','{\$typeid_3} or {\$typeid_10} or {\$typeid_11} or {\$typeid_1505} or {\$typeid_1506}','string','yes','no','no','List source: objects without ports'),
aa004b1a
DO
1368('DB_VERSION','0.19.0','string','no','yes','no','Database version.');
1369
1370INSERT INTO `Script` VALUES ('RackCode','allow {\$userid_1}');
1371
1372INSERT INTO VLANValidID (vlan_id) VALUES
1373(1),
1374(2),
1375(3),
1376(4),
1377(5),
1378(6),
1379(7),
1380(8),
1381(9),
1382(10),
1383(11),
1384(12),
1385(13),
1386(14),
1387(15),
1388(16),
1389(17),
1390(18),
1391(19),
1392(20),
1393(21),
1394(22),
1395(23),
1396(24),
1397(25),
1398(26),
1399(27),
1400(28),
1401(29),
1402(30),
1403(31),
1404(32),
1405(33),
1406(34),
1407(35),
1408(36),
1409(37),
1410(38),
1411(39),
1412(40),
1413(41),
1414(42),
1415(43),
1416(44),
1417(45),
1418(46),
1419(47),
1420(48),
1421(49),
1422(50),
1423(51),
1424(52),
1425(53),
1426(54),
1427(55),
1428(56),
1429(57),
1430(58),
1431(59),
1432(60),
1433(61),
1434(62),
1435(63),
1436(64),
1437(65),
1438(66),
1439(67),
1440(68),
1441(69),
1442(70),
1443(71),
1444(72),
1445(73),
1446(74),
1447(75),
1448(76),
1449(77),
1450(78),
1451(79),
1452(80),
1453(81),
1454(82),
1455(83),
1456(84),
1457(85),
1458(86),
1459(87),
1460(88),
1461(89),
1462(90),
1463(91),
1464(92),
1465(93),
1466(94),
1467(95),
1468(96),
1469(97),
1470(98),
1471(99),
1472(100),
1473(101),
1474(102),
1475(103),
1476(104),
1477(105),
1478(106),
1479(107),
1480(108),
1481(109),
1482(110),
1483(111),
1484(112),
1485(113),
1486(114),
1487(115),
1488(116),
1489(117),
1490(118),
1491(119),
1492(120),
1493(121),
1494(122),
1495(123),
1496(124),
1497(125),
1498(126),
1499(127),
1500(128),
1501(129),
1502(130),
1503(131),
1504(132),
1505(133),
1506(134),
1507(135),
1508(136),
1509(137),
1510(138),
1511(139),
1512(140),
1513(141),
1514(142),
1515(143),
1516(144),
1517(145),
1518(146),
1519(147),
1520(148),
1521(149),
1522(150),
1523(151),
1524(152),
1525(153),
1526(154),
1527(155),
1528(156),
1529(157),
1530(158),
1531(159),
1532(160),
1533(161),
1534(162),
1535(163),
1536(164),
1537(165),
1538(166),
1539(167),
1540(168),
1541(169),
1542(170),
1543(171),
1544(172),
1545(173),
1546(174),
1547(175),
1548(176),
1549(177),
1550(178),
1551(179),
1552(180),
1553(181),
1554(182),
1555(183),
1556(184),
1557(185),
1558(186),
1559(187),
1560(188),
1561(189),
1562(190),
1563(191),
1564(192),
1565(193),
1566(194),
1567(195),
1568(196),
1569(197),
1570(198),
1571(199),
1572(200),
1573(201),
1574(202),
1575(203),
1576(204),
1577(205),
1578(206),
1579(207),
1580(208),
1581(209),
1582(210),
1583(211),
1584(212),
1585(213),
1586(214),
1587(215),
1588(216),
1589(217),
1590(218),
1591(219),
1592(220),
1593(221),
1594(222),
1595(223),
1596(224),
1597(225),
1598(226),
1599(227),
1600(228),
1601(229),
1602(230),
1603(231),
1604(232),
1605(233),
1606(234),
1607(235),
1608(236),
1609(237),
1610(238),
1611(239),
1612(240),
1613(241),
1614(242),
1615(243),
1616(244),
1617(245),
1618(246),
1619(247),
1620(248),
1621(249),
1622(250),
1623(251),
1624(252),
1625(253),
1626(254),
1627(255),
1628(256),
1629(257),
1630(258),
1631(259),
1632(260),
1633(261),
1634(262),
1635(263),
1636(264),
1637(265),
1638(266),
1639(267),
1640(268),
1641(269),
1642(270),
1643(271),
1644(272),
1645(273),
1646(274),
1647(275),
1648(276),
1649(277),
1650(278),
1651(279),
1652(280),
1653(281),
1654(282),
1655(283),
1656(284),
1657(285),
1658(286),
1659(287),
1660(288),
1661(289),
1662(290),
1663(291),
1664(292),
1665(293),
1666(294),
1667(295),
1668(296),
1669(297),
1670(298),
1671(299),
1672(300),
1673(301),
1674(302),
1675(303),
1676(304),
1677(305),
1678(306),
1679(307),
1680(308),
1681(309),
1682(310),
1683(311),
1684(312),
1685(313),
1686(314),
1687(315),
1688(316),
1689(317),
1690(318),
1691(319),
1692(320),
1693(321),
1694(322),
1695(323),
1696(324),
1697(325),
1698(326),
1699(327),
1700(328),
1701(329),
1702(330),
1703(331),
1704(332),
1705(333),
1706(334),
1707(335),
1708(336),
1709(337),
1710(338),
1711(339),
1712(340),
1713(341),
1714(342),
1715(343),
1716(344),
1717(345),
1718(346),
1719(347),
1720(348),
1721(349),
1722(350),
1723(351),
1724(352),
1725(353),
1726(354),
1727(355),
1728(356),
1729(357),
1730(358),
1731(359),
1732(360),
1733(361),
1734(362),
1735(363),
1736(364),
1737(365),
1738(366),
1739(367),
1740(368),
1741(369),
1742(370),
1743(371),
1744(372),
1745(373),
1746(374),
1747(375),
1748(376),
1749(377),
1750(378),
1751(379),
1752(380),
1753(381),
1754(382),
1755(383),
1756(384),
1757(385),
1758(386),
1759(387),
1760(388),
1761(389),
1762(390),
1763(391),
1764(392),
1765(393),
1766(394),
1767(395),
1768(396),
1769(397),
1770(398),
1771(399),
1772(400),
1773(401),
1774(402),
1775(403),
1776(404),
1777(405),
1778(406),
1779(407),
1780(408),
1781(409),
1782(410),
1783(411),
1784(412),
1785(413),
1786(414),
1787(415),
1788(416),
1789(417),
1790(418),
1791(419),
1792(420),
1793(421),
1794(422),
1795(423),
1796(424),
1797(425),
1798(426),
1799(427),
1800(428),
1801(429),
1802(430),
1803(431),
1804(432),
1805(433),
1806(434),
1807(435),
1808(436),
1809(437),
1810(438),
1811(439),
1812(440),
1813(441),
1814(442),
1815(443),
1816(444),
1817(445),
1818(446),
1819(447),
1820(448),
1821(449),
1822(450),
1823(451),
1824(452),
1825(453),
1826(454),
1827(455),
1828(456),
1829(457),
1830(458),
1831(459),
1832(460),
1833(461),
1834(462),
1835(463),
1836(464),
1837(465),
1838(466),
1839(467),
1840(468),
1841(469),
1842(470),
1843(471),
1844(472),
1845(473),
1846(474),
1847(475),
1848(476),
1849(477),
1850(478),
1851(479),
1852(480),
1853(481),
1854(482),
1855(483),
1856(484),
1857(485),
1858(486),
1859(487),
1860(488),
1861(489),
1862(490),
1863(491),
1864(492),
1865(493),
1866(494),
1867(495),
1868(496),
1869(497),
1870(498),
1871(499),
1872(500),
1873(501),
1874(502),
1875(503),
1876(504),
1877(505),
1878(506),
1879(507),
1880(508),
1881(509),
1882(510),
1883(511),
1884(512),
1885(513),
1886(514),
1887(515),
1888(516),
1889(517),
1890(518),
1891(519),
1892(520),
1893(521),
1894(522),
1895(523),
1896(524),
1897(525),
1898(526),
1899(527),
1900(528),
1901(529),
1902(530),
1903(531),
1904(532),
1905(533),
1906(534),
1907(535),
1908(536),
1909(537),
1910(538),
1911(539),
1912(540),
1913(541),
1914(542),
1915(543),
1916(544),
1917(545),
1918(546),
1919(547),
1920(548),
1921(549),
1922(550),
1923(551),
1924(552),
1925(553),
1926(554),
1927(555),
1928(556),
1929(557),
1930(558),
1931(559),
1932(560),
1933(561),
1934(562),
1935(563),
1936(564),
1937(565),
1938(566),
1939(567),
1940(568),
1941(569),
1942(570),
1943(571),
1944(572),
1945(573),
1946(574),
1947(575),
1948(576),
1949(577),
1950(578),
1951(579),
1952(580),
1953(581),
1954(582),
1955(583),
1956(584),
1957(585),
1958(586),
1959(587),
1960(588),
1961(589),
1962(590),
1963(591),
1964(592),
1965(593),
1966(594),
1967(595),
1968(596),
1969(597),
1970(598),
1971(599),
1972(600),
1973(601),
1974(602),
1975(603),
1976(604),
1977(605),
1978(606),
1979(607),
1980(608),
1981(609),
1982(610),
1983(611),
1984(612),
1985(613),
1986(614),
1987(615),
1988(616),
1989(617),
1990(618),
1991(619),
1992(620),
1993(621),
1994(622),
1995(623),
1996(624),
1997(625),
1998(626),
1999(627),
2000(628),
2001(629),
2002(630),
2003(631),
2004(632),
2005(633),
2006(634),
2007(635),
2008(636),
2009(637),
2010(638),
2011(639),
2012(640),
2013(641),
2014(642),
2015(643),
2016(644),
2017(645),
2018(646),
2019(647),
2020(648),
2021(649),
2022(650),
2023(651),
2024(652),
2025(653),
2026(654),
2027(655),
2028(656),
2029(657),
2030(658),
2031(659),
2032(660),
2033(661),
2034(662),
2035(663),
2036(664),
2037(665),
2038(666),
2039(667),
2040(668),
2041(669),
2042(670),
2043(671),
2044(672),
2045(673),
2046(674),
2047(675),
2048(676),
2049(677),
2050(678),
2051(679),
2052(680),
2053(681),
2054(682),
2055(683),
2056(684),
2057(685),
2058(686),
2059(687),
2060(688),
2061(689),
2062(690),
2063(691),
2064(692),
2065(693),
2066(694),
2067(695),
2068(696),
2069(697),
2070(698),
2071(699),
2072(700),
2073(701),
2074(702),
2075(703),
2076(704),
2077(705),
2078(706),
2079(707),
2080(708),
2081(709),
2082(710),
2083(711),
2084(712),
2085(713),
2086(714),
2087(715),
2088(716),
2089(717),
2090(718),
2091(719),
2092(720),
2093(721),
2094(722),
2095(723),
2096(724),
2097(725),
2098(726),
2099(727),
2100(728),
2101(729),
2102(730),
2103(731),
2104(732),
2105(733),
2106(734),
2107(735),
2108(736),
2109(737),
2110(738),
2111(739),
2112(740),
2113(741),
2114(742),
2115(743),
2116(744),
2117(745),
2118(746),
2119(747),
2120(748),
2121(749),
2122(750),
2123(751),
2124(752),
2125(753),
2126(754),
2127(755),
2128(756),
2129(757),
2130(758),
2131(759),
2132(760),
2133(761),
2134(762),
2135(763),
2136(764),
2137(765),
2138(766),
2139(767),
2140(768),
2141(769),
2142(770),
2143(771),
2144(772),
2145(773),
2146(774),
2147(775),
2148(776),
2149(777),
2150(778),
2151(779),
2152(780),
2153(781),
2154(782),
2155(783),
2156(784),
2157(785),
2158(786),
2159(787),
2160(788),
2161(789),
2162(790),
2163(791),
2164(792),
2165(793),
2166(794),
2167(795),
2168(796),
2169(797),
2170(798),
2171(799),
2172(800),
2173(801),
2174(802),
2175(803),
2176(804),
2177(805),
2178(806),
2179(807),
2180(808),
2181(809),
2182(810),
2183(811),
2184(812),
2185(813),
2186(814),
2187(815),
2188(816),
2189(817),
2190(818),
2191(819),
2192(820),
2193(821),
2194(822),
2195(823),
2196(824),
2197(825),
2198(826),
2199(827),
2200(828),
2201(829),
2202(830),
2203(831),
2204(832),
2205(833),
2206(834),
2207(835),
2208(836),
2209(837),
2210(838),
2211(839),
2212(840),
2213(841),
2214(842),
2215(843),
2216(844),
2217(845),
2218(846),
2219(847),
2220(848),
2221(849),
2222(850),
2223(851),
2224(852),
2225(853),
2226(854),
2227(855),
2228(856),
2229(857),
2230(858),
2231(859),
2232(860),
2233(861),
2234(862),
2235(863),
2236(864),
2237(865),
2238(866),
2239(867),
2240(868),
2241(869),
2242(870),
2243(871),
2244(872),
2245(873),
2246(874),
2247(875),
2248(876),
2249(877),
2250(878),
2251(879),
2252(880),
2253(881),
2254(882),
2255(883),
2256(884),
2257(885),
2258(886),
2259(887),
2260(888),
2261(889),
2262(890),
2263(891),
2264(892),
2265(893),
2266(894),
2267(895),
2268(896),
2269(897),
2270(898),
2271(899),
2272(900),
2273(901),
2274(902),
2275(903),
2276(904),
2277(905),
2278(906),
2279(907),
2280(908),
2281(909),
2282(910),
2283(911),
2284(912),
2285(913),
2286(914),
2287(915),
2288(916),
2289(917),
2290(918),
2291(919),
2292(920),
2293(921),
2294(922),
2295(923),
2296(924),
2297(925),
2298(926),
2299(927),
2300(928),
2301(929),
2302(930),
2303(931),
2304(932),
2305(933),
2306(934),
2307(935),
2308(936),
2309(937),
2310(938),
2311(939),
2312(940),
2313(941),
2314(942),
2315(943),
2316(944),
2317(945),
2318(946),
2319(947),
2320(948),
2321(949),
2322(950),
2323(951),
2324(952),
2325(953),
2326(954),
2327(955),
2328(956),
2329(957),
2330(958),
2331(959),
2332(960),
2333(961),
2334(962),
2335(963),
2336(964),
2337(965),
2338(966),
2339(967),
2340(968),
2341(969),
2342(970),
2343(971),
2344(972),
2345(973),
2346(974),
2347(975),
2348(976),
2349(977),
2350(978),
2351(979),
2352(980),
2353(981),
2354(982),
2355(983),
2356(984),
2357(985),
2358(986),
2359(987),
2360(988),
2361(989),
2362(990),
2363(991),
2364(992),
2365(993),
2366(994),
2367(995),
2368(996),
2369(997),
2370(998),
2371(999),
2372(1000),
2373(1001),
2374(1002),
2375(1003),
2376(1004),
2377(1005),
2378(1006),
2379(1007),
2380(1008),
2381(1009),
2382(1010),
2383(1011),
2384(1012),
2385(1013),
2386(1014),
2387(1015),
2388(1016),
2389(1017),
2390(1018),
2391(1019),
2392(1020),
2393(1021),
2394(1022),
2395(1023),
2396(1024),
2397(1025),
2398(1026),
2399(1027),
2400(1028),
2401(1029),
2402(1030),
2403(1031),
2404(1032),
2405(1033),
2406(1034),
2407(1035),
2408(1036),
2409(1037),
2410(1038),
2411(1039),
2412(1040),
2413(1041),
2414(1042),
2415(1043),
2416(1044),
2417(1045),
2418(1046),
2419(1047),
2420(1048),
2421(1049),
2422(1050),
2423(1051),
2424(1052),
2425(1053),
2426(1054),
2427(1055),
2428(1056),
2429(1057),
2430(1058),
2431(1059),
2432(1060),
2433(1061),
2434(1062),
2435(1063),
2436(1064),
2437(1065),
2438(1066),
2439(1067),
2440(1068),
2441(1069),
2442(1070),
2443(1071),
2444(1072),
2445(1073),
2446(1074),
2447(1075),
2448(1076),
2449(1077),
2450(1078),
2451(1079),
2452(1080),
2453(1081),
2454(1082),
2455(1083),
2456(1084),
2457(1085),
2458(1086),
2459(1087),
2460(1088),
2461(1089),
2462(1090),
2463(1091),
2464(1092),
2465(1093),
2466(1094),
2467(1095),
2468(1096),
2469(1097),
2470(1098),
2471(1099),
2472(1100),
2473(1101),
2474(1102),
2475(1103),
2476(1104),
2477(1105),
2478(1106),
2479(1107),
2480(1108),
2481(1109),
2482(1110),
2483(1111),
2484(1112),
2485(1113),
2486(1114),
2487(1115),
2488(1116),
2489(1117),
2490(1118),
2491(1119),
2492(1120),
2493(1121),
2494(1122),
2495(1123),
2496(1124),
2497(1125),
2498(1126),
2499(1127),
2500(1128),
2501(1129),
2502(1130),
2503(1131),
2504(1132),
2505(1133),
2506(1134),
2507(1135),
2508(1136),
2509(1137),
2510(1138),
2511(1139),
2512(1140),
2513(1141),
2514(1142),
2515(1143),
2516(1144),
2517(1145),
2518(1146),
2519(1147),
2520(1148),
2521(1149),
2522(1150),
2523(1151),
2524(1152),
2525(1153),
2526(1154),
2527(1155),
2528(1156),
2529(1157),
2530(1158),
2531(1159),
2532(1160),
2533(1161),
2534(1162),
2535(1163),
2536(1164),
2537(1165),
2538(1166),
2539(1167),
2540(1168),
2541(1169),
2542(1170),
2543(1171),
2544(1172),
2545(1173),
2546(1174),
2547(1175),
2548(1176),
2549(1177),
2550(1178),
2551(1179),
2552(1180),
2553(1181),
2554(1182),
2555(1183),
2556(1184),
2557(1185),
2558(1186),
2559(1187),
2560(1188),
2561(1189),
2562(1190),
2563(1191),
2564(1192),
2565(1193),
2566(1194),
2567(1195),
2568(1196),
2569(1197),
2570(1198),
2571(1199),
2572(1200),
2573(1201),
2574(1202),
2575(1203),
2576(1204),
2577(1205),
2578(1206),
2579(1207),
2580(1208),
2581(1209),
2582(1210),
2583(1211),
2584(1212),
2585(1213),
2586(1214),
2587(1215),
2588(1216),
2589(1217),
2590(1218),
2591(1219),
2592(1220),
2593(1221),
2594(1222),
2595(1223),
2596(1224),
2597(1225),
2598(1226),
2599(1227),
2600(1228),
2601(1229),
2602(1230),
2603(1231),
2604(1232),
2605(1233),
2606(1234),
2607(1235),
2608(1236),
2609(1237),
2610(1238),
2611(1239),
2612(1240),
2613(1241),
2614(1242),
2615(1243),
2616(1244),
2617(1245),
2618(1246),
2619(1247),
2620(1248),
2621(1249),
2622(1250),
2623(1251),
2624(1252),
2625(1253),
2626(1254),
2627(1255),
2628(1256),
2629(1257),
2630(1258),
2631(1259),
2632(1260),
2633(1261),
2634(1262),
2635(1263),
2636(1264),
2637(1265),
2638(1266),
2639(1267),
2640(1268),
2641(1269),
2642(1270),
2643(1271),
2644(1272),
2645(1273),
2646(1274),
2647(1275),
2648(1276),
2649(1277),
2650(1278),
2651(1279),
2652(1280),
2653(1281),
2654(1282),
2655(1283),
2656(1284),
2657(1285),
2658(1286),
2659(1287),
2660(1288),
2661(1289),
2662(1290),
2663(1291),
2664(1292),
2665(1293),
2666(1294),
2667(1295),
2668(1296),
2669(1297),
2670(1298),
2671(1299),
2672(1300),
2673(1301),
2674(1302),
2675(1303),
2676(1304),
2677(1305),
2678(1306),
2679(1307),
2680(1308),
2681(1309),
2682(1310),
2683(1311),
2684(1312),
2685(1313),
2686(1314),
2687(1315),
2688(1316),
2689(1317),
2690(1318),
2691(1319),
2692(1320),
2693(1321),
2694(1322),
2695(1323),
2696(1324),
2697(1325),
2698(1326),
2699(1327),
2700(1328),
2701(1329),
2702(1330),
2703(1331),
2704(1332),
2705(1333),
2706(1334),
2707(1335),
2708(1336),
2709(1337),
2710(1338),
2711(1339),
2712(1340),
2713(1341),
2714(1342),
2715(1343),
2716(1344),
2717(1345),
2718(1346),
2719(1347),
2720(1348),
2721(1349),
2722(1350),
2723(1351),
2724(1352),
2725(1353),
2726(1354),
2727(1355),
2728(1356),
2729(1357),
2730(1358),
2731(1359),
2732(1360),
2733(1361),
2734(1362),
2735(1363),
2736(1364),
2737(1365),
2738(1366),
2739(1367),
2740(1368),
2741(1369),
2742(1370),
2743(1371),
2744(1372),
2745(1373),
2746(1374),
2747(1375),
2748(1376),
2749(1377),
2750(1378),
2751(1379),
2752(1380),
2753(1381),
2754(1382),
2755(1383),
2756(1384),
2757(1385),
2758(1386),
2759(1387),
2760(1388),
2761(1389),
2762(1390),
2763(1391),
2764(1392),
2765(1393),
2766(1394),
2767(1395),
2768(1396),
2769(1397),
2770(1398),
2771(1399),
2772(1400),
2773(1401),
2774(1402),
2775(1403),
2776(1404),
2777(1405),
2778(1406),
2779(1407),
2780(1408),
2781(1409),
2782(1410),
2783(1411),
2784(1412),
2785(1413),
2786(1414),
2787(1415),
2788(1416),
2789(1417),
2790(1418),
2791(1419),
2792(1420),
2793(1421),
2794(1422),
2795(1423),
2796(1424),
2797(1425),
2798(1426),
2799(1427),
2800(1428),
2801(1429),
2802(1430),
2803(1431),
2804(1432),
2805(1433),
2806(1434),
2807(1435),
2808(1436),
2809(1437),
2810(1438),
2811(1439),
2812(1440),
2813(1441),
2814(1442),
2815(1443),
2816(1444),
2817(1445),
2818(1446),
2819(1447),
2820(1448),
2821(1449),
2822(1450),
2823(1451),
2824(1452),
2825(1453),
2826(1454),
2827(1455),
2828(1456),
2829(1457),
2830(1458),
2831(1459),
2832(1460),
2833(1461),
2834(1462),
2835(1463),
2836(1464),
2837(1465),
2838(1466),
2839(1467),
2840(1468),
2841(1469),
2842(1470),
2843(1471),
2844(1472),
2845(1473),
2846(1474),
2847(1475),
2848(1476),
2849(1477),
2850(1478),
2851(1479),
2852(1480),
2853(1481),
2854(1482),
2855(1483),
2856(1484),
2857(1485),
2858(1486),
2859(1487),
2860(1488),
2861(1489),
2862(1490),
2863(1491),
2864(1492),
2865(1493),
2866(1494),
2867(1495),
2868(1496),
2869(1497),
2870(1498),
2871(1499),
2872(1500),
2873(1501),
2874(1502),
2875(1503),
2876(1504),
2877(1505),
2878(1506),
2879(1507),
2880(1508),
2881(1509),
2882(1510),
2883(1511),
2884(1512),
2885(1513),
2886(1514),
2887(1515),
2888(1516),
2889(1517),
2890(1518),
2891(1519),
2892(1520),
2893(1521),
2894(1522),
2895(1523),
2896(1524),
2897(1525),
2898(1526),
2899(1527),
2900(1528),
2901(1529),
2902(1530),
2903(1531),
2904(1532),
2905(1533),
2906(1534),
2907(1535),
2908(1536),
2909(1537),
2910(1538),
2911(1539),
2912(1540),
2913(1541),
2914(1542),
2915(1543),
2916(1544),
2917(1545),
2918(1546),
2919(1547),
2920(1548),
2921(1549),
2922(1550),
2923(1551),
2924(1552),
2925(1553),
2926(1554),
2927(1555),
2928(1556),
2929(1557),
2930(1558),
2931(1559),
2932(1560),
2933(1561),
2934(1562),
2935(1563),
2936(1564),
2937(1565),
2938(1566),
2939(1567),
2940(1568),
2941(1569),
2942(1570),
2943(1571),
2944(1572),
2945(1573),
2946(1574),
2947(1575),
2948(1576),
2949(1577),
2950(1578),
2951(1579),
2952(1580),
2953(1581),
2954(1582),
2955(1583),
2956(1584),
2957(1585),
2958(1586),
2959(1587),
2960(1588),
2961(1589),
2962(1590),
2963(1591),
2964(1592),
2965(1593),
2966(1594),
2967(1595),
2968(1596),
2969(1597),
2970(1598),
2971(1599),
2972(1600),
2973(1601),
2974(1602),
2975(1603),
2976(1604),
2977(1605),
2978(1606),
2979(1607),
2980(1608),
2981(1609),
2982(1610),
2983(1611),
2984(1612),
2985(1613),
2986(1614),
2987(1615),
2988(1616),
2989(1617),
2990(1618),
2991(1619),
2992(1620),
2993(1621),
2994(1622),
2995(1623),
2996(1624),
2997(1625),
2998(1626),
2999(1627),
3000(1628),
3001(1629),
3002(1630),
3003(1631),
3004(1632),
3005(1633),
3006(1634),
3007(1635),
3008(1636),
3009(1637),
3010(1638),
3011(1639),
3012(1640),
3013(1641),
3014(1642),
3015(1643),
3016(1644),
3017(1645),
3018(1646),
3019(1647),
3020(1648),
3021(1649),
3022(1650),
3023(1651),
3024(1652),
3025(1653),
3026(1654),
3027(1655),
3028(1656),
3029(1657),
3030(1658),
3031(1659),
3032(1660),
3033(1661),
3034(1662),
3035(1663),
3036(1664),
3037(1665),
3038(1666),
3039(1667),
3040(1668),
3041(1669),
3042(1670),
3043(1671),
3044(1672),
3045(1673),
3046(1674),
3047(1675),
3048(1676),
3049(1677),
3050(1678),
3051(1679),
3052(1680),
3053(1681),
3054(1682),
3055(1683),
3056(1684),
3057(1685),
3058(1686),
3059(1687),
3060(1688),
3061(1689),
3062(1690),
3063(1691),
3064(1692),
3065(1693),
3066(1694),
3067(1695),
3068(1696),
3069(1697),
3070(1698),
3071(1699),
3072(1700),
3073(1701),
3074(1702),
3075(1703),
3076(1704),
3077(1705),
3078(1706),
3079(1707),
3080(1708),
3081(1709),
3082(1710),
3083(1711),
3084(1712),
3085(1713),
3086(1714),
3087(1715),
3088(1716),
3089(1717),
3090(1718),
3091(1719),
3092(1720),
3093(1721),
3094(1722),
3095(1723),
3096(1724),
3097(1725),
3098(1726),
3099(1727),
3100(1728),
3101(1729),
3102(1730),
3103(1731),
3104(1732),
3105(1733),
3106(1734),
3107(1735),
3108(1736),
3109(1737),
3110(1738),
3111(1739),
3112(1740),
3113(1741),
3114(1742),
3115(1743),
3116(1744),
3117(1745),
3118(1746),
3119(1747),
3120(1748),
3121(1749),
3122(1750),
3123(1751),
3124(1752),
3125(1753),
3126(1754),
3127(1755),
3128(1756),
3129(1757),
3130(1758),
3131(1759),
3132(1760),
3133(1761),
3134(1762),
3135(1763),
3136(1764),
3137(1765),
3138(1766),
3139(1767),
3140(1768),
3141(1769),
3142(1770),
3143(1771),
3144(1772),
3145(1773),
3146(1774),
3147(1775),
3148(1776),
3149(1777),
3150(1778),
3151(1779),
3152(1780),
3153(1781),
3154(1782),
3155(1783),
3156(1784),
3157(1785),
3158(1786),
3159(1787),
3160(1788),
3161(1789),
3162(1790),
3163(1791),
3164(1792),
3165(1793),
3166(1794),
3167(1795),
3168(1796),
3169(1797),
3170(1798),
3171(1799),
3172(1800),
3173(1801),
3174(1802),
3175(1803),
3176(1804),
3177(1805),
3178(1806),
3179(1807),
3180(1808),
3181(1809),
3182(1810),
3183(1811),
3184(1812),
3185(1813),
3186(1814),
3187(1815),
3188(1816),
3189(1817),
3190(1818),
3191(1819),
3192(1820),
3193(1821),
3194(1822),
3195(1823),
3196(1824),
3197(1825),
3198(1826),
3199(1827),
3200(1828),
3201(1829),
3202(1830),
3203(1831),
3204(1832),
3205(1833),
3206(1834),
3207(1835),
3208(1836),
3209(1837),
3210(1838),
3211(1839),
3212(1840),
3213(1841),
3214(1842),
3215(1843),
3216(1844),
3217(1845),
3218(1846),
3219(1847),
3220(1848),
3221(1849),
3222(1850),
3223(1851),
3224(1852),
3225(1853),
3226(1854),
3227(1855),
3228(1856),
3229(1857),
3230(1858),
3231(1859),
3232(1860),
3233(1861),
3234(1862),
3235(1863),
3236(1864),
3237(1865),
3238(1866),
3239(1867),
3240(1868),
3241(1869),
3242(1870),
3243(1871),
3244(1872),
3245(1873),
3246(1874),
3247(1875),
3248(1876),
3249(1877),
3250(1878),
3251(1879),
3252(1880),
3253(1881),
3254(1882),
3255(1883),
3256(1884),
3257(1885),
3258(1886),
3259(1887),
3260(1888),
3261(1889),
3262(1890),
3263(1891),
3264(1892),
3265(1893),
3266(1894),
3267(1895),
3268(1896),
3269(1897),
3270(1898),
3271(1899),
3272(1900),
3273(1901),
3274(1902),
3275(1903),
3276(1904),
3277(1905),
3278(1906),
3279(1907),
3280(1908),
3281(1909),
3282(1910),
3283(1911),
3284(1912),
3285(1913),
3286(1914),
3287(1915),
3288(1916),
3289(1917),
3290(1918),
3291(1919),
3292(1920),
3293(1921),
3294(1922),
3295(1923),
3296(1924),
3297(1925),
3298(1926),
3299(1927),
3300(1928),
3301(1929),
3302(1930),
3303(1931),
3304(1932),
3305(1933),
3306(1934),
3307(1935),
3308(1936),
3309(1937),
3310(1938),
3311(1939),
3312(1940),
3313(1941),
3314(1942),
3315(1943),
3316(1944),
3317(1945),
3318(1946),
3319(1947),
3320(1948),
3321(1949),
3322(1950),
3323(1951),
3324(1952),
3325(1953),
3326(1954),
3327(1955),
3328(1956),
3329(1957),
3330(1958),
3331(1959),
3332(1960),
3333(1961),
3334(1962),
3335(1963),
3336(1964),
3337(1965),
3338(1966),
3339(1967),
3340(1968),
3341(1969),
3342(1970),
3343(1971),
3344(1972),
3345(1973),
3346(1974),
3347(1975),
3348(1976),
3349(1977),
3350(1978),
3351(1979),
3352(1980),
3353(1981),
3354(1982),
3355(1983),
3356(1984),
3357(1985),
3358(1986),
3359(1987),
3360(1988),
3361(1989),
3362(1990),
3363(1991),
3364(1992),
3365(1993),
3366(1994),
3367(1995),
3368(1996),
3369(1997),
3370(1998),
3371(1999),
3372(2000),
3373(2001),
3374(2002),
3375(2003),
3376(2004),
3377(2005),
3378(2006),
3379(2007),
3380(2008),
3381(2009),
3382(2010),
3383(2011),
3384(2012),
3385(2013),
3386(2014),
3387(2015),
3388(2016),
3389(2017),
3390(2018),
3391(2019),
3392(2020),
3393(2021),
3394(2022),
3395(2023),
3396(2024),
3397(2025),
3398(2026),
3399(2027),
3400(2028),
3401(2029),
3402(2030),
3403(2031),
3404(2032),
3405(2033),
3406(2034),
3407(2035),
3408(2036),
3409(2037),
3410(2038),
3411(2039),
3412(2040),
3413(2041),
3414(2042),
3415(2043),
3416(2044),
3417(2045),
3418(2046),
3419(2047),
3420(2048),
3421(2049),
3422(2050),
3423(2051),
3424(2052),
3425(2053),
3426(2054),
3427(2055),
3428(2056),
3429(2057),
3430(2058),
3431(2059),
3432(2060),
3433(2061),
3434(2062),
3435(2063),
3436(2064),
3437(2065),
3438(2066),
3439(2067),
3440(2068),
3441(2069),
3442(2070),
3443(2071),
3444(2072),
3445(2073),
3446(2074),
3447(2075),
3448(2076),
3449(2077),
3450(2078),
3451(2079),
3452(2080),
3453(2081),
3454(2082),
3455(2083),
3456(2084),
3457(2085),
3458(2086),
3459(2087),
3460(2088),
3461(2089),
3462(2090),
3463(2091),
3464(2092),
3465(2093),
3466(2094),
3467(2095),
3468(2096),
3469(2097),
3470(2098),
3471(2099),
3472(2100),
3473(2101),
3474(2102),
3475(2103),
3476(2104),
3477(2105),
3478(2106),
3479(2107),
3480(2108),
3481(2109),
3482(2110),
3483(2111),
3484(2112),
3485(2113),
3486(2114),
3487(2115),
3488(2116),
3489(2117),
3490(2118),
3491(2119),
3492(2120),
3493(2121),
3494(2122),
3495(2123),
3496(2124),
3497(2125),
3498(2126),
3499(2127),
3500(2128),
3501(2129),
3502(2130),
3503(2131),
3504(2132),
3505(2133),
3506(2134),
3507(2135),
3508(2136),
3509(2137),
3510(2138),
3511(2139),
3512(2140),
3513(2141),
3514(2142),
3515(2143),
3516(2144),
3517(2145),
3518(2146),
3519(2147),
3520(2148),
3521(2149),
3522(2150),
3523(2151),
3524(2152),
3525(2153),
3526(2154),
3527(2155),
3528(2156),
3529(2157),
3530(2158),
3531(2159),
3532(2160),
3533(2161),
3534(2162),
3535(2163),
3536(2164),
3537(2165),
3538(2166),
3539(2167),
3540(2168),
3541(2169),
3542(2170),
3543(2171),
3544(2172),
3545(2173),
3546(2174),
3547(2175),
3548(2176),
3549(2177),
3550(2178),
3551(2179),
3552(2180),
3553(2181),
3554(2182),
3555(2183),
3556(2184),
3557(2185),
3558(2186),
3559(2187),
3560(2188),
3561(2189),
3562(2190),
3563(2191),
3564(2192),
3565(2193),
3566(2194),
3567(2195),
3568(2196),
3569(2197),
3570(2198),
3571(2199),
3572(2200),
3573(2201),
3574(2202),
3575(2203),
3576(2204),
3577(2205),
3578(2206),
3579(2207),
3580(2208),
3581(2209),
3582(2210),
3583(2211),
3584(2212),
3585(2213),
3586(2214),
3587(2215),
3588(2216),
3589(2217),
3590(2218),
3591(2219),
3592(2220),
3593(2221),
3594(2222),
3595(2223),
3596(2224),
3597(2225),
3598(2226),
3599(2227),
3600(2228),
3601(2229),
3602(2230),
3603(2231),
3604(2232),
3605(2233),
3606(2234),
3607(2235),
3608(2236),
3609(2237),
3610(2238),
3611(2239),
3612(2240),
3613(2241),
3614(2242),
3615(2243),
3616(2244),
3617(2245),
3618(2246),
3619(2247),
3620(2248),
3621(2249),
3622(2250),
3623(2251),
3624(2252),
3625(2253),
3626(2254),
3627(2255),
3628(2256),
3629(2257),
3630(2258),
3631(2259),
3632(2260),
3633(2261),
3634(2262),
3635(2263),
3636(2264),
3637(2265),
3638(2266),
3639(2267),
3640(2268),
3641(2269),
3642(2270),
3643(2271),
3644(2272),
3645(2273),
3646(2274),
3647(2275),
3648(2276),
3649(2277),
3650(2278),
3651(2279),
3652(2280),
3653(2281),
3654(2282),
3655(2283),
3656(2284),
3657(2285),
3658(2286),
3659(2287),
3660(2288),
3661(2289),
3662(2290),
3663(2291),
3664(2292),
3665(2293),
3666(2294),
3667(2295),
3668(2296),
3669(2297),
3670(2298),
3671(2299),
3672(2300),
3673(2301),
3674(2302),
3675(2303),
3676(2304),
3677(2305),
3678(2306),
3679(2307),
3680(2308),
3681(2309),
3682(2310),
3683(2311),
3684(2312),
3685(2313),
3686(2314),
3687(2315),
3688(2316),
3689(2317),
3690(2318),
3691(2319),
3692(2320),
3693(2321),
3694(2322),
3695(2323),
3696(2324),
3697(2325),
3698(2326),
3699(2327),
3700(2328),
3701(2329),
3702(2330),
3703(2331),
3704(2332),
3705(2333),
3706(2334),
3707(2335),
3708(2336),
3709(2337),
3710(2338),
3711(2339),
3712(2340),
3713(2341),
3714(2342),
3715(2343),
3716(2344),
3717(2345),
3718(2346),
3719(2347),
3720(2348),
3721(2349),
3722(2350),
3723(2351),
3724(2352),
3725(2353),
3726(2354),
3727(2355),
3728(2356),
3729(2357),
3730(2358),
3731(2359),
3732(2360),
3733(2361),
3734(2362),
3735(2363),
3736(2364),
3737(2365),
3738(2366),
3739(2367),
3740(2368),
3741(2369),
3742(2370),
3743(2371),
3744(2372),
3745(2373),
3746(2374),
3747(2375),
3748(2376),
3749(2377),
3750(2378),
3751(2379),
3752(2380),
3753(2381),
3754(2382),
3755(2383),
3756(2384),
3757(2385),
3758(2386),
3759(2387),
3760(2388),
3761(2389),
3762(2390),
3763(2391),
3764(2392),
3765(2393),
3766(2394),
3767(2395),
3768(2396),
3769(2397),
3770(2398),
3771(2399),
3772(2400),
3773(2401),
3774(2402),
3775(2403),
3776(2404),
3777(2405),
3778(2406),
3779(2407),
3780(2408),
3781(2409),
3782(2410),
3783(2411),
3784(2412),
3785(2413),
3786(2414),
3787(2415),
3788(2416),
3789(2417),
3790(2418),
3791(2419),
3792(2420),
3793(2421),
3794(2422),
3795(2423),
3796(2424),
3797(2425),
3798(2426),
3799(2427),
3800(2428),
3801(2429),
3802(2430),
3803(2431),
3804(2432),
3805(2433),
3806(2434),
3807(2435),
3808(2436),
3809(2437),
3810(2438),
3811(2439),
3812(2440),
3813(2441),
3814(2442),
3815(2443),
3816(2444),
3817(2445),
3818(2446),
3819(2447),
3820(2448),
3821(2449),
3822(2450),
3823(2451),
3824(2452),
3825(2453),
3826(2454),
3827(2455),
3828(2456),
3829(2457),
3830(2458),
3831(2459),
3832(2460),
3833(2461),
3834(2462),
3835(2463),
3836(2464),
3837(2465),
3838(2466),
3839(2467),
3840(2468),
3841(2469),
3842(2470),
3843(2471),
3844(2472),
3845(2473),
3846(2474),
3847(2475),
3848(2476),
3849(2477),
3850(2478),
3851(2479),
3852(2480),
3853(2481),
3854(2482),
3855(2483),
3856(2484),
3857(2485),
3858(2486),
3859(2487),
3860(2488),
3861(2489),
3862(2490),
3863(2491),
3864(2492),
3865(2493),
3866(2494),
3867(2495),
3868(2496),
3869(2497),
3870(2498),
3871(2499),
3872(2500),
3873(2501),
3874(2502),
3875(2503),
3876(2504),
3877(2505),
3878(2506),
3879(2507),
3880(2508),
3881(2509),
3882(2510),
3883(2511),
3884(2512),
3885(2513),
3886(2514),
3887(2515),
3888(2516),
3889(2517),
3890(2518),
3891(2519),
3892(2520),
3893(2521),
3894(2522),
3895(2523),
3896(2524),
3897(2525),
3898(2526),
3899(2527),
3900(2528),
3901(2529),
3902(2530),
3903(2531),
3904(2532),
3905(2533),
3906(2534),
3907(2535),
3908(2536),
3909(2537),
3910(2538),
3911(2539),
3912(2540),
3913(2541),
3914(2542),
3915(2543),
3916(2544),
3917(2545),
3918(2546),
3919(2547),
3920(2548),
3921(2549),
3922(2550),
3923(2551),
3924(2552),
3925(2553),
3926(2554),
3927(2555),
3928(2556),
3929(2557),
3930(2558),
3931(2559),
3932(2560),
3933(2561),
3934(2562),
3935(2563),
3936(2564),
3937(2565),
3938(2566),
3939(2567),
3940(2568),
3941(2569),
3942(2570),
3943(2571),
3944(2572),
3945(2573),
3946(2574),
3947(2575),
3948(2576),
3949(2577),
3950(2578),
3951(2579),
3952(2580),
3953(2581),
3954(2582),
3955(2583),
3956(2584),
3957(2585),
3958(2586),
3959(2587),
3960(2588),
3961(2589),
3962(2590),
3963(2591),
3964(2592),
3965(2593),
3966(2594),
3967(2595),
3968(2596),
3969(2597),
3970(2598),
3971(2599),
3972(2600),
3973(2601),
3974(2602),
3975(2603),
3976(2604),
3977(2605),
3978(2606),
3979(2607),
3980(2608),
3981(2609),
3982(2610),
3983(2611),
3984(2612),
3985(2613),
3986(2614),
3987(2615),
3988(2616),
3989(2617),
3990(2618),
3991(2619),
3992(2620),
3993(2621),
3994(2622),
3995(2623),
3996(2624),
3997(2625),
3998(2626),
3999(2627),
4000(2628),
4001(2629),
4002(2630),
4003(2631),
4004(2632),
4005(2633),
4006(2634),
4007(2635),
4008(2636),
4009(2637),
4010(2638),
4011(2639),
4012(2640),
4013(2641),
4014(2642),
4015(2643),
4016(2644),
4017(2645),
4018(2646),
4019(2647),
4020(2648),
4021(2649),
4022(2650),
4023(2651),
4024(2652),
4025(2653),
4026(2654),
4027(2655),
4028(2656),
4029(2657),
4030(2658),
4031(2659),
4032(2660),
4033(2661),
4034(2662),
4035(2663),
4036(2664),
4037(2665),
4038(2666),
4039(2667),
4040(2668),
4041(2669),
4042(2670),
4043(2671),
4044(2672),
4045(2673),
4046(2674),
4047(2675),
4048(2676),
4049(2677),
4050(2678),
4051(2679),
4052(2680),
4053(2681),
4054(2682),
4055(2683),
4056(2684),
4057(2685),
4058(2686),
4059(2687),
4060(2688),
4061(2689),
4062(2690),
4063(2691),
4064(2692),
4065(2693),
4066(2694),
4067(2695),
4068(2696),
4069(2697),
4070(2698),
4071(2699),
4072(2700),
4073(2701),
4074(2702),
4075(2703),
4076(2704),
4077(2705),
4078(2706),
4079(2707),
4080(2708),
4081(2709),
4082(2710),
4083(2711),
4084(2712),
4085(2713),
4086(2714),
4087(2715),
4088(2716),
4089(2717),
4090(2718),
4091(2719),
4092(2720),
4093(2721),
4094(2722),
4095(2723),
4096(2724),
4097(2725),
4098(2726),
4099(2727),
4100(2728),
4101(2729),
4102(2730),
4103(2731),
4104(2732),
4105(2733),
4106(2734),
4107(2735),
4108(2736),
4109(2737),
4110(2738),
4111(2739),
4112(2740),
4113(2741),
4114(2742),
4115(2743),
4116(2744),
4117(2745),
4118(2746),
4119(2747),
4120(2748),
4121(2749),
4122(2750),
4123(2751),
4124(2752),
4125(2753),
4126(2754),
4127(2755),
4128(2756),
4129(2757),
4130(2758),
4131(2759),
4132(2760),
4133(2761),
4134(2762),
4135(2763),
4136(2764),
4137(2765),
4138(2766),
4139(2767),
4140(2768),
4141(2769),
4142(2770),
4143(2771),
4144(2772),
4145(2773),
4146(2774),
4147(2775),
4148(2776),
4149(2777),
4150(2778),
4151(2779),
4152(2780),
4153(2781),
4154(2782),
4155(2783),
4156(2784),
4157(2785),
4158(2786),
4159(2787),
4160(2788),
4161(2789),
4162(2790),
4163(2791),
4164(2792),
4165(2793),
4166(2794),
4167(2795),
4168(2796),
4169(2797),
4170(2798),
4171(2799),
4172(2800),
4173(2801),
4174(2802),
4175(2803),
4176(2804),
4177(2805),
4178(2806),
4179(2807),
4180(2808),
4181(2809),
4182(2810),
4183(2811),
4184(2812),
4185(2813),
4186(2814),
4187(2815),
4188(2816),
4189(2817),
4190(2818),
4191(2819),
4192(2820),
4193(2821),
4194(2822),
4195(2823),
4196(2824),
4197(2825),
4198(2826),
4199(2827),
4200(2828),
4201(2829),
4202(2830),
4203(2831),
4204(2832),
4205(2833),
4206(2834),
4207(2835),
4208(2836),
4209(2837),
4210(2838),
4211(2839),
4212(2840),
4213(2841),
4214(2842),
4215(2843),
4216(2844),
4217(2845),
4218(2846),
4219(2847),
4220(2848),
4221(2849),
4222(2850),
4223(2851),
4224(2852),
4225(2853),
4226(2854),
4227(2855),
4228(2856),
4229(2857),
4230(2858),
4231(2859),
4232(2860),
4233(2861),
4234(2862),
4235(2863),
4236(2864),
4237(2865),
4238(2866),
4239(2867),
4240(2868),
4241(2869),
4242(2870),
4243(2871),
4244(2872),
4245(2873),
4246(2874),
4247(2875),
4248(2876),
4249(2877),
4250(2878),
4251(2879),
4252(2880),
4253(2881),
4254(2882),
4255(2883),
4256(2884),
4257(2885),
4258(2886),
4259(2887),
4260(2888),
4261(2889),
4262(2890),
4263(2891),
4264(2892),
4265(2893),
4266(2894),
4267(2895),
4268(2896),
4269(2897),
4270(2898),
4271(2899),
4272(2900),
4273(2901),
4274(2902),
4275(2903),
4276(2904),
4277(2905),
4278(2906),
4279(2907),
4280(2908),
4281(2909),
4282(2910),
4283(2911),
4284(2912),
4285(2913),
4286(2914),
4287(2915),
4288(2916),
4289(2917),
4290(2918),
4291(2919),
4292(2920),
4293(2921),
4294(2922),
4295(2923),
4296(2924),
4297(2925),
4298(2926),
4299(2927),
4300(2928),
4301(2929),
4302(2930),
4303(2931),
4304(2932),
4305(2933),
4306(2934),
4307(2935),
4308(2936),
4309(2937),
4310(2938),
4311(2939),
4312(2940),
4313(2941),
4314(2942),
4315(2943),
4316(2944),
4317(2945),
4318(2946),
4319(2947),
4320(2948),
4321(2949),
4322(2950),
4323(2951),
4324(2952),
4325(2953),
4326(2954),
4327(2955),
4328(2956),
4329(2957),
4330(2958),
4331(2959),
4332(2960),
4333(2961),
4334(2962),
4335(2963),
4336(2964),
4337(2965),
4338(2966),
4339(2967),
4340(2968),
4341(2969),
4342(2970),
4343(2971),
4344(2972),
4345(2973),
4346(2974),
4347(2975),
4348(2976),
4349(2977),
4350(2978),
4351(2979),
4352(2980),
4353(2981),
4354(2982),
4355(2983),
4356(2984),
4357(2985),
4358(2986),
4359(2987),
4360(2988),
4361(2989),
4362(2990),
4363(2991),
4364(2992),
4365(2993),
4366(2994),
4367(2995),
4368(2996),
4369(2997),
4370(2998),
4371(2999),
4372(3000),
4373(3001),
4374(3002),
4375(3003),
4376(3004),
4377(3005),
4378(3006),
4379(3007),
4380(3008),
4381(3009),
4382(3010),
4383(3011),
4384(3012),
4385(3013),
4386(3014),
4387(3015),
4388(3016),
4389(3017),
4390(3018),
4391(3019),
4392(3020),
4393(3021),
4394(3022),
4395(3023),
4396(3024),
4397(3025),
4398(3026),
4399(3027),
4400(3028),
4401(3029),
4402(3030),
4403(3031),
4404(3032),
4405(3033),
4406(3034),
4407(3035),
4408(3036),
4409(3037),
4410(3038),
4411(3039),
4412(3040),
4413(3041),
4414(3042),
4415(3043),
4416(3044),
4417(3045),
4418(3046),
4419(3047),
4420(3048),
4421(3049),
4422(3050),
4423(3051),
4424(3052),
4425(3053),
4426(3054),
4427(3055),
4428(3056),
4429(3057),
4430(3058),
4431(3059),
4432(3060),
4433(3061),
4434(3062),
4435(3063),
4436(3064),
4437(3065),
4438(3066),
4439(3067),
4440(3068),
4441(3069),
4442(3070),
4443(3071),
4444(3072),
4445(3073),
4446(3074),
4447(3075),
4448(3076),
4449(3077),
4450(3078),
4451(3079),
4452(3080),
4453(3081),
4454(3082),
4455(3083),
4456(3084),
4457(3085),
4458(3086),
4459(3087),
4460(3088),
4461(3089),
4462(3090),
4463(3091),
4464(3092),
4465(3093),
4466(3094),
4467(3095),
4468(3096),
4469(3097),
4470(3098),
4471(3099),
4472(3100),
4473(3101),
4474(3102),
4475(3103),
4476(3104),
4477(3105),
4478(3106),
4479(3107),
4480(3108),
4481(3109),
4482(3110),
4483(3111),
4484(3112),
4485(3113),
4486(3114),
4487(3115),
4488(3116),
4489(3117),
4490(3118),
4491(3119),
4492(3120),
4493(3121),
4494(3122),
4495(3123),
4496(3124),
4497(3125),
4498(3126),
4499(3127),
4500(3128),
4501(3129),
4502(3130),
4503(3131),
4504(3132),
4505(3133),
4506(3134),
4507(3135),
4508(3136),
4509(3137),
4510(3138),
4511(3139),
4512(3140),
4513(3141),
4514(3142),
4515(3143),
4516(3144),
4517(3145),
4518(3146),
4519(3147),
4520(3148),
4521(3149),
4522(3150),
4523(3151),
4524(3152),
4525(3153),
4526(3154),
4527(3155),
4528(3156),
4529(3157),
4530(3158),
4531(3159),
4532(3160),
4533(3161),
4534(3162),
4535(3163),
4536(3164),
4537(3165),
4538(3166),
4539(3167),
4540(3168),
4541(3169),
4542(3170),
4543(3171),
4544(3172),
4545(3173),
4546(3174),
4547(3175),
4548(3176),
4549(3177),
4550(3178),
4551(3179),
4552(3180),
4553(3181),
4554(3182),
4555(3183),
4556(3184),
4557(3185),
4558(3186),
4559(3187),
4560(3188),
4561(3189),
4562(3190),
4563(3191),
4564(3192),
4565(3193),
4566(3194),
4567(3195),
4568(3196),
4569(3197),
4570(3198),
4571(3199),
4572(3200),
4573(3201),
4574(3202),
4575(3203),
4576(3204),
4577(3205),
4578(3206),
4579(3207),
4580(3208),
4581(3209),
4582(3210),
4583(3211),
4584(3212),
4585(3213),
4586(3214),
4587(3215),
4588(3216),
4589(3217),
4590(3218),
4591(3219),
4592(3220),
4593(3221),
4594(3222),
4595(3223),
4596(3224),
4597(3225),
4598(3226),
4599(3227),
4600(3228),
4601(3229),
4602(3230),
4603(3231),
4604(3232),
4605(3233),
4606(3234),
4607(3235),
4608(3236),
4609(3237),
4610(3238),
4611(3239),
4612(3240),
4613(3241),
4614(3242),
4615(3243),
4616(3244),
4617(3245),
4618(3246),
4619(3247),
4620(3248),
4621(3249),
4622(3250),
4623(3251),
4624(3252),
4625(3253),
4626(3254),
4627(3255),
4628(3256),
4629(3257),
4630(3258),
4631(3259),
4632(3260),
4633(3261),
4634(3262),
4635(3263),
4636(3264),
4637(3265),
4638(3266),
4639(3267),
4640(3268),
4641(3269),
4642(3270),
4643(3271),
4644(3272),
4645(3273),
4646(3274),
4647(3275),
4648(3276),
4649(3277),
4650(3278),
4651(3279),
4652(3280),
4653(3281),
4654(3282),
4655(3283),
4656(3284),
4657(3285),
4658(3286),
4659(3287),
4660(3288),
4661(3289),
4662(3290),
4663(3291),
4664(3292),
4665(3293),
4666(3294),
4667(3295),
4668(3296),
4669(3297),
4670(3298),
4671(3299),
4672(3300),
4673(3301),
4674(3302),
4675(3303),
4676(3304),
4677(3305),
4678(3306),
4679(3307),
4680(3308),
4681(3309),
4682(3310),
4683(3311),
4684(3312),
4685(3313),
4686(3314),
4687(3315),
4688(3316),
4689(3317),
4690(3318),
4691(3319),
4692(3320),
4693(3321),
4694(3322),
4695(3323),
4696(3324),
4697(3325),
4698(3326),
4699(3327),
4700(3328),
4701(3329),
4702(3330),
4703(3331),
4704(3332),
4705(3333),
4706(3334),
4707(3335),
4708(3336),
4709(3337),
4710(3338),
4711(3339),
4712(3340),
4713(3341),
4714(3342),
4715(3343),
4716(3344),
4717(3345),
4718(3346),
4719(3347),
4720(3348),
4721(3349),
4722(3350),
4723(3351),
4724(3352),
4725(3353),
4726(3354),
4727(3355),
4728(3356),
4729(3357),
4730(3358),
4731(3359),
4732(3360),
4733(3361),
4734(3362),
4735(3363),
4736(3364),
4737(3365),
4738(3366),
4739(3367),
4740(3368),
4741(3369),
4742(3370),
4743(3371),
4744(3372),
4745(3373),
4746(3374),
4747(3375),
4748(3376),
4749(3377),
4750(3378),
4751(3379),
4752(3380),
4753(3381),
4754(3382),
4755(3383),
4756(3384),
4757(3385),
4758(3386),
4759(3387),
4760(3388),
4761(3389),
4762(3390),
4763(3391),
4764(3392),
4765(3393),
4766(3394),
4767(3395),
4768(3396),
4769(3397),
4770(3398),
4771(3399),
4772(3400),
4773(3401),
4774(3402),
4775(3403),
4776(3404),
4777(3405),
4778(3406),
4779(3407),
4780(3408),
4781(3409),
4782(3410),
4783(3411),
4784(3412),
4785(3413),
4786(3414),
4787(3415),
4788(3416),
4789(3417),
4790(3418),
4791(3419),
4792(3420),
4793(3421),
4794(3422),
4795(3423),
4796(3424),
4797(3425),
4798(3426),
4799(3427),
4800(3428),
4801(3429),
4802(3430),
4803(3431),
4804(3432),
4805(3433),
4806(3434),
4807(3435),
4808(3436),
4809(3437),
4810(3438),
4811(3439),
4812(3440),
4813(3441),
4814(3442),
4815(3443),
4816(3444),
4817(3445),
4818(3446),
4819(3447),
4820(3448),
4821(3449),
4822(3450),
4823(3451),
4824(3452),
4825(3453),
4826(3454),
4827(3455),
4828(3456),
4829(3457),
4830(3458),
4831(3459),
4832(3460),
4833(3461),
4834(3462),
4835(3463),
4836(3464),
4837(3465),
4838(3466),
4839(3467),
4840(3468),
4841(3469),
4842(3470),
4843(3471),
4844(3472),
4845(3473),
4846(3474),
4847(3475),
4848(3476),
4849(3477),
4850(3478),
4851(3479),
4852(3480),
4853(3481),
4854(3482),
4855(3483),
4856(3484),
4857(3485),
4858(3486),
4859(3487),
4860(3488),
4861(3489),
4862(3490),
4863(3491),
4864(3492),
4865(3493),
4866(3494),
4867(3495),
4868(3496),
4869(3497),
4870(3498),
4871(3499),
4872(3500),
4873(3501),
4874(3502),
4875(3503),
4876(3504),
4877(3505),
4878(3506),